501 likes | 585 Views
x90re’s Backdoors. Présentation des Backdoors. Objectif et plan. Contexte présentation Présentation des bkdrs Détection FWs persos Démonstration Conclusion.
E N D
x90re’s Backdoors Présentation des Backdoors
Objectif et plan Contexte présentationPrésentation des bkdrsDétection FWs persos DémonstrationConclusion • L’objectif de cette présentation est de faire une démonstration pratique des possibilités de backdoors avancées sous Windows issues d’un développement personnel • Elle commence par une présentation du contexte et des backdoors, suivie d’une démonstration effectuée via une capture vidéo Présentation de x90re’s backdoors – Benjamin CAILLAT
Avertissement Contexte présentationPrésentation des bkdrsDétection FWs persos DémonstrationConclusion • 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 Présentation de x90re’s backdoors – Benjamin CAILLAT
Partie I Présentation du contexte
Description du contexte > Contexte présentationPrésentation des bkdrsDétection FWs persos DémonstrationConclusion • 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 Présentation de x90re’s backdoors – Benjamin CAILLAT
Réseau de l’entreprise (1) > Contexte présentationPrésentation des bkdrsDétection FWs persos DémonstrationConclusion • 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 Présentation de x90re’s backdoors – Benjamin CAILLAT
HTTP(S) DNS HTTP(S) POP(S) IMAP(S) SMTP SMTP HTTP(S) Réseau de l’entreprise (2) > Contexte présentationPrésentation des bkdrsDétection FWs persos DémonstrationConclusion • Architecture « classique » schématisée : Proxy HTTP(S) Internet Réseau de l’entreprise Serveurs mail Serveur web Présentation de x90re’s backdoors – Benjamin CAILLAT
Partie II Présentation des backdoors
Deux clients, un serveur > Contexte présentationPrésentation des bkdrsDétection FWs persos DémonstrationConclusion • 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 • Cette partie commence par exposer des principes généraux communs aux deux backdoors, puis présentera leurs différences Présentation de x90re’s backdoors – Benjamin CAILLAT
Réponse Requête BlackMoon Backdoor Principe de communication > Contexte présentationPrésentation des bkdrsDétection FWs persos DémonstrationConclusion • Méthode de communication s’apparente à du polling afin de ressembler à des requêtes web (principe détaillé plus loin) SLEEP Présentation de x90re’s backdoors – Benjamin CAILLAT
Backdoor (Fratus ou Parsifal) BlackMoon Modularité au niveau fonctionneldes backdoors (1) > Contexte présentationPrésentation des bkdrsDétection FWs persos DémonstrationConclusion • Les backdoors implémentent une interface standard sur laquelle viennent se brancher des « modules » Module 1 Module 2 Présentation de x90re’s backdoors – Benjamin CAILLAT
Modularité au niveau fonctionneldes backdoors (2) > Contexte présentationPrésentation des bkdrsDétection FWs persos DémonstrationConclusion • 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 Présentation de x90re’s backdoors – Benjamin CAILLAT
Modularité au niveau fonctionneldes backdoors (3) > Contexte présentationPrésentation des bkdrsDétection FWs persos DémonstrationConclusion • Modularité comporte de nombreux 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 Présentation de x90re’s backdoors – Benjamin CAILLAT
Modularité au niveau fonctionneldes backdoors (4) > Contexte présentationPrésentation des bkdrsDétection FWs persos DémonstrationConclusion • Exemples de modules existants : Présentation de x90re’s backdoors – Benjamin CAILLAT
Notion de forwarder (1) > Contexte présentationPrésentation des bkdrsDétection FWs persos DémonstrationConclusion • Adresse de la partie serveur communiquant peut être retrouvée : • Dans la backdoor elle-même • Dans les logs du proxy • Pour éviter que la remontée à l’attaquant soit possible, des relais (forwarders) sont ajoutés entre la backdoor et BlackMoon Présentation de x90re’s backdoors – Benjamin CAILLAT
Notion de forwarder (2) > Contexte présentationPrésentation des bkdrsDétection FWs persos DémonstrationConclusion • Principe avec un relais (forwarder ) : Proxy HTTP(S) fwd backdoor attaquant Internet Réseau de l’entreprise => Adresse hardcodée et loggée est celle du forwarder Présentation de x90re’s backdoors – Benjamin CAILLAT
Notion de forwarder (3) > Contexte présentationPrésentation des bkdrsDétection FWs persos DémonstrationConclusion • La fonctionnalité de fwd est implémentée par un module ; toute backdoor peut devenir un fwd • Problème : l’attaquant n’a (et ne doit !) avoir aucun lien avec la machine fwd • Celle-ci peut donc s’arrêter à tout moment ! • Il faut donc introduire une redondance Présentation de x90re’s backdoors – Benjamin CAILLAT
Requête Requête Requête Réponse Requête Echec de la connection Réponse Requête Réponse Réponse Réponse Réponse Requête Forwarder éteint Généralisation du conceptRéseau de forwarder (1) > Contexte présentationPrésentation des bkdrsDétection FWs persos DémonstrationConclusion Choisi un fwd au hasard Backdoor BlackMoon fwd fwd Marque fwd comme down Choisi un fwd au hasard Choisi un fwd au hasard fwd fwd fwd fwd Présentation de x90re’s backdoors – Benjamin CAILLAT
Généralisation du conceptRéseau de forwarder (2) > Contexte présentationPrésentation des bkdrsDétection FWs persos DémonstrationConclusion • 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 Présentation de x90re’s backdoors – Benjamin CAILLAT
Modularité au niveau protocolairedes backdoors (1) > Contexte présentationPrésentation des bkdrsDétection FWs persos DémonstrationConclusion • 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 d’ajouter le support de nouveaux protocoles dynamiquement Présentation de x90re’s backdoors – Benjamin CAILLAT
HTTP HTTP ou Protocole 2 Modularité au niveau protocolairedes backdoors (2) > Contexte présentationPrésentation des bkdrsDétection FWs persos DémonstrationConclusion • Interface normalisée entre backdoors et modules protocoles Module 1 Module 2 Backdoor (Fratus ou Parsifal) BlackMoon HTTP Protocole 2 Présentation de x90re’s backdoors – Benjamin CAILLAT
Modularité au niveau protocolairedes backdoors (3) > Contexte présentationPrésentation des bkdrsDétection FWs persos DémonstrationConclusion • 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 Présentation de x90re’s backdoors – Benjamin CAILLAT
Communication via HTTP > Contexte présentationPrésentation des bkdrsDétection FWs persos DémonstrationConclusion • 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 • Trafic généré très proche d’un trafic wab Présentation de x90re’s backdoors – Benjamin CAILLAT
Communication via HTTPS > Contexte présentationPrésentation des bkdrsDétection FWs persos DémonstrationConclusion • 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 Présentation de x90re’s backdoors – Benjamin CAILLAT
Communication via DIRECT > Contexte présentationPrésentation des bkdrsDétection FWs persos DémonstrationConclusion • 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) Présentation de x90re’s backdoors – Benjamin CAILLAT
Communication via JABBER > Contexte présentationPrésentation des bkdrsDétection FWs persos DémonstrationConclusion • 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 Présentation de x90re’s backdoors – Benjamin CAILLAT
Forwarder et protocoles (1) > Contexte présentationPrésentation des bkdrsDétection FWs persos DémonstrationConclusion • Chaque protocole implémente la fonctionnalité de forward en plus de la fonctionnalité « client » • Les forwarders sont capables de désencapsuler des données d’un protocole vers un autre Présentation de x90re’s backdoors – Benjamin CAILLAT
HTTP(S) DIRECT JABBER Forwarder et protocoles (2) > Contexte présentationPrésentation des bkdrsDétection FWs persos DémonstrationConclusion • 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 Fwd Fwd BlackMoon PROXY JABBER Présentation de x90re’s backdoors – Benjamin CAILLAT
Forwarder et protocoles (3) > Contexte présentationPrésentation des bkdrsDétection FWs persos DémonstrationConclusion • 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) Présentation de x90re’s backdoors – Benjamin CAILLAT
Forwarder et protocoles (4) > Contexte présentationPrésentation des bkdrsDétection FWs persos DémonstrationConclusion • La transformation protocole (client/serveur) vers protocole (client/serveur) est facile Présentation de x90re’s backdoors – Benjamin CAILLAT
Forwarder et protocoles (5) > Contexte présentationPrésentation des bkdrsDétection FWs persos DémonstrationConclusion • Dans le cas de protocoles client-client (JABBER), la connexion doit multiplexer les requêtes des backdoors en amont JABBER Présentation de x90re’s backdoors – Benjamin CAILLAT
Présentation de Fratus > Contexte présentationPrésentation des bkdrsDétection FWs persos DémonstrationConclusion • Fratus s’exécute en tant que processus séparé • Elle récupère les paramètres de connexion dans la configuration du navigateur par défaut • Internet Explorer: API wininet.dll, registry • Netscape, Firefox: • fichier “pref.js” stocké dans un répertoire de nom aléatoire • Nécessité d’une recherche récursive • Ne fonctionne pas en cas de PAC Présentation de x90re’s backdoors – Benjamin CAILLAT
WriteProcessMemory Processus 1 Processus 2 Mémoire virtuelle Mémoire virtuelle VirtualAllocEx Threads Threads CreateRemoteThread Présentation de Parsifal (1) > Contexte présentationPrésentation des bkdrsDétection FWs persos DémonstrationConclusion • Parsifal s’exécute en tant que thread dans les processus de l’utilisateur Présentation de x90re’s backdoors – Benjamin CAILLAT
Présentation de Parsifal (2) > Contexte présentationPrésentation des bkdrsDétection FWs persos DémonstrationConclusion • Récupération des paramètres de connexion en hookant certaines fonctions push ebp mov ebp, esp mov eax, [ebp+4] inc eax … ret jmp [hook_code] … code analyse … call [header] … code analyse … ret push ebp mov ebp, esp mov eax, [ebp+4] jmp [suite_func] push […] push […] call [func] … Présentation de x90re’s backdoors – Benjamin CAILLAT
Présentation de Parsifal (3) > Contexte présentationPrésentation des bkdrsDétection FWs persos DémonstrationConclusion • Méthode très puissante : • Récupération des paramètres de connexion • Supporte authentification « Basic » sur le proxy • Indépendant de l’application / méthode de configuration de cette application • Processus initial contenant la backdoor ne s’exécute qu’un temps très court • Connexions initiées à partir applications autorisées à accéder au web => bypass firewalls personnels Présentation de x90re’s backdoors – Benjamin CAILLAT
Présentation de Parsifal (4) > Contexte présentationPrésentation des bkdrsDétection FWs persos DémonstrationConclusion • 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 Présentation de x90re’s backdoors – Benjamin CAILLAT
Test accès BlackMoon Accès web iexplore.exe caché Accès BlackMoon Présentation de Parsifal (5) > Contexte présentationPrésentation des bkdrsDétection FWs persos DémonstrationConclusion • Résumé du principe de fonctionnement Parsifal explorer.exe iexplore.exe winword.exe notepad.exe Présentation de x90re’s backdoors – Benjamin CAILLAT
Présentation de Parsifal (6) > Contexte présentationPrésentation des bkdrsDétection FWs persos DémonstrationConclusion • Parsifal intègre d’autres fonctionnalités : • Rootkit user-land : en hookant certaines fonctions cache certains répertoires / clés de registre • Log des données intéressantes (URLs, cookie, données) des requêtes HTTP et HTTPS générées par Internet Explorer • Capture et log des mots de passe POP3 • Ajout d’un destinataire en copie cachée des mails envoyés en SMTP Présentation de x90re’s backdoors – Benjamin CAILLAT
Partie III Détection par des firewalls personnels
Principe des firewalls personnels (1) > Contexte présentationPrésentation des bkdrsDétection FWs persos DémonstrationConclusion • FW perso ~ contrôle des flux par application • Plusieurs types de firewall personnel • FW personnel Windows XP SP2 • FW personnel de base • FW personnel avancé Présentation de x90re’s backdoors – Benjamin CAILLAT
Principe des firewalls personnels (2) > Contexte présentationPrésentation des bkdrsDétection FWs persos DémonstrationConclusion • Fonctions avancées • Contrôle d’intégrité des programmes • Contrôle de l’appel de certaines fonctions pour éviter les injections : • WriteProcessMemory • VirtualAllocEx • CreateRemoteThread • ... Présentation de x90re’s backdoors – Benjamin CAILLAT
Détection des backdoors par les firewalls personnels (1) > Contexte présentationPrésentation des bkdrsDétection FWs persos DémonstrationConclusion • Détection de Fratus et Parsifal (*) : Repose sur réponse de l’utilisateur (**) : Passe malgré la protection !!?? (*) (*) (**) Présentation de x90re’s backdoors – Benjamin CAILLAT
Détection des backdoors par les firewalls personnels (2) > Contexte présentationPrésentation des bkdrsDétection FWs persos DémonstrationConclusion • Exemple de Kerio : Module anti-injection • Module spécial pour éviter injection de code • Lors appel de certaines fonctions, analyse en mode noyau si adresse retour est bien dans un module chargé • Or notre code injecté = portion de mémoire allouée par VirtualAllocEx = code hors des modules chargés • Belle popup « injection detectée » • Alors, protégé ? Présentation de x90re’s backdoors – Benjamin CAILLAT
Détection des backdoors par les firewalls personnels (3) > Contexte présentationPrésentation des bkdrsDétection FWs persos DémonstrationConclusion • Et non ! Appel de la fonction de vérification en noyau faite dans l’espace utilisateur ! push ebp mov ebp, esp mov eax, [ebp+4] inc eax … ret jmp [fw_hook_code] jmp [header] … int 2Eh … analyse code retour - saut [ERREUR] - jmp [header] push ebp mov ebp, esp mov eax, [ebp+4] jmp [suite_func] push […] push […] call [func] … Présentation de x90re’s backdoors – Benjamin CAILLAT
Détection des backdoors par les firewalls personnels (4) > Contexte présentationPrésentation des bkdrsDétection FWs persos DémonstrationConclusion • Exemples : • Kerio 4.2.3 • Tiny Firewall 2005 Professional • Securepoint 3.6 • Norton Personal Firewall 2006 • Conclusion : • Parsifal bypass la majorité des firewalls personnels • Cas ZoneAlarm ? Présentation de x90re’s backdoors – Benjamin CAILLAT
Partie IV Démonstration
Démonstration > Contexte présentationPrésentation des bkdrsDétection FWs persos DémonstrationConclusion • La démonstration est disponible sous forme d’une vidéo sur mon site perso : http://benjamin.caillat.free.fr/backdoors.php Présentation de x90re’s backdoors – Benjamin CAILLAT
Partie V Conclusion
A venir > Contexte présentationPrésentation des bkdrsDétection FWs persos DémonstrationConclusion • 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 Présentation de x90re’s backdoors – Benjamin CAILLAT
Contact > Contexte présentationPrésentation des bkdrsDétection FWs persos DémonstrationConclusion • Pour toutes questions/remarques: b.caillat@security-labs.org ou x90re@yahoo.fr Présentation de x90re’s backdoors – Benjamin CAILLAT