Aller au contenu principal

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.txt avec 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 vuln en aveugle)
  • Un scan UDP top-25
  • Sortie snmpwalk sauvegardé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ômeCause probableCorrection
nmap ne trouve aucun hôtePare-feu VM ou ping bloquéAjoutez -Pn ou utilisez arp-scan.
-sV marque unknown partoutCible sans bannière ou service customnmap -sV --version-intensity 9.
Scan lent (> 20 min pour /24)--min-rate non fixéAjoutez --min-rate 1000 en lab.
SNMP ne répond pasCommunauté != publicTestez onesixtyone avec un dictionnaire.
nxc : NoneType errorVersion obsolèteRéinstallez via pipx.
Wireshark ne montre rienInterface capturée incorrecteVé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.