---
title: Nmap
description: "Scanner, fingerprint et cartographier un réseau avec Nmap et son moteur NSE."
category: recon
kind: tool
tags: [scan, ports, discovery, nse]
level: basic
updated: 2026-11-08
order: 1
aliases: ["network mapper"]
---

## Scan initial

Toujours commencer par un scan rapide et discret avant de lancer les scripts lourds.

```bash
# Top 1000 ports, versions, scripts par défaut, OS
nmap -sC -sV -O -oA scans/initial 10.10.10.10

# Tous les ports, sans résolution DNS, sortie normale
nmap -p- --min-rate 1500 -n 10.10.10.10 -oN scans/all-ports.txt

# Scan furtif (SYN) sur les ports ouverts identifiés
nmap -sS -sV -p 22,80,443,445 --version-all 10.10.10.10
```

> [!TIP]
> Sur un réseau filtré, un scan `-p-` peut prendre des heures. Commence par `--top-ports 1000`, puis élargis uniquement les ports pertinents.

## Découverte d'hôtes

```bash
# Ping scan d'un sous-réseau
nmap -sn 10.10.10.0/24

# Sans ICMP, via ARP (même LAN)
nmap -sn -PR 10.10.10.0/24

# Ports ouverts uniquement, format grepable
nmap -sS -p 22,80,443 -oG - 10.10.10.0/24 | grep -E "open|up"
```

| Option | Effet |
| --- | --- |
| `-sn` | Découverte d'hôtes sans scan de ports |
| `-Pn` | Traite la cible comme en ligne (bypass ICMP) |
| `-n` | Désactive la résolution DNS |
| `-T4` | Timing agressif mais raisonnable |
| `-oA` | Sortie normale, XML et grepable |

## Fingerprint de services

```bash
# Version detection poussée
nmap -sV --version-intensity 9 -p 21,22,80,443,8080 10.10.10.10

# Détection OS + MAC
sudo nmap -O --osscan-guess 10.10.10.10

# Banner grabbing via NSE
nmap -p 80,443 --script http-title,http-headers 10.10.10.10
```

## NSE : les scripts utiles

```bash
# Vulnérabilités connues (bruyant)
nmap --script vuln -p 80,443 10.10.10.10

# SMB : partages, users, OS
nmap -p 445 --script smb-enum-shares,smb-enum-users,smb-os-discovery 10.10.10.10

# HTTP : méthodes, robots, enumeration de chemins
nmap -p 80 --script http-methods,http-robots.txt,http-enum 10.10.10.10

# DNS : zone transfer
nmap -p 53 --script dns-zone-transfer --script-args dns-zone-transfer.domain=example.com 10.10.10.10
```

## Sortie et parsing

```bash
# Convertir le XML en HTML lisible
xsltproc scan.xml -o scan.html

# Extraire les ports ouverts d'un XML
nmap -oX - 10.10.10.10 | xmlstarlet sel -t -m "//port[state/@state='open']" \
  -v "concat(@protocol,'/',@portid,' ',service/@name)" -n

# Reprendre un scan interrompu
nmap --resume scans/initial.nmap
```

> [!WARNING]
> `--script vuln` déclenche des tests intrusifs. Sur une cible de production, vérifie le scope et préviens le client avant.
