Analyse de vulnérabilités avec Nmap

NmapBeginner
Pratiquer maintenant

Introduction

Dans ce laboratoire, vous découvrirez les fondamentaux de l'analyse réseau à l'aide de Nmap (Network Mapper), un outil open-source puissant dédié à la découverte réseau et à l'audit de sécurité. Vous commencerez par des analyses de ports de base, passerez à la détection de services et de versions, puis explorerez le moteur de script Nmap (NSE) pour effectuer des vérifications de vulnérabilités. Enfin, vous apprendrez à analyser et à enregistrer vos résultats d'analyse dans divers formats pour vos rapports. Ce laboratoire propose une introduction pratique, étape par étape, aux fonctionnalités essentielles de Nmap pour une évaluation efficace de la sécurité réseau.

Effectuer une analyse réseau de base

Dans cette étape, vous vous familiariserez avec Nmap en effectuant une analyse de base. Une analyse de base permet de découvrir quels ports sont ouverts sur une machine cible. Un port ouvert indique qu'un service (tel qu'un serveur web ou SSH) est en cours d'exécution et à l'écoute de connexions.

L'environnement de laboratoire a été préconfiguré avec plusieurs services s'exécutant sur localhost (votre propre machine virtuelle) pour vous permettre de vous entraîner. L'outil nmap est déjà installé.

Tout d'abord, vérifiez que Nmap est installé et contrôlez sa version. Ouvrez le terminal et exécutez la commande suivante :

nmap --version

Vous devriez voir une sortie confirmant la version de Nmap, similaire à celle-ci :

Nmap version 7.80 ( https://nmap.org )
Platform: x86_64-pc-linux-gnu
Compiled with: liblua-5.3.3 openssl-1.1.1f libssh2-1.8.0 libz-1.2.11 libpcre-8.39 nmap-libpcap-1.9.1
Compiled without:
Available nsock engines: epoll poll select

Maintenant, effectuez votre première analyse sur localhost. Cette commande indique à Nmap de vérifier les ports ouverts les plus courants sur votre machine locale.

nmap localhost

Examinez le résultat. Nmap listera les ports qu'il a trouvés ouverts, ainsi que leur état et le service courant associé à ce port. La sortie ressemblera à ceci, affichant les services préparés pour ce laboratoire :

Starting Nmap 7.80 ( https://nmap.org ) at ...
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000092s latency).
Not shown: 995 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
2121/tcp open  ccproxy-ftp
2222/tcp open  EtherNetIP-1
3001/tcp open  nessus
8080/tcp open  http-proxy

Nmap done: 1 IP address (1 host up) scanned in 0.04 seconds

Cette analyse initiale vous donne une cartographie des services en cours d'exécution, ce qui constitue la première étape de toute évaluation de sécurité réseau.

Détecter les versions des services

Dans cette étape, vous utiliserez Nmap pour effectuer une détection de services et de versions. Savoir quels ports sont ouverts est utile, mais connaître le logiciel exact et la version s'exécutant sur ces ports est bien plus puissant pour un analyste en sécurité. Les logiciels obsolètes sont une source majeure de vulnérabilités.

Nous utiliserons l'option -sV, qui demande à Nmap de sonder les ports ouverts pour déterminer des informations détaillées sur le service et sa version.

Exécutez une analyse de détection de version sur localhost. Pour rendre l'analyse plus efficace, ciblez les ports spécifiques utilisés dans cet exemple plutôt que de scanner tous les ports.

nmap -sV -p 22,8080 localhost

Conseil d'expert : Cibler des ports spécifiques réduit considérablement le temps d'analyse. Une analyse complète de la plage de ports avec -sV peut prendre plusieurs minutes, alors que cette approche ciblée ne prend généralement que quelques secondes.

Comparez le résultat avec l'analyse de base de l'étape 1. Vous verrez maintenant une colonne supplémentaire, VERSION, qui fournit des détails sur le logiciel s'exécutant sur chaque port.

La sortie sera plus détaillée, similaire à ceci :

Starting Nmap 7.80 ( https://nmap.org ) at ...
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00011s latency).
Not shown: 995 closed ports
PORT     STATE SERVICE VERSION
22/tcp   open  ssh     OpenSSH 8.9p1 Ubuntu 3ubuntu0.13 (Ubuntu Linux; protocol 2.0)
8080/tcp open  http    nginx 1.18.0 (Ubuntu)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

Nmap done: 1 IP address (1 host up) scanned in 2.15 seconds

Ces informations sont critiques. Par exemple, si l'analyse révélait une ancienne version de nginx avec une vulnérabilité critique connue, vous sauriez exactement où concentrer vos efforts de remédiation.

Utiliser le moteur de script Nmap (NSE)

Dans cette étape, vous utiliserez le moteur de script Nmap (NSE), l'une des fonctionnalités les plus puissantes de Nmap. Il vous permet d'automatiser une grande variété de tâches réseau à l'aide d'une bibliothèque de scripts. Ces scripts peuvent être utilisés pour une découverte plus avancée, la détection de vulnérabilités et même l'exploitation.

Vous utiliserez l'option -sC, qui exécute un ensemble de scripts par défaut considérés comme sûrs et utiles pour la découverte. Comme le service FTP dans ce laboratoire s'exécute sur le port non standard 2121, combinez -sC avec la détection de service (-sV) afin que Nmap puisse identifier le service avant de choisir les scripts correspondants.

Exécutez une analyse Nmap avec détection de service et les scripts par défaut activés sur localhost. Ciblez les ports 2121 et 8080 pour que l'analyse reste rapide tout en affichant les sorties de script des services FTP et web.

nmap -sV -sC -p 2121,8080 localhost

Examinez le résultat. Vous verrez des informations supplémentaires indentées sous chaque port. Il s'agit de la sortie des scripts NSE. Par exemple, le script ftp-anon peut signaler que la connexion FTP anonyme est autorisée sur le port 2121, le script http-title peut récupérer le titre de la page web sur le port 8080, et les scripts SSL peuvent rapporter des détails sur les certificats.

La sortie sera encore plus détaillée :

Starting Nmap 7.80 ( https://nmap.org ) at ...
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000099s latency).
Other addresses for localhost (not scanned): ::1
Not shown: 995 closed ports
PORT     STATE SERVICE VERSION
2121/tcp open  ftp     vsftpd 3.0.5
|_ftp-anon: Anonymous FTP login allowed (FTP code 230)
| ftp-syst:
|   STAT:
| FTP server status:
|      Logged in as ftp
|_End of status
8080/tcp open  http    nginx 1.18.0 (Ubuntu)
|_http-server-header: nginx/1.18.0 (Ubuntu)
|_http-title: Site doesn't have a title (text/html).
Service Info: OS: Unix

Nmap done: 1 IP address (1 host up) scanned in 0.62 seconds

Comme vous pouvez le constater, les scripts par défaut ont découvert que la connexion FTP anonyme est autorisée sur le port 2121 et ont récupéré le titre de la page web sur le port 8080. Il s'agit d'informations précieuses recueillies automatiquement.

Exécuter une analyse de vulnérabilités

Dans cette étape, vous utiliserez les scripts NSE pour rechercher des vulnérabilités. Le NSE inclut une catégorie de scripts spécifiquement conçus pour vérifier les failles de sécurité connues. Vous pouvez exécuter tous les scripts de la catégorie vuln pour effectuer une analyse de vulnérabilité approfondie.

Il est recommandé de toujours enregistrer la sortie des analyses longues ou importantes dans un fichier. Nous utiliserons l'option -oN pour enregistrer la sortie au format normal de Nmap.

Tout d'abord, combinez ce que vous avez appris. Exécutez une analyse qui inclut la détection de service (-sV) et exécute tous les scripts de vulnérabilité (--script vuln). Enregistrez la sortie dans un fichier nommé vuln_scan.txt.

nmap -sV --script vuln -oN vuln_scan.txt localhost

Cette analyse peut prendre quelques minutes car elle exécute de nombreux scripts sur chaque port ouvert.

Une fois l'analyse terminée, un fichier nommé vuln_scan.txt sera créé dans votre répertoire actuel (/home/labex/project). Vous pouvez visualiser son contenu à l'aide de la commande cat :

cat vuln_scan.txt

Le fichier de sortie étant long, il est plus efficace de rechercher des mots-clés. Utilisez grep pour rechercher les lignes indiquant une vulnérabilité. Le terme "VULNERABLE" est un indicateur fort.

grep "VULNERABLE" vuln_scan.txt

Vous devriez voir une sortie indiquant les vulnérabilités trouvées. Dans cet environnement de laboratoire, vous verrez probablement une vulnérabilité liée au filtre byterange d'Apache :

|   VULNERABLE:
|     State: VULNERABLE

Pour voir les détails complets de la vulnérabilité, vous pouvez rechercher le CVE spécifique ou consulter la sortie complète de l'analyse. Par exemple, vous pourriez trouver une vulnérabilité Apache DoS (CVE-2011-3192) sur le port 8080. Notez que vous pouvez également voir quelques erreurs de script (comme clamav-exec: ERROR), ce qui est normal et peut être ignoré ; elles surviennent lorsque certains scripts de vulnérabilité ne peuvent pas s'exécuter correctement dans l'environnement de laboratoire.

Cette étape démontre comment sonder activement les faiblesses, en passant d'une simple découverte à un audit de sécurité ciblé.

Enregistrer et formater les résultats d'analyse

Dans cette étape, vous apprendrez à enregistrer vos résultats dans plusieurs formats et à créer un rapport HTML convivial. Documenter et rapporter correctement vos découvertes est une compétence essentielle pour tout professionnel de la sécurité. Nmap prend en charge plusieurs formats de sortie adaptés à différents besoins.

Tout d'abord, créez un répertoire dédié pour organiser vos rapports.

mkdir -p ~/project/reports

Maintenant, exécutez à nouveau l'analyse, mais cette fois, enregistrez la sortie dans deux formats simultanément : texte normal (-oN) et XML (-oX). Le XML est un format structuré idéal pour le traitement avec d'autres outils.

nmap -sV -p 8080 --script vuln -oN ~/project/reports/scan_report.txt -oX ~/project/reports/scan_report.xml localhost

Le format XML n'est pas très lisible pour un humain. Nmap fournit un utilitaire appelé xsltproc pour convertir le fichier XML en un rapport HTML propre. Exécutez la commande suivante pour générer scan_report.html.

xsltproc ~/project/reports/scan_report.xml -o ~/project/reports/scan_report.html

Vérifiez que tous vos fichiers de rapport ont été créés dans le répertoire ~/project/reports. Utilisez la commande ls -l pour lister les fichiers et leurs détails.

ls -l ~/project/reports

Vous devriez voir vos trois fichiers de rapport :

total 40
-rw-rw-r-- 1 labex labex 14276 Aug 28 15:12 scan_report.html
-rw-rw-r-- 1 labex labex  5686 Aug 28 15:11 scan_report.txt
-rw-rw-r-- 1 labex labex 14924 Aug 28 15:11 scan_report.xml

Vous disposez désormais d'un fichier texte brut pour une vérification rapide, d'un fichier XML pour un traitement automatique et d'un fichier HTML pour un partage et une présentation faciles.

Résumé

Dans ce laboratoire, vous avez acquis une expérience pratique avec Nmap, un outil fondamental en cybersécurité. Vous avez commencé par effectuer des analyses de ports de base pour identifier les services ouverts sur un hôte réseau. Vous avez ensuite progressé vers des techniques plus avancées, notamment la détection de version de service (-sV) pour identifier des logiciels spécifiques et leurs versions. Vous avez également exploré la puissance du moteur de script Nmap (NSE) en exécutant des scripts par défaut (-sC) et une analyse complète de vulnérabilités (--script vuln). Enfin, vous avez appris la pratique professionnelle consistant à enregistrer les résultats d'analyse dans plusieurs formats (-oN, -oX) et à les convertir en un rapport HTML lisible pour l'analyse et la documentation. Ces compétences constituent une base solide pour utiliser Nmap dans des évaluations de sécurité réseau réelles.