Utilisation du Data Tainting pour l'analyse de logiciels malveillants

Preview:

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 Presentation

Citation preview

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<fmarceau@lexsi.com>

<florent.marceau@gmail.com>

SSTIC 2009 - Utilisation du Data Tainting pour l'analyse de logiciels malveillants - F. Marceau 2

Malware bancaires

Cibles bancaires(chiffrées)

NET

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

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

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

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

SSTIC 2009 - Utilisation du Data Tainting pour l'analyse de logiciels malveillants - F. Marceau 7

Solution retenue

• Full virtualisation +

• Data tainting

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

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

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é

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é

12

Implémentation

CPU

MMU

Bridges

cdrom

cache

taint

RAM

TLB

TAINT

network

cache

taint

Data

Tags

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

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

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.

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

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).

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é

19

Illustrationmov eax,[esi]

eax : SP_Z

xor eax,0x11

eax : BANK

mov [edi],eax

strlen

SSTIC 2009 - Utilisation du Data Tainting pour l'analyse de logiciels malveillants - F. Marceau 20

Demo

!

Limites

• Détection• Stimuli• Mise en sommeil• Canaux cachés• Évasion

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

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..)

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;

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).

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

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

SSTIC 2009 - Utilisation du Data Tainting pour l'analyse de logiciels malveillants - F. Marceau 28

Conclusion II

• Questions ? • Injures ?• Cadeaux ?• Pizza ?

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

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. »

SSTIC 2009 - Utilisation du Data Tainting pour l'analyse de logiciels malveillants - F. Marceau 32

Diagramme de contrôle

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:

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:

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:

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:

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:

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:

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:

Recommended