Présentation de Nmap
Nmap (Network Mapper) est un outil libre d’exploration réseau et d’audit de sécurité. Il permet de découvrir les hôtes actifs sur un réseau, les ports ouverts sur une machine, les services et leurs versions, ainsi que le système d’exploitation utilisé.
Nmap est multi-plateformes (Linux, Windows, macOS) et s’utilise principalement en ligne de commande, bien qu’une interface graphique (Zenmap) existe également.
Découverte d’hôtes (ping scan)
Avant de scanner des ports, on cherche souvent à savoir quelles machines sont actives sur un réseau donné.
$ nmap -sn 192.168.1.0/24 # découverte d'hôtes, sans scan de ports
$ nmap -sn 192.168.1.1-50 # sur une plage d'adresses
L’option -sn (« no port scan ») remplace l’ancienne option -sP : Nmap envoie par défaut une requête ICMP Echo, un TCP SYN vers le port 443, un TCP ACK vers le port 80 et une requête ICMP Timestamp ; sur le réseau local, il utilise directement des requêtes ARP.
Les principaux types de scan de ports
| Option | Nom | Principe |
|---|---|---|
| -sS | SYN scan (« half-open ») | Envoie un SYN, analyse la réponse (SYN/ACK = ouvert), sans terminer la connexion. Rapide et discret. Nécessite les droits root. |
| -sT | TCP connect scan | Établit une connexion TCP complète (handshake entier). Plus lent, plus détectable, mais ne nécessite pas de droits root. |
| -sU | UDP scan | Scan des ports UDP (plus lent, résultats moins fiables car UDP ne répond pas systématiquement). |
| -sV | Version detection | Interroge les ports ouverts pour identifier le service et sa version précise. |
| -O | OS detection | Tente de déterminer le système d’exploitation de la cible à partir de particularités de la pile TCP/IP. |
| -A | Agressif | Combine -sV, -O, traceroute et scripts NSE par défaut. |
États d’un port
| État | Signification |
|---|---|
| open | Une application écoute activement sur ce port et accepte les connexions |
| closed | Le port est accessible (répond) mais aucune application n’écoute dessus |
| filtered | Un pare-feu bloque les paquets : Nmap ne peut pas déterminer si le port est ouvert |
| unfiltered | Le port est accessible mais Nmap ne peut pas déterminer s’il est ouvert ou fermé (rare, scan ACK) |
| open|filtered | Impossible de distinguer un port ouvert d’un port filtré (fréquent en scan UDP) |
Spécifier les ports à scanner
$ nmap 192.168.1.10 # 1000 ports les plus courants par défaut
$ nmap -p 80,443 192.168.1.10 # ports spécifiques
$ nmap -p 1-1024 192.168.1.10 # plage de ports
$ nmap -p- 192.168.1.10 # les 65535 ports (scan complet, plus long)
$ nmap --top-ports 20 192.168.1.10 # les 20 ports les plus fréquemment ouverts
Exemple de résultat
$ nmap -sV 192.168.1.10
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 9.6
80/tcp open http Apache httpd 2.4.58
443/tcp closed https
3306/tcp filtered mysql
Ce résultat indique un serveur SSH et un serveur web accessibles, un port HTTPS explicitement fermé, et un port MySQL filtré par un pare-feu (ni confirmé ouvert, ni confirmé fermé depuis l’extérieur).
NSE : les scripts Nmap
Le Nmap Scripting Engine (NSE) permet d’exécuter des scripts Lua pour automatiser des tâches de détection avancées : détection de vulnérabilités connues, énumération de partages, force brute d’authentification, etc.
$ nmap --script vuln 192.168.1.10 # recherche de vulnérabilités connues
$ nmap --script http-title 192.168.1.10 # récupère le titre des pages web
$ nmap -sC 192.168.1.10 # exécute les scripts par défaut (--script=default)
© 2026 Bruno Jousseaume. Ce cours est publié sous licence CC BY-NC-SA 4.0 : vous pouvez le partager et l’adapter en citant l’auteur et un lien vers cette page, sans usage commercial, et en partageant vos adaptations sous la même licence.