Une petite recherche autour du reverse engineering des Malwares en utilisant Immunity debugger.
les prérequis :
-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
2. 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
3. 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é.
4. 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.
6. 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.
9. 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.
10. 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.
11. 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.
12. Pratique
• On va effectuer un reverse engineering avec Immunity d’un simple
programme « renamexec.exe » crée avec C.
13. 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.
15. 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
17. 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)
18. 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.
19.
20. • 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.
22. 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.
23. • Le désassembleur regroupe les fonctions écrite par le programmeur
original avec la ligne jaune.
24. 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.