x90res Backdoors Présentation des Backdoors
Présentation de x90res backdoors – Benjamin CAILLAT Objectif et plan Lobjectif de cette présentation est de faire une démonstration pratique des possibilités de backdoors avancées sous Windows issues dun développement personnel Elle commence par une présentation du contexte et des backdoors, suivie dune démonstration effectuée via une capture vidéo Contexte présentation Présentation des bkdrs Détection FWs persos Démonstration Conclusion
Présentation de x90res backdoors – Benjamin CAILLAT 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 dintrusion sur un réseau ou sur des machines ne vous appartenant pas est illégale Contexte présentation Présentation des bkdrs Détection FWs persos Démonstration Conclusion
Partie I Présentation du contexte
Présentation de x90res backdoors – Benjamin CAILLAT Description du contexte On considère le cas dattaques ciblées : lobjectif est la récupération de documents confidentiels sur le poste dune entreprise Cette présentation se concentre sur la partie évasion de données. Lintroduction de la backdoor ne sera pas considérée. Ce seront des exécutables directement lancés sur les postes compromis Contexte présentation Présentation des bkdrs Détection FWs persos Démonstration Conclusion >
Présentation de x90res backdoors – Benjamin CAILLAT Réseau de lentreprise (1) Larchitecture considérée sera une représentation simplifiée dun réseau dentreprise : o Un LAN de machines sous Windows o Les postes sont autorisés à accéder au web via un proxy o Les connexions directes vers lextérieur sont interdites Contexte présentation Présentation des bkdrs Détection FWs persos Démonstration Conclusion >
Présentation de x90res backdoors – Benjamin CAILLAT Réseau de lentreprise (2) Architecture « classique » schématisée : Réseau de lentreprise Internet HTTP(S) DNS POP(S) IMAP(S) SMTP HTTP(S) Proxy HTTP(S) Serveurs mail Serveur web Contexte présentation Présentation des bkdrs Détection FWs persos Démonstration Conclusion >
Partie II Présentation des backdoors
Présentation de x90res backdoors – Benjamin CAILLAT Deux clients, un serveur Les backdoors sont des parties clientes se connectant sur une partie serveur o Il existe deux backdoors (parties clientes) : Fratus et Parsifal o Elles communiquent avec une partie serveur : BlackMoon Cette partie commence par exposer des principes généraux communs aux deux backdoors, puis présentera leurs différences Contexte présentation Présentation des bkdrs Détection FWs persos Démonstration Conclusion >
Présentation de x90res backdoors – Benjamin CAILLAT BlackMoon Backdoor Principe de communication Méthode de communication sapparente à du polling afin de ressembler à des requêtes web (principe détaillé plus loin) Requête Réponse SLEEP Contexte présentation Présentation des bkdrs Détection FWs persos Démonstration Conclusion >
Présentation de x90res backdoors – Benjamin CAILLAT Modularité au niveau fonctionnel des backdoors (1) Les backdoors implémentent une interface standard sur laquelle viennent se brancher des « modules » Module 1Module 2 Backdoor (Fratus ou Parsifal) BlackMoon Contexte présentation Présentation des bkdrs Détection FWs persos Démonstration Conclusion >
Présentation de x90res backdoors – Benjamin CAILLAT Modularité au niveau fonctionnel des backdoors (2) Les backdoors ont pour unique objectif d'établir une communication avec BlackMoon. Les fonctionnalités réelles sont déportées 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 du processus contenant la backdoor Contexte présentation Présentation des bkdrs Détection FWs persos Démonstration Conclusion >
Présentation de x90res backdoors – Benjamin CAILLAT Modularité au niveau fonctionnel des backdoors (3) Modularité comporte de nombreux avantages: o Lajout de nouvelles fonctionnalités est rapide et facile o La taille de la backdoor reste faible o Il est possible duploader uniquement les modules requis sur lhôte o Il suffit de connaître linterface pour développer de nouveaux modules. Il est inutile de comprendre/davoir le code de la backdoor Contexte présentation Présentation des bkdrs Détection FWs persos Démonstration Conclusion >
Présentation de x90res backdoors – Benjamin CAILLAT Modularité au niveau fonctionnel des backdoors (4) Exemples de modules existants : CMD« cmd » distant FIFRecherche récursive dans les fichiers BNRRécupération de bannière SCANScanner TCP (SYN/CNT) / ICMP / UDP TRASHCréation des pages HTML inutiles CPSCompression des fichiers transférés SNSTEffectue des screenshots Contexte présentation Présentation des bkdrs Détection FWs persos Démonstration Conclusion >
Présentation de x90res backdoors – Benjamin CAILLAT Notion de forwarder (1) Adresse de la partie serveur communiquant peut être retrouvée : o Dans la backdoor elle-même o Dans les logs du proxy Pour éviter que la remontée à lattaquant soit possible, des relais (forwarders) sont ajoutés entre la backdoor et BlackMoon Contexte présentation Présentation des bkdrs Détection FWs persos Démonstration Conclusion >
Présentation de x90res backdoors – Benjamin CAILLAT Notion de forwarder (2) Principe avec un relais (forwarder ) : Réseau de lentreprise Internet Proxy HTTP(S) backdoorattaquant fwd => Adresse hardcodée et loggée est celle du forwarder Contexte présentation Présentation des bkdrs Détection FWs persos Démonstration Conclusion >
Présentation de x90res backdoors – Benjamin CAILLAT Notion de forwarder (3) La fonctionnalité de fwd est implémentée par un module ; toute backdoor peut devenir un fwd Problème : lattaquant na (et ne doit !) avoir aucun lien avec la machine fwd Celle-ci peut donc sarrêter à tout moment ! Il faut donc introduire une redondance Contexte présentation Présentation des bkdrs Détection FWs persos Démonstration Conclusion >
Présentation de x90res backdoors – Benjamin CAILLAT Généralisation du concept Réseau de forwarder (1) Réponse BackdoorBlackMoon fwd Requête Réponse RequêteRéponse Choisi un fwd au hasard Requête Réponse Choisi un fwd au hasard Forwarder éteint Echec de la connection Marque fwd comme down Contexte présentation Présentation des bkdrs Détection FWs persos Démonstration Conclusion >
Présentation de x90res backdoors – Benjamin CAILLAT Généralisation du concept Réseau de forwarder (2) Chaque relais choisi aléatoirement le relais suivant Le chemin reste établit pendant une durée limitée (30 s.) puis est reconstruit avec dautres relais Si un relais nest plus disponible, il est écarté de la liste des relais valides Contexte présentation Présentation des bkdrs Détection FWs persos Démonstration Conclusion >
Présentation de x90res backdoors – Benjamin CAILLAT Modularité au niveau protocolaire des backdoors (1) Par défaut, les backdoors utilisent des canaux cachés dans HTTP pour communiquer Protocole HTTP est « harcodé » dans backdoors Comme pour les modules, il est possible de dajouter le support de nouveaux protocoles dynamiquement Contexte présentation Présentation des bkdrs Détection FWs persos Démonstration Conclusion >
Présentation de x90res backdoors – Benjamin CAILLAT Modularité au niveau protocolaire des backdoors (2) Interface normalisée entre backdoors et modules protocoles Backdoor (Fratus ou Parsifal) Module 1Module 2 BlackMoon HTTP Protocole 2 HTTP ou Protocole 2 HTTP Contexte présentation Présentation des bkdrs Détection FWs persos Démonstration Conclusion >
Présentation de x90res backdoors – Benjamin CAILLAT Modularité au niveau protocolaire des backdoors (3) Comme pour les modules, lajout dun nouveau protocole se fait en uploadant une dll, qui sera ensuite chargée dans lespace processus de la backdoor Les protocoles actuellement supportés sont : o HTTP (Hardcodé dans la backdoor) o HTTPS o DIRECT o JABBER Contexte présentation Présentation des bkdrs Détection FWs persos Démonstration Conclusion >
Présentation de x90res backdoors – Benjamin CAILLAT Communication via HTTP Communication dans des canaux cachés: o Backdoor => BlackMoon : données encodées (par XOR) dans les requêtes (GET/POST) o 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 Trafic généré très proche dun trafic wab Contexte présentation Présentation des bkdrs Détection FWs persos Démonstration Conclusion >
Présentation de x90res backdoors – Benjamin CAILLAT Communication via HTTPS Ouverture dune véritable connexion SSL Nécessite lupload 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 Contexte présentation Présentation des bkdrs Détection FWs persos Démonstration Conclusion >
Présentation de x90res backdoors – Benjamin CAILLAT Communication via DIRECT Protocole simple sans canaux cachés Nest 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) Contexte présentation Présentation des bkdrs Détection FWs persos Démonstration Conclusion >
Présentation de x90res backdoors – Benjamin CAILLAT Communication via JABBER Les données sont encodées en base 64 et envoyée dun utilisateur à un autre via un message Protocole plus fragile que les autres car la connexion nest pas directe Contexte présentation Présentation des bkdrs Détection FWs persos Démonstration Conclusion >
Présentation de x90res backdoors – Benjamin CAILLAT Forwarder et protocoles (1) Chaque protocole implémente la fonctionnalité de forward en plus de la fonctionnalité « client » Les forwarders sont capables de désencapsuler des données dun protocole vers un autre Contexte présentation Présentation des bkdrs Détection FWs persos Démonstration Conclusion >
Présentation de x90res backdoors – Benjamin CAILLAT Forwarder 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 PROXY JABBER DIRECT BackdoorBlackMoon HTTP(S) Fwd Contexte présentation Présentation des bkdrs Détection FWs persos Démonstration Conclusion >
Présentation de x90res backdoors – Benjamin CAILLAT Forwarder et protocoles (3) Pour les protocoles HTTP(S) et DIRECT, le FWD doit être accessible depuis Internet Lutilisation de protocole client-client comme JABBER permet davoir des FWD sur des machines non accessibles depuis Internet (par exemple des machines cachées derrière du NAT) Contexte présentation Présentation des bkdrs Détection FWs persos Démonstration Conclusion >
Présentation de x90res backdoors – Benjamin CAILLAT Forwarder et protocoles (4) La transformation protocole (client/serveur) vers protocole (client/serveur) est facile Contexte présentation Présentation des bkdrs Détection FWs persos Démonstration Conclusion >
Présentation de x90res backdoors – Benjamin CAILLAT Forwarder et protocoles (5) Dans le cas de protocoles client-client (JABBER), la connexion doit multiplexer les requêtes des backdoors en amont JABBER Contexte présentation Présentation des bkdrs Détection FWs persos Démonstration Conclusion >
Présentation de x90res backdoors – Benjamin CAILLAT Présentation de Fratus Fratus sexécute en tant que processus séparé Elle récupère les paramètres de connexion dans la configuration du navigateur par défaut o Internet Explorer: API wininet.dll, registry o Netscape, Firefox: fichier pref.js stocké dans un répertoire de nom aléatoire Nécessité dune recherche récursive o Ne fonctionne pas en cas de PAC Contexte présentation Présentation des bkdrs Détection FWs persos Démonstration Conclusion >
Présentation de x90res backdoors – Benjamin CAILLAT Présentation de Parsifal (1) Parsifal sexécute en tant que thread dans les processus de lutilisateur Processus 1 Threads Mémoire virtuelle Processus 2 Threads Mémoire virtuelle VirtualAllocEx WriteProcessMemory CreateRemoteThread Contexte présentation Présentation des bkdrs Détection FWs persos Démonstration Conclusion >
Présentation de x90res backdoors – Benjamin CAILLAT Présentation de Parsifal (2) Récupération des paramètres de connexion en hookant certaines fonctions push […] call [func] … push ebp mov ebp, esp mov eax, [ebp+4] inc eax … ret … code analyse … call [header] … code analyse … ret push ebp mov ebp, esp mov eax, [ebp+4] jmp [suite_func] jmp [hook_code] Contexte présentation Présentation des bkdrs Détection FWs persos Démonstration Conclusion >
Présentation de x90res backdoors – Benjamin CAILLAT Présentation de Parsifal (3) Méthode très puissante : o Récupération des paramètres de connexion o Supporte authentification « Basic » sur le proxy o Indépendant de lapplication / méthode de configuration de cette application o Processus initial contenant la backdoor ne sexécute quun temps très court o Connexions initiées à partir applications autorisées à accéder au web => bypass firewalls personnels Contexte présentation Présentation des bkdrs Détection FWs persos Démonstration Conclusion >
Présentation de x90res backdoors – Benjamin CAILLAT Présentation de Parsifal (4) Parsifal adopte un comportement virale en mémoire Lors du lancement, tous les processus sont infectés Tous les nouveaux processus lancés sont également infectés lors du lancement Contexte présentation Présentation des bkdrs Détection FWs persos Démonstration Conclusion >
Présentation de x90res backdoors – Benjamin CAILLAT Présentation de Parsifal (5) Résumé du principe de fonctionnement Parsifalexplorer.exe winword.exe notepad.exe iexplore.exe Accès web Test accès BlackMoon iexplore.exe caché Accès BlackMoon Contexte présentation Présentation des bkdrs Détection FWs persos Démonstration Conclusion >
Présentation de x90res backdoors – Benjamin CAILLAT Présentation de Parsifal (6) Parsifal intègre dautres fonctionnalités : o Rootkit user-land : en hookant certaines fonctions cache certains répertoires / clés de registre o Log des données intéressantes (URLs, cookie, données) des requêtes HTTP et HTTPS générées par Internet Explorer o Capture et log des mots de passe POP3 o Ajout dun destinataire en copie cachée des mails envoyés en SMTP Contexte présentation Présentation des bkdrs Détection FWs persos Démonstration Conclusion >
Partie III Détection par des firewalls personnels
Présentation de x90res backdoors – Benjamin CAILLAT Principe des firewalls personnels (1) FW perso ~ contrôle des flux par application Plusieurs types de firewall personnel o FW personnel Windows XP SP2 o FW personnel de base o FW personnel avancé TypeFlux entrantsFlux sortantsFonctions avancées XP SP2 De base Avancé Contexte présentation Présentation des bkdrs Détection FWs persos Démonstration Conclusion >
Présentation de x90res backdoors – Benjamin CAILLAT Principe des firewalls personnels (2) Fonctions avancées o Contrôle dintégrité des programmes o Contrôle de lappel de certaines fonctions pour éviter les injections : WriteProcessMemory VirtualAllocEx CreateRemoteThread... Contexte présentation Présentation des bkdrs Détection FWs persos Démonstration Conclusion >
Présentation de x90res backdoors – Benjamin CAILLAT Détection des backdoors par les firewalls personnels (1) Détection de Fratus et Parsifal (*): Repose sur réponse de lutilisateur (**): Passe malgré la protection !!?? TypeFratusParsifal XP SP2 De base Avancé (*) (**) Contexte présentation Présentation des bkdrs Détection FWs persos Démonstration Conclusion >
Présentation de x90res backdoors – Benjamin CAILLAT Détection des backdoors par les firewalls personnels (2) Exemple de Kerio : Module anti-injection o Module spécial pour éviter injection de code o Lors appel de certaines fonctions, analyse en mode noyau si adresse retour est bien dans un module chargé o Or notre code injecté = portion de mémoire allouée par VirtualAllocEx = code hors des modules chargés o Belle popup « injection detectée » Alors, protégé ? Contexte présentation Présentation des bkdrs Détection FWs persos Démonstration Conclusion >
Présentation de x90res backdoors – Benjamin CAILLAT Détection des backdoors par les firewalls personnels (3) Et non ! Appel de la fonction de vérification en noyau faite dans lespace utilisateur ! push […] call [func] … push ebp mov ebp, esp mov eax, [ebp+4] inc eax … ret … int 2Eh … analyse code retour - saut [ERREUR] - jmp [header] push ebp mov ebp, esp mov eax, [ebp+4] jmp [suite_func] jmp [fw_hook_code]jmp [header] Contexte présentation Présentation des bkdrs Détection FWs persos Démonstration Conclusion >
Présentation de x90res backdoors – Benjamin CAILLAT Détection des backdoors par les firewalls personnels (4) Exemples : o Kerio o Tiny Firewall 2005 Professional o Securepoint 3.6 o Norton Personal Firewall 2006 Conclusion : o Parsifal bypass la majorité des firewalls personnels o Cas ZoneAlarm ? Contexte présentation Présentation des bkdrs Détection FWs persos Démonstration Conclusion >
Partie IV Démonstration
Présentation de x90res backdoors – Benjamin CAILLAT Démonstration La démonstration est disponible sous forme dune vidéo sur mon site perso : Contexte présentation Présentation des bkdrs Détection FWs persos Démonstration Conclusion >
Partie V Conclusion
Présentation de x90res backdoors – Benjamin CAILLAT A venir Continuer les tests Améliorer lefficacité du transfert de données entre les fwd et BlackMoon Développer de nouveaux modules Ajouter de nouveaux protocoles (IRC) Tester avec dautres firewalls personnels avancés Contexte présentation Présentation des bkdrs Détection FWs persos Démonstration Conclusion>
Présentation de x90res backdoors – Benjamin CAILLAT Contact Pour toutes questions/remarques: ou Contexte présentation Présentation des bkdrs Détection FWs persos Démonstration Conclusion>