Polymorphic Code
hackingDéfinition
Le code polymorphique est du code malveillant qui se transforme automatiquement à chaque exécution ou propagation tout en préservant sa fonctionnalité, générant ainsi des signatures binaires différentes à chaque instance. Introduit dans les virus des années 1990 (Dark Avenger's MtE - Mutation Engine), le polymorphisme est une technique fondamentale d'évasion antivirus. Le mécanisme de base : le malware est composé d'un payload chiffré et d'un moteur de mutation (decryptor). À chaque réplication ou génération de nouvelle instance, le moteur de mutation génère un nouveau décrypteur avec une clé et un algorithme de chiffrement différents, chiffre le payload avec ces paramètres, et produit un nouveau binaire. Le résultat est fonctionnellement identique mais binaiement différent, cassant les signatures AV basées sur des patterns fixes. Les techniques de mutation incluent : la substitution de registres (remplacer EAX par EBX dans le decryptor sans changer la logique), l'insertion de code inutile (NOP sleds, instructions sans effet sur le résultat), la réordonnancement d'instructions indépendantes, la substitution d'instructions (ADD EAX,5 → SUB EAX,-5 → INC EAX×5), et la variation de la clé de chiffrement et de l'algorithme (XOR simple, ROL, ADD avec des constantes variables). Le code métamorphique va plus loin que le polymorphique : au lieu de chiffrer le payload et de le décrypter à l'exécution, il réécrit entièrement sa propre structure logique à chaque génération. Les métamorphes n'ont pas de 'decryptor constant' qui pourrait être signé, rendant la détection par signature encore plus difficile. Le virus W32.Simile est un exemple de métamorphe sophistiqué. Dans le contexte offensif moderne, des outils comme Veil-Evasion, Phantom-Evasion, et des frameworks de génération de shellcodes custom (avec XOR à clé aléatoire, chiffrement AES à clé générée) implémentent des formes simples de polymorphisme pour les payloads de pentest.
Fonctionnement
Un polymorphe XOR simple : générer une clé random de 4 octets, XOR le payload avec cette clé, générer un stub de déchiffrement qui connaît la clé (incluse dans le binaire sous forme obfusquée), et construit un binaire final stub+payload_chiffré. Chaque build produit un binaire avec une clé différente et un stub légèrement différent (ordre des registres variés, instructions NOPs insérées). Les signatures d'AV sur le stub doivent couvrir toutes les variations possibles.
Exploitation offensive
Les packers et crypters commerciaux (utilisés pour la protection légitime des logiciels) sont souvent détournés pour créer des malwares polymorphiques de haute qualité. msfvenom de Metasploit inclut des encodeurs (shikata_ga_nai est un encodeur polymorphique XOR à additive feedback) qui génèrent des stubs différents à chaque utilisation, bien que ces encodeurs soient maintenant bien connus des AV.
Détection et mitigation
La détection heuristique (analyse des comportements caractéristiques d'un decryptor : boucle XOR avec compteur, auto-modification de mémoire) et l'émulation de code (exécuter quelques instructions pour observer le comportement de déchiffrement) permettent de détecter le polymorphisme même sans signature fixe. Les EDR comportementaux détectent les actions post-déchiffrement indépendamment de l'obfuscation initiale.
Articles liés
Expert en cybersécurité offensive et intelligence artificielle. Pentest, audit et développement IA sur-mesure.
Services
- Audit Infrastructure
- Audit Kubernetes
- Audit Microsoft 365
- Audit Sécurité Réseau
- Analyse de Risques
- Audit Active Directory
- Audit Application Web
- Audit Cloud (AWS/Azure/GCP)
- Audit Messagerie
- Audit API (OWASP Top 10)
- Audit DevSecOps & CI/CD
- Audit Code Source (SAST)
- Audit Postes de Travail
- Audit Sauvegarde & Résilience
- Audit OT/SCADA (IEC 62443)
- Développement IA
- Formations
Ressources
Projets & Outils
© 2026 Ayi NEDJIMI Consultants. Tous droits réservés.
Un projet cybersécurité ?
Expert dispo · Réponse 24h