utilisation du data tainting pour l'analyse de logiciels malveillants
DESCRIPTION
Utilisation du Data Tainting pour l'analyse de logiciels malveillants. Florent Marceau . Malware bancaires. NET. Cibles bancaires (chiffrées). Ce que nous avons. Explosion des trojans bancaires Variantes (en nombre) - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: Utilisation du Data Tainting pour l'analyse de logiciels malveillants](https://reader036.vdocuments.net/reader036/viewer/2022062321/56813259550346895d98e73a/html5/thumbnails/1.jpg)
SSTIC 2009 - Utilisation du Data Tainting pour l'analyse de logiciels malveillants - F. Marceau 1
Utilisation du Data Tainting pour l'analyse de
logiciels malveillants
Florent Marceau<[email protected]>
![Page 2: Utilisation du Data Tainting pour l'analyse de logiciels malveillants](https://reader036.vdocuments.net/reader036/viewer/2022062321/56813259550346895d98e73a/html5/thumbnails/2.jpg)
SSTIC 2009 - Utilisation du Data Tainting pour l'analyse de logiciels malveillants - F. Marceau 2
Malware bancaires
Cibles bancaires(chiffrées)
NET
![Page 3: Utilisation du Data Tainting pour l'analyse de logiciels malveillants](https://reader036.vdocuments.net/reader036/viewer/2022062321/56813259550346895d98e73a/html5/thumbnails/3.jpg)
SSTIC 2009 - Utilisation du Data Tainting pour l'analyse de logiciels malveillants - F. Marceau 3
Ce que nous avons
• Explosion des trojans bancaires• Variantes (en nombre)• Modulaires et flexibles (réseaux)• Obfuscation lourde• Chiffrement• Capacités de rootkit
![Page 4: Utilisation du Data Tainting pour l'analyse de logiciels malveillants](https://reader036.vdocuments.net/reader036/viewer/2022062321/56813259550346895d98e73a/html5/thumbnails/4.jpg)
SSTIC 2009 - Utilisation du Data Tainting pour l'analyse de logiciels malveillants - F. Marceau 4
Ce que nous voulons
• Généricité• Intégralement automatisé• Non intrusif (furtivité)• Temps d’exécution viable
![Page 5: Utilisation du Data Tainting pour l'analyse de logiciels malveillants](https://reader036.vdocuments.net/reader036/viewer/2022062321/56813259550346895d98e73a/html5/thumbnails/5.jpg)
SSTIC 2009 - Utilisation du Data Tainting pour l'analyse de logiciels malveillants - F. Marceau 5
Ce que nous savons
Quelques certitudes …
• Dans un environnement idéal• Données chiffrées de toutes provenances• Seront traitées à un instant (t) par le CPU• En (t+1) elles sont présentes en RAM en clair
![Page 6: Utilisation du Data Tainting pour l'analyse de logiciels malveillants](https://reader036.vdocuments.net/reader036/viewer/2022062321/56813259550346895d98e73a/html5/thumbnails/6.jpg)
SSTIC 2009 - Utilisation du Data Tainting pour l'analyse de logiciels malveillants - F. Marceau 6
Plan
• Solution retenue– Full virtualisation– Data tainting
• Implémentation générale• Calibrage• Capture• Illustration• Démo• Limites• Conclusion
![Page 7: Utilisation du Data Tainting pour l'analyse de logiciels malveillants](https://reader036.vdocuments.net/reader036/viewer/2022062321/56813259550346895d98e73a/html5/thumbnails/7.jpg)
SSTIC 2009 - Utilisation du Data Tainting pour l'analyse de logiciels malveillants - F. Marceau 7
Solution retenue
• Full virtualisation +
• Data tainting
![Page 8: Utilisation du Data Tainting pour l'analyse de logiciels malveillants](https://reader036.vdocuments.net/reader036/viewer/2022062321/56813259550346895d98e73a/html5/thumbnails/8.jpg)
SSTIC 2009 - Utilisation du Data Tainting pour l'analyse de logiciels malveillants - F. Marceau 8
Full virtualisation
• Pros :– Granularité d’instrumentation fine– Non intrusif– Permet un marquage fin des données sans
besoins hardware
• Cons :– Détectable– Gourmand en ressources
![Page 9: Utilisation du Data Tainting pour l'analyse de logiciels malveillants](https://reader036.vdocuments.net/reader036/viewer/2022062321/56813259550346895d98e73a/html5/thumbnails/9.jpg)
SSTIC 2009 - Utilisation du Data Tainting pour l'analyse de logiciels malveillants - F. Marceau 9
Data tainting
« Mécanisme permettant la traçabilité de la propagation d'une donnée sur un système d'information. »
• Traçabilité entre périphériques• Traçabilité dans la RAM (Taintmap)• Traçabilité au niveau CPU
![Page 10: Utilisation du Data Tainting pour l'analyse de logiciels malveillants](https://reader036.vdocuments.net/reader036/viewer/2022062321/56813259550346895d98e73a/html5/thumbnails/10.jpg)
SSTIC 2009 - Utilisation du Data Tainting pour l'analyse de logiciels malveillants - F. Marceau 10
Data tainting
« Mécanisme permettant la traçabilité de la propagation d'une donnée sur un système d'information. »
• Type de ces données– Données/Code
• Utilisation de ces données– Lourde et faite par un code non contrôlé
![Page 11: Utilisation du Data Tainting pour l'analyse de logiciels malveillants](https://reader036.vdocuments.net/reader036/viewer/2022062321/56813259550346895d98e73a/html5/thumbnails/11.jpg)
SSTIC 2009 - Utilisation du Data Tainting pour l'analyse de logiciels malveillants - F. Marceau 11
Data tainting
• Pros :– Suivi du déploiement du processus– Suivi des données
• Cons :Car très forte interaction des données marquées
– Très difficile à calibrer– Peut être évadé
![Page 12: Utilisation du Data Tainting pour l'analyse de logiciels malveillants](https://reader036.vdocuments.net/reader036/viewer/2022062321/56813259550346895d98e73a/html5/thumbnails/12.jpg)
12
Implémentation
CPU
MMU
Bridges
cdrom
cache
taint
RAM
TLB
TAINT
network
cache
taint
Data
Tags
![Page 13: Utilisation du Data Tainting pour l'analyse de logiciels malveillants](https://reader036.vdocuments.net/reader036/viewer/2022062321/56813259550346895d98e73a/html5/thumbnails/13.jpg)
SSTIC 2009 - Utilisation du Data Tainting pour l'analyse de logiciels malveillants - F. Marceau 13
Le calibrage
• Nous suivons les flux simples– Assignations directes– Opérations arithmétiques
![Page 14: Utilisation du Data Tainting pour l'analyse de logiciels malveillants](https://reader036.vdocuments.net/reader036/viewer/2022062321/56813259550346895d98e73a/html5/thumbnails/14.jpg)
SSTIC 2009 - Utilisation du Data Tainting pour l'analyse de logiciels malveillants - F. Marceau 14
Le calibrage
Un compromis :• Obfuscation/Chiffrement
– Risque de perdre la marque→Propagation permissive
• Fort volume de données– Risque de pollution complète du marquage
→Propagation limitée
![Page 15: Utilisation du Data Tainting pour l'analyse de logiciels malveillants](https://reader036.vdocuments.net/reader036/viewer/2022062321/56813259550346895d98e73a/html5/thumbnails/15.jpg)
SSTIC 2009 - Utilisation du Data Tainting pour l'analyse de logiciels malveillants - F. Marceau 15
Le calibrage
On peut s’aider du fait que le code surveillé est marqué pour appliquer une propagation plus ou moins permissive selon sa provenance.
![Page 16: Utilisation du Data Tainting pour l'analyse de logiciels malveillants](https://reader036.vdocuments.net/reader036/viewer/2022062321/56813259550346895d98e73a/html5/thumbnails/16.jpg)
SSTIC 2009 - Utilisation du Data Tainting pour l'analyse de logiciels malveillants - F. Marceau 16
La capture
• Propagation des flux simples• Différenciation des types de données• Hook de la MMU
– En amont de l’opération
• Introduction d’un type « manipulé »– Non propagé– Ne s’applique qu’à une donnée déjà typée
![Page 17: Utilisation du Data Tainting pour l'analyse de logiciels malveillants](https://reader036.vdocuments.net/reader036/viewer/2022062321/56813259550346895d98e73a/html5/thumbnails/17.jpg)
SSTIC 2009 - Utilisation du Data Tainting pour l'analyse de logiciels malveillants - F. Marceau 17
La capture
• Le type « manipulé » a pour seul objectif de marquer spécifiquement l’interaction entre le code surveillé et les données.
• Les données de ce type seront capturées dans un fichier et leur nature « manipulé » sera alors supprimée.
• Un fichier capture pour le type réseau.• Un fichier capture pour le reste (CD/HD).
![Page 18: Utilisation du Data Tainting pour l'analyse de logiciels malveillants](https://reader036.vdocuments.net/reader036/viewer/2022062321/56813259550346895d98e73a/html5/thumbnails/18.jpg)
SSTIC 2009 - Utilisation du Data Tainting pour l'analyse de logiciels malveillants - F. Marceau 18
La capture (Hook MMU)
• Trois cas distincts :– Lecture (RAM -> CPU)
• Données en RAM de type manipulé -> Capture
– Écriture (CPU -> RAM)• L’origine de l’opération (code) est marquée ? Non (OS)
» Données en RAM de type manipulé -> Capture
– Écriture (CPU -> RAM)• L’origine de l’opération (code) est marquée ? Oui (code viral)
» Données en RAM de type manipulé -> Capture» Données en passe d’être stockées en RAM sont marquées ->
Ajout du type manipulé
![Page 19: Utilisation du Data Tainting pour l'analyse de logiciels malveillants](https://reader036.vdocuments.net/reader036/viewer/2022062321/56813259550346895d98e73a/html5/thumbnails/19.jpg)
19
Illustrationmov eax,[esi]
eax : SP_Z
xor eax,0x11
eax : BANK
mov [edi],eax
strlen
![Page 20: Utilisation du Data Tainting pour l'analyse de logiciels malveillants](https://reader036.vdocuments.net/reader036/viewer/2022062321/56813259550346895d98e73a/html5/thumbnails/20.jpg)
SSTIC 2009 - Utilisation du Data Tainting pour l'analyse de logiciels malveillants - F. Marceau 20
Demo
!
![Page 21: Utilisation du Data Tainting pour l'analyse de logiciels malveillants](https://reader036.vdocuments.net/reader036/viewer/2022062321/56813259550346895d98e73a/html5/thumbnails/21.jpg)
Limites
• Détection• Stimuli• Mise en sommeil• Canaux cachés• Évasion
![Page 22: Utilisation du Data Tainting pour l'analyse de logiciels malveillants](https://reader036.vdocuments.net/reader036/viewer/2022062321/56813259550346895d98e73a/html5/thumbnails/22.jpg)
SSTIC 2009 - Utilisation du Data Tainting pour l'analyse de logiciels malveillants - F. Marceau 22
Évasion
• Nous suivons les flux simples– Assignations directes– Opérations arithmétiques
• Angle mort sur :– Déréférences de pointeurs– Flux conditionnels
![Page 23: Utilisation du Data Tainting pour l'analyse de logiciels malveillants](https://reader036.vdocuments.net/reader036/viewer/2022062321/56813259550346895d98e73a/html5/thumbnails/23.jpg)
SSTIC 2009 - Utilisation du Data Tainting pour l'analyse de logiciels malveillants - F. Marceau 23
Évasion
• Une propagation des déréférences– Impossible face à du code objet
• Une propagation des flux conditionnels– Impossible sans analyse statique approfondie
(Elle-même ineffective face a l’obfuscation..)
![Page 24: Utilisation du Data Tainting pour l'analyse de logiciels malveillants](https://reader036.vdocuments.net/reader036/viewer/2022062321/56813259550346895d98e73a/html5/thumbnails/24.jpg)
SSTIC 2009 - Utilisation du Data Tainting pour l'analyse de logiciels malveillants - F. Marceau 24
Problèmes des flux conditionnels
Exemple :
mov eax,[our_data]
and eax,0x80
je skip
mov ebx,0xffffffff ??
skip:
eax=our_data[0];
if(eax&0x80)
ebx=-1;
![Page 25: Utilisation du Data Tainting pour l'analyse de logiciels malveillants](https://reader036.vdocuments.net/reader036/viewer/2022062321/56813259550346895d98e73a/html5/thumbnails/25.jpg)
SSTIC 2009 - Utilisation du Data Tainting pour l'analyse de logiciels malveillants - F. Marceau 25
Problèmes des flux conditionnels
Il existes des solutions mais aucune ne gère correctement les flux implicites indirects (ensemble d'assignations engendrées par la non exécution d'une parcelle de code).
![Page 26: Utilisation du Data Tainting pour l'analyse de logiciels malveillants](https://reader036.vdocuments.net/reader036/viewer/2022062321/56813259550346895d98e73a/html5/thumbnails/26.jpg)
SSTIC 2009 - Utilisation du Data Tainting pour l'analyse de logiciels malveillants - F. Marceau 26
Conclusion
• Dans les faits– 18 VM parallèles, 10 min / session– 2000 – 2500 samples / jours– Problèmes liés au sandboxing courant (stimuli,
sommeil, anti-VM…)– Aucun constat d’anti-tainting
![Page 27: Utilisation du Data Tainting pour l'analyse de logiciels malveillants](https://reader036.vdocuments.net/reader036/viewer/2022062321/56813259550346895d98e73a/html5/thumbnails/27.jpg)
SSTIC 2009 - Utilisation du Data Tainting pour l'analyse de logiciels malveillants - F. Marceau 27
Conclusion
• Méthode dérivable pour de nombreux autres types d’applications– Contrôle du flux d’exécution– Contrôle du flux de données (temps réel)– Contrôle de la propagation des données (non
temporel)• Traduire son scénario en terme d’intersection
de ces différents contrôles.• Peut être évadée
![Page 28: Utilisation du Data Tainting pour l'analyse de logiciels malveillants](https://reader036.vdocuments.net/reader036/viewer/2022062321/56813259550346895d98e73a/html5/thumbnails/28.jpg)
SSTIC 2009 - Utilisation du Data Tainting pour l'analyse de logiciels malveillants - F. Marceau 28
Conclusion II
• Questions ? • Injures ?• Cadeaux ?• Pizza ?
![Page 29: Utilisation du Data Tainting pour l'analyse de logiciels malveillants](https://reader036.vdocuments.net/reader036/viewer/2022062321/56813259550346895d98e73a/html5/thumbnails/29.jpg)
![Page 30: Utilisation du Data Tainting pour l'analyse de logiciels malveillants](https://reader036.vdocuments.net/reader036/viewer/2022062321/56813259550346895d98e73a/html5/thumbnails/30.jpg)
SSTIC 2009 - Utilisation du Data Tainting pour l'analyse de logiciels malveillants - F. Marceau 30
Solution ?
• Propagation au niveau des eflags• Propagation des marquages conditionnels
dans le PC
![Page 31: Utilisation du Data Tainting pour l'analyse de logiciels malveillants](https://reader036.vdocuments.net/reader036/viewer/2022062321/56813259550346895d98e73a/html5/thumbnails/31.jpg)
SSTIC 2009 - Utilisation du Data Tainting pour l'analyse de logiciels malveillants - F. Marceau 31
Non !
• Flux implicites indirects : « un ensemble d'assignations engendrées par la non exécution d'une parcelle de code. »
![Page 32: Utilisation du Data Tainting pour l'analyse de logiciels malveillants](https://reader036.vdocuments.net/reader036/viewer/2022062321/56813259550346895d98e73a/html5/thumbnails/32.jpg)
SSTIC 2009 - Utilisation du Data Tainting pour l'analyse de logiciels malveillants - F. Marceau 32
Diagramme de contrôle
![Page 33: Utilisation du Data Tainting pour l'analyse de logiciels malveillants](https://reader036.vdocuments.net/reader036/viewer/2022062321/56813259550346895d98e73a/html5/thumbnails/33.jpg)
SSTIC 2009 - Utilisation du Data Tainting pour l'analyse de logiciels malveillants - F. Marceau 33
Exemple (1/7)
0xFEmov al, byte [our_data]mov ecx,0xffdo_it:mov ebx,1cmp al,clje skipxor ebx,ebxskip:test ebx,ebxjne doneloop do_itdone:
0xFEal=our_data[0];
for (ecx=0xff;ecx;ecx--){
ebx=1;if (al != ecx)
ebx=0;
if(ebx) goto done;
}done:
![Page 34: Utilisation du Data Tainting pour l'analyse de logiciels malveillants](https://reader036.vdocuments.net/reader036/viewer/2022062321/56813259550346895d98e73a/html5/thumbnails/34.jpg)
SSTIC 2009 - Utilisation du Data Tainting pour l'analyse de logiciels malveillants - F. Marceau 34
Exemple (2/7)
mov al, byte [our_data]mov ecx,0xffdo_it:mov ebx,1cmp al,clje skipxor ebx,ebxskip:test ebx,ebxjne doneloop do_itdone:
al=our_data[0];for (ecx=0xff;ecx;ecx--){
ebx=1;if (al != ecx)
ebx=0;
if(ebx) goto done;
}done:
![Page 35: Utilisation du Data Tainting pour l'analyse de logiciels malveillants](https://reader036.vdocuments.net/reader036/viewer/2022062321/56813259550346895d98e73a/html5/thumbnails/35.jpg)
SSTIC 2009 - Utilisation du Data Tainting pour l'analyse de logiciels malveillants - F. Marceau 35
Exemple (3/7)
mov al, byte [our_data]mov ecx,0xffdo_it:mov ebx,1cmp al,cl (0xff != 0xfe)je skipxor ebx,ebxskip:test ebx,ebxjne doneloop do_itdone:
al=our_data[0];for (ecx=0xff;ecx;ecx--){
ebx=1;if (al != ecx)
ebx=0;
if(ebx) goto done;
}done:
![Page 36: Utilisation du Data Tainting pour l'analyse de logiciels malveillants](https://reader036.vdocuments.net/reader036/viewer/2022062321/56813259550346895d98e73a/html5/thumbnails/36.jpg)
SSTIC 2009 - Utilisation du Data Tainting pour l'analyse de logiciels malveillants - F. Marceau 36
Exemple (4/7)
mov al, byte [our_data]mov ecx,0xffdo_it:mov ebx,1cmp al,clje skipxor ebx,ebxskip:test ebx,ebxjne doneloop do_itdone:
al=our_data[0];for (ecx=0xff;ecx;ecx--){
ebx=1;if (al != ecx)
ebx=0;
if(ebx) goto done;
}done:
![Page 37: Utilisation du Data Tainting pour l'analyse de logiciels malveillants](https://reader036.vdocuments.net/reader036/viewer/2022062321/56813259550346895d98e73a/html5/thumbnails/37.jpg)
SSTIC 2009 - Utilisation du Data Tainting pour l'analyse de logiciels malveillants - F. Marceau 37
Exemple (5/7)
mov al, byte [our_data]mov ecx,0xffdo_it:mov ebx,1cmp al,cl (0xfe == 0xfe)je skipxor ebx,ebxskip:test ebx,ebxjne doneloop do_itdone:
al=our_data[0];for (ecx=0xff;ecx;ecx--){
ebx=1;if (al != ecx)
ebx=0;
if(ebx) goto done;
}done:
![Page 38: Utilisation du Data Tainting pour l'analyse de logiciels malveillants](https://reader036.vdocuments.net/reader036/viewer/2022062321/56813259550346895d98e73a/html5/thumbnails/38.jpg)
SSTIC 2009 - Utilisation du Data Tainting pour l'analyse de logiciels malveillants - F. Marceau 38
Exemple (6/7)
mov al, byte [our_data]mov ecx,0xffdo_it:mov ebx,1cmp al,cl (0xfe == 0xfe)je skipxor ebx,ebxskip:test ebx,ebxjne doneloop do_itdone:
al=our_data[0];for (ecx=0xff;ecx;ecx--){
ebx=1;if (al != ecx)
ebx=0;
if(ebx) goto done;
}done:
![Page 39: Utilisation du Data Tainting pour l'analyse de logiciels malveillants](https://reader036.vdocuments.net/reader036/viewer/2022062321/56813259550346895d98e73a/html5/thumbnails/39.jpg)
SSTIC 2009 - Utilisation du Data Tainting pour l'analyse de logiciels malveillants - F. Marceau 39
Exemple (7/7)
mov al, byte [our_data]mov ecx,0xffdo_it:mov ebx,1cmp al,cl (0xfe == 0xfe)je skipxor ebx,ebxskip:test ebx,ebxjne doneloop do_itdone: (cl == our_data)
al=our_data[0];for (ecx=0xff;ecx;ecx--){
ebx=1;if (al != ecx)
ebx=0;
if(ebx) goto done;
}done: