1 / 39

Utilisation du Data Tainting pour l'analyse de logiciels malveillants

Utilisation du Data Tainting pour l'analyse de logiciels malveillants. Florent Marceau <fmarceau@lexsi.com> <florent.marceau@gmail.com>. Malware bancaires. NET. Cibles bancaires (chiffrées). Ce que nous avons. Explosion des trojans bancaires Variantes (en nombre)

saxton
Download Presentation

Utilisation du Data Tainting pour l'analyse de logiciels malveillants

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Utilisation du Data Tainting pour l'analyse delogiciels 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 NET Cibles bancaires (chiffrées) 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é SSTIC 2009 - Utilisation du Data Tainting pour l'analyse de logiciels malveillants - F. Marceau

  12. Implémentation

  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é SSTIC 2009 - Utilisation du Data Tainting pour l'analyse de logiciels malveillants - F. Marceau

  19. Illustration mov eax,[esi] xor eax,0x11 mov [edi],eax strlen eax : SP_Z eax : BANK

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

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

  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 eax=our_data[0]; if(eax&0x80) ebx=-1; Exemple : mov eax,[our_data] and eax,0x80 je skip mov ebx,0xffffffff ?? skip: 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 25

  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 27

  28. Conclusion II • Questions ? • Injures ? • Cadeaux ? • Pizza ? SSTIC 2009 - Utilisation du Data Tainting pour l'analyse de logiciels malveillants - F. Marceau

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

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

  31. Diagramme de contrôle SSTIC 2009 - Utilisation du Data Tainting pour l'analyse de logiciels malveillants - F. Marceau

  32. Exemple (1/7) 0xFE mov al, byte [our_data] mov ecx,0xff do_it: mov ebx,1 cmp al,cl je skip xor ebx,ebx skip: test ebx,ebx jne done loop do_it done: 0xFE 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

  33. Exemple (2/7) mov al, byte [our_data] mov ecx,0xff do_it: mov ebx,1 cmp al,cl je skip xor ebx,ebx skip: test ebx,ebx jne done loop do_it done: 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

  34. Exemple (3/7) mov al, byte [our_data] mov ecx,0xff do_it: mov ebx,1 cmp al,cl (0xff != 0xfe) je skip xor ebx,ebx skip: test ebx,ebx jne done loop do_it done: 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 (4/7) mov al, byte [our_data] mov ecx,0xff do_it: mov ebx,1 cmp al,cl je skip xor ebx,ebx skip: test ebx,ebx jne done loop do_it done: 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 (5/7) mov al, byte [our_data] mov ecx,0xff do_it: mov ebx,1 cmp al,cl (0xfe == 0xfe) je skip xor ebx,ebx skip: test ebx,ebx jne done loop do_it done: 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 (6/7) mov al, byte [our_data] mov ecx,0xff do_it: mov ebx,1 cmp al,cl (0xfe == 0xfe) je skip xor ebx,ebx skip: test ebx,ebx jne done loop do_it done: 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 (7/7) mov al, byte [our_data] mov ecx,0xff do_it: mov ebx,1 cmp al,cl (0xfe == 0xfe) je skip xor ebx,ebx skip: test ebx,ebx jne done loop do_it done: (cl == our_data) 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

More Related