x90re’s backdoors

50
x90re’s Backdoors Présentation des Backdoors

Upload: shaman

Post on 05-Jan-2016

26 views

Category:

Documents


1 download

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

TRANSCRIPT

Page 1: x90re’s Backdoors

x90re’s Backdoors

Présentation des Backdoors

Page 2: x90re’s 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

Page 3: x90re’s Backdoors

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

Page 4: x90re’s Backdoors

Partie I

Présentation du contexte

Page 5: x90re’s Backdoors

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

>

Page 6: x90re’s Backdoors

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

>

Page 7: x90re’s Backdoors

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

>

Page 8: x90re’s Backdoors

Partie II

Présentation des backdoors

Page 9: x90re’s 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

>

Page 10: x90re’s Backdoors

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

>

Page 11: x90re’s Backdoors

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

>

Page 12: x90re’s Backdoors

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

>

Page 13: x90re’s Backdoors

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

>

Page 14: x90re’s Backdoors

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

>

Page 15: x90re’s Backdoors

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

>

Page 16: x90re’s Backdoors

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

>

Page 17: x90re’s Backdoors

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

>

Page 18: x90re’s Backdoors

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

>

Page 19: x90re’s Backdoors

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

>

Page 20: x90re’s Backdoors

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

>

Page 21: x90re’s Backdoors

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

>

Page 22: x90re’s Backdoors

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

>

Page 23: x90re’s Backdoors

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

>

Page 24: x90re’s Backdoors

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

>

Page 25: x90re’s Backdoors

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

>

Page 26: x90re’s Backdoors

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

>

Page 27: x90re’s Backdoors

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

>

Page 28: x90re’s Backdoors

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

>

Page 29: x90re’s Backdoors

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

>

Page 30: x90re’s Backdoors

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

>

Page 31: x90re’s Backdoors

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

>

Page 32: x90re’s Backdoors

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

>

Page 33: x90re’s Backdoors

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

>

Page 34: x90re’s Backdoors

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

>

Page 35: x90re’s Backdoors

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

>

Page 36: x90re’s Backdoors

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

>

Page 37: x90re’s Backdoors

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

>

Page 38: x90re’s Backdoors

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

>

Page 39: x90re’s Backdoors

Partie III

Détection par des firewalls personnels

Page 40: x90re’s Backdoors

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

>

Page 41: x90re’s Backdoors

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

>

Page 42: x90re’s Backdoors

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

>

Page 43: x90re’s Backdoors

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

>

Page 44: x90re’s Backdoors

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

>

Page 45: x90re’s Backdoors

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

>

Page 46: x90re’s Backdoors

Partie IV

Démonstration

Page 47: x90re’s Backdoors

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

>

Page 48: x90re’s Backdoors

Partie V

Conclusion

Page 49: x90re’s Backdoors

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>

Page 50: x90re’s Backdoors

Présentation de x90re’s backdoors – Benjamin CAILLAT

Contact

Pour toutes questions/remarques:

[email protected]

ou

[email protected]

Contexte présentationPrésentation des bkdrsDétection FWs persos DémonstrationConclusion>