Nmap : l’outil incontournable du scanner de vulnerabilites
Nmap (Network Mapper) est l’outil de scan réseau le plus utilise au monde par les professionnels de la sécurité. Gratuit et open source, il permet de découvrir les hotes actifs, les ports ouverts, les services en cours d’exécution et les vulnerabilites potentielles sur un réseau. Que vous securisiez le réseau d’une PME a Dakar ou que vous auditiez un serveur VPS hebergeant votre site WordPress, Nmap est votre premier outil de diagnostic.
Important : ne scannez JAMAIS un réseau ou un système sans autorisation ecrite prealable. Le scan non autorise est illegal au Sénégal (loi 2008-11 sur la cybercriminalite). Ce guide est destiné aux administrateurs système et professionnels de sécurité travaillant sur leurs propres infrastructures.
Installation de Nmap
Sur Windows
# Télécharger l'installateur depuis nmap.org
# L'installation inclut Zenmap (interface graphique) et Npcap
# Vérifier l'installation
nmap --version
# Nmap 7.94 ( https://nmap.org )
Sur Linux (Kali, Ubuntu, Debian)
# Sur Ubuntu/Debian
sudo apt update && sudo apt install nmap -y
# Sur Kali Linux (pre-installé)
nmap --version
# Installer les scripts NSE supplementaires
sudo apt install nmap-scripts -y
Les types de scan fondamentaux
Scan de découverte d’hotes (Ping Scan)
Identifiez quels appareils sont actifs sur votre réseau local :
# Découvrir tous les hotes actifs sur le réseau local
nmap -sn 192.168.1.0/24
# Résultat type :
# Nmap scan report for 192.168.1.1 (routeur)
# Host is up (0.0010s latency).
# Nmap scan report for 192.168.1.15 (PC comptable)
# Host is up (0.0030s latency).
# Nmap scan report for 192.168.1.42 (imprimante)
# Host is up (0.0050s latency).
# Découverte avec ARP (plus fiable sur réseau local)
nmap -sn -PR 192.168.1.0/24
# Sauvegarder l'inventaire en fichier
nmap -sn 192.168.1.0/24 -oN inventaire-réseau.txt
Scan de ports TCP (SYN Scan)
Le scan le plus courant. Rapide et discret, il identifie les ports ouverts sans établir de connexion complété :
# Scan SYN des 1000 ports les plus courants
sudo nmap -sS 192.168.1.1
# Scan de tous les 65535 ports TCP
sudo nmap -sS -p- 192.168.1.1
# Scan de ports spécifiques
sudo nmap -sS -p 22,80,443,3306,8080 192.168.1.1
# Scan d'une plage de ports
sudo nmap -sS -p 1-1024 192.168.1.1
Scan TCP Connect (sans privileges root)
# Si vous n'avez pas les droits root
nmap -sT 192.168.1.1
# Plus lent que SYN mais ne nécessité pas de privileges
Scan UDP
# Scanner les ports UDP (DNS, SNMP, DHCP)
sudo nmap -sU --top-ports 100 192.168.1.1
# Scan UDP spécifique
sudo nmap -sU -p 53,67,68,69,123,161,162,514 192.168.1.1
# Note : le scan UDP est beaucoup plus lent que TCP
Détection de services et versions
Savoir quel port est ouvert ne suffit pas. Il faut identifier le service exact et sa version pour trouver des vulnerabilites :
# Détection de version des services
nmap -sV 192.168.1.1
# Résultat type :
# PORT STATE SERVICE VERSION
# 22/tcp open ssh OpenSSH 8.9p1 Ubuntu
# 80/tcp open http Apache httpd 2.4.52
# 443/tcp open ssl/http Apache httpd 2.4.52
# 3306/tcp open mysql MySQL 8.0.33
# Détection agressive (plus precise mais plus lente)
nmap -sV --version-intensity 5 192.168.1.1
# Détection OS + services + scripts + traceroute
nmap -A 192.168.1.1
# Détection du système d'exploitation
sudo nmap -O 192.168.1.1
Scripts NSE (Nmap Scripting Engine)
Les scripts NSE sont la fonctionnalité la plus puissante de Nmap. Ils automatisent la détection de vulnerabilites :
Catégories de scripts
| Catégorie | Usage | Commande |
|---|---|---|
| vuln | Détection de vulnerabilites connues | --script vuln |
| auth | Test d’authentification faible | --script auth |
| default | Scripts de base surs | -sC |
| discovery | Découverte d’informations | --script discovery |
| brute | Tests de force brute | --script brute |
| safe | Scripts sans risque | --script safe |
Scripts de vulnerabilite essentiels
# Scanner toutes les vulnerabilites connues
nmap --script vuln 192.168.1.1
# Vérifier les vulnerabilites SSL/TLS
nmap --script ssl-enum-ciphers -p 443 monsite.sn
# Détecter Heartbleed
nmap --script ssl-heartbleed -p 443 monsite.sn
# Vérifier les vulnerabilites SMB (WannaCry, EternalBlue)
nmap --script smb-vuln* -p 445 192.168.1.0/24
# Tester les credentials par défaut
nmap --script http-default-accounts -p 80,8080 192.168.1.1
# Enumerer les utilisateurs
nmap --script smb-enum-users -p 445 192.168.1.1
Scripts pour serveurs web (WordPress, Apache, Nginx)
# Enumeration de répertoires web
nmap --script http-enum -p 80,443 monsite.sn
# Détecter le CMS (WordPress, Joomla, etc.)
nmap --script http-generator -p 80,443 monsite.sn
# Vérifier les méthodes HTTP dangereuses
nmap --script http-methods -p 80,443 monsite.sn
# Détecter un WAF (Web Application Firewall)
nmap --script http-waf-detect -p 80,443 monsite.sn
# Headers de sécurité
nmap --script http-security-headers -p 80,443 monsite.sn
# Vulnerabilites WordPress spécifiques
nmap --script http-wordpress-enum -p 80,443 monsite.sn
Cas pratiques pour le Sénégal
Cas 1 : Auditer le réseau d’une PME
# Étape 1 : Inventaire complet du réseau
nmap -sn 192.168.1.0/24 -oN inventaire.txt
# Étape 2 : Scanner les ports ouverts sur chaque hote
nmap -sS -sV --top-ports 1000 192.168.1.0/24 -oN ports-ouverts.txt
# Étape 3 : Identifier les services vulnerables
nmap --script vuln 192.168.1.0/24 -oN vulnerabilites.txt
# Étape 4 : Vérifier les partagés réseau non sécurisés
nmap --script smb-enum-shares -p 445 192.168.1.0/24
# Points d'attention :
# - Imprimantes avec interface web sans mot de passe (port 80/443)
# - NAS ou serveurs de fichiers avec SMB ouvert
# - Cameras IP avec credentials par défaut
# - Routeur avec interface d'administration accessible
Cas 2 : Auditer un serveur VPS (site WordPress)
# Scan complet du serveur
nmap -sS -sV -sC -O -p- votre-serveur.sn -oN audit-vps.txt
# Vérifier la configuration SSL
nmap --script ssl-enum-ciphers,ssl-cert -p 443 votre-serveur.sn
# Vérifier que seuls les ports nécessaires sont ouverts
# Ports attendus pour un serveur WordPress :
# 22 (SSH), 80 (HTTP), 443 (HTTPS)
# Tout autre port ouvert doit être justifie
# Tester la sécurité SSH
nmap --script ssh-auth-methods,ssh2-enum-algos -p 22 votre-serveur.sn
Cas 3 : Vérifier un réseau WiFi d’entreprise
# Scanner les appareils connectés au WiFi
nmap -sn 10.0.0.0/24
# Identifier les appareils non autorises
# Comparer avec votre inventaire connu
# Vérifier si des appareils exposent des services dangereux
nmap -sS -p 445,3389,23,21 10.0.0.0/24
# 445 : partage fichiers (risque si ouvert)
# 3389 : bureau a distance (ne devrait pas être accessible)
# 23 : Telnet (jamais acceptable)
# 21 : FTP (préférer SFTP)
Formats de sortie et rapports
# Sortie normale (lisible)
nmap -sV 192.168.1.1 -oN rapport-normal.txt
# Sortie XML (pour traitement automatise)
nmap -sV 192.168.1.1 -oX rapport.xml
# Sortie Grepable (pour filtrage avec grep)
nmap -sV 192.168.1.1 -oG rapport-grep.txt
# Tous les formats en même temps
nmap -sV 192.168.1.1 -oA rapport-complet
# Produit : rapport-complet.nmap, rapport-complet.xml, rapport-complet.gnmap
# Filtrer les résultats grepable
grep "open" rapport-grep.txt
grep "/tcp.*open" rapport-grep.txt | awk '{print $2, $3}'
Optimisation des scans
Gérer la vitesse
# Templates de timing (T0 a T5)
nmap -T0 192.168.1.1 # Paranoiaque (très lent, discret)
nmap -T1 192.168.1.1 # Sournois
nmap -T2 192.168.1.1 # Poli
nmap -T3 192.168.1.1 # Normal (défaut)
nmap -T4 192.168.1.1 # Agressif (recommande en LAN)
nmap -T5 192.168.1.1 # Dement (risque de rater des ports)
# Pour un réseau local au Sénégal, T4 est ideal
# Pour un scan distant sur connexion 3G/4G, restez sur T3
# Limiter le debit pour ne pas saturer une connexion lente
nmap --max-rate 100 192.168.1.0/24
Techniques d’evasion (pour tests de pénétration autorises)
# Fragmentation des paquets
nmap -f 192.168.1.1
# Decoy scan (masquer votre IP parmi des leurres)
nmap -D RND:5 192.168.1.1
# Changer le port source
nmap --source-port 53 192.168.1.1
# Scan idle (utiliser un zombie)
nmap -sI zombie-ip 192.168.1.1
Automatisation avec des scripts Bash
#!/bin/bash
# Script d'audit réseau automatise
TARGET="192.168.1.0/24"
DATE=$(date +%Y-%m-%d)
OUTPUT_DIR="audit-$DATE"
mkdir -p "$OUTPUT_DIR"
echo "[1/4] Découverte des hotes..."
nmap -sn $TARGET -oG "$OUTPUT_DIR/hotes.gnmap"
HOSTS=$(grep "Up" "$OUTPUT_DIR/hotes.gnmap" | awk '{print $2}')
echo "Hotes trouves : $(echo "$HOSTS" | wc -l)"
echo "[2/4] Scan des ports et services..."
nmap -sS -sV --top-ports 1000 -T4 $TARGET -oN "$OUTPUT_DIR/services.txt" -oX "$OUTPUT_DIR/services.xml"
echo "[3/4] Scan de vulnerabilites..."
nmap --script vuln $TARGET -oN "$OUTPUT_DIR/vulns.txt"
echo "[4/4] Vérification SSL..."
for host in $HOSTS; do
nmap --script ssl-enum-ciphers -p 443 $host >> "$OUTPUT_DIR/ssl.txt"
done
echo "Audit terminé. Résultats dans $OUTPUT_DIR/"
Complements a Nmap : outils associés
| Outil | Rôle | Quand l’utiliser |
|---|---|---|
| Zenmap | Interface graphique Nmap | Pour les debutants ou la visualisation réseau |
| Masscan | Scan de ports ultra-rapide | Scanner des plages IP très larges |
| Nikto | Scanner de vulnerabilites web | Après avoir identifie un serveur web avec Nmap |
| OpenVAS | Scanner de vulnerabilites complet | Audits de sécurité approfondis |
| WPScan | Scanner WordPress | Auditer un site WordPress specifiquement |
Checklist audit réseau avec Nmap
- Autorisation ecrite obtenue avant tout scan
- Inventaire des hotes actifs réalisé (
nmap -sn) - Ports ouverts identifies sur chaque hote (
nmap -sS -sV) - Services et versions detectes (
nmap -sV) - Scripts de vulnerabilite executes (
--script vuln) - Configuration SSL/TLS verifiee (
ssl-enum-ciphers) - Ports inutiles identifies pour fermeture
- Rapport genere et sauvegarde en XML et texte
- Résultats communiques au responsable IT
- Plan de remediation etabli pour chaque vulnerabilite trouvee