Reconnaissance active — Atelier pratique
Vous refaites la démonstration seul(e). Trois VM, une méthodologie propre, un rapport que vous remettriez à un client. C'est le squelette de la reconnaissance qui vous suivra dans toute votre carrière.
Compter : 2 h à 3 h.
Livrable : ~/labs/semaine-04/rapport/reconnaissance.md (2 pages) et tous les artefacts dans ~/labs/semaine-04/scans/ + ~/labs/semaine-04/captures/.
Prérequis
Trois VM dans un réseau host-only :
- Kali (
10.10.10.5) — depuis la semaine 1. - Metasploitable 3 Windows (
10.10.10.12) — depuis la semaine 1. - Metasploitable 2 Linux (
10.10.10.20) — à télécharger si pas déjà fait (SourceForge).
Vérifiez que les trois se pinguent, que Kali n'a pas accès à Internet.
Installez les outils si manquants :
sudo apt install -y nmap arp-scan enum4linux enum4linux-ng snmp \
onesixtyone tcpdump wireshark scapy python3-scapy
sudo apt install -y netexec # ou pipx install netexec
Étape 1 — Découverte de couche 2 (5 min)
mkdir -p ~/labs/semaine-04/{scans,captures,rapport}
cd ~/labs/semaine-04
sudo arp-scan --interface=eth0 --localnet | tee scans/arp.txt
À vérifier : deux cibles retournées + votre Kali. Si moins, votre lab n'est pas bien monté.
Étape 2 — Ports TCP (20 min)
Une passe sans-Pn d'abord, puis avec-Pn si ping bloqué :
sudo nmap -sS -p- --min-rate 2000 10.10.10.12 -oA scans/12-ports
sudo nmap -sS -p- --min-rate 2000 10.10.10.20 -oA scans/20-ports
Livrable intermédiaire : listez, dans rapport/reconnaissance.md, le nombre de ports ouverts par cible. Une cible avec plus de 20 ports ouverts est presque toujours un lab volontaire ou un serveur mal géré.
Étape 3 — Versions (15 min)
Récupérez les listes de ports ouverts (grep 'open' scans/*-ports.nmap), et relancez -sV uniquement sur ces ports :
# Adapter la liste !
sudo nmap -sV -p 22,80,135,139,445,3306,3389,4848,8080 10.10.10.12 -oA scans/12-versions
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
À faire : dans rapport/, pour chaque cible, notez les 5 services les plus intéressants (avec leur version).
Étape 4 — Scripts NSE ciblés (15 min)
Sur 10.10.10.12 :
sudo nmap --script smb-vuln-* -p 445 10.10.10.12 -oA scans/12-smb-vuln
Sur 10.10.10.20 :
sudo nmap --script "ftp-vsftpd-backdoor,smb-vuln-cve2009-3103,http-vuln-*" \
-p 21,80,445 10.10.10.20 -oA scans/20-vuln
Livrable : dans rapport/, liste des CVE confirmées par NSE, avec l'IP concernée et la référence CVE.
Attention : nmap --script vuln en balayage large est destructeur sur certains services. Ne lancez que des scripts précis.
Étape 5 — UDP (15 min)
sudo nmap -sU --top-ports 25 10.10.10.20 -oA scans/20-udp
Si SNMP (161/udp) est ouvert :
snmpwalk -v 2c -c public 10.10.10.20 sysDescr
snmpwalk -v 2c -c public 10.10.10.20 hrSWRunName > scans/20-snmp-processes.txt
snmpwalk -v 2c -c public 10.10.10.20 iso.3.6.1.2.1.4.20 > scans/20-snmp-interfaces.txt
Testez d'autres communities fréquentes :
onesixtyone -c /usr/share/wordlists/onesixtyone/dict.txt 10.10.10.20 -o scans/20-community-strings.txt
Livrable : le nombre de communities trouvées et un résumé de l'inventaire SNMP dans rapport/.
Étape 6 — SMB profond (20 min)
# Bannière
nxc smb 10.10.10.12 10.10.10.20 > scans/smb-bannieres.txt
# Partages en session nulle
nxc smb 10.10.10.12 -u '' -p '' --shares > scans/12-shares-null.txt
nxc smb 10.10.10.20 -u '' -p '' --shares > scans/20-shares-null.txt
# Utilisateurs par session nulle (RID cycling)
enum4linux-ng -R 10.10.10.20 -oJ scans/20-rid.json
# Politique de mot de passe
enum4linux-ng -P 10.10.10.20 > scans/20-policy.txt
Livrable : dans rapport/, mentionnez si signing:False, la liste des partages accessibles sans creds, la liste des utilisateurs, la politique de mot de passe (longueur mini, verrouillage).
Étape 7 — Capture Wireshark (15 min)
Lancez Wireshark, capturez sur eth0. Dans un autre terminal :
sudo nmap -sS -p 22,80,445,3389 10.10.10.12
Dans Wireshark, sauvegardez captures/scan-syn.pcapng pour référence. Puis un filtre :
tcp.flags.syn == 1 and tcp.flags.ack == 0 and ip.dst == 10.10.10.12
Comptez les paquets envoyés. Vérifiez que votre IP source est bien 10.10.10.5.
Livrable : capture PCAP + capture d'écran de Wireshark montrant le filtre.
Étape 8 — Scapy en exercice (10 min)
Écrivez scapy_check.py dans ~/labs/semaine-04/ :
#!/usr/bin/env python3
from scapy.all import IP, TCP, sr1
CIBLES = {
"10.10.10.12": [22, 80, 135, 139, 445, 3389],
"10.10.10.20": [21, 22, 23, 80, 139, 445],
}
for ip, ports in CIBLES.items():
print(f"\n=== {ip} ===")
for p in ports:
r = sr1(IP(dst=ip) / TCP(dport=p, flags="S"), timeout=2, verbose=0)
if r is None:
print(f" {p}/tcp filtered")
elif r.haslayer(TCP):
flags = int(r[TCP].flags)
if flags == 0x12:
print(f" {p}/tcp open (SYN/ACK)")
elif flags & 0x04:
print(f" {p}/tcp closed (RST)")
else:
print(f" {p}/tcp ? (flags={hex(flags)})")
Exécutez :
sudo python3 scapy_check.py > scans/scapy-verification.txt
Livrable : la sortie doit correspondre à ce que nmap a dit. Un écart = un problème à comprendre.
Étape 9 — Rédiger le rapport (30 min)
Ouvrez rapport/reconnaissance.md, remplissez avec la structure suivante. Deux pages. Pas plus.
# Rapport de reconnaissance — Lab semaine 4 (date)
## 1. Résumé exécutif (5 lignes maximum)
Cartographie de <N> machines dans le réseau 10.10.10.0/24.
<M> vulnérabilités critiques identifiées, <K> confirmées par NSE.
Priorité d'exploitation pour la suite : [1, 2, 3].
## 2. Périmètre et méthode
- Réseau : 10.10.10.0/24, host-only, isolé.
- Attaquant : Kali 10.10.10.5.
- Méthode : ARP → ping sweep → SYN scan → -sV → NSE ciblés → UDP top-25 → énumération SMB → SNMP.
## 3. Résultats — 10.10.10.12
- OS : Windows Server 2008 R2 SP1
- Ports TCP notables : ...
- Vulnérabilités confirmées :
- MS17-010 (CVE-2017-0143) — via smb-vuln-ms17-010
- Comptes énumérés (session nulle) : ...
- Priorité 1 pour exploitation : EternalBlue (déjà éprouvé en semaine 1).
## 4. Résultats — 10.10.10.20
- OS : Ubuntu 8.04
- Ports TCP notables : ...
- Vulnérabilités confirmées :
- CVE-2011-2523 (vsftpd 2.3.4 backdoor)
- CVE-2007-2447 (Samba usermap)
- CVE-2004-2687 (distccd)
- Backdoor ingreslock 1524
- SNMP community "public" : inventaire complet
- Partage /tmp writable en session nulle
- Priorité 1 : vsftpd backdoor (facile, silencieuse)
## 5. Plan pour les semaines 5 à 8
1. Confirmer chaque CVE par exploitation.
2. Récupérer les hashes NTLM et Linux.
3. Préparer le pivot depuis .20 vers un segment interne (si présent).
## 6. Artefacts
- scans/12-ports.gnmap, ..., scans/20-udp.nmap : 12 fichiers
- captures/scan-syn.pcapng
- scans/scapy-verification.txt
- scans/20-snmp-processes.txt
Grille d'auto-évaluation
- Fichier
arp.txtavec les hôtes vivants - Deux
*-ports.gnmap(une par cible) — tous ports TCP scannés - Deux
*-versions.nmap— détection de versions - Un scan NSE ciblé par cible (pas
--script vulnen aveugle) - Un scan UDP top-25
- Sortie
snmpwalksauvegardée si SNMP ouvert - Énumération SMB : bannière + partages + utilisateurs + politique
- Capture Wireshark PCAP d'un scan SYN
- Script Scapy exécuté, sortie sauvegardée
- Rapport de 2 pages structuré selon le modèle ci-dessus
- Aucune commande n'a été lancée en dehors du réseau host-only
Ce qui bloque en général
| Symptôme | Cause probable | Correction |
|---|---|---|
nmap ne trouve aucun hôte | Pare-feu VM ou ping bloqué | Ajoutez -Pn ou utilisez arp-scan. |
-sV marque unknown partout | Cible sans bannière ou service custom | nmap -sV --version-intensity 9. |
Scan lent (> 20 min pour /24) | --min-rate non fixé | Ajoutez --min-rate 1000 en lab. |
| SNMP ne répond pas | Communauté != public | Testez onesixtyone avec un dictionnaire. |
nxc : NoneType error | Version obsolète | Réinstallez via pipx. |
| Wireshark ne montre rien | Interface capturée incorrecte | Vérifiez ip -brief address puis choisissez eth0. |
Ce que vous emportez de cet atelier
- Une méthodologie de scan reproductible à la lettre en 90 minutes.
- Un rapport de reconnaissance que vous pouvez, tel quel, glisser en annexe d'un pentest client.
- La compréhension du coût en bruit de chaque option
nmap. - L'habitude de capturer votre propre trafic — c'est le premier pas vers l'évasion en red team.
- Une liste ordonnée de vulnérabilités à exploiter dans les modules 5, 7, 8, 9.
Prochaine étape : le quiz du module. Puis on entre dans la chair du pentest — la recherche et l'exploitation de vulnérabilités.