Reverse Engineering Malware 101 — le workshop de MalwareUnicorn
Compte-rendu du workshop RE101 de MalwareUnicorn : analyse statique et dynamique de malwares, assembleur x86, fichiers PE, outils et progression.
Le RE101 (Reverse Engineering Malware 101) de MalwareUnicorn (Amanda Rousseau) est LE workshop gratuit de référence pour apprendre l’analyse de malware. Après Bandit et Leviathan, c’est le chaînon suivant dans ma progression : on passe des binaires setuid d’OverTheWire à de vrais programmes malveillants. Voici mon compte-rendu + ma feuille de route.
🎯 En bref
Le RE101 est un atelier pratique auto-rythmé : pas de vidéo, pas de cours magistral — une page web qui vous guide pas à pas dans l’analyse d’un malware factice (Unknown.exe), de la mise en place de l’environnement jusqu’au debugging manuel.
Prérequis matériel : 8 Go de RAM minimum, 40 Go de stockage, une connexion internet. C’est tout — le reste (VirtualBox, VM Victime, VM Sniffer) est téléchargé pendant l’atelier.
Ce qu’on y apprend :
- Monter un environnement d’analyse sûr (VM isolées)
- Les concepts OS et assembleur (architecture Windows, PE, pile, registres)
- Le flux d’attaque typique, les classes de malware et leurs techniques
- Les désassembleurs, debuggers et la collecte d’informations
- L’analyse statique, puis dynamique, puis le debugging manuel
🗺️ Le Game Plan — l’état d’esprit
Avant tout outil, l’atelier pose sa philosophie. Un reverse engineer doit :
| Principe | Traduction |
|---|---|
| Determine what are the goals | Savoir ce qu’on cherche avant de chercher |
| Get to just what you need | Ou en savoir assez pour recréer le comportement |
| Use reconnaissance & triage | Recon et triage pour choisir le point de départ |
| Work step by step | Avancer étape par étape |
| Record your findings | Tracer ses découvertes tout au long de l’analyse |
🔄 L’Analysis Flow — la méthode en 5 étapes
C’est LA partie la plus précieuse du workshop, une méthode réutilisable sur n’importe quel binaire :
1
2
3
4
5
1. Setup d'un environnement de référence (baseline)
2. Triage → déterminer un point de départ
3. Analyse statique → avoir une idée d'où tout se trouve avant de débugger
4. Analyse dynamique → observer les comportements invisibles en statique
5. Debugging manuel → avancer pas à pas vers ses objectifs
🖥️ L’environnement : Victime + Sniffer
Point crucial : on n’analyse jamais du malware sur sa machine de tous les jours.
- Victim VM : la machine infectée. Aucun accès internet ni partage réseau avec l’hôte
- Sniffer VM : le rôle passif — elle sert et surveille le trafic de la Victime
- Les deux tournent dans un réseau fermé VirtualBox (
re101net), connectées entre elles mais coupées du monde extérieur
La Victime « croit » avoir internet (le Sniffer lui répond), mais rien ne sort de la boîte. Idéal pour observer des command-and-control factices sans risque.
🪟 Les fondamentaux : Windows & l’assembleur
Avant de toucher au malware, le RE101 pose les bases théoriques — denses mais limpides :
PE Header & mémoire
Un exécutable Windows (PE) commence par une en-tête décrivant sa structure (sections, point d’entrée, imports…). Comprendre le memory layout (comment le chargeur place les sections en mémoire) est indispensable pour lire un dump mémoire ou suivre un loader.
La pile (stack)
| Notion | Rôle |
|---|---|
| Stack | Zone mémoire LIFO pour les appels de fonction et variables locales |
| Push/Pop | Empiler / dépiler des valeurs |
| Call/Ret | Appeler une fonction / y revenir |
| Variables locales | Réservées sur la pile, adressées relativement au pointeur de base |
Opcodes, instructions & registres
Un programme machine = une suite d’opcodes (octets) que le processeur décode en instructions (mov, push, call, jmp…). Les calculs passent par les registres :
| Registre x86 | Rôle classique |
|---|---|
EAX | Accumulateur (résultats, retours de fonctions) |
EBX/ECX/EDX | Usage général / compteur de boucle |
ESP | Stack Pointer (sommet de la pile) |
EBP | Base Pointer (base du frame courant) |
EIP | Instruction Pointer (prochaine instruction) |
EFLAGS | Drapeaux (zéro, signe, carry…) |
Le clavier d’IDA Free et de x64dbg est fourni — c’est un vrai bonus, ces raccourcis deviennent nos réflexes.
🦠 Classes de malware & techniques
Le RE101 catalogue ce qu’on va trouver sur le terrain :
| Catégorie | Techniques typiques |
|---|---|
| Compression / packers | UPX et autres packers — le binaire « s’auto-décompresse » à l’exécution |
| Obfuscation | Brouiller les chaînes, le flux, les constantes |
| Persistence | Se relancer au boot / à la connexion |
| Privilege Escalation | Monter en droits (UAC bypass, exploits…) |
| Defense Evasion | Détecter les sandboxes, désactiver les AV |
| Credential Theft | Voler mots de passe, cookies, tokens |
| Reconnaissance | Cartographier la machine / le réseau |
| Lateral Movement | Se propager sur le réseau |
🧪 L’exercice : Unknown.exe pas à pas
La partie pratique suit exactement l’Analysis Flow :
- Lancer la Victim VM, vérifier l’en-tête du fichier et les infos du PE
- Collecter le hash MD5 (identité unique du binaire → VirusTotal)
- Exécuter
Unknown.exe, observer le réseau dans Wireshark - Arrêter le monitoring procmon.exe et résumer tous les détails
- Ouvrir
Unknown.exedans IDA, repérer les chaînes (anti-analyse : fausses chaînes → vrai point d’entrée) - Tracer jusqu’à la fonction de départ, analyser
sub_401000(version C + version assembleur) - Récupérer
stage2.exe, chercher les chaînes intéressantes, tracer la fonction - Reconnaître les buffers, tester le résultat de la requête HTTP, buffer check
- Atteindre l’EntryPoint, poser des breakpoints, manipuler le contrôle de flux (contourner les vérifications), exécuter
C’est un exercice complet : triage, statique, dynamique et debug — exactement le workflow d’un analyste malware en entreprise.
🔬 Pour aller plus loin : statique vs dynamique vs debug
La distinction qui structure tout le workshop :
| Approche | Ce qu’on fait | Ce qu’on y gagne | Limite |
|---|---|---|---|
| Statique | Lire le binaire sans l’exécuter (strings, imports, IDA) | Vue d’ensemble rapide, pas de risque | Le code packé/obfusqué est illisible |
| Dynamique | L’exécuter dans un environnement contrôlé (procmon, Wireshark) | Voir les comportements réels (fichiers, réseau) | Le malware peut détecter la sandbox |
| Debugging | Pas à pas avec breakpoints (x64dbg) | Comprendre la logique exacte, modifier le flux | Le plus long, le plus exigeant |
Le réflexe RE101 : commencer par le triage (hash + VirusTotal + PE header), puis statique, puis dynamique, et ne sortir le debugger que pour les fonctions qui résistent.
🧭 Mes conseils de progression
Le RE101 suppose qu’on sait déjà lire un peu de code et manipuler un système. Mon ordre recommandé (et ce que je fais) :
1
2
3
4
5
1. Bandit (OverTheWire) ✅ — les fondamentaux Linux, le shell
2. Leviathan (OverTheWire) ✅ — premiers binaires setuid, ltrace, registres
3. RE101 de MalwareUnicorn ⬅️ — on est là : assembleur x86 + analyse Windows
4. RE102 de MalwareUnicorn ⬜ — approfondir (désassemblage avancé)
5. Ghidra / IDA en pratique ⬜ — un vrai binaire de CTF (Narnia, Behemoth...)
Concrètement, ce post fait suite à mes deux wargames : Bandit pour les fondamentaux du shell, puis Leviathan pour la première approche du reverse (setuid, ltrace, registres, little-endian) — le RE101 prolonge exactement cette courbe en passant à l’architecture Windows et à l’analyse de vrais échantillons.
Mes 5 conseils concrets :
- Ne sautez pas les bases : le chapitre assembleur du RE101 (registres, pile, opcodes) est le socle de tout le reste — c’est là que Leviathan m’a le mieux préparé
- Suivez l’Analysis Flow à la lettre : triage → statique → dynamique → debug. C’est la méthode, pas un détail
- Prenez des notes structurées : le workshop insiste sur le recording — c’est ce qui fait la différence entre « j’ai suivi » et « je sais faire »
- Refaites l’exercice sans le guide : une fois
Unknown.exeterminé, refaites-le avecstage2.exeen autonomie - Complétez avec les ressources du workshop : Art of Assembly Language (la référence assembleur), les posts de MalwareTech et le blog d’Hexacorn (How to become the best Malware Analyst E-V-E-R)
📚 Ressources liées
- MalwareUnicorn — Workshops — le RE101, RE102 et les ateliers PE injection, macOS dylib injection, Flare-On 2019
- GitHub de MalwareUnicorn — les fichiers des ateliers
- Ma page Ressources — où j’ai ajouté le lien vers le RE101
- Mon récap OverTheWire — la roadmap dont le RE101 fait désormais partie
Prochaine étape : RE102, puis un premier vrai binaire de CTF au désassembleur. Stay tuned ! 🚀