Last update: 29/05/2007


EtatBeta
Version0.05 beta
Mise à jour02/12/2006

Projet FlyFector
"FlyFector" est un outil infectant avec un shellcode au vol les exécutables téléchargés en HTTP par une autre machine.

Principe
FlyFector se base sur deux techniques très connues :
  • L'ARP cache poisonning : FlyFector envoie des fausses trames ARP afin de détourner les flux réseaux entre la cible et la gateway/le proxy. Il devient alors un relais entre ces entités et peut espionner l'intégralité du trafic qu'elles échangent.
  • L'infection d'exécutable : FlyFector infecte les exécutables téléchargés en HTTP par la cible avec un shellcode ajouté dans une section et en modifiant l'entry point.
Scénario d'une attaque basée sur FlyFector
Bob, un attaquant sur un poste B souhaite prendre le contrôle du poste A de Alice, situé sur le même LAN.
Les deux postes passent par un proxy P pour accéder au web.
Bob lance FlyFector en lui spécifiant les adresses MAC et IP de A et de P, ainsi que le chemin vers un shellcode de type "reverse connect".
FlyFector envoie des fausses trames ARP à A et P pour détourner le trafic et se placer en relais. FlyFector espionne alors l'intégralité des données circulant entre A et P.
Alice télécharge un peu plus tard un exécutable via son navigateur à partir d'un site de confiance. FlyFector détecte le début du téléchargement et infecte au vol l'exécutable avec le shellcode.
Une fois le téléchargement terminé, Alice lance l'exécutable sur son poste. Le shellcode est alors exécuté, immédiatement suivi par le code de l'exécutable lui-même, Alice ne détecte donc aucune anomalie.
Le shellcode se connecte sur le poste de B, fournissant un accès distant à Bob.
Parade contre le MITM
La technique d'ARP cache poisonning reste difficile à contrer, car il s'agit d'une faille au niveau du protocole lui-même, qui n'intègre aucun mécanisme permettant d'authentifier des réponses ARP.
Ce problème est ensuite amplifié par le choix de nombreux OS d'accepter les trames ARP "gratuites", c'est à dire ne correspondant pas à une réponse à une requête émise. Pour polluer le cache ARP, il n'est alors nul besoin d'attendre une requête ARP et de tenter de répondre plus vite que la machine réelle, il suffit d'envoyer directement des fausses réponses.
La solution peut être alors d'hardcoder certaines adresses MAC critiques au niveau de l'OS (par exemple celle de la gateway), une solution difficilement gérable dans un grand LAN.
Il existe également des logiciels comme arpwatch permettant de surveiller l'activité ARP et de remonter des alertes en cas d'anomalies.
Bref, peu de solutions et qui relativement rarement mise en oeuvre. Le problème reste entier.
Pour mesurer la puissance de cette technique, je vous conseille de tester les excellents outils Cain et ettercap
Remarques sur la fiabilité de FlyFector
FlyFector est un proof-of-concept, il est donc probable que certains bugs interviennent lors de l'attaque (infection qui échouent, téléchargements interrompus, ...)
Il est volontaire de ma part de ne pas livrer un outil pleinement fonctionnel. Le caractère aléatoire du succès de l'attaque ne nuit à mon sens pas à l'illustration de cette technique, mais garanti que cet outil ne pourra directement être utilisé dans des attaques réelles.

Remarque : FlyFector n'infectera pas certains exécutables qui sont compressés. Vous obtiendrez alors le message suivant :
"Packet analysis : packet seq number greater than end of exe ; skipping it"
FlyFector en images...
Les vidéos suivantes simulent une attaque conduisant à la prise de contrôle d'un poste cible.
Cette vidéo commence par présenter l'environnement de la démo : la cible est un Windows XP s'exécutant dans une VMWare, l'attaquant est sur la machine hôte.
Elle se poursuit par la génération du shellcode. Son exécution doit être très courte pour pouvoir poursuivre l'exécution du programme d'origine et ne pas éveiller les soupçons de l'utilisateur.
Typiquement, il pourrait se contenter d'ajouter un utilisateur. Dans cette démo, j'ai choisi d'utiliser un shellcode beaucoup plus complexe :
il commence par lancer une instance cachée du navigateur par défaut, puis l'injecte avec un shellcode effectuant un reverse connect.
Le shellcode est généré en quelques clicks avec WiShMaster.
Dans cette vidéo, l'utilisateur du poste cible télécharge "WindowApplication.exe", un simple programme de test qui ouvre une fenêtre graphique.
Flyfector détecte le début du téléchargement et infecte l'exécutable au vol avec le shellcode
Lors du lancement de l'exécutable, le shellcode lance une instance caché du navigateur par défaut, puis l'injecte avec le shellcode reverse connect. L'attaquant obtient alors un accès distant sur la cible.
Installation
FlyFector ne nécessite aucune installation. Lancez directement l'exécutable dans une fenêtre cmd.exe
En revanche, FlyFector requiert la lib WinPcap version 3.1 ou supérieure, que vous pouvez télécharger sur le site de WinPcap :
http://www.winpcap.org/
Ressources
Cette archive contient l'exécutable FlyFector pour Windows ainsi qu'un shellcode de démonstration affichant une simple fenêtre de dialogue.
Une remarque/un bug ?
FlyFector est plus un petit proof-of-concept, n'hésitez cependant pas à me contacter si vous avez des questions ou des remarques: Benjamin CAILLAT