MDstable
NoteSnippetChecklistPlaybook

Port Scanning avancé — Nmap NSE, Masscan, Évasion

Nmap scripts NSE, Masscan full-internet rate, techniques d'évasion IDS : fragmentation, decoy, timing, source port

snippetadvanced 2026-05-14 5 min read
nmapmasscannseport-scanningevasionidsfirewallpentest

Nmap — Rappel des modes de scan

bash
Variables
{{TARGET}}
# Scan SYN (half-open) — discret, nécessite root
nmap -sS {{TARGET}}
# Scan TCP Connect (full 3-way) — sans root, plus bruyant
nmap -sT {{TARGET}}
# UDP (lent, nécessite root)
nmap -sU --top-ports 100 {{TARGET}}
# Scan SCTP INIT
nmap -sY {{TARGET}}
# Détection OS + version + scripts par défaut + traceroute
nmap -A {{TARGET}}

Masscan — Scan haute vitesse

bash
Variables
{{TARGET_CIDR}}
{{TARGET_IP}}
{{INTERFACE}}
{{SOURCE_IP}}
# Installer Masscan
apt install masscan -y
# Scanner tout un /16 sur les ports 80,443,8080 à 100k pps
masscan {{TARGET_CIDR}} -p 804438080 --rate=100000
# Scanner les 65535 ports sur une cible (ultra-rapide)
masscan {{TARGET_IP}} -p 0-65535 --rate=50000
# Exporter au format Nmap XML (compatible avec nmap --resume)
masscan {{TARGET_CIDR}} -p 0-65535 --rate=100000 -oX masscan_resultsxml
# Reprendre un scan interrompu
masscan --resume pausedconf
# Limiter à une interface et une adresse source
masscan {{TARGET_CIDR}} -p 443 --rate=10000 -e {{INTERFACE}} --source-ip {{SOURCE_IP}}
bash
Variables
{{TARGET_CIDR}}
# Workflow optimal : Masscan découverte → Nmap service scan
masscan {{TARGET_CIDR}} -p 0-65535 --rate=50000 -oG masscangnmap
# Extraire les ports ouverts
grep "open" masscangnmap | awk '{print $2}' | sort -u > hoststxt
grep "open" masscangnmap | awk -F'/' '{print $1}' | grep -oP '\d+' | sort -un | tr '\n' ',' > portstxt
# Scan de services Nmap ciblé
nmap -sV -sC -p cat portstxt -iL hoststxt -oA services_scan

Nmap NSE — Scripts essentiels

Découverte et énumération

bash
Variables
{{TARGET}}
# Scripts par catégorie
nmap --script "default and not intrusive" {{TARGET}}
nmap --script "discovery" {{TARGET}}
nmap --script "safe" {{TARGET}}
# Bannières et versions détaillées
nmap --script banner -p 21222580443 {{TARGET}}
# HTTP — titres des pages, méthodes autorisées, redirections
nmap --script http-title,http-methods,http-headers {{TARGET}} -p 804438080
# SMB — version, OS, utilisateurs, partages
nmap --script smb-os-discovery,smb-enum-shares,smb-enum-users -p 445 {{TARGET}}
# SSL — version, certificat, ciphers faibles
nmap --script ssl-enum-ciphers,ssl-cert -p 443 {{TARGET}}

Détection de vulnérabilités

bash
Variables
{{TARGET}}
# MS17-010 (EternalBlue)
nmap --script smb-vuln-ms17-010 -p 445 {{TARGET}}
# MS08-067 (Conficker)
nmap --script smb-vuln-ms08-067 -p 445 {{TARGET}}
# Heartbleed (OpenSSL)
nmap --script ssl-heartbleed -p 443 {{TARGET}}
# ShellShock (Bash CVE-2014-6271)
nmap --script http-shellshock --script-args uri/cgi-bin/test.cgi -p 80 {{TARGET}}
# Tous les scripts vuln (agressif)
nmap --script "vuln" {{TARGET}}
# HTTP — détection de vulnérabilités web
nmap --script http-sql-injection,http-xssed,http-csrf -p 80443 {{TARGET}}

Scripts spécialisés

bash
Variables
{{DOMAIN}}
{{DNS_SERVER}}
{{TARGET}}
# DNS — zone transfer + brute force sous-domaines
nmap --script dns-zone-transfer --script-args dns-zone-transfer.domain={{DOMAIN}} -p 53 {{DNS_SERVER}}
nmap --script dns-brute --script-args dns-brute.domain={{DOMAIN}}
# FTP — accès anonyme
nmap --script ftp-anon,ftp-bounce -p 21 {{TARGET}}
# MySQL — accès sans mot de passe, dump infos
nmap --script mysql-empty-password,mysql-info -p 3306 {{TARGET}}
# RDP — détection BlueKeep, NLA
nmap --script rdp-vuln-ms12-020,rdp-enum-encryption -p 3389 {{TARGET}}
# SNMP — community strings
nmap --script snmp-brute,snmp-info -p 161 --script-args snmp-brute.communitiesdb=/usr/share/seclists/Discovery/SNMP/common-snmp-community-strings.txt -sU {{TARGET}}

Techniques d'évasion IDS/Firewall

Fragmentation des paquets

bash
Variables
{{TARGET}}
# Fragmenter les paquets IP en 8 bytes (-f) ou 16 bytes (-ff)
nmap -f {{TARGET}}
nmap -ff {{TARGET}}
# Taille de fragment personnalisée (multiple de 8)
nmap --mtu 24 {{TARGET}}

Decoy — Masquer la vraie source

bash
Variables
{{DECOY1}}
{{DECOY2}}
{{TARGET}}
{{SPOOFED_IP}}
{{INTERFACE}}
# Utiliser des leurres (IPs fictives mélangées à la vraie)
nmap -D {{DECOY1}}{{DECOY2}}ME {{TARGET}}
# Générer des IPs aléatoires comme leurres
nmap -D RND10 {{TARGET}}
# Spoof d'IP source (la réponse ne revient pas — scan blind)
nmap -S {{SPOOFED_IP}} -e {{INTERFACE}} -Pn {{TARGET}}

Timing et rythme

bash
Variables
{{TARGET}}
# Timing templates (T0=paranoid, T5=insane)
nmap -T0 {{TARGET}} # 5 min entre chaque sonde — très lent, très discret
nmap -T1 {{TARGET}} # "Sneaky" — passe sous les seuils IDS basés sur le temps
nmap -T2 {{TARGET}} # "Polite" — réduit la charge réseau
nmap -T5 {{TARGET}} # "Insane" — très rapide, très détectable
# Contrôle fin du timing
nmap --scan-delay --max-retries 1 {{TARGET}}
nmap --min-rate 1 --max-rate 5 {{TARGET}} # max 5 paquets/seconde

Source port et data length

bash
Variables
{{TARGET}}
{{TARGET_CIDR}}
# Utiliser un port source connu (parfois whitelisté en firewall)
nmap --source-port 53 {{TARGET}} # source port DNS
nmap --source-port 80 {{TARGET}} # source port HTTP
# Ajouter des données aléatoires pour modifier la taille des paquets
nmap --data-length 15 {{TARGET}}
# Randomiser l'ordre des cibles (évite les patterns séquentiels)
nmap --randomize-hosts {{TARGET_CIDR}}

Firewall bypass — ports filtrés

bash
Variables
{{TARGET}}
{{ZOMBIE_IP}}
{{ZOMBIE_PORT}}
# ACK scan — déterminer les règles du firewall (filtered vs unfiltered)
nmap -sA {{TARGET}}
# FIN scan (passe certains firewalls stateless)
nmap -sF {{TARGET}}
# NULL scan
nmap -sN {{TARGET}}
# Xmas scan (FIN+PSH+URG)
nmap -sX {{TARGET}}
# Idle scan (zombie) — ultra-furtif, utilise une IP tierce
# Trouver un hôte zombie avec IP ID prévisible :
nmap --script ipidseq {{ZOMBIE_IP}}
# Lancer l'idle scan
nmap -sI {{ZOMBIE_IP}}{{ZOMBIE_PORT}} {{TARGET}}

Contournement de pare-feu applicatif (WAF)

bash
Variables
{{TARGET}}
{{TARGET_URL}}
# Détecter un WAF
nmap --script http-waf-detect {{TARGET}} -p 80443
# Identifier le WAF
nmap --script http-waf-fingerprint {{TARGET}} -p 80443
# Wafw00f (outil dédié)
wafw00f {{TARGET_URL}}

Sorties et formats

bash
Variables
{{TARGET}}
# Sortie dans tous les formats (recommandé)
nmap -oA scan_{{TARGET}} {{TARGET}}
# → scan.nmap (texte), scan.xml, scan.gnmap (grepable)
# Conversion XML → HTML (rapport lisible)
xsltproc scan_{{TARGET}}xml -o scan_{{TARGET}}html
# Parser avec python-nmap
python3 -c
import nmap
nm nmapPortScanner
nmscan'{{TARGET}}' '1-1024'
for host in nmall_hosts
for proto in nmhostall_protocols
for port in nmhostprotokeys
state nmhostprotoport'state'
printf'{host}:{port}/{proto} → {state}'
💡 Tip —

Pour un scan discret en environnement surveillé : combiner -T1 --source-port 53 --data-length 20 -f -D RND:5. Aucune technique seule n'est suffisante — c'est la combinaison qui passe sous les seuils des IDS modernes. Sur un vrai engagement, valider d'abord sur une cible de test avant de scanner la production.

OPS·BRAIN v1.075 notes · Securitylocal