🎯 Audit de vulnérabilités — Nmap et méthodologie CVSS
| Formation | BTS SIO option SISR — IRIS Mediaschool |
|---|---|
| Bloc / Module | B2 · M2.3 | Compétence B2.4 / Lien B3.4 |
| Cours | C2.3.4 — Audit de vulnérabilités |
| Durée | 3h30 (théorie + TP) |
🚀 Introduction (10 min)
En 2017, l'incident Equifax a mis en lumière la conséquence d'un patch manquant : la vulnérabilité CVE-2017-5638 dans Apache Struts, détectable dès lors par un scan automatisé :
nmap --script=http-vuln-cve2017-5638 <cible>
Deux mois après l'alerte du CERT‑US, la faille n'était toujours pas corrigée et environ 145 millions d'enregistrements ont été exfiltrés. Ce cas concret montre que la combinaison d'une découverte active et d'un script d'audit peut identifier rapidement des failles critiques dans des environnements de PME.
🎯 Objectifs de la séance
- Expliquer et appliquer une méthodologie d'audit de vulnérabilités respectueuse du cadre légal et professionnel.
- Réaliser des scans Nmap pertinents (types de scan, détection de versions, scripts NSE) et interpréter leurs résultats.
- Prioriser des vulnérabilités avec CVSS v3 et produire un rapport opérationnel exploitable.
📖 1. Méthodologie d'audit de sécurité (40 min)
La réalisation d'un audit de vulnérabilités commence toujours par un cadrage précis : périmètre, objectifs, durée, contraintes et, surtout, une autorisation écrite. Sans cette autorisation vous vous exposez à des poursuites (voir rappel légal en fin de séance). Le cadrage précise les cibles (adresses IP, plages, noms d'hôtes), le type de tests autorisés (passif/actif, tests d'intrusion autorisés), les plages horaires et la personne de contact en cas d'incident.
Les 6 phases de la méthodologie
| Phase | Description |
|---|---|
| 1. Cadrage & autorisation | Définir périmètre, objectifs, contraintes et obtenir l'autorisation écrite signée avant toute action. |
| 2. Découverte passive (OSINT) | Collecter des informations publiques : noms de domaine, enregistrements DNS, bannières publiques, pages exposées. |
| 3. Scan actif | Port scanning, détection de services/versions et exécution de scripts de détection de vulnérabilités. Planifier la fenêtre d'exécution pour minimiser l'impact production. |
| 4. Analyse des résultats | Corréler résultats Nmap, sorties de scanners (GVM/OpenVAS, Nikto) et bases CVE/CVSS pour estimer la criticité et la faisabilité d'exploitation. |
| 5. Rédaction du rapport | Priorisation claire (critique → correctif immédiat, etc.) avec propositions de remédiation. |
| 6. Remédiation & rescanning | Appliquer les correctifs (patch/config changes) puis rescan de validation pour vérifier la correction. |
Exemple d'autorisation écrite
Autorisation de tests d'intrusion et de scans actifs
Client : InnovatTech SARL
Périmètre : 192.168.10.0/24, 192.168.30.0/24 (machines listées jointes)
Période : du YYYY-MM-DD au YYYY-MM-DD
Type d'opérations autorisées : découverte passive (OSINT) et scans actifs
non destructifs (Nmap, OpenVAS, Nikto).
Tests d'exploitation manuels uniquement si autorisés par écrit séparément.
Responsable contact : prenom.nom (tel/email)
Signature : ___________________ Date: ____
📖 2. Nmap : types de scan et interprétation (60 min)
Nmap est l'outil central pour la découverte active : il identifie hôtes vivants, ports ouverts, services et versions, et exécute des scripts (NSE).
Options essentielles
| Option | Description | Remarque |
|---|---|---|
-sn | Ping sweep — détecte les hôtes vivants sans scanner les ports | Utile avant un scan de ports pour réduire la surface |
-sS | SYN stealth scan — envoie des SYN et observe les réponses | Requiert root, moins bruyant que -sT |
-sT | TCP connect scan — utilise la pile TCP de l'OS | Pas besoin de root mais plus détectable |
-sU | UDP scan — nécessaire pour services UDP exposés (DNS, SNMP) | Lent et bruyant |
-sV | Détection de version des services | --version-intensity 5 pour fingerprinting moyen/fort |
-sC | Lance les scripts NSE par défaut | Ensemble utile pour détections courantes |
-O | Détection du système d'exploitation | Requiert souvent root, génère du trafic atypique |
-A | Mode agressif (combine -sV, -sC, -O) | Pratique pour audits mais plus bruyant |
-p 1-1024 / -p- | Restreindre la plage de ports | -p- scanne les 65 535 ports |
--open | N'affiche que les ports ouverts | Pratique pour rapports lisibles |
-oN / -oX / -oG | Format de sortie : humain / XML / grepable | Toujours exporter en XML pour corrélation automatisée |
Exemples pratiques (Kali Linux, root)
# Détection d'hôtes vivants
sudo nmap -sn 192.168.10.0/24 -oN s1_ping_sweep_192-168-10.txt
# Scan TCP SYN, tous ports, afficher uniquement open, vitesse T4
sudo nmap -sS -p- --open -T4 -oN s1_scan_fullports_192-168-10.txt 192.168.10.0/24
# Scan ciblé : SYN + détection version + scripts par défaut + OS (1-1024)
sudo nmap -sS -sV --version-intensity 5 -sC -O -p 1-1024 --open \
-oN s1_report_192-168-10.txt 192.168.10.0/24
# Exécution de scripts NSE spécifiques sur un hôte
sudo nmap -p 443 --script ssl-enum-ciphers \
-oN s1_ssl_ciphers_debian-srv02.txt 192.168.30.5
sudo nmap -p 445 --script smb-vuln-ms17-010 \
-oN s1_smb_ms17_win-srv01.txt 192.168.10.5
Scripts NSE utiles en audit
| Script NSE | Usage |
|---|---|
--script=vuln | Regroupe de nombreux contrôles de vulnérabilités courantes |
smb-vuln-ms17-010 | Détecte EternalBlue (WannaCry) sur SMB Windows |
ssl-enum-ciphers | Inventorie les suites TLS supportées, signale les suites faibles |
http-title | Récupère le titre des pages HTTP exposées |
ftp-anon | Détecte l'accès FTP anonyme activé |
telnet-ntlm-info | Identifie les services Telnet exposés avec info NTLM |
http-vuln-cve2017-5638 | Détecte la faille Apache Struts (cas Equifax) |
Interprétation des états de port
| État | Signification | Action |
|---|---|---|
| open | Un service répond et est accessible | Priorité d'analyse immédiate |
| closed | Port fermé, aucune application n'écoute | Utile pour cartographie |
| filtered | Un firewall ou filtrage bloque la sonde Nmap | Tests complémentaires (traceroute, règles pare-feu) |
| open|filtered | Nmap ne distingue pas entre ouvert et filtré (UDP, ACK-less) | Vérifications supplémentaires requises |
📖 3. CVSS v3 et priorisation (20 min)
CVSS v3 est le standard pour quantifier la gravité d'une vulnérabilité. Un vecteur CVSS décrit les métriques utilisées pour calculer le score de base :
| Métrique | Abbrév. | Description |
|---|---|---|
| Attack Vector | AV | Vecteur d'attaque : réseau (N), adjacent (A), local (L), physique (P) |
| Attack Complexity | AC | Complexité d'exploitation : faible (L) ou haute (H) |
| Privileges Required | PR | Privilèges nécessaires : aucun (N), bas (L), haut (H) |
| User Interaction | UI | Interaction utilisateur requise : aucune (N) ou requise (R) |
| Scope | S | Portée : inchangée (U) ou modifiée (C) |
| Confidentiality | C | Impact sur la confidentialité : nul (N), faible (L), élevé (H) |
| Integrity | I | Impact sur l'intégrité : nul (N), faible (L), élevé (H) |
| Availability | A | Impact sur la disponibilité : nul (N), faible (L), élevé (H) |
Exemple commenté
- AV:N → vecteur réseau : l'attaque est réalisable à distance via le réseau.
- AC:L → complexité faible : pas de condition particulière pour exploiter.
- PR:N → pas besoin de privilèges.
- UI:N → pas d'interaction utilisateur requise.
- C:H / I:H / A:H → impact élevé sur confidentialité, intégrité et disponibilité.
Classification opérationnelle
| Niveau | Score CVSS | Délai de correction |
|---|---|---|
| Critical | ≥ 9.0 | Corriger < 24h ou isoler la cible |
| High | 7.0 ≤ score < 9.0 | Corriger sous 7 jours |
| Medium | 4.0 ≤ score < 7.0 | Corriger sous 30 jours |
| Low | 0.1 ≤ score < 4.0 | Planifier lors d'une prochaine fenêtre de maintenance |
💻 Travaux Pratiques — Durée : 1h30
Contexte
Vous êtes technicien chez InnovatTech SARL. Le responsable informatique vous demande d'auditer le périmètre interne et DMZ suivant :
- 192.168.10.0/24 (VLAN admin) — hôte d'intérêt :
win-srv01(192.168.10.5) - 192.168.30.0/24 (DMZ) — hôte d'intérêt :
debian-srv02(192.168.30.5)
Prérequis techniques
- VM attaquante (Kali Linux ou Debian avec Nmap 7.x), accès root pour certains scans.
- Accès réseau aux plages 192.168.10.0/24 et 192.168.30.0/24 (lab isolé).
- Autorisation écrite signée — obligatoire avant de démarrer.
Étapes
Étape 1 — Ping sweep (lister les hôtes vivants) :
sudo nmap -sn 192.168.10.0/24 -oN s1_ping_sweep_192-168-10.txt
sudo nmap -sn 192.168.30.0/24 -oN s1_ping_sweep_192-168-30.txt
Étape 2 — Scan de ports avec SYN + détection de versions/scripts/OS :
sudo nmap -sS -sV --version-intensity 5 -sC -O -p 1-1024 --open \
-oN s1_report_192-168-10.txt 192.168.10.0/24
Étape 3 — Scripts NSE ciblés :
# Audit TLS sur debian-srv02
sudo nmap -p 443 --script ssl-enum-ciphers \
-oN s1_ssl_ciphers_debian-srv02.txt 192.168.30.5
# Détection EternalBlue sur win-srv01
sudo nmap -p 445 --script smb-vuln-ms17-010 \
-oN s1_smb_ms17_win-srv01.txt 192.168.10.5
Étape 4 — Export XML pour traitement automatique :
sudo nmap -sS -sV -sC -O -p 1-1024 --open \
-oX s1_report_192-168-10.xml 192.168.10.0/24
Livrable attendu
Un rapport tabulaire (Markdown ou CSV) avec les colonnes :
Hostname | IP | Port | Protocole | Service | Version | Script NSE (résumé) | CVE(s) détectées | Priorité CVSS | Remédiation proposée
Exemple de ligne :
debian-srv02 | 192.168.30.5 | 443 | tcp | nginx | 1.18.0 | ssl-enum-ciphers: weak cipher TLSv1.0 | CVE-2020-XXXX | High (8.1) | Désactiver TLSv1/1.1, forcer TLS1.2+, mettre à jour openssl
Critères de réussite
- Le scan couvre les deux plages et liste tous les hôtes répondants.
- Les services exposés sont identifiés et documentés (host/port/service/version).
- Les vulnérabilités détectées par NSE sont annotées avec CVSS et proposition de correction.
🔁 Synthèse (10 min)
Un audit efficace combine cadrage légal, découverte passive, scans actifs précis (Nmap + NSE), analyse CVSS et rapport priorisé avec plan de remédiation et rescans de validation. Sans autorisation écrite, tout scan peut être qualifié d'accès frauduleux (art. 323-1 CP).
Question de vérification : En une phrase, expliquez pourquoi une autorisation écrite est indispensable avant d'exécuter un scan Nmap sur un réseau tiers.
Tout scan non autorisé est susceptible d'être qualifié d'accès frauduleux ou d'atteinte à un système de traitement automatisé de données (article 323-1 du code pénal / LCEN). Obtenir l'autorisation écrite avant toute action.
🎮 Quiz — Testez vos connaissances
- Quelle option Nmap effectue un ping sweep pour détecter les hôtes vivants sans scanner les ports ?
- Quel score CVSS v3 correspond au vecteur AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H ?
- Quelle article du code pénal français sanctionne l'accès frauduleux à un système informatique ?
- Quelle option Nmap réalise un scan SYN stealth (demi-ouvert) nécessitant des privilèges root ?
- Selon la classification CVSS opérationnelle, sous quel délai maximum doit-on corriger une vulnérabilité High (7.0 ≤ score < 9.0) ?
Corrections
- -sn — L'option -sn lance un ping sweep : Nmap détecte les hôtes actifs sans ouvrir ni scanner aucun port.
- 9.8 (Critical) — AV:N (réseau), AC:L (faible complexité), PR:N (aucun privilège), UI:N (aucune interaction), C/I/A:H → score 9.8, niveau Critical.
- Article 323-1 du code pénal (LCEN) — Cet article sanctionne l'accès ou le maintien frauduleux dans un STAD, avec des peines allant jusqu'à 2 à 5 ans d'emprisonnement et amendes.
- -sS — Le SYN stealth scan envoie un paquet SYN et observe la réponse sans compléter la connexion TCP, ce qui le rend moins bruyant que -sT mais requiert les droits root.
- 7 jours — La classification opérationnelle CVSS impose : Critical < 24h, High ≤ 7 jours, Medium ≤ 30 jours, Low : prochaine fenêtre de maintenance.
