Table of Contents

Introduction : Pourquoi le malware d'ingénierie inverse compte-t-il?

Contrairement à la simple détection par signature, l'ingénierie inverse permet aux analystes de découvrir la véritable intention, les méthodes d'obfuscation et les mécanismes de commande et de contrôle intégrés dans un binaire. Ce guide étape par étape fournit une approche structurée et pratique pour dissécer les logiciels malveillants, de la mise en place d'un laboratoire sûr à la documentation d'indicateurs de compromis pouvant être actionnés (COI). Que vous soyez un chasseur de menaces, un intervenant d'incident ou un légiste, maîtriser ces techniques aiguisera votre capacité à neutraliser les menaces avancées.

Le processus nécessite patience, un état d'esprit méthodique et une connaissance des concepts de programmation à bas niveau. Vous devrez travailler avec le langage de montage, les internes du système d'exploitation et les outils de débogage spécialisés. Ce guide suppose que vous avez une compréhension de base de l'architecture du système Windows ou Linux et sont confortables en utilisant des environnements virtualisés. Aucune méthode ne correspond à chaque échantillon, mais le cadre ci-dessous vous aidera à éplucher systématiquement les couches d'obfuscation et révéler la logique de base de malwares.

Le rôle critique de l'analyse des logiciels malveillants dans la cybersécurité

Le malware évolue constamment – attaquez le paquet, chiffrez et obfuscate code pour éviter la détection statique. L'ingénierie inverse fournit la seule façon fiable de comprendre les nouvelles menaces et de créer des signatures, des règles de comportement, ou des stratégies d'atténuation. Sans cela, les équipes de sécurité sont laissées deviner.

  • Identifier le vecteur d'infection malwares et le mécanisme de propagation.
  • Extraire les URLs codées en dur, les adresses IP, les clés de chiffrement et les données de configuration.
  • Comprendre comment le malware persiste sur un système, augmente les privilèges, ou exfiltre les données.
  • Élaborer des règles de détection personnalisées pour les outils de détection et de réponse des paramètres (EDR).
  • Contribuer à la diffusion de renseignements sur les menaces avec la collectivité en général.

La discipline renforce également votre acuité technique globale. En disséquant le code malveillant, vous obtenez une connaissance approfondie de la façon dont les systèmes d'exploitation, les formats de fichiers et les protocoles réseau fonctionnent à un niveau granulaire.

Étape 1 : Créer un environnement d'analyse sécuritaire et isolé

Avant de toucher un échantillon de malware, vous devez créer un environnement contrôlé qui empêche l'infection accidentelle des systèmes de production. La règle la plus importante : n'analyse jamais les malwares sur votre machine hôte.Utilisez des machines virtuelles (VM) avec l'isolement du réseau, des instantanés et des outils d'analyse dédiés.

Choisir le bon hyperviseur virtuel de machine

Les choix les plus populaires incluent VMware Workstation/Player, [VirtualBox[ et Hyper-V[.Pour la plupart des analystes, VMware fournit des fonctionnalités d'instantanés robustes et une intégration transparente avec des outils de débogage.Installez un système d'exploitation invité propre, typiquement Windows 10 ou Windows 11 (64 bits) pour analyser les logiciels malveillants Windows, ou une distribution Linux comme Ubuntu pour les binaires ELF. Gardez le système d'exploitation invité décollé pour imiter des cibles réelles, mais ne le connectez pas à votre réseau d'entreprise.

Isolation des réseaux et surveillance de la circulation

Configurez le VM pour utiliser un adaptateur host-only[ ou réseau interne[. Cela empêche le malware de communiquer avec des serveurs de commande et de contrôle externes tout en vous permettant d'inspecter le trafic. Des outils comme INetSim[ (Linux) ou FakeNet[ (Windows) simulent des services réseau, donc des logiciels malveillants pensent qu'ils atteignent Internet. Utilisez Wireshark ou ]tcpdump[ pour capturer des paquets pour une analyse ultérieure. Si vous avez besoin de voir des réponses réelles, du trafic en ligne via un VPN ou un mandataire que vous contrôlez, mais soyez conscient des risques juridiques et éthiques—ne jamais analyser des logiciels malveillants sur un réseau de production.

Logiciel essentiel pour votre analyse VM

Pré-installer les outils suivants avant d'introduire un échantillon. Gardez l'instantané VM à cet état -clean-- pour que vous puissiez revenir après chaque analyse :

  • Process Monitor[ – pour les activités de système de fichiers, de registre et de processus/fil en temps réel.
  • Process Explorer – pour des informations approfondies sur les processus, les poignées et les DLL en cours d'exécution.
  • Regshot – pour comparer les instantanés de registre avant et après l'exécution.
  • Wireshark – pour l'inspection du trafic réseau.
  • Ghidra – un outil d'ingénierie inverse open source de la NSA (utiliser la dernière version).
  • IDA Pro (si elle est autorisée) – démonteur et débogueur standard de l'industrie.
  • x64dbg – un débogueur puissant en mode utilisateur pour les binaires x86/x64.
  • PE-bear ou Detect It Easy (DIE) – pour l'analyse statique des fichiers PE.
  • Floss (FireEye Labs Obfusated String Solver) – pour extraire des chaînes obfusquées après analyse statique.
  • YARA – pour créer des règles personnalisées basées sur des modèles que vous découvrez.

Solutions de remplacement pour boîtes à sable

Si vous devez exécuter de nombreux échantillons rapidement, considérez des bacs à sable automatisés comme Cuckoo Sandbox[ (maintenant CAPE) ou des services basés sur le cloud tels que Any.Run[ et Joe Sandbox[. Cependant, l'ingénierie manuelle inverse demeure essentielle pour les menaces nouvelles ou fortement obfusées que les bacs à sable peuvent manquer.

Étape 2: Analyse statique – Le premier regard

L'analyse statique implique l'examen du binaire sans l'exécuter. Cette phase recueille l'intelligence préliminaire et vous aide à décider s'il faut procéder à une exécution dynamique.

Fichier Empreintes digitales et Hashing

Calculez le hachage du fichier malware en utilisant SHA-256 (ou MD5/SHA1 pour les systèmes existants). Chargez le hachage vers des services comme VirusTotal pour voir si d'autres fournisseurs de sécurité l'ont déjà signalé. Faites attention au ratio de détection et aux commentaires de la communauté.

Examen des métadonnées et de la structure des fichiers

Utilisez des outils comme Détecter l'image facile (DIE), [Pear[, ou Exeinfo PE pour inspecter l'en-tête exécutable portable (PE) pour les binaires Windows.

  • Entropie – L'entropie élevée signale souvent des sections cryptées ou emballées.
  • Compilateur/Lien timestamps – Utile pour l'analyse de la chronologie, bien que facilement falsifié.
  • Fonctions importées – Importations suspectes comme , , et API réseau ([, ) indiquent un comportement malveillant.
  • – Malware stocke souvent les fichiers de configuration, les charges utiles cryptées ou les exécutables intégrés comme ressources.
  • Les noms de section[ – Les noms de section non standard (p. ex. rebaptisés ) peuvent indiquer l'emballage.

Extraction de chaînes et obfuscation

Exécutez la commande strings (ou utilisez Floss[) pour extraire des chaînes lisibles par des humains du binaire. Recherchez les URL, adresses IP, clés de registre, noms de fichiers, messages d'erreur et noms d'API. De nombreuses familles de logiciels malveillants modernes obfuscatent les chaînes, souvent en les cryptant et en les déchiffrant à l'exécution.Floss peut décoder automatiquement les motifs communs. Si vous ne voyez que gibberish, l'échantillon est probablement emballé et doit être décompresser en premier.

Identification des emballages

Les emballeurs courants comprennent UPX, ASPack, Themida et VMProtect. Des outils comme PE-bear[ et DIE[ peuvent souvent identifier l'emballeur. Si l'emballeur est simple (par exemple, UPX), vous pouvez décompresser avec le drapeau . Pour les protecteurs plus avancés, vous devrez décompresser manuellement en débogant ou en utilisant des scripts dédiés de décompaquetage.

Étape 3: Analyse dynamique – Observer le comportement en temps réel

Une fois que vous avez une compréhension de base de l'échantillon, exécutez-le à l'intérieur de votre VM isolé pour voir ce qu'il fait réellement.

Données de référence avant l'exécution

Avant d'exécuter le malware, prenez un instantané de registre avec Regshot ou [RegFromApp[.Enregistrez l'état du système de fichiers et les processus d'exécution en utilisant Process Monitor[ avec un filtre défini pour enregistrer les événements dans la VM seulement. Démarrez Process Explorer pour surveiller les relations parent-enfant.

Exécution de l'échantillon

Lancez le malware à partir d'une commande à commande rapide ou double-clic. Observez immédiatement son comportement :

  • Création de processus – Est-ce que cela engendre des processus pour enfants? Injectez du code dans des processus légitimes comme explorateur.exe ou svchost.exe?
  • Fichier activité système[ – Est-ce qu'il écrit des fichiers dans Temp, %AppData% ou System32? Est-ce qu'il crée des fichiers cachés ou essaie d'écraser les binaires système?
  • Modifications d'enregistrement[ – Recherchez des mécanismes de persistance (clé de roulis, tâches programmées, installation de service).
  • Connexions réseau[ – Utilisez Wireshark pour capturer les requêtes DNS, les requêtes HTTP ou les paquets TCP/UDP bruts.

Analyse automatisée du comportement avec outils

Bien que l'observation manuelle soit cruciale, les outils automatisés peuvent accélérer la reconnaissance des motifs. Les journaux de suivi des processus peuvent être enregistrés et analysés plus tard. Pour le trafic réseau, combiner Wireshark avec INetSim pour capturer tous les paquets sortants même si le serveur C2 n'est pas accessible. Si le malware tente de se connecter à un domaine, INetSim peut retourner des réponses spoofed, potentiellement révélant davantage de fonctionnalités.

Indicateurs de compromis (COI) tirés de l'analyse dynamique

Documenter chaque changement observable. Créez une liste de CIOs tels que :

  • Adresses IP ou noms de domaine contactés.
  • Chemins de fichiers écrits ou modifiés.
  • Clés d'enregistrement créées ou modifiées.
  • Traiter les noms et leurs hachages.
  • Noms de mutex (souvent utilisés pour prévenir les infections multiples).

Ces CIO deviennent la base des règles de détection et des flux de renseignements sur les menaces.

Étape 4: Désassemblage et analyse de code – dans les étables d'assemblage

L'analyse statique et dynamique vous donne le --Quoi et --Quoi du malware. L'analyse de code répond au --Qu'est-ce que vous avez. En désassemblé le binaire, vous pouvez comprendre le flux de contrôle, décoder les charges utiles cachées et identifier les routines de chiffrement.

Choisir un démonteur: Ghidra vs. IDA Pro

Ghidra (libre, open-source, de la NSA) est un excellent point de départ. Il offre une API Python puissante et scriptable décompilateur et support pour de nombreuses architectures. IDA Pro a une courbe d'apprentissage plus raide et un coût élevé, mais son écosystème plugin leader de l'industrie (par exemple, Hex-Rays decompiler) en fait un favori pour les ingénieurs professionnels inverses.

Analyser les fonctions clés et les points d'entrée

Chargez le binaire dans votre démonteur. Commencez au point d'entrée (habituellement ou ) et suivez le flux de commande.

  • – Malware peut appeler , ou vérifier les artefacts VM (p. ex., clés de registre pour VMWare ou VirtualBox).
  • Loops de déchiffrement de la chaîne[ – Les modèles courants impliquent des algorithmes XOR, AES ou personnalisés. Identifiez la boucle, extrait la clé et lancez un script pour déchiffrer toutes les chaînes.
  • Fonction appelle les API Windows critiques – telles que , , (injection de procédé), , et .
  • – Recherchez le code de pourriel, les prédicats opaques ou l'aplatissement du flux de contrôle. Utilisez le décompilateur pour simplifier la logique.

Code de déballage obfussé ou emballé

De nombreuses familles de logiciels malveillants modernes emballent la charge utile réelle dans un état crypté ou compressé. Le stub de décompresser décrypte la charge utile en mémoire puis saute à elle. Pour capturer le code décompilé, vous pouvez:

  • Réglez un point d'arrêt sur les appels de l'API ou , puis jetez la région de mémoire attribuée avec un outil comme Process Dump ou Scylla.
  • Utilisez x64dbg pour passer par le décompresser jusqu'à ce que vous touchez le saut à l'OEP (Point d'entrée original). Ensuite, prenez une sauvegarde de mémoire et rechargez l'image immergée dans Ghidra.
  • Pour les emballeurs plus simples, les déballeurs automatisés dans des outils comme PE-bear ou Quick Unpack peuvent fonctionner.

Extraction des données de configuration et des charges utiles intégrées

Une fois le code propre, recherchez des structures de données codées en dur. Ransomware contient souvent une clé RSA publique. Les boutons ont des listes de domaines C2. Les keyloggers stockent le chemin de log et la configuration de l'email. Utilisez l'éditeur de type de données Ghidra , pour superposer les structures.

Techniques avancées : débogage, patchage binaire et émulation

Comme les logiciels malveillants se développent plus sophistiqués, les analystes doivent aller au-delà de l'analyse statique et dynamique de base. Les techniques avancées suivantes vous aident à fissurer même les échantillons les plus résistants.

Déboguer avec x64dbg et WinDbg

Définir des points d'arrêt sur les fonctions clés. Utilisez Step-into pour tracer les appels. Surveillez les registres et les changements de pile. Modifier la mémoire ou les valeurs de registre pour contourner les vérifications temporelles ou les boucles de décryptage. Pour les rootkits en mode noyau, basculez vers WinDbg avec une connexion de débogueur du noyau (qui nécessite deux VM ou une configuration physique).

Patching binaire pour le contournement anti-analyse

Si le malware vérifie une clé de registre de débogueur ou VM spécifique, vous pouvez corriger le binaire pour sauter cette vérification. Par exemple, changez un (jump si ce n'est zéro) en (sump sans condition). Utilisez un éditeur hexadécimal comme HxD[ ou un démonteur avec des capacités de patching. Gardez toujours une copie du binaire original.

Emulation avec moteur Licorne

Pour un code shell très obfusqué qui résiste à l'analyse statique, utilisez Licorne Engine pour imiter l'exécution en Python. Cela vous permet d'exécuter le code sans OS complet, de tracer chaque instruction et d'enregistrer les modèles d'accès à la mémoire.

Étape 5 : Documentation et rapports – Transformer l'analyse en renseignement

La dernière étape, souvent négligée, consiste à produire un rapport clair et réalisable. La documentation sert plusieurs publics : votre équipe d'intervention en cas d'incident, les plateformes de renseignement sur les menaces et l'application de la loi au besoin.

  • Sommaire – Brève description de la famille de logiciels malveillants, de la gravité et de l'impact global.
  • Détails techniques – Hash, taille de fichier, compilateur, emballeur, architecture.
  • Analyse comportementale – Ce que le malware fait lorsqu'il est exécuté (le fichier tombe, le registre change, les appels réseau).
  • Analyse de code – Fonctions clés, routines de déchiffrement, protocole C2 et comment décoder les communications.
  • Indicateurs de compromis (IOC) – Une liste de hashs, IPs, domaines, chemins de fichiers, clés de registre et mutexes.
  • YARA rules – Ecrire une règle pour détecter ce malware spécifique (et les variantes) basé sur des séquences ou des chaînes d'octets uniques.
  • Recommandations d'atténuation – Comment bloquer, corriger ou détecter la menace dans un environnement vivant.

Utilisez un modèle standard ou un outil comme MISP[ pour partager des IOC en format lisible par machine. Publiez vos constatations (sans révéler d'informations exclusives) sur des plateformes de renseignement de menace open-source telles que VirusTotal ou AlienVault OTX pour aider la communauté mondiale.

Conclusion: La théorie devient pratique

En créant un laboratoire sécurisé, en maîtrisant l'analyse statique et dynamique, en plongeant dans le démontage et en documentant chaque découverte, vous vous équipez pour gérer les menaces les plus difficiles. Les outils et techniques décrits dans ce guide forment un cadre qui fonctionne à la fois pour les analystes débutants et les professionnels chevronnés.

Commencez par un simple échantillon – peut-être un téléchargeur classique ou un dropper UPX-packé – et travaillez votre chemin vers le haut. Rejoignez des communautés en ligne comme Malware Licorne[, le Recon[ forum, ou le [r/ReverseEngineering[ subreddit pour apprendre des autres et partager vos propres succès.

Further Reading & Resources: