Autour du Reverse Engineering des Malwares

24
Autour du Reverse Engineering des Malwares Par : BENTIJANI Aymen

Transcript of Autour du Reverse Engineering des Malwares

Page 1: Autour du Reverse Engineering des Malwares

Autour du Reverse Engineering des

Malwares

Par : BENTIJANI Aymen

Page 2: Autour du Reverse Engineering des Malwares

Les nécessités :• Des notions sur l’assembleur• Un Debugger: ollydbg, IDA, Immunity • Désassembleurs: IDA, Immunity, olly, windbg• Systèmes de Surveillance du système: Process hacker, procmon• Outils Misc: wireshark, HXD, Cuckoo Sanbox

Page 3: Autour du Reverse Engineering des Malwares

L’environnement:• On a choisie de travailler sur Oracle VM car Contrairement à VMware,

Oracle VM est un logiciel gratuit à télécharger, utiliser et distribuer.• Plus de rapidité.

Page 4: Autour du Reverse Engineering des Malwares

Le Debugger• On a appris qu’il était le meilleur ami du reverse-engineer.• Il y’a deux types de debuggers:

1- les kernel debuggers. 2- les Usermode debuggers.

Page 5: Autour du Reverse Engineering des Malwares

Kernel Debuggers

• Ils opèrent au niveau des drivers, et ont accès direct au noyau.

Page 6: Autour du Reverse Engineering des Malwares

User mode Debugger• C’est l’opposé du précédant, il a seulement accès à l’espace du user

mode. La plupart du temps c’est suffisant. Mais pas toujours, dans le cas des rootkits (ensemble de techniques mises en œuvre par un ou plusieurs logiciels, dont le but est d'obtenir et de pérenniser un accès (généralement non autorisé) à un ordinateur de la manière la plus furtive possible) il est préférable d’utiliser les kernel debuggers.

Page 7: Autour du Reverse Engineering des Malwares

Le debugger Immunity

1 2

3 4

Page 8: Autour du Reverse Engineering des Malwares

Les Points d’arrêts•Les points d’arrêts du hardware.•Les points d’arrêts du software.

Page 9: Autour du Reverse Engineering des Malwares

Les points d’arrêts du software• Ils peuvent être placées n’importe où au programme.• Dans ce cas le débuggeur écrit simplement une instruction int3 (code

opération 0xCC) sur le premier bit de l’instruction cible.• Ça a comme effet de lancer l’interruption 3 chaque fois que

l’exécution est transférée à l’adresse de l’interruption.

Page 10: Autour du Reverse Engineering des Malwares

Les points d’arrêts du Hardware• Ils utilisent l’instruction int1 et sont utilisés pour accompagner pas à

pas les registres du débuggage.• Ils sont au total de 8, 4 seulement sont utilisés DR0-3, des fois il est

preferable d’utiliser ces interruptions quand les interruptions logiciel ne marche pas• Les interruptions logiciels sont insérées au programme. Les

interruptions hardware ne le sont pas et se basent sur les 4 registres déjà cités.

Page 11: Autour du Reverse Engineering des Malwares

Codes opérations (opcodes)

• La représentation hexadécimal des instructions de l’assembleur.• Ils sont ce qu’ont voit si on ouvre l’exe avec un éditeur hexadécimal.

Page 12: Autour du Reverse Engineering des Malwares

Pratique• On va effectuer un reverse engineering avec Immunity d’un simple

programme « renamexec.exe » crée avec C.

Page 13: Autour du Reverse Engineering des Malwares

Ce n’est pas un simple exemple

• « Notepad.txt » va être renommé en « Notepad.exe » et exécuté.• Similaire au malware (ransomeware Cryptowall)• Peut être vu comme un vrai malware.

Page 14: Autour du Reverse Engineering des Malwares

Movefile & ShellExecute & windows.h??

Page 15: Autour du Reverse Engineering des Malwares

Interface de Programmation Applicative (API)

• « L’ensemble normalisé de classes, méthodes ou de fonctions façade par laquelle un logiciel offre des services à d'autres logiciels »

Wikipédia.org

Page 16: Autour du Reverse Engineering des Malwares

Le « renamexec.exe » dans Immunity

Page 17: Autour du Reverse Engineering des Malwares

Le « 0x00401040 »• En faite il ne s’agit pas de la fonction principale du programme, mais

du point d’entrée de l’exécutable.• Avant que le programme soit exécuté, l’exe effectue beaucoup

d’opérations (vérifier l’architecture de la CPU)

Page 18: Autour du Reverse Engineering des Malwares

Comment trouver ce que le programmeur a crée?

• Chercher « referenced text strings » (on s’excuse pour l’anglais car immunity n’est dispo qu’en Anglais ) : un outil de recherche valable en cliquant un clic droit sur la fenêtre d’assembleur.

Page 19: Autour du Reverse Engineering des Malwares
Page 20: Autour du Reverse Engineering des Malwares

• Le resultat qu’on va trouver est une liste de toutes les chaînes des caractères qui sont d’habitude stockées dans la partie « .data » de l’executable. • Chaque ligne de ces chaines est un hyperlink: elle guide à l’instruction

en assembleur qui correspond.

Page 21: Autour du Reverse Engineering des Malwares

ASCII c:\temp\notepad.exe??

Page 22: Autour du Reverse Engineering des Malwares

Du retour au désassembleur • Une fois ces chaines textes sont suivie dans le désassembleur, la ligne

verte repérera exactement la position de la chaîne en question.

Page 23: Autour du Reverse Engineering des Malwares

• Le désassembleur regroupe les fonctions écrite par le programmeur original avec la ligne jaune.

Page 24: Autour du Reverse Engineering des Malwares

Résultat• Il est clair à partir de la figure précédente que le programme en

question exécute une instruction « MoveFile » qui renomme un fichier « notepad.txt » en « notepad.exe » et puis la fonction « ShellExcute » s’occupe de son exécution.• Les résultats obtenues sont en accord avec le programme que nous

avons crée.• Rétro-ingenierie Réussie.