's Backdoors Présentation des backdoors Objectif et plan L’objectif de cette présentation est de faire une démonstration des possibilités de backdoors avancées sous Windows Elle commence par une présentation de l’environnement et des backdoors, suivie d’une démonstration effectuée via une capture vidéo - x90re backdoors - Avertissement --La présentation, au cours de cette démonstration, de techniques de compromission a pour unique objectif de vous permette de mieux les appréhender pour mieux vous en protéger Ces manipulations ont été faites dans un environnement de test privé et confiné Pour mémoire toute tentative d’intrusion sur un réseau ou sur des machines ne vous appartenant pas est illégale Partie I Présentation du contexte Description du contexte On considère le cas d’attaques ciblées : l’objectif est la récupération de documents confidentiels sur le poste d’une entreprise Cette présentation se concentre sur la partie évasion de données. L’introduction de la backdoor ne sera pas considérée. Ce seront des exécutables directement lancés sur les postes compromis - x90re backdoors - Réseau de l’entreprise (1) L’architecture considérée sera une représentation simplifiée d’un réseau d’entreprise : Un LAN de machines sous Windows Les postes sont autorisés à accèder au web via un proxy Les connexions directes vers l’extérieur sont interdites - x90re backdoors - Réseau de l’entreprise (2) PROXY HTTP(S) Réseau de l’entrepris e INTERNET FIREWALL CONNEXIONS CONNEXIONSDIRECTES DOIVENT PASSER SONT INTERDITES PAR LE PROXY - x90re backdoors - SERVEUR HTTP(S) Partie II Présentation des backdoors Deux clients, un serveur Les backdoors sont des parties clientes se connectant sur une partie serveur Il existe deux backdoors (parties clientes) : Fratus et Parsifal Elles communiquent avec une partie serveur : BlackMoon - x90re backdoors - Principe de communication Méthode de communication s’apparente à du polling afin de ressembler à des requêtes web (principe détaillé plus loin) SLEEP Backdoor Réponse Requête - x90re backdoors - BlackMoon Les backdoors implémentent une interface standard sur laquelle viennent se brancher des « modules » Modularité des backdoors (1) Module 1 Module 2 Backdoor BlackMoon - x90re backdoors - Modularité des backdoors (2) Les backdoors ont pour unique objectif d'établir une communication avec BlackMoon. Les fonctionnalités réelles sont dans les modules Les modules sont des dlls qui exportent un ensemble standardisé de fonctions Elles sont uploadées depuis BlackMoon et chargées dans l'espace processus de la backdoor - x90re backdoors - Modularité des backdoors (3) Avantages L’ajout de nouvelles fonctionnalités est rapide et facile La taille de la backdoor reste faible Il est possible d’uploader uniquement les modules requis sur l’hôte Il suffit de connaître l’interface pour développer de nouveaux modules. Il est inutile de comprendre/d’avoir le code de la backdoor - x90re backdoors - Modularité des backdoors (4) Exemples de modules déjà développés : CMD = « cmd » distant FIF = Recherche récursive dans les fichiers GPW = Capture de mot de passe BNR = Banner fingerprint FWD = Ajoute la fonctionnalité forward SCAN = Scanner TCP (syn/cnt) / ICMP / UDP SNST = Effectue des screenshots - x90re backdoors - Adresse de la partie serveur communiquant peut être retrouvée : Dans la backdoor elle-même Dans lesNotion logs du proxy de fwd (1) Pour éviter que la remontée à l’attaquant soit possible, des relais (fwd) sont ajoutés entre la backdoor et BlackMoon - x90re backdoors - Notion de fwd (2) Principe avec un relais (fwd) : Backdoor Réponse Requête fwd Réponse Requête BlackMoon Problème : l’attaquant n’a aucun lien et donc aucun contrôle sur le fwd => celui-ci peut s’arrêter à tout moment Il faut donc introduire une redondance - x90re backdoors - Notion de fwd (3) Généralisation avec N relais : Choisi Marque un Backdoor fwd fwd au Requête Réponse comme hasard Réponse Requête down Echec de la connection Choisi un fwdfwd au Requête Réponse hasard fwd Choisi un fwdfwd au fwd Forwarder hasard Requête éteint Réponse fwd fwd - x90re backdoors - Requête Réponse BlackMoon Réponse Requête Notion de fwd (4) Chaque relais choisi aléatoirement le relais suivant Le chemin reste établit pendant une durée limitée (30 s.) puis est reconstruit avec d’autres relais Si un relais n’est plus disponible, il est écarté de la liste des relais valides La fonctionnalité de fwd est implémentée par un module; toute backdoor peut devenir un fwd - x90re backdoors - Par défaut, les backdoors utilisent des canaux cachés dans HTTP pour communiquer Comme pour les modules, il est possible Modularité du protocole (1) de d’ajouter le support de nouveaux protocoles dynamiquement - x90re backdoors - Modularité du protocole (2) Il existe une interface normalisée entre les backdoors et les modules protocoles Module 1 Module 2 Backdoor HTTP BlackMoon Protocole 2 - x90re backdoors - Modularité du protocole (3) Comme pour les modules, l’ajout d’un nouveau protocole se fait en uploadant une dll, qui sera ensuite chargée dans l’espace processus de la backdoor Les protocoles actuellement supportés sont : HTTP (Hardcodé dans la backdoor) HTTPS DIRECT JABBER - x90re backdoors - Communication via HTTP (1) Communication dans des canaux cachés: Backdoor => BlackMoon : données encodées (par XOR) dans les requêtes (GET/POST) BlackMoon => Backdoor : données encodées (par XOR et base 64) et placées à un offset aléatoire dans la page HTML Une URL est extraite de la page HTML et utilisée lors de la requête suivante - x90re backdoors - Communication via HTTP (2) Principe de la communication par HTTP BlackMoon Backdoor HTTP 200 OK … <HTML> … [REAL DATA XOREDHTTP/1.1 GET http://www.server.com/options.html & ENCODED IN BASE64] … </HTML> HTTP 200 OK … <HTML> … [REAL DATA XORED GET /options.html HTTP/1.1 & ENCODED IN BASE64] … </HTML> - x90re backdoors - Communication via HTTPS Ouverture d’une véritable connexion SSL Nécessite l’upload des librairies OpenSSL Supporte la communication via PROXY Des données inutiles sont ajoutées à la réponse pour conserver un rapport U/D faible - x90re backdoors - Communication via DIRECT Protocole simple sans canaux cachés N’est pas un protocole standardisé, ne supporte donc pas les proxys. La communication doit être directe Peut être utilisé dans un environnement non sécurisé (ordinateur utilisateur classique) - x90re backdoors - Communication via JABBER Les données sont encodées en base 64 et envoyée d’un utilisateur à un autre via un message Protocole plus fragile que les autres car la connexion n’est pas directe - x90re backdoors - Chaque protocole implémente la fonctionnalité de forward en plus de la fonctionnalité « client » Les forwarders capables de(1) FWD etsont protocoles désencapsuler des données d’un protocole vers un autre - x90re backdoors - FWD et protocoles (2) Par exemple dans la chaîne suivante, la communication va passer par le proxy en HTTP(S), puis passer en JABBER, puis en DIRECT Backdoor BlackMoon PROXY HTTP(S) JABBER JABBER - x90re backdoors - DIRECT FWD et protocoles (3) Pour les protocoles HTTP(S) et DIRECT, le FWD doit être accessible depuis Internet L’utilisation de protocole client-client comme JABBER permet d’avoir des FWD sur des machines non accessibles depuis Internet (par exemple des machines cachées derrière du NAT) - x90re backdoors - FWD et protocoles (4) La transformation protocole (client/serveur) vers protocole (client/serveur) est facile 3 connexions en entrée 3 connexions en sortie - x90re backdoors - FWD et protocoles (5) Dans le cas de protocoles client-client (JABBER), la connexion doit multiplexer les requêtes des backdoors en amont JABBER 1 seule connexion en sortie 3 connexions en entrée - x90re backdoors - Les deux backdoors implémentent toutes les deux les interfaces module et protocole Tous les modules et Module 1 Module 2 Modularité conclusion les protocoles peuvent Backdoor donc se plugger sur (Fratus ou Parsifal) l’une et sur l’autre Protocole HTTP - x90re backdoors - 2 Fratus s’exécute en tant que processus séparé Elle récupère les paramètres de connexions au web via les de Présentation defichiers Fratus configuration des navigateurs (Internet Explorer, Firefox, Netscape) - x90re backdoors - Parsifal s’exécute en tant que thread dans les processus de l’utilisateur Elle adopte un comportement virale en mémoire Présentation de Parsifal (1) Tous les nouveaux processus lancés sont également infectés - x90re backdoors - Présentation de Parsifal (2) Parsifal récupère les paramètres de connexions au web en hookant certaines fonctions et en analysant les paramètres passés lors des appels. Elle n’est donc pas liée à l’utilisation d’un navigateur Une fois les paramètres obtenus, il existe plusieurs modes. Par défaut, elle lance un navigateur caché dans lequel elle s’exécute - x90re backdoors - Présentation de Parsifal (3) Comme les connexions sont établies à partir de threads dans les navigateurs, Parsifal contourne le filtrage des firewalls personnels - x90re backdoors - Présentation de Parsifal (4) Autres fonctionnalités: Rootkits user-land (répertoire d’installation et clé de registre de redémarrage cachés) Logge les accès HTTP(S) de Internet Explorer Supporte les proxys avec authentification Récupération des mots de passe POP3 Envoi d’une copie des mails en bcc - x90re backdoors - Partie III Démonstration Démonstration La démonstration est disponible sous forme d’une vidéo sur mon site perso : http://benjamin.caillat.free.fr/backdoors.php - x90re backdoors - Partie IV Conclusion A venir Continuer les tests Améliorer l’efficacité du transfert de données entre les fwd et BlackMoon Développer de nouveaux modules Ajouter de nouveaux protocoles (IRC) Tester avec d’autres firewalls personnels avancés - x90re backdoors - Contact Pour toutes questions/remarques: [email protected] - x90re backdoors -