Nmap

De wiki.nexiat.fr
Aller à la navigation Aller à la recherche
Fiche express
Domaine Scan de ports et découverte réseau
Type Scanner de référence (open source)
Site https://nmap.org/
Voir aussi Scan de ports TCP, Scan de ports UDP, Connexion

Nmap (Network Mapper) est le scanner réseau de référence. Il permet de :

  • découvrir les hôtes actifs (hosts alive) ;
  • identifier les services ouverts (nom et version) ;
  • détecter le système d'exploitation (nom et version) ;
  • déduire la présence de filtres et de pare-feux d'après le type de réponses.

Voir les articles connexes : Connexion, Scan de ports TCP, Scan de ports UDP.

Ressources : https://nmap.org/man/fr/ · Zenmap (GUI) https://nmap.org/zenmap/ · scripts NSE https://nmap.org/nsedoc/index.html

Rappel : poignée de main TCP

  • le client envoie le drapeau SYN (synchronise) ;
  • le serveur répond SYN-ACK (synchronise / acknowledgment) ;
  • le client répond ACK (acknowledgment).

La connexion passe alors en mode ESTABLISHED. Les drapeaux TCP fonctionnent en booléen :

  • URG — urgence de traitement
  • ACK — accusé de réception
  • PSH — méthode push
  • RST — réinitialisation de la connexion
  • SYN — demande de connexion
  • FIN — fin de connexion

Un scan en mode FIN ferme la « connexion » avant même qu'elle soit établie (et donc loguée) ; le serveur répond par un RST.

Principales options

Techniques de scan

-sS   # SYN scan (TCP), rapide, pas de session loguée sur la cible
-sT   # connect() : méthode standard TCP, sans droits root
-sU   # scan UDP (lent)
-sA   # ACK scan
-sN   # Null scan (aucun drapeau dans l'en-tete)
-sF   # FIN scan
-sX   # Xmas scan (drapeaux FIN, PSH et URG)

Découverte d'hôtes

-sP   # équivalent d'un ping sweep (établit une connexion : visible sur la cible)
-Pn   # désactive la découverte d'hôtes, scanne directement les ports
-P0   # évite l'ICMP echo request (discrétion accrue) ; détectable par un NIDS (snort)
-PR   # découverte ARP
-n    # pas de résolution DNS

Détection de service et de version

-sV                        # version du service
-sV --version-intensity 8  # intensité de détection
-O                         # détection de l'OS
-A                         # OS + version des services + traceroute + scripts

Temporisation

-T0 ... -T5   # de 0 (le plus lent) à 5 (le plus rapide)
--scan-delay  # délai entre les sondes

Évasion pare-feu / IDS

-f              # petits paquets fragmentés
--mtu           # taille de MTU imposée
-D              # leurres : scans depuis des IP usurpées
-S              # usurpe l'adresse source
-g              # port source imposé
--proxies       # relais
--data-length   # ajoute des données aléatoires aux paquets

Sortie

-oN   # sortie normale (fichier)
-oX   # XML
-oG   # format grepable
-oA   # tous les formats

Sélection des ports et des cibles

-p 23              # scanne le port 23
-p 10-90,63000     # ports 10 à 90 et 63000
-F                 # scan rapide (ports de /etc/services)
-e eth0            # interface d'émission
nmap exemple.org/24
nmap 192.168.0.0-255
nmap 192.168.0.*

Usage courant

nmap -A <hostname>
nmap -sS 192.168.0.61 -p 443
nmap -sS -Pn -A 192.168.0.61
nmap -sS -sV -T4 -P0 exemple.tld
nmap -sS -sU -O -oN nmap.log 192.168.0.1-254
nmap -sT -O 192.168.0.1/24
nmap -sP 192.168.0.1-100
nmap -T4 -A -v <ip>
nmap -sS 192.168.1.0/24 -T5

# inventaire par ping sweep
nmap -sP -PE -PA21,23,80,3389 192.168.0.1-100

Usages particuliers

# fragmentation IP
nmap -sS -T4 -A -f -v 192.168.0.1

# ACK flag scan
nmap -sA -P0 10.0.0.1

# difficulté de prédiction de séquence TCP
nmap -O -v <ip>

# usurpation d'identité : spoof 192.168.1.35 depuis le port 80 vers l'interface wlan0
nmap --packet-trace -S 192.168.1.35 -g80 -e wlan0 192.168.1.210
nmap -sS 192.168.0.11 -D 192.168.0.10

# rebond FTP (FTP bounce)
nmap -P0 -b user:pass@ftp-server:port <cible>

# scan par machine zombie (idle scan)
nmap -P0 -sI 192.168.0.155 192.168.0.50

Scripts NSE

cd /usr/share/nmap/scripts
nmap -sT -A --script=smb-check-vulns --script-args=unsafe=1 -P0 192.168.0.61
nmap --script ssl-enum-ciphers -p 443 exemple.tld

# énumération HTTP
nmap --script http-enum,http-headers,http-methods,http-php-version -p 80 wiki.exemple.tld

# détection DHCP
nmap -sU -p 67-68 --script dhcp-discover 192.168.1.0/24

# vulnérabilité SMB
nmap -p445 --script=smb-vuln-ms17-010 192.168.0.1

# test POODLE / négociation SSL
nmap --script ssl-enum-ciphers -p 443 exemple.tld

# algorithmes SSH
nmap -p 22 --script ssh2-enum-algos $YOUR_SERVER | grep -i aes*-gcm

Voir aussi