Scanner les vulnérabilités avec Nmap

NmapNmapBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce laboratoire, vous apprendrez à utiliser Nmap pour effectuer des scans de vulnérabilités réseau. Vous installerez Nmap, utiliserez le Nmap Scripting Engine (NSE) pour des scans avancés et analyserez les résultats pour identifier les faiblesses de sécurité.

Grâce à des exercices pratiques, vous effectuerez des scans de base et des scans améliorés par des scripts tout en apprenant à interpréter et à enregistrer vos résultats. Ce laboratoire offre une expérience pratique des fonctionnalités principales de Nmap pour une évaluation efficace de la sécurité réseau.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL nmap(("Nmap")) -.-> nmap/NmapGroup(["Nmap"]) nmap/NmapGroup -.-> nmap/installation("Installation and Setup") nmap/NmapGroup -.-> nmap/output_formats("Output Formats") nmap/NmapGroup -.-> nmap/save_output("Save Output to File") nmap/NmapGroup -.-> nmap/os_version_detection("OS and Version Detection") nmap/NmapGroup -.-> nmap/service_detection("Service Detection") nmap/NmapGroup -.-> nmap/scripting_basics("Scripting Engine Basics") nmap/NmapGroup -.-> nmap/script_management("Script Categories and Updating") subgraph Lab Skills nmap/installation -.-> lab-549947{{"Scanner les vulnérabilités avec Nmap"}} nmap/output_formats -.-> lab-549947{{"Scanner les vulnérabilités avec Nmap"}} nmap/save_output -.-> lab-549947{{"Scanner les vulnérabilités avec Nmap"}} nmap/os_version_detection -.-> lab-549947{{"Scanner les vulnérabilités avec Nmap"}} nmap/service_detection -.-> lab-549947{{"Scanner les vulnérabilités avec Nmap"}} nmap/scripting_basics -.-> lab-549947{{"Scanner les vulnérabilités avec Nmap"}} nmap/script_management -.-> lab-549947{{"Scanner les vulnérabilités avec Nmap"}} end

Installer Nmap

Dans cette étape, vous allez installer Nmap (Network Mapper), un outil open-source puissant pour la découverte de réseaux et l'audit de sécurité. Nmap est largement utilisé pour scanner des réseaux afin d'identifier les hôtes, les services et les vulnérabilités. Imaginez-le comme un cartographe numérique qui aide les professionnels de la sécurité à comprendre quels appareils sont connectés à un réseau et quels services ils exécutent.

L'environnement de machine virtuelle LabEx a déjà les dépendances nécessaires installées, nous pouvons donc nous concentrer sur l'installation de Nmap lui-même. Suivez attentivement ces étapes :

  1. Tout d'abord, nous devons mettre à jour la liste des paquets pour nous assurer d'obtenir la dernière version de Nmap. C'est comme vérifier les dernières mises à jour de carte avant de partir en voyage :

    sudo apt update
  2. Maintenant, installez Nmap en utilisant cette commande. Le drapeau -y confirme automatiquement l'installation, ce qui nous fait gagner du temps :

    sudo apt install -y nmap
  3. Après l'installation, vérifions que Nmap est correctement installé en vérifiant sa version. Cela confirme que nous avons l'outil prêt à l'emploi :

    nmap --version

    Vous devriez voir une sortie similaire à :

    Nmap version 7.92 ( https://nmap.org )
  4. Pour une vérification plus pratique, nous allons exécuter un simple scan sur le localhost (votre propre machine). Cela vous aide à comprendre le fonctionnement de Nmap avant de scanner d'autres systèmes :

    nmap localhost

    Cette commande affichera des informations de base sur les ports ouverts de votre système, vous montrant quels services sont exécutés localement. C'est comme vérifier quelles portes et fenêtres sont ouvertes dans votre propre maison avant d'inspecter les autres.

Charger le Nmap Scripting Engine

Dans cette étape, nous allons explorer le puissant Nmap Scripting Engine (NSE), qui agit comme une boîte à outils permettant d'étendre les capacités de base de scan de Nmap. Imaginez le NSE comme l'ajout d'outils spécialisés à votre scanner de réseau - il contient des centaines de scripts pré-écrits qui peuvent détecter des vulnérabilités, collecter des informations détaillées sur les services et effectuer des tâches avancées de découverte de réseau.

Avant de commencer, il est important de comprendre que ces scripts sont déjà installés avec Nmap sur votre système. Commençons par explorer quels scripts sont disponibles :

  1. Tout d'abord, nous allons lister tous les scripts NSE installés. Cette commande vous montre l'ensemble complet des scripts dans votre installation de Nmap :

    ls /usr/share/nmap/scripts/
  2. Chaque script a une documentation expliquant ce qu'il fait. Examinons le script http-title comme exemple - ce script récupère le titre des pages web. La commande suivante montre son objectif et son utilisation :

    nmap --script-help http-title
  3. Maintenant, effectuons notre premier scan réel en utilisant le NSE. Cette commande scanne votre machine locale (localhost) avec deux options importantes :

    • -sC : Exécute l'ensemble par défaut de scripts NSE (sûrs et utiles pour la plupart des scans)
    • -sV : Tente de déterminer les versions des services (essentiel pour identifier les logiciels obsolètes)
    nmap -sC -sV localhost
  4. Pour cibler un script spécifique, nous allons scanner scanme.nmap.org (un site de test fourni par Nmap) en utilisant uniquement le script http-title. Cela montre comment se concentrer sur des informations particulières :

    nmap --script http-title scanme.nmap.org
  5. Enfin, vous pouvez combiner plusieurs scripts pour un scan plus complet. Cet exemple exécute les scripts http-title et http-headers contre scanme.nmap.org :

    nmap --script "http-title and http-headers" scanme.nmap.org

N'oubliez pas que différents scripts ont différents objectifs - certains collectent des informations tandis que d'autres testent les vulnérabilités. Vérifiez toujours la documentation d'un script avant de l'utiliser sur des systèmes de production.

Exécuter un scan de vulnérabilité

Dans cette étape, vous allez apprendre à utiliser le moteur de scripts de Nmap pour détecter les vulnérabilités de sécurité. Le scan de vulnérabilité permet d'identifier les faiblesses des systèmes avant que les attaquants ne puissent les exploiter. Nous allons utiliser scanme.nmap.org comme cible - il s'agit d'un serveur vulnérable intentionnellement, maintenu par les développeurs de Nmap à des fins de test.

  1. Tout d'abord, explorons les scripts de vulnérabilité disponibles. Nmap est livré avec des centaines de scripts pré-installés dans le répertoire /usr/share/nmap/scripts/. La commande grep permet de filtrer uniquement les scripts liés aux vulnérabilités :

    ls /usr/share/nmap/scripts/ | grep vuln
  2. Maintenant, exécutons un scan de vulnérabilité de base. Le drapeau -sV active la détection de la version des services, tandis que --script vuln charge tous les scripts de détection de vulnérabilités. Cela nous donne une vue d'ensemble des problèmes potentiels :

    nmap -sV --script vuln scanme.nmap.org
  3. Pour un scan plus ciblé, nous pouvons nous concentrer sur des catégories de vulnérabilités spécifiques. Cet exemple vérifie uniquement les vulnérabilités liées à HTTP (courantes dans les serveurs web). L'astérisque (*) agit comme un joker pour inclure tous les scripts http-vuln :

    nmap -sV --script http-vuln-* scanme.nmap.org
  4. Un scan exhaustif vérifie toutes les vulnérabilités tout en évitant les tests intrusifs (marqués comme "sûrs"). Cela prend plus de temps, mais fournit des résultats approfondis sans risquer la stabilité du système :

    nmap -sV --script "vuln and safe" scanme.nmap.org
  5. Il est recommandé de sauvegarder les résultats du scan pour la documentation et une analyse plus approfondie. Le drapeau -oN sauvegarde la sortie au format normal dans un fichier texte. Nous utiliserons ces résultats dans les étapes suivantes :

    nmap -sV --script vuln -oN vuln_scan_results.txt scanme.nmap.org

Les résultats du scan afficheront des informations de sécurité importantes, notamment :

  • Les ports ouverts et les services en cours d'exécution (points d'entrée potentiels)
  • Les vulnérabilités spécifiques détectées (faiblesses de sécurité)
  • Les références CVE (identifiants standard de vulnérabilité)
  • Les niveaux de risque (pour prioriser les corrections)

Analyser la sortie des scripts

Dans cette étape, nous allons examiner attentivement les résultats du scan de vulnérabilité générés par Nmap à l'étape précédente. En tant que débutant, il est important de comprendre que le scan n'est que la première partie - l'interprétation correcte des résultats est là que commence l'analyse de sécurité réelle. Le fichier vuln_scan_results.txt contient toutes les données brutes dont nous avons besoin pour identifier les faiblesses de sécurité potentielles.

  1. Tout d'abord, affichons les résultats complets du scan. Cela nous donne une vue d'ensemble de ce que Nmap a découvert :

    cat vuln_scan_results.txt
  2. Étant donné que lire manuellement tout le fichier peut être écrasant, nous allons rechercher des indicateurs de vulnérabilité spécifiques. Le mot "VULNERABLE" dans la sortie de Nmap marque généralement des problèmes de sécurité confirmés :

    grep -i "vulnerable" vuln_scan_results.txt
  3. Ensuite, nous allons rechercher des références de vulnérabilité standardisées. Les CVE (Common Vulnerabilities and Exposures - Vulnérabilités et Expositions Communes) sont des identifiants uniques pour les failles de sécurité connues :

    grep -i "CVE-" vuln_scan_results.txt
  4. Le statut des ports est crucial dans l'évaluation des vulnérabilités. Les ports ouverts représentent souvent des points d'entrée potentiels pour les attaquants :

    grep -E "open|filtered|closed" vuln_scan_results.txt
  5. Pour avoir un aperçu rapide de nos découvertes, nous allons compter combien de vulnérabilités Nmap a détectées. Cela nous aide à prioriser notre analyse :

    echo "Total vulnerabilities found: $(grep -c -i "vulnerable" vuln_scan_results.txt)"
  6. Lorsque vous trouvez un CVE intéressant, il est essentiel de le rechercher. Cet exemple montre comment obtenir des détails sur une vulnérabilité spécifique (remplacez l'identifiant CVE selon vos besoins) :

    curl -s https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-44228 | grep -A10 "Description"

Lors de l'analyse de la sortie de Nmap, prêtez une attention particulière à ces éléments critiques :

  • Les ports marqués comme "open" - ceux-ci représentent des services actifs
  • Les versions des services - les logiciels obsolètes contiennent souvent des vulnérabilités connues
  • Les indicateurs "VULNERABLE" - des problèmes de sécurité confirmés
  • Les références CVE - des identifiants de vulnérabilité standardisés
  • Les scores de risque (lorsqu'ils sont disponibles) - cela aide à prioriser les remédiations

Sauvegarder les résultats du scan

Dans cette étape finale, vous allez apprendre à documenter et sauvegarder correctement les résultats de votre scan de vulnérabilité. Sauvegarder les rapports est crucial pour l'analyse de sécurité, la documentation et le partage des résultats avec les membres de l'équipe. Nmap propose plusieurs formats de sortie pour répondre à différents besoins.

  1. Tout d'abord, créons un répertoire dédié pour organiser tous vos rapports de scan. Cela permet de maintenir un espace de travail propre et facilite la recherche de vos résultats plus tard :

    mkdir -p ~/project/reports
  2. Maintenant, exécutons à nouveau le scan de vulnérabilité tout en sauvegardant les résultats dans deux formats standard. Le drapeau -oN sauvegarde la sortie au format texte normal, tandis que -oX crée un fichier XML qui peut être traité par d'autres outils :

    nmap -sV --script vuln -oN ~/project/reports/scan_results.txt scanme.nmap.org
    nmap -sV --script vuln -oX ~/project/reports/scan_results.xml scanme.nmap.org
  3. Les fichiers XML ne sont pas faciles à lire directement, nous allons donc les convertir en un rapport HTML plus visuel à l'aide de xsltproc. Cela crée une page web bien formatée avec les résultats de votre scan :

    xsltproc ~/project/reports/scan_results.xml -o ~/project/reports/scan_results.html
  4. Pour une référence rapide, nous allons extraire uniquement les résultats des vulnérabilités critiques à l'aide de grep. Cela crée un résumé condensé montrant uniquement les lignes contenant des indicateurs de vulnérabilité :

    grep -iE "vulnerable|CVE-" ~/project/reports/scan_results.txt > ~/project/reports/summary.txt
  5. Vérifions que tous nos fichiers de rapport ont été créés avec succès. Les drapeaux -lh affichent les tailles des fichiers au format lisible par l'homme :

    ls -lh ~/project/reports/
  6. (Facultatif) Si vous avez besoin de partager ces rapports avec d'autres personnes, vous pouvez les compresser en un seul fichier d'archive :

    tar -czvf ~/project/reports.tar.gz ~/project/reports/

Explications des principaux formats de sortie :

  • .txt : Format texte simple, facile à lire dans n'importe quel éditeur de texte
  • .xml : Format de données structuré qui peut être traité par d'autres outils de sécurité
  • .html : Rapport visuel idéal pour les présentations et la documentation
  • Fichier de synthèse : Référence rapide contenant uniquement les résultats des vulnérabilités les plus importantes

Résumé

Dans ce laboratoire, vous avez appris à effectuer des scans de vulnérabilité avec Nmap, depuis l'installation sur les systèmes Linux jusqu'à la réalisation de scans de base et la vérification de la fonctionnalité. Les exercices ont présenté des fonctionnalités clés telles que le Nmap Scripting Engine (NSE - moteur de scripts Nmap), en montrant comment exécuter des scripts par défaut et personnalisés pour une analyse réseau complète.

Vous avez pratiqué des techniques de scan essentielles, notamment la détection de la version des services (-sV) et l'exécution de scripts (-sC), tout en apprenant à interpréter et sauvegarder les résultats des scans. Ces compétences constituent une base solide pour les évaluations de sécurité réseau utilisant les puissantes capacités de scan de Nmap.