Des scans nmap qui tiennent sur de vrais réseaux
Timing, UDP et pièges de détection de service sur les réseaux clients bruyants pendant un pentest autorisé.
Le client a dit que ICMP était filtré. Quelqu'un a lancé nmap -Pn -p- 10.0.0.0/16 depuis le VPN et s'est demandé pourquoi l'engagement est devenu un ticket firewall avant midi.
L'écart entre la cheat sheet nmap et la réalité opérationnelle, c'est le scope et la tolérance du réseau au bruit.
La découverte d'hôtes n'est pas une case à cocher
-Pn sert quand la découverte ment, pas pour remplacer la lecture du périmètre. Avec une liste fournie par le client, la découverte valide surtout la joignabilité depuis votre position.
Premier passage raisonnable :
nmap -sn -PE -PP -PS443,80,22 --max-retries 2 -T3 -iL scope-hosts.txt -oA discovery
Si ça ne répond presque pas, alors -Pn sur la même liste. Pas sur le /16 déduit d'une capture de table de routage.
Le timing compte plus qu'on ne l'admet
-T4 sur une box VPN résidentielle n'a rien à voir avec -T4 sur un VLAN datacenter surveillé par un IDS agressif. Je reste en -T3 chez les clients et je monte seulement avec accord écrit ou en lab isolé.
--max-rate garde le scan dans la bande passante convenue :
nmap -sS -p- --max-rate 500 -T3 -iL fragile-segment.txt -oA tcp-slow
Vous finirez plus tard. Vous finirez aussi l'engagement.
Quand -sV vous ment
La détection de version est probabiliste. Vous verrez http sur des choses qui ne le sont pas, et tcpwrapped sur des services exposés.
Traitez -sV comme une hypothèse. Enchaînez avec curl -k, openssl s_client, ou des tests applicatifs. Je lance la détection de version après les ports ouverts :
nmap -sV -p $(cat open-ports.txt | tr '\n' , | sed 's/,$//') -T3 target.example -oA versions
UDP : choisir ses combats
Un UDP complet est un projet calendrier. En interne je tape une courte liste : 53, 123, 161, 500. SNMP sur 161/udp a plus souvent payé qu'un sweep complet.
nmap -sU -p 53,123,161,500 --max-retries 1 -T3 target -oA udp-quick
open|filtered, c'est UDP. Pas un échec.
Traces et reproductibilité
-oA à chaque fois. Nommez avec date et phase. Gardez la ligne de commande exacte dans vos notes, pas seulement le XML.
FAQ
Faut-il toujours lancer nmap avec -sV ?
Non. La détection de version multiplie le trafic et le bruit. Utilisez-la sur des ports déjà confirmés ouverts, ou quand vous avez besoin du nom de service pour choisir un exploit. Sur un réseau fragile, -sV déclenche souvent le mail furieux du SOC.
-Pn est-il sans risque par défaut ?
Ça dépend du périmètre. -Pn ignore la découverte d'hôtes et traite chaque IP comme joignable, ce qui peut scanner des milliers d'adresses hors scope. À réserver quand ICMP est bloqué mais que vous avez une liste cible serrée.
Pourquoi mes scans UDP ne donnent rien d'utile ?
UDP est lent et beaucoup de services ne répondent qu'à la bonne sonde. Un flot open|filtered est normal. Ciblez 53, 123, 161, 500 plutôt qu'un -sU -p- sauf si le client valide le temps et le bruit.
FAQ
- Faut-il toujours lancer nmap avec -sV ?
- Non. La détection de version multiplie le trafic et le bruit. Utilisez-la sur des ports déjà confirmés ouverts, ou quand vous avez besoin du nom de service pour choisir un exploit. Sur un réseau fragile, -sV déclenche souvent le mail furieux du SOC.
- -Pn est-il sans risque par défaut ?
- Ça dépend du périmètre. -Pn ignore la découverte d'hôtes et traite chaque IP comme joignable, ce qui peut scanner des milliers d'adresses hors scope. À réserver quand ICMP est bloqué mais que vous avez une liste cible serrée.
- Pourquoi mes scans UDP ne donnent rien d'utile ?
- UDP est lent et beaucoup de services ne répondent qu'à la bonne sonde. Un flot open|filtered est normal. Ciblez 53, 123, 161, 500 plutôt qu'un -sU -p- sauf si le client valide le temps et le bruit.