Bot Bot Botnet

Quand j'ai pensé au titre de ce billet je me suis tout de suite dit que c'était une excellente idée et j'ai carrément arboré un grand sourire niais tout seul devant mon écran...mais maintenant que je l'ai écrit je réalise que sans explication personne ne pourra deviner ce à quoi je pensais en le choisisant donc voici l'explication : C'est un jeu de mot (merdique, soit) avec l'onomatopé bien connu "Cot Cot Codec" que j'ai modifié en accord avec mon envie de parler de botnet aujourd'hui.

Volaille - Creative Common by avlxyz on Flickr

Quelques bases[1]

Même si c'est l'enfance de l'art pour quiconque s'interesse un minimum à la sécurité informatique je vais ré-expliquer quelques bases sur les botnet (mais c'est vraiment parce que je suis trop gentil ;) ).

Avant tout un botnet c'est quoi ? Un "botnet" c'est un ensemble d'ordinateurs sur lesquels un individu (ou un groupe d'individu) possède une certaine influence, généralement à l'insu de leurs propriétaire. En version plus simple à comprendre (mais un peu moins exacte du coup) : un botnet c'est un ensemble d'ordinateurs que controlent secrètement de vilains pirates.

Comment sont construits ces botnets ? Les botnets sont, pour l'écrasante majorité, composés d'ordinateurs appartenant "à madame Michu". Ce sont donc des ordinateurs de particuliers qui sont compromis par l'installation d'un logiciel malveillant. Pas de trait de génie à attendre pour installer ce logiciel sur des centaines/milliers/millions[2] d'ordinateurs d'ailleurs, les recettes classiques et évidentes s'appliquent :

  • Vers/Virus
  • Site web piégé
  • Distribution directe du programme via P2P ou sites web dédiés sous un nom sympa comme "Mi-grosSoft Office.exe", "Universal NoCD crack.exe", "Free Virus Remover.exe", etc.

Enfin à quoi ça sert un botnet ? Basiquement ça sert à créer un groupe important d'ordinateurs qui sont capables de récupérer les ordres d'un individu (ou d'un groupe d'individu) et de les exécuter. A partir de là il y a de nombreuses utilisations possibles pour une armée d'ordinateur zombies[3] et j'en expose quelques une dans un article en cours de rédaction (donc repassez sur ce blog dans les jours à venir si vous voulez une étude un petit peu plus en profondeur des usages qu'on peut faire d'un botnet ;) )

Zombies - Creative Common by "Mister Wind-Up Bird" on Flickr

A vos ordres, chef

Bon, maintenant que les concepts théoriques de bases sont connus de tous mes lecteurs[4] on va pouvoir passer à quelques études pratiques ! Le point auquel nous allons nous intéresser dans ce premier article sur les botnet c'est : comment les botmaster communiquent ils leurs ordres aux pc-zombie ?

Il y a bien longtemps, à l'époque des premiers botnets, le fonctionnement de base était simple. Une fois infecté un ordinateur allait systématiquement rejoindre un certain channel irc (éventuellement protégé par mot de passe) et il y recevait les ordres de son maitre puis y faisait son rapport. Simple, efficace, évident :) Peut être trop simple d'ailleurs...En effet cette méthode a beaucoup d'inconvénients : un chan IRC avec des centaines de milliers de personnes qui répondent "oui maitre" à l'un d'entre eux ça n'est pas très discret, de plus si le botnet se fait repérer il est facile pour les autorités de couper le serveur IRC et là c'est "bye bye botnet" pour le pirate qui avait passé du temps à le monter.

Du coup on a eu quelques raffinements. Par exemple au lieu d'ouvrir un channel sur irc.undernet.org les botmasters[5] se sont mis à installer leurs propres serveurs irc (de préférence sur des serveurs compromis et avec des versions customisées d'IRC pour réduire le traffic superflus). C'est tout de suite plus discret, mais pas encore parfait parce que pas mal d'ordinateurs (en particulier en entreprise) sont derrière des firewall et/ou proxy applicatifs qui bloquent les ports IRC et/ou carrément le protocol IRC. Du coup on a eu une petite mode de botnet controllés non pas par IRC mais via des serveurs web HTTP (bah ouais : le HTTP c'est vachement plus discret que l'IRC). Mais ça s'est vite avéré limité...

En effet un botnet ça prend du temps (et de l'argent ?) à construire donc ça serait bien si on pouvait assurer sa survie, or avec un point de rendez-vous unique comme un serveur HTTP (ou IRC) pour controller le botnet on met en danger la survie du réseau (en effet il suffit à une autorité quelconque de couper le serveur de ralliement pour que tout le botnet soit perdu[6]). Pour résoudre ce problème deux nouveaux concepts ont été introduits dans les botnets :

  • Le P2P > Des réseaux de P2P sont employés à tour de bras par énormément de monde pour partager des fichiers[7] ou pour discutter[8], donc il est tout à fait possible de les utiliser pour donner des ordres à ses ordinateurs zombie. Un exemple pratique serait de distribuer un fichier texte "mes_ordres.txt" sur le réseau Kad(eMule) : Le pirate partage ce fichier sur Kad, les zombie (qui sont également sur Kad) le télécharge et exécutent les ordres. Le premier avantage c'est que, contrairement au cas où les ordres sont posés sur un serveur web, il est impossible d'empécher les zombie d'obtenir les ordres en coupant un simple serveur. Le second avantage c'est qu'il devient très dur de remonter à l'IP qui a posté le fichier sur le réseau (i.e. : celle du botmaster).
  • OTP > "OTP" ça signifie "One Time Password" et c'est un concept assez intéressant : en très résumé un "One Time Password" c'est du texte construit à partir d'une règle secrète connues des seuls initiés. Par exemple je peux convenir avec un ami que notre OTP ça sera "le jour de la semaine concaténé à l'année", ainsi si je veux communiquer avec mon ami je n'aurai qu'à regarder quel jour on est et pour lui prouver que c'est bien moi qui lui parle je lui donnerai le mot de passe "lundi2009". La force de l'OTP, par rapport à simplement convenir d'un mot de passe unique avec mon ami, c'est que même si quelqu'un intercepte notre mot de passe il est incapable de savoir quel sera le mot de passe du lendemain (bon...avec l'exemple que j'ai donné c'est pas trop dur de deviner, mais si à la place du jour et de l'année on avait décider de concaténer un sel énorme avec un timestamp unix et notre OTP serait finalement le SHA256 de tout ça, ça devient plus délicat à deviner ;) )

Grâce à ces deux concepts on peut créer des choses extrèmement puissantes, la plus belle dont j'ai connaissance ayant été employé par Storm : Les bots calculaient chaque heure un nouvel OTP, ils se connectaient au réseau Skype[9] et rentraient en contact avec un compte qui avait pour identifiant l'OTP calculé; ce compte était la source des ordres. Résultat :

  • Utilisant Skype les communications passaient aisément tout les firewall/proxy/nat.
  • Utilisant Skype les communications étaient chiffrées donc discrètes.
  • Utilisant un OTP il était impossible de prédire la source des ordres et donc de l'usurper[10].
  • Utilisant Skype et un OTP il était imposible de couper le lien entre le botmaster et ses bot (à moins de couper Skype en intégralité...).

Bref : Du très bien pensé :) [11]

Full Metal Jacket - Screaming Sergeant

Mais...à quoi ça sert tout ça ?

Les utilités d'un botnet sont aussi vastes que l'imagination humaine. Je pourrai arrêter cette section là, mais vous seriez frustrés de ne pas en savoir plus. Je pourrai également commencer à expliquer les nombreuses utilités d'un botnet, mais là ça ferait un post vraiment beaucoup trop long. Donc à la place je vais arrêter cet article ici, et vous donner rendez vous dans quelques jours pour un article exposant quelques unes des utilités d'un botnet :) ! Donc comme on dit aux "zoo essai"[12] : stay tuned.

Notes

[1] "All your base are belong to us" de toute façon !

[2] Oui, on a vu des botnet de plusieurs millions de machines. Bien que la méthode de comptabilisation par IP soit remise en question par ce rapport d'observation de torpig qui aurait put être estimé à plus d'un milion de machines par le décomptes des IP alors qu'en fait il n'y avait qu'environ 180k machines

[3] Vocabulaire : on peut appeller un pc membre d'un botnet un pc-zombie

[4] Lecteurs adorés, bien entendu!

[5] Vocabulaire : botmaster = les gens qui dirigent les botnets

[6] C'est ce qu'on appelle un SPOF en jargon technique (Single Point Of Failure)

[7] Napster, Morpheus, eMule, etc.

[8] Skype

[9] Cerise sur le gateau : toutes les communications sont donc chiffrés

[10] On a vu des groupe de white hat usurper des botmaster afin de lancer un ordre de désinfection de tout le réseau par exemple :)

[11] Pour tout vous avouer je n'ai pas suivi la chute de Storm, et je ne sais donc pas si des failles ont été trouvées dans ce fonctionnement

[12] USA

Ajouter un commentaire

Le code HTML est affiché comme du texte et les adresses web sont automatiquement transformées.

La discussion continue ailleurs

URL de rétrolien : http://www.ozwald.fr/index.php?trackback/3

Fil des commentaires de ce billet