Analyse de vulnérabilités avec NSE

NmapBeginner
Pratiquer maintenant

Introduction

Bienvenue dans le laboratoire d'analyse de vulnérabilités avec NSE.

Nmap (Network Mapper) est un outil open-source puissant utilisé pour la découverte réseau et l'audit de sécurité. L'une de ses fonctionnalités les plus flexibles et performantes est le Nmap Scripting Engine (NSE). Le NSE permet aux utilisateurs d'écrire et de partager des scripts simples pour automatiser une grande variété de tâches réseau.

L'utilisation du NSE pour l'analyse de vulnérabilités est puissante, mais elle modifie également la nature de l'analyse. Vous ne vous contentez plus d'observer l'exposition ; vous recherchez activement des faiblesses connues. Cela rend le contrôle du périmètre et une interprétation prudente d'autant plus cruciaux.

Dans ce laboratoire, vous apprendrez à transformer Nmap d'un simple scanner de ports en un scanner de vulnérabilités actif. Vous utiliserez des catégories de scripts spécifiques, telles que vuln, pour sonder activement les services cibles. Ce processus aide à identifier les vulnérabilités et expositions courantes (CVE) connues ainsi que les configurations serveur dangereuses. À la fin de ce laboratoire, vous serez capable de mettre à jour la base de données des scripts, d'exécuter des analyses par catégorie, d'auditer des services spécifiques comme HTTP et SMB, et d'analyser les résultats obtenus.

Mise à jour de la base de données des scripts NSE

Dans cette étape, vous apprendrez à mettre à jour la base de données du Nmap Scripting Engine (NSE).

Nmap est fourni avec des centaines de scripts situés dans le répertoire /usr/share/nmap/scripts/. Ces scripts sont classés par objectif, tels que default, discovery, safe, intrusive, vuln et exploit.

Avant d'exécuter des analyses de vulnérabilités, il est recommandé de s'assurer que la base de données interne des scripts de Nmap est à jour. Cette base de données sert d'index, permettant à Nmap de trouver et de classer rapidement les scripts. Lorsque de nouveaux scripts sont ajoutés au système ou que des scripts existants sont modifiés, la base de données doit être mise à jour pour que Nmap sache comment les utiliser.

Cela reflète un principe de sécurité plus large : le contenu de détection et d'évaluation vieillit rapidement. Les outils ne sont aussi actuels que les règles, signatures ou modèles sur lesquels ils s'appuient.

Pour mettre à jour la base de données des scripts NSE, vous devez utiliser l'argument --script-updatedb. Comme cette commande modifie des fichiers système dans le répertoire d'installation de Nmap, elle nécessite des privilèges administratifs.

Exécutez la commande suivante dans votre terminal :

sudo nmap --script-updatedb

Vous devriez voir une sortie similaire à celle-ci, indiquant que la base de données a été mise à jour avec succès :

Starting Nmap 7.80 ( https://nmap.org ) at 2026-03-09 15:25 CST
NSE: Updating rule database.
NSE: Script Database updated successfully.
Nmap done: 0 IP addresses (0 hosts up) scanned in 1.09 seconds

Cela confirme que Nmap a réussi à actualiser son index des scripts et catégories disponibles. Vous êtes maintenant prêt à commencer l'analyse.

Exécution d'analyses de vulnérabilités (catégorie vuln)

Dans cette étape, vous utiliserez la catégorie vuln des scripts NSE pour rechercher des vulnérabilités connues sur votre machine locale.

La catégorie vuln contient des scripts spécifiquement conçus pour vérifier les vulnérabilités connues et les signaler. Lorsque vous spécifiez une catégorie au lieu d'un nom de script unique, Nmap exécute automatiquement tous les scripts appartenant à cette catégorie sur les ports ouverts qu'il découvre.

Les résultats de ces scripts sont des pistes, et non la preuve définitive d'un compromis. Un résultat positif signifie souvent que "ce service semble correspondre à un problème connu" et nécessite toujours l'examen d'un analyste.

Pour obtenir les résultats les plus précis, il est fortement recommandé de combiner les scripts NSE avec la détection de version. La détection de version (-sV) tente de déterminer le logiciel exact et la version exécutée sur un port ouvert. De nombreux scripts de vulnérabilité s'appuient sur ces informations de version pour décider si une cible pourrait être vulnérable avant d'envoyer des sondes intrusives.

Vous allez analyser votre machine locale (localhost) en utilisant la détection de version et la catégorie de script vuln.

Exécutez la commande suivante :

nmap -sV --script vuln -p 80,139,445 localhost

L'analyse peut prendre une minute ou deux, car les scripts de vulnérabilité effectuent des vérifications complexes. Votre sortie ressemblera à ce qui suit :

Starting Nmap 7.80 ( https://nmap.org ) at 2026-03-09 15:25 CST
Pre-scan script results:
| broadcast-avahi-dos: 
|   Discovered hosts:
|     224.0.0.251
|   After NULL UDP avahi packet DoS (CVE-2011-1002).
|_  Hosts are all up (not vulnerable).
Nmap scan report for localhost (127.0.0.1)
Host is up (0.0014s latency).

PORT    STATE SERVICE     VERSION
80/tcp  open  http        Apache httpd 2.4.52 ((Ubuntu))
|_clamav-exec: ERROR: Script execution failed (use -d to debug)
|_http-csrf: Couldn't find any CSRF vulnerabilities.
|_http-dombased-xss: Couldn't find any DOM based XSS.
| http-enum: 
|_  /server-status/: Potentially interesting folder
|_http-server-header: Apache/2.4.52 (Ubuntu)
|_http-stored-xss: Couldn't find any stored XSS vulnerabilities.
| vulners: 
|   cpe:/a:apache:http_server:2.4.52: 
|      PACKETSTORM:176334 9.8 https://vulners.com/packetstorm/PACKETSTORM:176334 *EXPLOIT*
|      HTTPD:C072933AA965A86DA3E2C9172FFC1569 9.8 https://vulners.com/httpd/HTTPD:C072933AA965A86DA3E2C9172FFC1569
|       ... (truncated for brevity)
139/tcp open  netbios-ssn Samba smbd 4.6.2
|_clamav-exec: ERROR: Script execution failed (use -d to debug)
| vulners: 
|   cpe:/a:samba:samba:4.6.2: 
|      SSV:93139 10.0 https://vulners.com/seebug/SSV:93139 *EXPLOIT*
|      SAMBA_IS_KNOWN_PIPENAME 10.0 https://vulners.com/canvas/SAMBA_IS_KNOWN_PIPENAME *EXPLOIT*
|       ... (truncated for brevity)
445/tcp open  netbios-ssn Samba smbd 4.6.2
|_clamav-exec: ERROR: Script execution failed (use -d to debug)
| vulners: 
|   cpe:/a:samba:samba:4.6.2: 
|      SSV:93139 10.0 https://vulners.com/seebug/SSV:93139 *EXPLOIT*
|       ... (truncated for brevity)

Host script results:
|_samba-vuln-cve-2012-1182: Could not negotiate a connection:SMB: ERROR: Server returned less data than it was supposed to (one or more fields are missing); aborting [9]
|_smb-vuln-ms10-054: false
|_smb-vuln-ms10-061: Could not negotiate a connection:SMB: ERROR: Server returned less data than it was supposed to (one or more fields are missing); aborting [9]

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 66.86 seconds

Dans cette sortie, Nmap a découvert le serveur web Apache sur le port 80 et le service Samba sur les ports 139 et 445. Les scripts de la catégorie vuln ont été automatiquement exécutés sur ces services, vérifiant les problèmes courants tels que les répertoires HTTP intéressants et les vulnérabilités SMB connues.

Audit de services spécifiques (ex: SMB/HTTP)

Dans cette étape, vous apprendrez à cibler des services spécifiques en utilisant des scripts NSE individuels plutôt que d'exécuter une catégorie entière.

Exécuter une catégorie entière comme vuln peut être bruyant et chronophage. Souvent, lors d'une évaluation de sécurité, vous identifierez un service spécifique (comme un serveur web ou un partage de fichiers) et souhaiterez exécuter des scripts ciblés sur celui-ci.

Par exemple, le script http-enum énumère les répertoires utilisés par les applications web et serveurs populaires. C'est un excellent moyen de trouver des panneaux d'administration cachés ou des dossiers de sauvegarde. Pour accélérer l'analyse, vous pouvez utiliser l'indicateur -p pour dire à Nmap de n'analyser que le port spécifique où le service est en cours d'exécution (par exemple, le port 80 pour HTTP).

Exécutez la commande suivante pour auditer le serveur web Apache local :

nmap -p 80 --script http-enum localhost

Vous verrez une sortie se concentrant uniquement sur le port 80 :

Starting Nmap 7.80 ( https://nmap.org ) at 2026-03-09 15:27 CST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000096s latency).

PORT   STATE SERVICE
80/tcp open  http
| http-enum: 
|_  /server-status/: Potentially interesting folder

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

De même, vous pouvez cibler le service Samba (SMB). SMB est un protocole de partage de fichiers réseau qui a historiquement été une cible fréquente pour les exploits. Vous pouvez utiliser le script smb-os-discovery pour recueillir des informations détaillées sur le système d'exploitation et la configuration SMB. SMB s'exécute généralement sur les ports 139 et 445.

Exécutez la commande suivante pour auditer le service SMB local :

nmap -p 139,445 --script smb-os-discovery localhost

La sortie fournira des informations détaillées sur le service SMB :

Starting Nmap 7.80 ( https://nmap.org ) at 2026-03-09 15:27 CST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000087s latency).

PORT    STATE SERVICE
139/tcp open  netbios-ssn
445/tcp open  microsoft-ds

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

En ciblant des ports et des scripts spécifiques, vous réduisez considérablement le temps d'analyse et générez des résultats hautement ciblés et exploitables.

Analyse de la sortie NSE

Dans cette dernière étape, vous apprendrez à enregistrer vos résultats d'analyse Nmap dans un fichier et à analyser la sortie à la recherche de mots-clés spécifiques.

Lors de la réalisation d'analyses de vulnérabilités, la sortie peut être volumineuse. Il est crucial d'enregistrer les résultats dans un fichier afin de pouvoir les examiner plus tard, les partager avec votre équipe ou les analyser à l'aide d'autres outils en ligne de commande. Nmap propose plusieurs formats de sortie. L'indicateur -oN enregistre la sortie dans un format texte normal, lisible par l'homme.

Vous allez exécuter une analyse de vulnérabilités sur la machine locale et enregistrer les résultats dans un fichier nommé vuln_scan.txt dans votre répertoire de projet.

Exécutez la commande suivante :

nmap -sV --script vuln -p 80,139,445 localhost -oN ~/project/vuln_scan.txt

Attendez que l'analyse se termine. Une fois terminée, les résultats sont stockés en toute sécurité dans ~/project/vuln_scan.txt.

Maintenant, vous pouvez analyser ce fichier. Dans un scénario réel, vous pourriez rechercher des indicateurs de compromission spécifiques ou des vulnérabilités critiques. Vous pouvez utiliser la commande grep pour effectuer une recherche dans le fichier texte. Par exemple, vous pouvez rechercher le mot "VULNERABLE" (insensible à la casse en utilisant l'indicateur -i) pour repérer rapidement tout problème confirmé.

Exécutez la commande suivante pour rechercher dans le fichier de sortie :

grep -i "VULNERABLE" ~/project/vuln_scan.txt
|_  Hosts are all up (not vulnerable).

Pour vérifier que le fichier a été créé et contient les données d'analyse, vous pouvez afficher les premières lignes du fichier à l'aide de la commande head :

head -n 10 ~/project/vuln_scan.txt

Vous devriez voir l'en-tête Nmap standard et le début du rapport d'analyse :

## Nmap 7.80 scan initiated Mon Mar  9 15:27:21 2026 as: nmap -sV --script vuln -p 80,139,445 -oN /home/labex/project/vuln_scan.txt localhost
Pre-scan script results:
| broadcast-avahi-dos: 
|   Discovered hosts:
|     224.0.0.251
|   After NULL UDP avahi packet DoS (CVE-2011-1002).
|_  Hosts are all up (not vulnerable).
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000085s latency).

L'enregistrement et l'analyse des sorties sont des compétences fondamentales pour tout professionnel de la sécurité, vous permettant de gérer efficacement de grandes quantités de données.

Résumé

Félicitations ! Vous avez terminé avec succès le laboratoire d'analyse de vulnérabilités avec NSE.

Dans ce laboratoire, vous avez appris à élever Nmap d'un scanner de ports standard à un outil d'évaluation active des vulnérabilités. Vous avez commencé par mettre à jour la base de données du Nmap Scripting Engine pour vous assurer de disposer des derniers scripts disponibles. Vous avez ensuite utilisé la catégorie vuln pour sonder automatiquement les services découverts à la recherche de vulnérabilités connues. De plus, vous vous êtes exercé à cibler des services spécifiques comme HTTP et SMB avec des scripts individuels pour mener des audits ciblés. Enfin, vous avez appris à enregistrer vos résultats d'analyse dans un fichier et à les analyser à l'aide d'outils en ligne de commande pour une analyse efficace.

Ces compétences constituent une base solide pour l'audit de sécurité réseau et la gestion des vulnérabilités.