Un botnet, c'est quoi au final ?

On parle souvent dans les médias et dans les rapports de menaces pour les SI, d'attaques de grande envergure, de type DDoS (Directed Denial of Service), et mettant à genoux un service entier sans autre effort que d'envoyer une armée de "zombies" sur une cible. Mais qu'en est il en vérité ?

Vulgarisons déjà le terme de DDoS, souvent confondu avec DoS. Une attaque par Denial of Service (Déni de service en français) est une attaque consistant généralement à envoyer une quantité importante de requêtes à un service jusqu'à-ce que ce dernier cesse de pouvoir répondre (c'est le fameux déni de service. Bien sûr le moyen présenté n'est qu'un moyen parmi d'autres d'y parvenir). Prenons un exemple de la vie de tous les jours : votre supermarché préféré n'ouvre que deux caisses et une centaine de clients arrivent, caddies lourdement chargés. Pendant que l'hôte de caisse passe les articles, le client en cours retourne dans les rayons chercher un oignon ou de la crème fraîche, bloquant la suite de la file. A mesure que les clients arrivent, la direction ouvre quelques caisses, mais il arrivera un moment où toutes les caisses ouvrables seront déjà ouvertes, et où les clients, toujours plus nombreux, ne pourront plus passer à la caisse, et laisseront leurs caddies en plan avant de partir (timeout), pendant que le magasin sera en situation de crise et ne pourra plus répondre aux attentes du client.

Le type d'attaque par déni de service le plus répandu (et le plus facile à implémenter) tourne justement autour de cette file d'attente générée dans la création d'une connexion TCP : Un caddie arrive à la caisse (le client envoie une requête SYN), la caissière passe les articles (le serveur répond SYN, ACK), mais au moment de payer, le client est parti vivre sa vie ailleurs, et la caissière attend sagement le retour du client avant de passer au suivant (pas de réponse ACK du client, le serveur attend cette dernière un moment avant de sortir la demande de connexion de la queue). Ce genre de choses arrivent toujours, et ne sont généralement pas un problème. Mais admettons que des centaines, des milliers de personnes (ou des millions de clients) fassent constamment la même chose sur un intervalle très court : la queue n'aura pas le temps d'être traitée et vidée, le serveur continuera d'attendre les réponses, jusqu'à-ce que la queue déborde de plante le serveur. Un DoS c'est ça.

Mais vous vous demandez ce qu'un DDoS a de différent avec un DoS, et c'est là qu'on rentre dans le vif du sujet !

DDoS signifie "Directed Denial of Service", autrement dit un déni de service dirigé. Dirigé par qui ? Et quoi ? Reprenons notre supermarché, et admettons que tous ces clients, plutôt que de venir de leur propre chef, soient mandatés par un collectif d'activistes anti-consumériste, qui leur a donné l'ordre de remplir les caddies et de les abandonner à la caisse, et de revenir régulièrement à la charge. Ce type d'attaque est d'autant plus violent que les clients, ces fameux "zombies", agissent à l'insu de leur plein gré (parce-que les clients en question sont effectivement dopés de manière à donner de meilleurs résultats).

Et donc un botnet, c'est l'ensemble de tous ces zombies (qui ont donné à une époque le nom de zombienet), des machines infectées d'une manière ou d'une autre (virus, troyen, ver, ou tout autre moyen imaginatif de prendre le contrôle d'une machine de manière persistante et discrète), recevant des ordres à distance d'un serveur C&C (Command and Control, et non le nom d'un fameux jeu de stratégie), qui leur indiquera où, quand, et comment frapper leur cible. Et des botnets il-y en a des centaines, des milliers, en circulation ou en attente d'être vendus (parce-qu'ils représentent effectivement un commerce fort juteux), et la porte d'entrée est parfois beaucoup plus accessible qu'on pourrait le croire, avec le cas notamment de µTorrent et son mineur de bitcoins. Des milliers de machines infectées et connectées à un serveur, en attente d'ordres. Un peu comme un cube borg dans Star Trek.

Passons le passage sur les techniques d'infection, les protocoles entre le serveur C&C et les bots (il-y a tellement que vous comprendrez mieux en concevant votre propre botnet), ce qu'il faut surtout en retenir c'est qu'ils sont de plus en plus nombreux, qu'il est de plus en plus simple d'en être, et que n'importe-quel SI est une cible potentielle, à infecter comme à attaquer (dans la mesure où un DDoS ne coûte pas cher à mettre en oeuvre, mais est beaucoup plus cher à essuyer), et surtout qu'il est très, très difficile (voire impossible) de contrer un botnet (à moins d'avoir un SI capable de supporter plusieurs dizaines voire centaines Gbps d'un coup d'un seul). Des exemples notoires sont ceux du site de la maison blanche, du FBI, d'Universal et autres majors lors de la fermeture de Megaupload, ou encore récemment de CloudFare, avec des pertes estimées à plusieurs milliers de dollars par attaque.

links

social