Reconnaissance active — Démonstration guidée
Un lab, trois cibles. On enchaîne toutes les couches du scan, on lit chaque sortie, on remonte à un plan d'attaque net à la fin. Rien de destructeur — on veut la carte, pas les cendres.
Tout ce qui suit se passe dans le lab host-only du module 1, étendu à trois machines. Aucune commande n'est légitime en dehors d'un lab que vous possédez ou d'une cible sous RoE.
Ce que vous saurez faire après cette leçon
- Découvrir les hôtes vivants sans utiliser d'IP connue à l'avance.
- Cartographier les services et versions en trois passes Nmap logiques.
- Énumérer un partage SMB sans mot de passe et sortir une liste d'utilisateurs.
- Repérer un service UDP oublié (SNMP), avec la community string par défaut.
- Consolider un rapport de reconnaissance de 2 pages.
Le décor étendu
Reprenez le lab de la semaine 1 et ajoutez une troisième VM Linux vulnérable.
| Machine | Rôle | IP |
|---|---|---|
| Kali | Attaquant | 10.10.10.5 |
| Metasploitable 3 (Windows) | Cible 1 | 10.10.10.12 |
| Metasploitable 2 (Linux) | Cible 2 | 10.10.10.20 |
Metasploitable 2 se télécharge sur SourceForge. Importez-la, mettez-la sur le même host-only network, forcez son IP à 10.10.10.20.
Créez le dossier de mission :
mkdir -p ~/labs/semaine-04/{scans,captures,rapport}
cd ~/labs/semaine-04
Étape 1 — Découverte de couche 2 (ARP)
Une découverte passive dans son bruit : ARP est natif sur le LAN, il n'attire pas les IDS.
sudo arp-scan --interface=eth0 --localnet | tee scans/arp.txt
Sortie :
Interface: eth0, type: EN10MB, MAC: 08:00:27:aa:bb:cc, IPv4: 10.10.10.5
Starting arp-scan 1.9.7 with 256 hosts
10.10.10.1 0a:00:27:00:00:0a VirtualBox
10.10.10.12 08:00:27:c3:5f:1e PCS Systemtechnik GmbH (VirtualBox)
10.10.10.20 08:00:27:aa:12:34 PCS Systemtechnik GmbH (VirtualBox)
3 packets received by filter, 0 packets dropped by kernel
Trois lignes, deux cibles. 10.10.10.1 est l'hôte VirtualBox (à ignorer). Notre parc de test : .12 et .20.
Étape 2 — Découverte par ping (ICMP + TCP)
arp-scan ne marche pas hors du LAN. Pour un scan plus large, nmap -sn combine ICMP echo, TCP SYN sur 443 et 80, et ARP quand c'est possible.
sudo nmap -sn 10.10.10.0/24 -oA scans/hosts
cat scans/hosts.gnmap | grep Up
Sortie :
Host: 10.10.10.12 () Status: Up
Host: 10.10.10.20 () Status: Up
Confirme ce que ARP a dit. Bien.
Étape 3 — Balayage complet des ports TCP
D'un coup, tous les ports, mais une machine à la fois. On enregistre :
sudo nmap -sS -Pn -p- --min-rate 2000 10.10.10.12 -oA scans/12-ports
sudo nmap -sS -Pn -p- --min-rate 2000 10.10.10.20 -oA scans/20-ports
Extrait pour .20 (Metasploitable 2) :
PORT STATE SERVICE
21/tcp open ftp
22/tcp open ssh
23/tcp open telnet
25/tcp open smtp
53/tcp open domain
80/tcp open http
111/tcp open rpcbind
139/tcp open netbios-ssn
445/tcp open microsoft-ds
512/tcp open exec
513/tcp open login
514/tcp open shell
1099/tcp open rmiregistry
1524/tcp open ingreslock
2049/tcp open nfs
2121/tcp open ccproxy-ftp
3306/tcp open mysql
3632/tcp open distccd
5432/tcp open postgresql
5900/tcp open vnc
6000/tcp open X11
6667/tcp open irc
8009/tcp open ajp13
8180/tcp open unknown
Lecture rapide :
telnet(23),rsh/rexec/rlogin(512-514) : protocoles clairs — mines à failles ; ils feraient hurler tout audit.distccd(3632) : distributed compiler — RCE historique.ingreslock(1524) : un backdoor connu de la VM (shell root direct).X11(6000) : serveur graphique exposé sur le réseau.- MySQL et PostgreSQL exposés sans passer par un frontal.
Cette VM a été faite pour être détruite — elle a tout d'ouvert. Sur une cible réelle, une telle liste serait un signal d'infrastructure abandonnée.
Étape 4 — Détection de versions
On ne demande les versions que pour les ports ouverts. Reprenez la liste :
sudo nmap -sV -p 21,22,23,25,53,80,111,139,445,512-514,1099,1524,2049,3306,3632,5432,5900,6000,6667,8009,8180 \
10.10.10.20 -oA scans/20-versions
Extrait :
PORT STATE SERVICE VERSION
21/tcp open ftp vsftpd 2.3.4
22/tcp open ssh OpenSSH 4.7p1 Debian 8ubuntu1 (protocol 2.0)
23/tcp open telnet Linux telnetd
80/tcp open http Apache httpd 2.2.8 ((Ubuntu) DAV/2)
445/tcp open netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
3306/tcp open mysql MySQL 5.0.51a-3ubuntu5
8180/tcp open http Apache Tomcat/Coyote JSP engine 1.1
Le mot magique : vsftpd 2.3.4. Cette version précise contient une backdoor publique (le fameux vsftpd 2.3.4 smiley face backdoor, CVE-2011-2523). Il suffit d'envoyer un login qui contient :) pour qu'un shell root ouvre sur le port 6200. On y touchera au module 5.
Idem sur Samba 3.x : historique de failles (usermap script, EternalRed…). Cible confirmée.
Étape 5 — Scan UDP ciblé
nmap -sU -p- est trop long (10 h+). On cible les ports UDP qui portent souvent quelque chose :
sudo nmap -sU --top-ports 20 10.10.10.20 -oA scans/20-udp
Sortie :
PORT STATE SERVICE
53/udp open domain
69/udp open|filtered tftp
111/udp open rpcbind
137/udp open netbios-ns
161/udp open snmp
2049/udp open nfs
SNMP (161) ouvert. SNMP en UDP, avec la communauté par défaut public, c'est l'agent qui dévoile l'inventaire complet de la machine.
Vérification :
snmpwalk -v 2c -c public 10.10.10.20 sysDescr
snmpwalk -v 2c -c public 10.10.10.20 hrSWRunName | head
Sortie :
SNMPv2-MIB::sysDescr.0 = STRING: Linux metasploitable 2.6.24-16-server #1 SMP Thu Apr 10 13:58:00 UTC 2008 i686
HOST-RESOURCES-MIB::hrSWRunName.1 = STRING: "init"
HOST-RESOURCES-MIB::hrSWRunName.2 = STRING: "sshd"
HOST-RESOURCES-MIB::hrSWRunName.3 = STRING: "mysqld"
HOST-RESOURCES-MIB::hrSWRunName.4 = STRING: "apache2"
...
Vous connaissez maintenant le noyau exact, la version de la distribution, la liste des processus en cours. Sans authentification. Sans exploit.
Étape 6 — Énumération SMB avec nxc
Sur 10.10.10.12 (Windows) et 10.10.10.20 (Linux avec Samba), même outil :
nxc smb 10.10.10.12 10.10.10.20
Sortie :
SMB 10.10.10.12 445 METASPLOITABLE3 [*] Windows Server 2008 R2 SP1 (name:METASPLOITABLE3) (domain:METASPLOITABLE3) (signing:False) (SMBv1:True)
SMB 10.10.10.20 445 METASPLOITABLE [*] Unix (Samba 3.0.20-Debian) (name:METASPLOITABLE) (domain:WORKGROUP) (signing:False) (SMBv1:True)
Signing:False partout : les attaques SMB relay seront possibles. Notez-le pour le module 10.
Énumérons les partages sans authentification :
nxc smb 10.10.10.12 -u '' -p '' --shares
nxc smb 10.10.10.20 -u '' -p '' --shares
Sortie sur .20 :
SMB 10.10.10.20 445 METASPLOITABLE [+] METASPLOITABLE\:
SMB 10.10.10.20 445 METASPLOITABLE [*] Enumerated shares
SMB 10.10.10.20 445 METASPLOITABLE Share Permissions Remark
SMB 10.10.10.20 445 METASPLOITABLE ----- ----------- ------
SMB 10.10.10.20 445 METASPLOITABLE print$ READ Printer Drivers
SMB 10.10.10.20 445 METASPLOITABLE tmp READ,WRITE oh noes!
SMB 10.10.10.20 445 METASPLOITABLE opt READ
SMB 10.10.10.20 445 METASPLOITABLE IPC$ NO ACCESS IPC Service
Partage tmp en READ,WRITE en session nulle. Un attaquant peut y déposer une charge et l'exécuter à distance (voir module 8).
Utilisateurs énumérables ?
enum4linux-ng -U 10.10.10.20
Extrait :
users:
user: games
user: msfadmin
user: postgres
user: user
user: service
msfadmin — le compte administrateur par défaut de la VM. Sur une vraie cible, la liste des utilisateurs par session nulle est une fuite majeure. Ici, on la note et on avance.
Étape 7 — Wireshark pendant qu'on scanne
Ouvrez Wireshark sur Kali, capturez sur eth0, et lancez un scan léger :
sudo nmap -sS -p 22,80,445 10.10.10.20
Dans Wireshark, filtre :
tcp.flags.syn == 1 and tcp.flags.ack == 0 and ip.dst == 10.10.10.20
Vous voyez :
- Trois SYN de votre IP vers
.20:22,.20:80,.20:445. - Trois SYN/ACK en retour (ports ouverts) → chaque fois, votre Kali renvoie un RST (typique du SYN scan).
Vous voyez maintenant ce que la cible aurait vu dans ses propres logs — même IP source, même séquence, même fenêtre TCP. C'est votre empreinte. En pentest bruyant, on l'assume ; en red team, on la maquille (voir module 8).
Étape 8 — Scapy en démonstration
Un scan Xmas d'un port unique, à la main :
from scapy.all import IP, TCP, sr1
for port in [22, 445, 3389, 8080]:
reponse = sr1(
IP(dst="10.10.10.12") / TCP(dport=port, flags="FPU"),
timeout=2, verbose=0
)
if reponse is None:
print(f"{port}/tcp open|filtered (pas de réponse)")
elif reponse.haslayer(TCP):
flags = reponse[TCP].flags
if flags == 0x14: # RST+ACK
print(f"{port}/tcp closed (RST reçu)")
else:
print(f"{port}/tcp ? (flags={hex(int(flags))})")
Sortie :
22/tcp open|filtered (pas de réponse)
445/tcp open|filtered (pas de réponse)
3389/tcp open|filtered (pas de réponse)
8080/tcp closed (RST reçu)
Interprétation : les ports Windows renvoient RST aux paquets ordinaires, mais Windows en scan Xmas ne répond pas — comportement non conforme à la RFC 793. Utile pour distinguer Windows de Linux, à un niveau très bas. C'est le genre de trick où Scapy dépasse nmap.
Étape 9 — Consolider
Ouvrez ~/labs/semaine-04/rapport/reconnaissance.md et remplissez :
# Rapport de reconnaissance — Lab semaine 4 (2026-04-16)
## 1. Hôtes vivants
- 10.10.10.12 Windows Server 2008 R2 (Metasploitable 3)
- 10.10.10.20 Linux Ubuntu 8.04 (Metasploitable 2)
## 2. Cible 10.10.10.12 — Windows
- Ports ouverts TCP : 22, 80, 135, 139, 445, 3306, 3389, 4848, 8080
- SMB : SMBv1, signing:False, MS17-010 vulnérable (revoir semaine 1)
- Priorité 1 : réexploiter EternalBlue si non patché.
## 3. Cible 10.10.10.20 — Linux
- Ports ouverts TCP : voir scans/20-ports.gnmap (24 ports ouverts)
- Ports UDP notables : 53, 161 (SNMP public), 2049 (NFS)
- Services vulnérables identifiés :
- CRITIQUE : vsftpd 2.3.4 → backdoor CVE-2011-2523
- CRITIQUE : Samba 3.0.20 → usermap script (CVE-2007-2447)
- CRITIQUE : distccd → RCE (CVE-2004-2687)
- CRITIQUE : ingreslock 1524 → backdoor shell root direct
- HAUTE : SNMP community "public" → fuite d'inventaire
- Session nulle SMB : liste des utilisateurs obtenue (msfadmin, user, service…)
- Partage tmp writable en session nulle.
## 4. Plan pour la semaine 5-8
1. Vérifier chacune des 4 CVE de la .20 via NSE ciblés.
2. Confirmer MS17-010 sur .12.
3. Extraire l'inventaire complet SNMP de la .20.
4. Préparer une exploitation vsftpd (semaine 8, Metasploit).
## 5. Artefacts
- scans/*.gnmap, scans/*.xml, scans/*.nmap (12 fichiers)
- captures/wireshark-syn-scan.pcapng
- rapport/reconnaissance.md (ce fichier)
Bilan
En 45 minutes de scan bien mené, sans casser un seul service :
- Vous avez cartographié deux machines en profondeur.
- Vous avez isolé cinq vulnérabilités critiques confirmées ou très probables.
- Vous avez une empreinte de trafic dans Wireshark, que vous pouvez montrer au client (« voici ce que vos IDS auraient dû voir »).
- Vous avez un plan pour les semaines 5 à 8.
C'est la fin de la reconnaissance. À partir du module 5, on entre dans l'exploitation.