Nmap Cheatsheet

Scan. Enumerate. Understand.


Syntaxe de base

nmap [options] [cible]

Cible = IP, range (192.168.1.0/24), hostname, fichier (-iL hosts.txt)


Types de scan

Découverte d’hôtes

nmap -sn 192.168.1.0/24          # Ping sweep — hôtes actifs sans port scan
nmap -Pn 192.168.1.1             # Skip host discovery — considère l'hôte comme up
nmap -PS22,80,443 192.168.1.1    # TCP SYN ping sur ports spécifiques
nmap -PA80 192.168.1.1           # TCP ACK ping
nmap -PU53 192.168.1.1           # UDP ping
nmap -PE 192.168.1.1             # ICMP echo ping

Scans TCP

nmap -sS 192.168.1.1             # SYN scan (stealth) — défaut root
nmap -sT 192.168.1.1             # TCP connect scan — défaut non-root
nmap -sA 192.168.1.1             # ACK scan — détecte les firewalls
nmap -sW 192.168.1.1             # Window scan
nmap -sN 192.168.1.1             # NULL scan — aucun flag TCP
nmap -sF 192.168.1.1             # FIN scan
nmap -sX 192.168.1.1             # Xmas scan — FIN+PSH+URG
nmap -sM 192.168.1.1             # Maimon scan

Scans UDP & autres

nmap -sU 192.168.1.1             # UDP scan (lent)
nmap -sU -sS 192.168.1.1        # UDP + SYN simultanés
nmap -sO 192.168.1.1             # IP protocol scan

Ports

nmap -p 80 192.168.1.1           # Port unique
nmap -p 80,443,8080 192.168.1.1  # Ports multiples
nmap -p 1-1024 192.168.1.1       # Range
nmap -p- 192.168.1.1             # Tous les ports (1-65535)
nmap -p U:53,T:80 192.168.1.1   # UDP + TCP mixte
nmap --top-ports 100 192.168.1.1 # Top 100 ports les plus communs
nmap -F 192.168.1.1              # Fast scan — top 100 ports

Détection de services & OS

nmap -sV 192.168.1.1             # Version des services
nmap -sV --version-intensity 9   # Intensité max (0-9)
nmap -O 192.168.1.1              # Détection OS (root requis)
nmap -O --osscan-guess           # Guess OS si pas de match exact
nmap -A 192.168.1.1              # Agressif : OS + version + scripts + traceroute

Scripts NSE (Nmap Scripting Engine)

nmap -sC 192.168.1.1                          # Scripts par défaut
nmap --script=banner 192.168.1.1              # Script unique
nmap --script=http-title,http-headers 192.168.1.1  # Scripts multiples
nmap --script=vuln 192.168.1.1               # Scripts de vulnérabilités
nmap --script=safe 192.168.1.1               # Scripts safe uniquement
nmap --script=exploit 192.168.1.1            # Scripts d'exploitation
nmap --script=auth 192.168.1.1               # Authentification par défaut
nmap --script=brute 192.168.1.1              # Brute force credentials
nmap --script=discovery 192.168.1.1          # Découverte réseau

# Avec arguments
nmap --script=http-brute --script-args userdb=/usr/share/wordlists/users.txt 192.168.1.1

# Localisation des scripts
ls /usr/share/nmap/scripts/
nmap --script-updatedb                        # Update la DB des scripts

Scripts utiles par protocole

# HTTP
nmap --script=http-enum 192.168.1.1          # Enumération répertoires
nmap --script=http-robots.txt 192.168.1.1    # Lecture robots.txt
nmap --script=http-shellshock 192.168.1.1    # Test Shellshock

# SMB
nmap --script=smb-vuln-ms17-010 192.168.1.1 # EternalBlue
nmap --script=smb-enum-shares 192.168.1.1   # Partages SMB
nmap --script=smb-enum-users 192.168.1.1    # Utilisateurs SMB
nmap --script=smb-os-discovery 192.168.1.1  # OS via SMB

# DNS
nmap --script=dns-brute 192.168.1.1         # Brute force sous-domaines
nmap --script=dns-zone-transfer 192.168.1.1 # Tentative de zone transfer

# FTP
nmap --script=ftp-anon 192.168.1.1          # Anonymous FTP
nmap --script=ftp-brute 192.168.1.1         # Brute force FTP

# SSH
nmap --script=ssh-auth-methods 192.168.1.1  # Méthodes d'auth SSH
nmap --script=ssh-brute 192.168.1.1         # Brute force SSH

# MySQL
nmap --script=mysql-empty-password 192.168.1.1
nmap --script=mysql-databases 192.168.1.1

Timing & Performance

nmap -T0 192.168.1.1    # Paranoid — très lent, IDS evasion
nmap -T1 192.168.1.1    # Sneaky
nmap -T2 192.168.1.1    # Polite
nmap -T3 192.168.1.1    # Normal (défaut)
nmap -T4 192.168.1.1    # Aggressive — labs et réseaux rapides
nmap -T5 192.168.1.1    # Insane — très bruyant

# Contrôle fin
nmap --min-rate 1000 192.168.1.1       # Min 1000 paquets/sec
nmap --max-rate 500 192.168.1.1        # Max 500 paquets/sec
nmap --min-parallelism 10              # Parallélisme minimum
nmap --max-retries 2 192.168.1.1       # Limite les retransmissions

Evasion & Spoofing

nmap -D RND:10 192.168.1.1            # Decoys — 10 IPs aléatoires
nmap -D 192.168.1.5,192.168.1.6 192.168.1.1  # Decoys spécifiques
nmap -S 192.168.1.100 192.168.1.1     # Spoof source IP (root)
nmap -e eth0 192.168.1.1              # Interface spécifique
nmap --source-port 53 192.168.1.1     # Spoof port source
nmap -f 192.168.1.1                   # Fragmentation des paquets
nmap --mtu 24 192.168.1.1             # MTU custom (multiple de 8)
nmap --data-length 25 192.168.1.1     # Padding des paquets
nmap --randomize-hosts 192.168.1.0/24 # Ordre aléatoire des cibles
nmap --spoof-mac 0 192.168.1.1        # MAC aléatoire

Output

nmap -oN output.txt 192.168.1.1       # Format normal
nmap -oX output.xml 192.168.1.1       # Format XML
nmap -oG output.gnmap 192.168.1.1     # Format grepable
nmap -oA output 192.168.1.1           # Les 3 formats simultanément
nmap -v 192.168.1.1                   # Verbose
nmap -vv 192.168.1.1                  # Double verbose
nmap -d 192.168.1.1                   # Debug
nmap --reason 192.168.1.1             # Raison de l'état de chaque port
nmap --open 192.168.1.1               # Affiche uniquement les ports ouverts
nmap --packet-trace 192.168.1.1       # Trace chaque paquet

Combos utiles en pentest

# Recon initial rapide
nmap -T4 -F 192.168.1.0/24

# Scan complet sur une cible identifiée
nmap -sS -sV -sC -O -p- -T4 192.168.1.1

# Scan discret full port
nmap -sS -T2 -p- --min-rate 500 192.168.1.1

# Vuln scan ciblé
nmap -sV --script=vuln 192.168.1.1

# Audit SMB (Windows)
nmap -p 445 --script=smb-vuln-ms17-010,smb-enum-shares,smb-enum-users 192.168.1.1

# Découverte réseau passive
nmap -sn -T2 --randomize-hosts 192.168.1.0/24

# Export XML pour import dans Metasploit
nmap -sS -sV -oX scan.xml 192.168.1.1
db_import scan.xml  # Dans msfconsole

États des ports

ÉtatSignification
openPort actif, service en écoute
closedPort accessible mais pas de service
filteredFirewall/filtre — pas de réponse
unfilteredAccessible, état inconnu (ACK scan)
open|filteredOuvert ou filtré — impossible à distinguer
closed|filteredFermé ou filtré

hashwar.net — notes from the edge.