SlideShare uma empresa Scribd logo
1 de 24
Autour du Reverse
Engineering des Malwares
Par : BENTIJANI Aymen
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
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é.
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.
Kernel Debuggers
• Ils opèrent au niveau des drivers, et ont accès direct au noyau.
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.
Le debugger Immunity
1 2
3 4
Les Points d’arrêts
•Les points d’arrêts du hardware.
•Les points d’arrêts du software.
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.
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.
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.
Pratique
• On va effectuer un reverse engineering avec Immunity d’un simple
programme « renamexec.exe » crée avec C.
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.
Movefile & ShellExecute &
windows.h??
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
Le « renamexec.exe » dans Immunity
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)
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.
• 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.
ASCII c:tempnotepad.exe??
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.
• Le désassembleur regroupe les fonctions écrite par le programmeur
original avec la ligne jaune.
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.

Mais conteúdo relacionado

Semelhante a Autour du Reverse Engineering des Malwares

Systeme d’exploitation embarqué eCOS
Systeme d’exploitation embarqué eCOSSysteme d’exploitation embarqué eCOS
Systeme d’exploitation embarqué eCOSAfaf MATOUG
 
Comment analyser une machine linux compromise
Comment analyser une machine linux compromiseComment analyser une machine linux compromise
Comment analyser une machine linux compromiseTarek MOHAMED
 
Info1 cours 1-software-st&sm1-mi-
Info1  cours 1-software-st&sm1-mi-Info1  cours 1-software-st&sm1-mi-
Info1 cours 1-software-st&sm1-mi-linuxscout
 
Programmation-en-C-ESIITECH-2023-2024.pptx
Programmation-en-C-ESIITECH-2023-2024.pptxProgrammation-en-C-ESIITECH-2023-2024.pptx
Programmation-en-C-ESIITECH-2023-2024.pptxOlyvierNzighou1
 
Programmation-en-C-ESIITECH-2023-2024-bis.pptx
Programmation-en-C-ESIITECH-2023-2024-bis.pptxProgrammation-en-C-ESIITECH-2023-2024-bis.pptx
Programmation-en-C-ESIITECH-2023-2024-bis.pptxOlyvierNzighou1
 
Gestion-des-parcs-informatiques Windows et Linux.pptx
Gestion-des-parcs-informatiques Windows et Linux.pptxGestion-des-parcs-informatiques Windows et Linux.pptx
Gestion-des-parcs-informatiques Windows et Linux.pptxssusercbaa22
 
Cours SE linux
Cours SE linuxCours SE linux
Cours SE linuxIdriss22
 
Ch8 architecture
Ch8 architectureCh8 architecture
Ch8 architecturemickel iron
 
ch8_architecture.ppt
ch8_architecture.pptch8_architecture.ppt
ch8_architecture.pptamine17157
 
Analyse d'un kernel (crash, core) dump
Analyse d'un kernel (crash, core) dumpAnalyse d'un kernel (crash, core) dump
Analyse d'un kernel (crash, core) dumpGaëtan Trellu
 
Ordinateur et système d’exploitation exercices de révision - IPSET.pdf
Ordinateur et système d’exploitation exercices de révision - IPSET.pdfOrdinateur et système d’exploitation exercices de révision - IPSET.pdf
Ordinateur et système d’exploitation exercices de révision - IPSET.pdfMedBechir
 
resume-theorique-m106-2004-6261bb9556a66.pdf
resume-theorique-m106-2004-6261bb9556a66.pdfresume-theorique-m106-2004-6261bb9556a66.pdf
resume-theorique-m106-2004-6261bb9556a66.pdfFootballLovers9
 
cours_AzabouMaha_GIINF_chap1-2020-2021.pptx
cours_AzabouMaha_GIINF_chap1-2020-2021.pptxcours_AzabouMaha_GIINF_chap1-2020-2021.pptx
cours_AzabouMaha_GIINF_chap1-2020-2021.pptxGhorbelOmar2
 
Dans les entrailles du langage C
Dans les entrailles du langage CDans les entrailles du langage C
Dans les entrailles du langage CStephanie Ouillon
 
Comment choisir le bon système d'exploitation pour un système embarqué.pdf
Comment choisir le bon système d'exploitation pour un système embarqué.pdfComment choisir le bon système d'exploitation pour un système embarqué.pdf
Comment choisir le bon système d'exploitation pour un système embarqué.pdfAitAddiHajar
 

Semelhante a Autour du Reverse Engineering des Malwares (20)

Systeme d’exploitation embarqué eCOS
Systeme d’exploitation embarqué eCOSSysteme d’exploitation embarqué eCOS
Systeme d’exploitation embarqué eCOS
 
Intro archi
Intro archiIntro archi
Intro archi
 
openFrameworks
openFrameworksopenFrameworks
openFrameworks
 
Comment analyser une machine linux compromise
Comment analyser une machine linux compromiseComment analyser une machine linux compromise
Comment analyser une machine linux compromise
 
Info1 cours 1-software-st&sm1-mi-
Info1  cours 1-software-st&sm1-mi-Info1  cours 1-software-st&sm1-mi-
Info1 cours 1-software-st&sm1-mi-
 
Programmation-en-C-ESIITECH-2023-2024.pptx
Programmation-en-C-ESIITECH-2023-2024.pptxProgrammation-en-C-ESIITECH-2023-2024.pptx
Programmation-en-C-ESIITECH-2023-2024.pptx
 
Programmation-en-C-ESIITECH-2023-2024-bis.pptx
Programmation-en-C-ESIITECH-2023-2024-bis.pptxProgrammation-en-C-ESIITECH-2023-2024-bis.pptx
Programmation-en-C-ESIITECH-2023-2024-bis.pptx
 
Gestion-des-parcs-informatiques Windows et Linux.pptx
Gestion-des-parcs-informatiques Windows et Linux.pptxGestion-des-parcs-informatiques Windows et Linux.pptx
Gestion-des-parcs-informatiques Windows et Linux.pptx
 
Cours SE linux
Cours SE linuxCours SE linux
Cours SE linux
 
_JCVFr
_JCVFr_JCVFr
_JCVFr
 
Ch8 architecture
Ch8 architectureCh8 architecture
Ch8 architecture
 
ch8_architecture.ppt
ch8_architecture.pptch8_architecture.ppt
ch8_architecture.ppt
 
Analyse d'un kernel (crash, core) dump
Analyse d'un kernel (crash, core) dumpAnalyse d'un kernel (crash, core) dump
Analyse d'un kernel (crash, core) dump
 
Ordinateur et système d’exploitation exercices de révision - IPSET.pdf
Ordinateur et système d’exploitation exercices de révision - IPSET.pdfOrdinateur et système d’exploitation exercices de révision - IPSET.pdf
Ordinateur et système d’exploitation exercices de révision - IPSET.pdf
 
resume-theorique-m106-2004-6261bb9556a66.pdf
resume-theorique-m106-2004-6261bb9556a66.pdfresume-theorique-m106-2004-6261bb9556a66.pdf
resume-theorique-m106-2004-6261bb9556a66.pdf
 
SdE2 - Systèmes embarquées
SdE2 - Systèmes embarquéesSdE2 - Systèmes embarquées
SdE2 - Systèmes embarquées
 
Introduction a Java
Introduction a JavaIntroduction a Java
Introduction a Java
 
cours_AzabouMaha_GIINF_chap1-2020-2021.pptx
cours_AzabouMaha_GIINF_chap1-2020-2021.pptxcours_AzabouMaha_GIINF_chap1-2020-2021.pptx
cours_AzabouMaha_GIINF_chap1-2020-2021.pptx
 
Dans les entrailles du langage C
Dans les entrailles du langage CDans les entrailles du langage C
Dans les entrailles du langage C
 
Comment choisir le bon système d'exploitation pour un système embarqué.pdf
Comment choisir le bon système d'exploitation pour un système embarqué.pdfComment choisir le bon système d'exploitation pour un système embarqué.pdf
Comment choisir le bon système d'exploitation pour un système embarqué.pdf
 

Último

optimisation logistique MLT_231102_155827.pdf
optimisation logistique  MLT_231102_155827.pdfoptimisation logistique  MLT_231102_155827.pdf
optimisation logistique MLT_231102_155827.pdfSoukainaMounawir
 
firefly algoriyhm sac a dos step by step .pdf
firefly algoriyhm sac a dos step by step .pdffirefly algoriyhm sac a dos step by step .pdf
firefly algoriyhm sac a dos step by step .pdffirstjob4
 
comprehension de DDMRP dans le domaine de gestion
comprehension de DDMRP dans le domaine de gestioncomprehension de DDMRP dans le domaine de gestion
comprehension de DDMRP dans le domaine de gestionyakinekaidouchi1
 
Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024
Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024
Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024Ville de Châteauguay
 
Algo II: les files cours + exercices corrigés
Algo II: les files cours + exercices corrigésAlgo II: les files cours + exercices corrigés
Algo II: les files cours + exercices corrigésSana REFAI
 
conception d'un batiment r+4 comparative de defferente ariante de plancher
conception d'un  batiment  r+4 comparative de defferente ariante de plancherconception d'un  batiment  r+4 comparative de defferente ariante de plancher
conception d'un batiment r+4 comparative de defferente ariante de planchermansouriahlam
 

Último (7)

optimisation logistique MLT_231102_155827.pdf
optimisation logistique  MLT_231102_155827.pdfoptimisation logistique  MLT_231102_155827.pdf
optimisation logistique MLT_231102_155827.pdf
 
JTC 2024 Bâtiment et Photovoltaïque.pdf
JTC 2024  Bâtiment et Photovoltaïque.pdfJTC 2024  Bâtiment et Photovoltaïque.pdf
JTC 2024 Bâtiment et Photovoltaïque.pdf
 
firefly algoriyhm sac a dos step by step .pdf
firefly algoriyhm sac a dos step by step .pdffirefly algoriyhm sac a dos step by step .pdf
firefly algoriyhm sac a dos step by step .pdf
 
comprehension de DDMRP dans le domaine de gestion
comprehension de DDMRP dans le domaine de gestioncomprehension de DDMRP dans le domaine de gestion
comprehension de DDMRP dans le domaine de gestion
 
Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024
Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024
Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024
 
Algo II: les files cours + exercices corrigés
Algo II: les files cours + exercices corrigésAlgo II: les files cours + exercices corrigés
Algo II: les files cours + exercices corrigés
 
conception d'un batiment r+4 comparative de defferente ariante de plancher
conception d'un  batiment  r+4 comparative de defferente ariante de plancherconception d'un  batiment  r+4 comparative de defferente ariante de plancher
conception d'un batiment r+4 comparative de defferente ariante de plancher
 

Autour du Reverse Engineering des Malwares

  • 1. Autour du Reverse Engineering des Malwares Par : BENTIJANI Aymen
  • 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.
  • 5. Kernel Debuggers • Ils opèrent au niveau des drivers, et ont accès direct au noyau.
  • 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.
  • 8. Les Points d’arrêts •Les points d’arrêts du hardware. •Les points d’arrêts du software.
  • 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.
  • 14. Movefile & ShellExecute & windows.h??
  • 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
  • 16. Le « renamexec.exe » dans Immunity
  • 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.