Ce post a pour but de répondre à 90% des questions que les débutants posent à chaque fois. Il va traiter les outils et les ressources de base nécessaires pour une bonne progression dans le domaine du Reverse Engineering. N’hésitez pas à passer sur notre irc si vous avez des questions section « contact ». Une dernière chose enfin, prenez le temps de chercher sur google plus de 30 secondes, de réfléchir à votre problème, et de lire la documentation disponible avant de poser des questions au risque d’exaspérer les gens qui y répondent. Au passage, c’est un peu le but de ce post de répertorier le tout afin que je n’ai plus à répondre à ces questions, et cela devrait certainement aider quelques personnes.
OUTILS DE BASE EN RE :
Vous trouverez ici une liste avec les outils de base requis pour faire la plupart des actions communes dans toutes les disciplines liées au RE. Vous pouvez trouver une bonne partie des logiciels mentionnés ici. Attention, certains ne sont pas à jour / pas présents dans le repo, à vous d’utiliser un petit peu google pour récupérer les dernières versions.
Editeur hexa :
X-Ways.WinHex.v16.6.SR-4.Incl.Keymaker-ZWT, Hiew v8+
Utilité : Analyse / édition de fichiers statiques ou d’exécutables.
Debuggeurs :
– OllyDbg v1.10 .
En plugins : phant0m / strongOd + ollydump + godup + commandbar + odbgscript
– OllyDbg v2.01g
Utilité : Permettre une analyse en ‘live’ du programme, aussi appelée analyse dynamique. Phant0m est un plugin pour contourner des antidebuggers. OllyDump sert à dumper des programmes en mémoire. Godup nous servira pour charger des .map d’ida. OdbgScript sert à exécuter des ollyscripts.
– Sysersoft.Syser.Kernel.Debugger.Enterprise.Edition.v1.99.1900.1220.Incl.KeyMaker-DVT
Utilité : Permet de debugger des drivers, de s’attaquer au debugging en ring0.
Désassembleur :
– Ida RDW pack, soit :
– Hex-Rays.IDA.Pro.Advanced.FLAIR.v6.1-RDW
– Hex-Rays.IDA.Pro.Advanced.IDS.Utilities.v6.1-RDW
– Hex-Rays.IDA.Pro.Advanced.LOADINT.v6.1-RDW
– Hex-Rays.IDA.Pro.Advanced.SDK.v6.1-RDW
– Hex-Rays.IDA.Pro.Advanced.TILIB.v6.1-RDW
– Hex-Rays.IDA.Pro.Advanced.v6.1.TVision.v2009b.Source-RDW
– Hex-Rays.IDA.Pro.Advanced.v6.1.Windows.incl.Hex-Rays.x86.Decompiler.v1.5.READ.NFO-RDW
En plugins : idapython, findcrypt, Zynamics.BinDiff.v4.0.1.Incl.Keyfilemaker.and.Patch-EMBRACE
En signatures : RESigs 0.18, des signatures pour delphi. On peut trouver beaucoup de signatures sur la RCE
Collaborative Tool Library ou ici.
Utilité : Permet de faire de l’analyse de programme en statique. Ida est un outil extrêmement puissant, mais difficile à maîtriser pour un débutant. Les plugins permettent encore d’étendre ses fonctions, tout comme pour OllyDbg. Idapython est très pratique pour exécuter des scripts python afin d’automatiser des tâches. Findcrypt sert à repérer les algorithmes cryptographiques et à les marquer. Bindiff permet de comparer deux exécutables entre eux pour déterminer les différences. Les signatures permettent quand à elles de nommer les fonctions reconnues de librairies, elles sont très utiles pour analyser du delphi ou des cibles utilisant des librairies cryptographiques.
Décompilateurs :
– Java : jdgui
– vb6 : VB.Decompiler.Pro.v8.3.RETAIL.INCL_KEYGEN+PATCH-FFF
– delphi : IDR, DeDe 3.5
– apk : APKtoJava RC2
Utilité : décompiler le code pour le retrouver sous une forme plus lisible et abordable que l’asm.
PE :
Explorer Suite, Lord PE 1.41 (Deluxe b), PETools.
Utilité : Editer les propriétés d’un exécutable via son PE Header.
IAT / Dump :
ImpRec v1.7e, ImpREC Plugin Pack, CHimpREC
Utilité : Reconstruire l’IAT de programmes unpackés. CHimpREC est utile pour l’unpacking x64.
Scanners :
PEiD 0.95, Protection ID 6.4, RDG Packer Detector
Utilité : Détection de compilateurs / protections connues via signatures.
Recherche de strings :
Bintext, strings, hexdive
Utilité : récupérer les SDR d’un fichier.
Editeur de ressources :
Reshacker v3.5
Utilité : Editer les ressources d’un exécutable.
Patcheur :
duP 2.26
Utilité : Pour générer des patchs.
Monitoring :
Process Explorer, Process Monitor, Regshot, API Monitor v2
Utilité : Permet de surveiller et de monitorer l’environnement durant l’exécution d’un programme. Très utile dans le cas d’analyse de malwares.
Réseau :
Wireshark, NetworkMiner, Fiddler
Utilité : Surveiller le réseau afin de découvrir le traffic d’applications. Utile en analyse de malwares.
.NET :
Red.Gate.Reflector.v7.5.2.1.Incl.Keygen-Lz0 / dotpeek, ILSpy, Reflexil, de4dot
Utilité : Décompiler et désobfusquer du .net.
Crypto / conversion :
Keygenner Assistant v2.1.0, RSA-Tool, x3chun Crypto Searcher, x3chun Hash Calculation, SnD Reverser Tool 1.4
Utilité : Utilitaires de conversion / de cryptographie. Indispensables.
ASM :
WinAsm Studio, MASM v10, nasm.
Utilité : Conseillé, vous aurez certainement besoin à un moment ou à un autre de coder en asm
Javascript :
Malzilla 1.2, Revelo 0.4, Firebug
Utilité : Désobfusquer du javascript. Utile en analyse de malwares.
SWF :
SWFTools, swfretools 1.10, Sothink.SWF.Decompiler.v7.3.4959-NGEN
Utilité : Décompiler du flash. Utile en analyse de malwares.
PDF :
PDF Stream Dumper
Utilité : Analyse de fichiers PDF. Utile en analyse de malwares.
Autres :
Python v2, UPX 3.07, Autoruns, Kernel Detective v1.4.1, OSRLoader
Python est nécessaire pour IDAPython. UPX est indispensable pour se simplifier la vie. Autoruns sert à monitorer toutes les entrées de démarrage, il est très utile en cas d’analyse de malwares. Kernel Detective est assez intéressant dans le cadre d’analyse de malwares se développant en ring0. OSRLoader sert à charger des drivers.
RESSOURCES DE BASE POUR LE RE :
Nous avons donc maintenant les outils requis, passons aux ressources de base. Ces ressources sont basées sur le nombre de fois qu’elles m’ont été demandé par des gens qui débutent, je pense donc qu’elles ont de l’intérêt ici.
Où télécharger des outils :
– http://www.woodmann.com/collaborative/tools/index.php/Category:RCE_Tools : RCE_Tools
– http://tuts4you.com/download.php
Débuter en Reverse engineering :
– http://www.forumcrack.com/web/deamonftp.free.fr/deamoncrack/ | En français
– http://forumcrack.com/web/Dynasty/ | En français
– http://tuts4you.com/download.php?list.17 | Vidéos, en anglais.
– http://opensecuritytraining.info/Training.html | Vidéos, en anglais
Débuter avec OllyDbg :
– Olly Beginner Tutorials Series par ARTeam | En anglais
Débuter avec Ida Pro :
– http://woodmann.com/TiGa/idaseries.html | Vidéos, en anglais.
Les antidebuggers :
– http://www.codeproject.com/Articles/30815/An-Anti-Reverse-Engineering-Guide | En anglais
– http://pferrie.tripod.com/papers/unpackers.pdf | En anglais
Débuter en ASM Win32 :
– http://asm.developpez.com/cours/noteworthy/ | En français
– http://xtx.free.fr/Cracking_Nostalgie/cours_cracking/cours_assembleur.htm | En français
– http://deamonftp.free.fr/deamoncrack/Pages/cours-asm.htm | En français
– http://xylirepo.free.fr/Reverse%20engineering/Iczelion%20ASM%20tuto%20%28FR%29/_index.html | En français
– http://xtx.free.fr/liens/tut/api/api.htm | En français
Trouver des crackmes :
– http://crackmes.de/
– http://www.forumcrack.com/web/defisfc.free.fr/crackmes/
– http://www.reversing.be/index.php?topic=crackmes
Je rajouterai :
– Quand vous débutez, évitez les logiciels. Les protections sont bien souvent hors de votre portée, que ce soit au niveau unpacking ou keygenning. Préférez les crackmes, et n’hésitez pas à suivre des tutos en bidouillant à côté pour découvrir.
– Bidouillez ! Au début, on nage dans le code, on est dépassé par ce que l’on voit, mais l’asm se lit ensuite couramment avec l’habitude. N’hésitez donc surtout pas à sortir Olly et à tenter des choses, vous avez tout à y gagner.
– Quand vous keygenner un logiciel, prenez le problème depuis le haut en allant vers le bas. Je m’explique : rien ne sert de F7 chaque CALL pour essayer de voir ce qu’ils font et de se perdre dedans. Faites d’abord un aperçu avec F8, repérez les fonctions qui prennent des paramètres intéressants / renvoient des paramètres intéressants ; et au prochain tour seulement vous rentrerez dedans avec F7. Vous pouvez vite vous perdre à essayer de tout tracer et ne plus rien comprendre à la routine. Utilisez aussi toutes les ressources à votre disponibilité pour comprendre : les registres, la pile, les breakpoints de chaque forme. Le post de Lise_Grim que j’ai linké plus haut et à ce titre très intéressant car il explique comment réagir face à un programme.
– IDA a l’air repoussant au premier abord, mais c’est une aide précieuse. Même si vous ne vous en servez pas pour l’analyse, je vous conseille de charger la cible dedans, d’appliquer les signatures adéquates et d’exporter un .map avec toutes les informations. Vous chargez ensuite ce .map dans OllyDbg avec le plugin GoDUP et ça vous évitera des maux de têtes à essayer de reconnaître des fonctions à l’oeil.
– Evitez d’utiliser les unpackers et les ollyscripts, ça ne vous apportera rien. Le but c’est d’apprendre à unpacker / RE, pas de faire deux clics et d’éxécuter des scripts. Dans le même genre, on n’inverse pas les sauts : soit on les noppe, soit on les remplace par des JMP. Inverser un saut est une absurdité, si vous entrez un bon sérial vous aurez un message d’erreur. Une dernière chose : pas de patching à outrance. Le but c’est de comprendre le code, pas de le saccager salement.
– Enfin, je vous conseille fortement d’utiliser une VM avec Windows XP pour tous vos travaux de reverse engineering. Il est en effet beaucoup plus simple de débugger sur une architecture 32 bits (moins de problèmes de compatibilité avec les tools comme olly, pas d’aslr / dep, etc.). Vous aurez en outre la possibilité de faire des snapshots afin de restaurer l’état de la machine à un état antérieur. La constitution d’une VM est indispensable pour tout ce qui touche au reversing de malwares. Vous pouvez utiliser VMWare Workstation ou VirtualBox afin de créer votre machine virtuelle.
Ce rapide guide du débutant en est à la version 1.1, et est encore susceptible de connaître des mises à jour et des rajouts en fonction des suggestions (que j’encourage). (Au passage si un mod pouvait l’épingler je lui en serais reconnaissant à vie (à moins que ça ne soit pas juger nécessaire?))
J’espère qu’il répondra aux attentes des débutants, et qu’ils prendront le temps de le lire avant de poser toujours les mêmes questions.
Edit : v1.1. Merci à toutes les personnes m’ayant remonté des fautes ou conseillé des logiciels / sites à rajouter.