Aller au contenu principal
Expert Cybersécurité & IAv9.0
Centres de ressources conformité
Besoin d'un accompagnement expert ?
Devis personnalisé sous 24h — audit, conformité, incident
Checklists Sécurité — Audit & Durcissement
Formats disponibles
📄 PDF 📊 Excel 🌐 Web

11 checklists professionnelles couvrant 2 200+ points de contrôle. Téléchargement gratuit, aucune inscription.

Malware Unpacking

forensics

Définition

Le dépaquetage de malware (Malware Unpacking) est le processus consistant à extraire le code original d'un malware qui a été compressé, chiffré, ou obfusqué par un packer. C'est une étape préalable indispensable à l'analyse statique approfondie d'un malware packagé, car le code réel n'est visible qu'après décompression en mémoire. Le processus d'unpacking manuel dans un débogueur suit généralement cette séquence : charger le malware dans x64dbg ou OllyDbg, identifier le code de décompression du packer (stub), exécuter jusqu'au point où le code original est décompressé en mémoire, localiser l'OEP (Original Entry Point — le premier octets du code original), et dumper la mémoire du processus à ce stade pour obtenir l'exécutable décompressé. L'outil Scylla (pour x64dbg) ou OllyDump (pour OllyDbg) automatisent la dernière étape. Les techniques pour trouver l'OEP varient selon le packer. Pour UPX, l'OEP est généralement la première instruction après le saut 'JMP vers le code original' à la fin du stub. La technique du 'ESP trick' consiste à mettre un breakpoint sur l'accès mémoire à la valeur initiale de ESP après le PUSHAD/POPAD du stub — l'OEP est généralement atteint peu après le POPAD final. D'autres approches incluent l'analyse des CALL API (le premier appel à une API Windows légitime dans le code original est souvent proche de l'OEP). L'unpacking automatisé est de plus en plus disponible grâce aux services en ligne (unpacme.com, malshare.com) et aux outils locaux (Qiling framework pour l'émulation, unpacme Python bindings). Pour les packers courants (UPX, MPRESS, PECompact), ces outils réussissent l'unpacking sans intervention manuelle. Pour les packers custom ou les protections anti-debug, l'unpacking manuel reste nécessaire. Post-unpacking, le binaire extrait doit avoir son IAT reconstruite (les tables d'imports peuvent être corrompues par le processus d'extraction) avec des outils comme Scylla (reconstruction automatique de l'IAT en live) ou ImportREC.

Fonctionnement

Le packer exécute un stub de décompression qui : 1) Alloue de la mémoire (VirtualAlloc), 2) Décompresse/déchiffre le payload original dans cette mémoire, 3) Corrige les relocations, 4) Saute vers l'OEP. L'unpacking consiste à intercepter l'exécution à l'étape 4 et à dumper la mémoire. L'ESP trick (breakpoint sur écriture à l'adresse initiale de ESP) fonctionne pour la plupart des packers simples.

Application DFIR

Workflow unpacking : 1) Identifier le packer (DIE/PEiD), 2) Essayer l'unpacking automatique (unpacme.com, UPX -d), 3) Si échec : unpacking manuel dans x64dbg (ESP trick, stepover le stub, localiser le JMP à l'OEP), 4) Dump avec Scylla (IAT reconstruction), 5) Fix IAT, 6) Analyser le binaire unpacked statiquement (Ghidra/IDA). Utiliser des snapshots VM pour revenir à l'état initial.

Outils

Débogueurs : x64dbg + Scylla plugin, OllyDbg + OllyDump, WinDbg. Automatisé : unpacme.com, Qiling (émulation Python), PE-sieve --dump. Reconstruction IAT : Scylla (x64dbg plugin), ImportREC, Qiling + pefile. Identification packer : Detect-It-Easy, PEiD, ExeinfoPE. Environnement : FlareVM (tous ces outils préinstallés).

Articles liés

Un projet cybersécurité ?

Expert dispo · Réponse 24h

Devis