Upload
shaman
View
28
Download
1
Embed Size (px)
DESCRIPTION
x90re’s Backdoors. Présentation des Backdoors. Objectif et plan. Contexte présentation Présentation des bkdrs Détection FWs persos Démonstration Conclusion. - PowerPoint PPT Presentation
Citation preview
x90re’s Backdoors
Présentation des Backdoors
Présentation de x90re’s backdoors – Benjamin CAILLAT
Objectif et plan
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
Contexte présentationPrésentation des bkdrsDétection FWs persos DémonstrationConclusion
Présentation de x90re’s 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 d’intrusion sur un réseau ou sur des machines ne vous appartenant pas est illégale
Contexte présentationPrésentation des bkdrsDétection FWs persos DémonstrationConclusion
Partie I
Présentation du contexte
Présentation de x90re’s backdoors – Benjamin CAILLAT
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
Contexte présentationPrésentation des bkdrsDétection FWs persos DémonstrationConclusion
>
Présentation de x90re’s backdoors – Benjamin CAILLAT
Réseau de l’entreprise (1)
L’architecture considérée sera une représentation simplifiée d’un réseau d’entreprise :
o Un LAN de machines sous Windowso Les postes sont autorisés à accéder au web via un
proxyo Les connexions directes vers l’extérieur sont
interdites
Contexte présentationPrésentation des bkdrsDétection FWs persos DémonstrationConclusion
>
Présentation de x90re’s backdoors – Benjamin CAILLAT
Réseau de l’entreprise (2)
Architecture « classique » schématisée :
Réseau de l’entreprise
InternetHTTP(S)
HTTP(S)DNS
POP(S)IMAP(S)SMTP
SMTPHTTP(S)
Proxy HTTP(S)
Serveurs mailServeur web
Contexte présentationPrésentation des bkdrsDétection FWs persos DémonstrationConclusion
>
Partie II
Présentation des backdoors
Présentation de x90re’s 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 Parsifalo 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ésentationPrésentation des bkdrsDétection FWs persos DémonstrationConclusion
>
Présentation de x90re’s backdoors – Benjamin CAILLAT
BlackMoonBackdoor
Principe de communication
Méthode de communication s’apparente à du polling afin de ressembler à des requêtes web (principe détaillé plus loin)
Requête
RéponseSLEEP
Contexte présentationPrésentation des bkdrsDétection FWs persos DémonstrationConclusion
>
Présentation de x90re’s backdoors – Benjamin CAILLAT
Modularité au niveau fonctionneldes 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ésentationPrésentation des bkdrsDétection FWs persos DémonstrationConclusion
>
Présentation de x90re’s backdoors – Benjamin CAILLAT
Modularité au niveau fonctionneldes 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ésentationPrésentation des bkdrsDétection FWs persos DémonstrationConclusion
>
Présentation de x90re’s backdoors – Benjamin CAILLAT
Modularité au niveau fonctionneldes backdoors (3)
Modularité comporte de nombreux avantages:o L’ajout de nouvelles fonctionnalités est rapide et
facileo La taille de la backdoor reste faibleo Il est possible d’uploader uniquement les modules
requis sur l’hôteo 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
Contexte présentationPrésentation des bkdrsDétection FWs persos DémonstrationConclusion
>
Présentation de x90re’s backdoors – Benjamin CAILLAT
Modularité au niveau fonctionneldes backdoors (4)
Exemples de modules existants :
CMD « cmd » distant
FIF Recherche récursive dans les fichiers
BNR Récupération de bannière
SCAN Scanner TCP (SYN/CNT) / ICMP / UDP
TRASH Création des pages HTML inutiles
CPS Compression des fichiers transférés
SNST Effectue des screenshots
Contexte présentationPrésentation des bkdrsDétection FWs persos DémonstrationConclusion
>
Présentation de x90re’s backdoors – Benjamin CAILLAT
Notion de forwarder (1)
Adresse de la partie serveur communiquant peut être retrouvée :
o Dans la backdoor elle-mêmeo 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
Contexte présentationPrésentation des bkdrsDétection FWs persos DémonstrationConclusion
>
Présentation de x90re’s backdoors – Benjamin CAILLAT
Notion de forwarder (2)
Principe avec un relais (forwarder ) :
Réseau de l’entreprise
Internet
Proxy HTTP(S)
backdoor attaquantfwd
=> Adresse hardcodée et loggée est celle du forwarder
Contexte présentationPrésentation des bkdrsDétection FWs persos DémonstrationConclusion
>
Présentation de x90re’s 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 : 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
Contexte présentationPrésentation des bkdrsDétection FWs persos DémonstrationConclusion
>
Présentation de x90re’s backdoors – Benjamin CAILLAT
Généralisation du conceptRéseau de forwarder (1)
Réponse
Réponse
Backdoor BlackMoonfwd
fwd
fwd
fwd
fwd
fwd
Requête
Requête
Réponse
Requête
Réponse
Choisi un fwd au hasard
Requête
Requête
Requête
Réponse
Réponse
Choisi un fwd au hasard
Choisi un fwd au hasard
Forwarder éteint
Echec de la connection
Marque fwd
comme down
Contexte présentationPrésentation des bkdrsDétection FWs persos DémonstrationConclusion
>
Présentation de x90re’s backdoors – Benjamin CAILLAT
Généralisation du conceptRé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 d’autres relais
Si un relais n’est plus disponible, il est écarté de la liste des relais valides
Contexte présentationPrésentation des bkdrsDétection FWs persos DémonstrationConclusion
>
Présentation de x90re’s backdoors – Benjamin CAILLAT
Modularité au niveau protocolairedes 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 d’ajouter le support de nouveaux protocoles dynamiquement
Contexte présentationPrésentation des bkdrsDétection FWs persos DémonstrationConclusion
>
Présentation de x90re’s backdoors – Benjamin CAILLAT
Modularité au niveau protocolairedes backdoors (2)
Interface normalisée entre backdoors et modules protocoles
Backdoor(Fratus ou Parsifal)
Module 1Module 2
BlackMoonHTTP Protocole
2 HTTP ou Protocole 2
HTTP
Contexte présentationPrésentation des bkdrsDétection FWs persos DémonstrationConclusion
>
Présentation de x90re’s backdoors – Benjamin CAILLAT
Modularité au niveau protocolairedes backdoors (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 :o HTTP (Hardcodé dans la backdoor)o HTTPSo DIRECTo JABBER
Contexte présentationPrésentation des bkdrsDétection FWs persos DémonstrationConclusion
>
Présentation de x90re’s 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 d’un trafic wab
Contexte présentationPrésentation des bkdrsDétection FWs persos DémonstrationConclusion
>
Présentation de x90re’s backdoors – Benjamin CAILLAT
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
Contexte présentationPrésentation des bkdrsDétection FWs persos DémonstrationConclusion
>
Présentation de x90re’s backdoors – Benjamin CAILLAT
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)
Contexte présentationPrésentation des bkdrsDétection FWs persos DémonstrationConclusion
>
Présentation de x90re’s backdoors – Benjamin CAILLAT
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
Contexte présentationPrésentation des bkdrsDétection FWs persos DémonstrationConclusion
>
Présentation de x90re’s 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 d’un protocole vers un autre
Contexte présentationPrésentation des bkdrsDétection FWs persos DémonstrationConclusion
>
Présentation de x90re’s 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
JABBERDIRECT
Backdoor BlackMoonHTTP(S)
Fwd Fwd
Contexte présentationPrésentation des bkdrsDétection FWs persos DémonstrationConclusion
>
Présentation de x90re’s backdoors – Benjamin CAILLAT
Forwarder 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)
Contexte présentationPrésentation des bkdrsDétection FWs persos DémonstrationConclusion
>
Présentation de x90re’s backdoors – Benjamin CAILLAT
Forwarder et protocoles (4)
La transformation protocole (client/serveur) vers protocole (client/serveur) est facile
Contexte présentationPrésentation des bkdrsDétection FWs persos DémonstrationConclusion
>
Présentation de x90re’s 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ésentationPrésentation des bkdrsDétection FWs persos DémonstrationConclusion
>
Présentation de x90re’s backdoors – Benjamin CAILLAT
Présentation de Fratus
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
o Internet Explorer: API wininet.dll, registryo Netscape, Firefox:
fichier “pref.js” stocké dans un répertoire de nom aléatoire Nécessité d’une recherche récursive
o Ne fonctionne pas en cas de PAC
Contexte présentationPrésentation des bkdrsDétection FWs persos DémonstrationConclusion
>
Présentation de x90re’s backdoors – Benjamin CAILLAT
Présentation de Parsifal (1)
Parsifal s’exécute en tant que thread dans les processus de l’utilisateur
Processus 1
Threads
Mémoire virtuelle
Processus 2
Threads
Mémoire virtuelle
VirtualAllocExWriteProcessMemory
CreateRemoteThread
Contexte présentationPrésentation des bkdrsDétection FWs persos DémonstrationConclusion
>
Présentation de x90re’s backdoors – Benjamin CAILLAT
Présentation de Parsifal (2)
Récupération des paramètres de connexion en hookant certaines fonctions
push […]push […]call [func]…
push ebpmov ebp, espmov eax, [ebp+4]inc eax
…
ret
…code analyse…call [header]…code analyse…ret
push ebpmov ebp, espmov eax, [ebp+4]jmp [suite_func]
jmp [hook_code]
Contexte présentationPrésentation des bkdrsDétection FWs persos DémonstrationConclusion
>
Présentation de x90re’s backdoors – Benjamin CAILLAT
Présentation de Parsifal (3)
Méthode très puissante :o Récupération des paramètres de connexiono Supporte authentification « Basic » sur le proxyo Indépendant de l’application / méthode de
configuration de cette applicationo Processus initial contenant la backdoor ne
s’exécute qu’un temps très courto Connexions initiées à partir applications autorisées
à accéder au web => bypass firewalls personnels
Contexte présentationPrésentation des bkdrsDétection FWs persos DémonstrationConclusion
>
Présentation de x90re’s 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ésentationPrésentation des bkdrsDétection FWs persos DémonstrationConclusion
>
Présentation de x90re’s backdoors – Benjamin CAILLAT
Présentation de Parsifal (5)
Résumé du principe de fonctionnement
Parsifal explorer.exe
winword.exe
notepad.exe
iexplore.exe
Accès webTest accès BlackMoon
iexplore.execaché
Accès BlackMoon
Contexte présentationPrésentation des bkdrsDétection FWs persos DémonstrationConclusion
>
Présentation de x90re’s backdoors – Benjamin CAILLAT
Présentation de Parsifal (6)
Parsifal intègre d’autres fonctionnalités :o Rootkit user-land : en hookant certaines fonctions
cache certains répertoires / clés de registreo 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 POP3o Ajout d’un destinataire en copie cachée des mails
envoyés en SMTP
Contexte présentationPrésentation des bkdrsDétection FWs persos DémonstrationConclusion
>
Partie III
Détection par des firewalls personnels
Présentation de x90re’s 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 SP2o FW personnel de baseo FW personnel avancé
Type Flux entrants Flux sortants Fonctions avancées
XP SP2
De base
Avancé
Contexte présentationPrésentation des bkdrsDétection FWs persos DémonstrationConclusion
>
Présentation de x90re’s backdoors – Benjamin CAILLAT
Principe des firewalls personnels (2)
Fonctions avancéeso Contrôle d’intégrité des programmeso Contrôle de l’appel de certaines fonctions pour
éviter les injections : WriteProcessMemory VirtualAllocEx CreateRemoteThread ...
Contexte présentationPrésentation des bkdrsDétection FWs persos DémonstrationConclusion
>
Présentation de x90re’s backdoors – Benjamin CAILLAT
Détection des backdoors par les firewalls personnels (1)
Détection de Fratus et Parsifal
(*) : Repose sur réponse de l’utilisateur
(**) : Passe malgré la protection !!??
Type Fratus Parsifal
XP SP2
De base
Avancé
(*)
(*) (**)
Contexte présentationPrésentation des bkdrsDétection FWs persos DémonstrationConclusion
>
Présentation de x90re’s backdoors – Benjamin CAILLAT
Détection des backdoors par les firewalls personnels (2)
Exemple de Kerio : Module anti-injectiono Module spécial pour éviter injection de codeo 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ésentationPrésentation des bkdrsDétection FWs persos DémonstrationConclusion
>
Présentation de x90re’s 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 l’espace utilisateur !
push […]push […]call [func]…
push ebpmov ebp, espmov eax, [ebp+4]inc eax
…
ret
…int 2Eh…analyse code retour - saut [ERREUR] - jmp [header]
push ebpmov ebp, espmov eax, [ebp+4]jmp [suite_func]
jmp [fw_hook_code]jmp [header]
Contexte présentationPrésentation des bkdrsDétection FWs persos DémonstrationConclusion
>
Présentation de x90re’s backdoors – Benjamin CAILLAT
Détection des backdoors par les firewalls personnels (4)
Exemples :o Kerio 4.2.3o Tiny Firewall 2005 Professionalo Securepoint 3.6o Norton Personal Firewall 2006
Conclusion :o Parsifal bypass la majorité des firewalls personnelso Cas ZoneAlarm ?
Contexte présentationPrésentation des bkdrsDétection FWs persos DémonstrationConclusion
>
Partie IV
Démonstration
Présentation de x90re’s backdoors – Benjamin CAILLAT
Démonstration
La démonstration est disponible sous forme d’une vidéo sur mon site perso :
http://benjamin.caillat.free.fr/backdoors.php
Contexte présentationPrésentation des bkdrsDétection FWs persos DémonstrationConclusion
>
Partie V
Conclusion
Présentation de x90re’s backdoors – Benjamin CAILLAT
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
Contexte présentationPrésentation des bkdrsDétection FWs persos DémonstrationConclusion>
Présentation de x90re’s backdoors – Benjamin CAILLAT
Contact
Pour toutes questions/remarques:
ou
Contexte présentationPrésentation des bkdrsDétection FWs persos DémonstrationConclusion>