---
title: "Nmap — Service Scanning"
domain: security
subdomain: pentest
phase: 02-scanning
type: snippet
tags: [nmap, scanning, pentest, reconnaissance, ports]
difficulty: intermediate
status: stable
updated: "Sat May 10 2025 00:00:00 GMT+0000 (Coordinated Universal Time)"
---
## Objectifs de la phase

Identifier les hôtes actifs, ports ouverts et services exposés sur la cible.

<Warning>Toujours vérifier le périmètre autorisé avant tout scan. Scan non-autorisé = infraction pénale.</Warning>

## Découverte d'hôtes

```bash vars=TARGET,OUTPUT_DIR
# Ping sweep — hosts actifs
nmap -sn {{TARGET}} -oG {{OUTPUT_DIR}}/hosts-up.txt

# ARP scan (local network)
nmap -PR -sn {{TARGET}} -oG {{OUTPUT_DIR}}/arp-hosts.txt

# Sans ping (bypass firewall)
nmap -Pn {{TARGET}} --open
```

## Scan de ports TCP

```bash vars=TARGET,OUTPUT_DIR
# Scan rapide top 1000 ports
nmap -sS -T4 {{TARGET}} -oA {{OUTPUT_DIR}}/quick

# Scan complet tous ports + scripts + versions
nmap -sC -sV -p- -T4 {{TARGET}} -oA {{OUTPUT_DIR}}/full

# Scan ciblé sur ports spécifiques
nmap -sC -sV -p 21,22,23,25,80,110,139,143,443,445,3306,3389,5432,8080,8443 {{TARGET}} -oA {{OUTPUT_DIR}}/targeted
```

## Scan UDP

```bash vars=TARGET,OUTPUT_DIR
# UDP top 1000 (lent, attendre)
nmap -sU --top-ports 1000 -T2 {{TARGET}} -oA {{OUTPUT_DIR}}/udp

# UDP ciblé services critiques
nmap -sU -p 53,67,68,69,111,123,137,138,161,500 {{TARGET}}
```

## Scripts NSE utiles

```bash vars=TARGET,OUTPUT_DIR
# Vulnérabilités connues
nmap --script vuln {{TARGET}} -oN {{OUTPUT_DIR}}/vuln.txt

# Enumération SMB
nmap --script smb-enum-shares,smb-enum-users -p 139,445 {{TARGET}}

# Enumération HTTP
nmap --script http-title,http-headers,http-robots.txt -p 80,443,8080,8443 {{TARGET}}

# SNMP
nmap -sU --script snmp-info -p 161 {{TARGET}}

# SSL/TLS
nmap --script ssl-enum-ciphers -p 443 {{TARGET}}
```

## Evasion et furtivité

```bash vars=TARGET,OUTPUT_DIR
# Fragmentation paquets
nmap -f -sS {{TARGET}}

# Timing lent (IDS bypass)
nmap -T1 --scan-delay 1s {{TARGET}}

# Decoy scan
nmap -D RND:5 {{TARGET}}

# Source port spoofing
nmap --source-port 53 {{TARGET}}
```

<Checklist
  title="Checklist scanning"
  storageKey="pentest-scanning"
  items={[
    { id: "scope", label: "Vérifier scope autorisé (IP range)", critical: true },
    { id: "ping", label: "Ping sweep pour hosts actifs" },
    { id: "quick", label: "Scan SYN rapide top 1000 ports" },
    { id: "full", label: "Scan complet -sC -sV -p-" },
    { id: "udp", label: "Scan UDP top 1000" },
    { id: "nse", label: "Scripts NSE (vuln, smb, http)" },
    { id: "save", label: "Sauvegarder résultats -oA", critical: true },
    { id: "parse", label: "Parser avec grep/awk pour synthèse" }
  ]}
/>

## Parsing des résultats

```bash vars=OUTPUT_DIR
# Extraire ports ouverts depuis grepable output
grep "Ports:" {{OUTPUT_DIR}}/full.gnmap | grep -oP '\d+/open' | cut -d/ -f1 | sort -nu

# Synthèse rapide
grep "open" {{OUTPUT_DIR}}/full.nmap | grep -v "#"

# Convertir en liste pour metasploit
grep "open" {{OUTPUT_DIR}}/full.nmap | awk '{print $1}' | sort -u > {{OUTPUT_DIR}}/open-hosts.txt
```

## Pièges fréquents

- **UDP scan lent** : normal, réduire avec `--top-ports 200` si manque de temps
- **IDS/IPS** : sur environnement protégé, passer à T1-T2 et fragmenter
- **Firewall stateful** : utiliser `--source-port 53` ou `-Pn` si ping bloqué
- **False negatives** : toujours compléter nmap avec masscan sur -p-
