Détection et analyse de botnets grâce à des honeypots

Mise en place des honeypots

Pour traquer des botnets, nous avons décider de mettre en place trois honeypots différents :


Nepenthes, mwcollect

Mwcollect, anciennement Nepenthes, est un pot de miel à faible intéraction actuellement maintenu par Kaspersky Labs. Son but est de récupérer des malwares qui se propagent en exploitant des vulnérabilités. Pour cela il émule des services volontairement vulnérables. À l'origine, mwcollect était destiné à émuler les services présents sur les machines tournant sous Windows. De ce fait, il possède des émulateurs de protocoles SMB et NetBIOS qui sont assez poussés pour pouvoir émuler toutes les vulnérabilités connues dans les services reposant sur ces protocoles.

Mwcollect possède un décodeur de shellcode. Ce décodeur, basé sur la libemu, sait reconnaitre les principaux shellcodes comme ceux qui tentent de télécharger puis d'exécuter un binaire sur la machine exploitée. Cette particularité permet en autre de récupérer automatiquement les binaires malveillants ou d'émuler une fausse invite de commande (cmd.exe) dans le cas d'un bindshell ou d'un reverse-connect shellcode.

Mwcollect est basé sur une architecture modulaire sur laquelle nous pouvons rajouter des modules pour émuler un nouveau service, décoder un nouveau protocole ou pour simuler une nouvelle vulnérabilité. Le noyau de mwcollect est écrit en C++ pour des raisons de performances mais les modules peuvent être écrit en C ou python. L'émulateur du protocole SMB est d'ailleurs écrit en python.

Dans sa configuration par défaut, mwcollect émule une trentaine de vulnérabilités dont les plus importantes sont celles exploitées par les vers Sasser (lsass) ou Blaster (dcom) qui sont toujours utilisés pour la propagation de malwares.

Mwcollect est ainsi l'honeypot idéal pour récupérer des malwares visant les systèmes Windows. L'analyse des malwares récoltés permettra de récupérer des adresses de botnets.

Webtrap

Webtrap est un web honeypot fait maison et écrit en python. Son principe est de générer et de renvoyer des pages aléatoires avec des signatures d'applications web vulnérables pour toutes les requêtes qui aboutissent à une réponse 404 (page inexistante).

Webtrap possède un analyseur de requête HTTP qui lui permet de détecter les tentatives d'exploitation de vulnérabilité web du type SQL injection, path disclosure ou encore remote file injection. En fonction du type de la tentative détectée, webtrap peut effectuer une action spécifique. Par exemple, dans le cas d'une tentative d'injection de script à distance (remote file inclusion), webtrap va aller télécharger et sauvegarder le script. De plus, webtrap possède un mini interpréteur PHP qui simule quelques fonctions innoffensives de PHP telles que echo, print, uname... Cela permet de rendre le web honeypot plus furtif et de récupérer des scripts plus évolués. Avant de télécharger le script, webtrap vérifie que ce dernier ne soit pas trop gros. Il n'accepte que les protocoles HTTP et FTP pour la récupéreration de script afin de se prémunir de la vulnérabilité de type Déni de Service qui touche tous les programmes utilisant ce genre de fonctionnalité lorsque l'on demande le téléchargement d'un flux infini comme file://dev/urandom par exemple.

Afin d'avoir les fausses pages référencés dans les plus grands moteurs de recherche, la technique de cloaking a été utilisée. Cette technique, peu honnête, est utilisé pour optimiser le positionnement de sites internet dans les moteurs de recherche. Elle consiste pour le serveur web à présenter un contenu de page web différent suivant que le client distant est un robot de moteur de recherche ou un internaute humain. Ainsi, la page d'index du site qui héberge webtrap a été modifiée pour présenter une page différente lorsque c'est un moteur de recherche qui visite le site. La page modifiée contient bien évidement plusieurs liens pointant vers de fausses pages, générées par webtrap. Comme les pages générées par webtrap contiennent elles même des liens vers d'autres fausses pages alors l'indexation de ces pages a très vite grimpé auprès des moteurs de recherche. Ainsi en quelques semaines, le site hébergeant webtrap avait pas moins de 29 600 pages indexées.

29 600 pages indexées

Au niveau technique, webtrap utilise le framework cherrypy qui permet de placer un handler pour toutes les requêtes vers des pages inexistantes. Webtrap utilise cela pour déclencher sa génération de fausses pages. Toutes les requêtes détectées comme malveillantes sont enregistrées dans un fichier au format texte et les scripts sont stockés dans un répertoire avec leur hash md5 comme nom pour éviter les doublons.

Webtrap est ainsi idéal pour récupérer tous les malwares sous forme de scripts qui se propagent en exploitant des vulnérabilités de type web.

Kojoney

Kojoney est un honeypot à faible interaction développé en python et basé sur les librairies réseau Twisted. Il émule un serveur SSH tournant sur un système où les utilisateurs ont des logins très courants et des mots de passe faibles.

Cet honeypot permet de piéger les scanneurs automatisés qui se connectent en SSH sur des adresses IP prises au hasard et qui tentent une attaque par brute force sur les mots de passe, ciblant principalement les mots de passe par défaut ou ceux dont l'utilisateur n'a pas fait preuve d'imagination.

Lorsque le scanneur ou le pirate trouvent un compte autorisé, kojoney démarre une fausse invite de commande (bash) dans laquelle quelques commandes de bases comme wget ou uname sont émulées. Les retours de toutes les commandes émulées par Kojoney sont codés en dur dans les sources de Kojoney. Il est conseillé de les modifier et d'en rajouter pour améliorer la furtivité de l'honeypot.

Kojoney enregistre dans des fichiers de log toutes les tentatives qui ont été faites ainsi que la list des commandes lancées par le pirate si ce dernier a trouvé un des faux comptes utilisés par Kojoney. En plus d'enregistrer la liste des commandes envoyés par le pirate, Kojoney télécharge également automatiquement les fichiers que le pirate a tenté de télécharger à travers les commandes ftp, wget ou curl.

Kojoney est très loin d'être parfait, un pirate humain ayant un niveau correct et quelques connaissances des systèmes UNIX s'apercevra immédiatement de la supercherie. Ainsi Kojoney est uniquement utile dans le cas de scripts automatisés qui se connectent automatiquement au serveur SSH pour s'installer (wget puis exécution) et se propager.