Introduction
Dans ce laboratoire, vous allez transformer Nmap d'un simple scanner de ports en un outil d'audit polyvalent. Vous explorerez le Nmap Scripting Engine (NSE), l'une des fonctionnalités les plus puissantes et flexibles de Nmap.
Le NSE permet aux utilisateurs d'écrire et de partager des scripts simples pour automatiser une grande variété de tâches réseau. Ces scripts sont exécutés en parallèle avec la vitesse et l'efficacité que vous attendez de Nmap. À la fin de ce laboratoire, vous saurez comment localiser ces scripts sur votre système Linux, exécuter des scripts par défaut non intrusifs et lancer des scripts spécifiques pour extraire automatiquement des informations telles que les titres de pages web HTTP.
Le NSE est important car il fait passer Nmap du statut de simple cartographe à celui de véritable plateforme d'audit. Une fois qu'un port est découvert, les scripts peuvent interroger l'application plus en profondeur sans avoir besoin d'un outil supplémentaire immédiat.
Localiser les scripts NSE
Dans cette étape, vous allez explorer où Nmap stocke ses scripts et comment en rechercher des spécifiques.
Le Nmap Scripting Engine (NSE) utilise des scripts écrits dans le langage de programmation Lua. Lorsque vous installez Nmap sur un système Linux, il est livré avec des centaines de ces scripts, couvrant tout, de la découverte réseau de base à l'exploitation complexe de vulnérabilités.
Apprendre où se trouvent les scripts est utile, car les défenseurs comme les testeurs doivent comprendre la logique qu'ils appliquent réellement à une cible.
Par défaut, Nmap stocke tous ses scripts NSE dans le répertoire /usr/share/nmap/scripts/. Vous pouvez lister le contenu de ce répertoire pour voir ce qui est disponible.
Exécutez la commande suivante pour lister les premiers scripts du répertoire :
ls /usr/share/nmap/scripts/ | head -n 10
Vous verrez une sortie similaire à celle-ci :
acarsd-info.nse
address-info.nse
afp-brute.nse
afp-ls.nse
afp-path-vuln.nse
afp-serverinfo.nse
afp-showmount.nse
ajp-auth.nse
ajp-brute.nse
ajp-headers.nse
Remarquez que tous les fichiers se terminent par l'extension .nse, qui signifie Nmap Scripting Engine.
Comme il existe plus de 600 scripts, il est souvent utile de rechercher des scripts liés à un service spécifique. Par exemple, si vous souhaitez trouver des scripts liés au protocole HTTP (serveurs web), vous pouvez utiliser la commande grep pour filtrer les résultats.
Exécutez la commande suivante pour trouver les scripts liés à HTTP :
ls /usr/share/nmap/scripts/ | grep http | head -n 10
Cela affichera une liste de scripts conçus pour interagir avec des serveurs web, tels que http-title.nse qui récupère le titre d'une page web, ou http-auth.nse qui vérifie les mécanismes d'authentification.
Exécuter les scripts par défaut (-sC)
Dans cette étape, vous apprendrez à exécuter l'ensemble des scripts par défaut de Nmap.
Nmap classe ses scripts en différents groupes en fonction de leur objectif et de leur niveau d'intrusion. La catégorie default contient des scripts considérés comme sûrs, rapides et fiables. Ils collectent des informations utiles sans attaquer agressivement la cible ni provoquer de perturbations de service.
Les catégories sont en réalité une classification des risques et des intentions. Elles vous aident à choisir des scripts adaptés au contexte plutôt que d'exécuter aveuglément tout ce qui est disponible.
Pour exécuter l'ensemble des scripts par défaut, vous pouvez utiliser l'option -sC. Cela équivaut à taper --script=default.
Pour ce laboratoire, un serveur web léger a été démarré en arrière-plan sur le port 8080, et le service SSH standard tourne sur le port 22. Scannons la machine locale (localhost) sur ces ports spécifiques en utilisant les scripts par défaut.
Exécutez la commande suivante :
nmap -sC -p 22,8080 localhost
Vous verrez une sortie similaire à celle-ci :
Starting Nmap 7.80 ( https://nmap.org ) at 2026-03-09 14:56 CST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00013s latency).
Other addresses for localhost (not scanned): ::1
PORT STATE SERVICE
22/tcp open ssh
8080/tcp open http-proxy
|_http-title: LabEx Nmap NSE Target
Nmap done: 1 IP address (1 host up) scanned in 0.49 seconds
Regardez attentivement la sortie. Sur le port 8080, Nmap a automatiquement exécuté le script http-title et a extrait avec succès le titre de la page web : "LabEx Nmap NSE Target". Nmap utilise ces scripts par défaut pour recueillir plus d'informations sur les ports ouverts de manière transparente.
Cela démontre comment l'option -sC transforme instantanément Nmap d'un simple scanner de ports en un outil de collecte d'informations.
Exécuter des scripts par catégorie spécifique
Dans cette étape, vous apprendrez à exécuter des scripts spécifiques ou des catégories entières de scripts en utilisant l'argument --script.
Bien que les scripts par défaut (-sC) soient parfaits pour la reconnaissance générale, vous avez parfois besoin d'exécuter un script spécifique pour une tâche ciblée. Vous pouvez le faire en passant le nom du script à l'argument --script.
Par exemple, si vous souhaitez uniquement récupérer le titre HTTP du serveur web tournant sur le port 8080 sans exécuter d'autres scripts par défaut, vous pouvez spécifier directement le script http-title.
Exécutez la commande suivante :
nmap --script=http-title -p 8080 localhost
La sortie sera très ciblée, affichant uniquement l'état du port et le résultat du script http-title :
Starting Nmap 7.80 ( https://nmap.org ) at 2026-03-09 14:56 CST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000057s latency).
Other addresses for localhost (not scanned): ::1
PORT STATE SERVICE
8080/tcp open http-proxy
|_http-title: LabEx Nmap NSE Target
Nmap done: 1 IP address (1 host up) scanned in 0.28 seconds
En plus des noms de scripts individuels, vous pouvez également spécifier des catégories de scripts. Nmap regroupe les scripts dans des catégories telles que safe, intrusive, vuln (détection de vulnérabilités), discovery et exploit.
Exécutez la commande suivante pour exécuter tous les scripts safe sur le port 8080 :
nmap --script=safe -p 8080 localhost
Note : L'exécution d'une catégorie entière de scripts peut prendre beaucoup de temps (parfois plus de 9 minutes !), selon l'environnement réseau et le nombre de scripts dans cette catégorie. Certains scripts peuvent également attendre des délais d'expiration (timeouts). Si vous ne voulez pas attendre, vous pouvez appuyer sur
Ctrl+Cpour annuler le scan et ignorer cette étape.
La sortie inclura le titre HTTP, mais pourra également inclure d'autres vérifications de sécurité selon la version exacte de Nmap et l'environnement :
Starting Nmap 7.80 ( https://nmap.org ) at 2026-03-09 14:56 CST
Pre-scan script results:
| targets-asn:
|_ targets-asn.asn is a mandatory parameter
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000057s latency).
Other addresses for localhost (not scanned): ::1
PORT STATE SERVICE
8080/tcp open http-proxy
|_http-date: Mon, 09 Mar 2026 06:57:04 GMT; 0s from local time.
|_http-fetch: Please enter the complete path of the directory to save data in.
| http-headers:
| Server: SimpleHTTP/0.6 Python/3.10.12
| Date: Mon, 09 Mar 2026 06:57:03 GMT
| Content-type: text/html
| Content-Length: 103
| Last-Modified: Mon, 09 Mar 2026 06:55:32 GMT
|
|_ (Request type: HEAD)
|_http-title: LabEx Nmap NSE Target
Host script results:
| dns-blacklist:
| SPAM
| list.quorum.to - SPAM
| l2.apews.org - FAIL
|_ bl.nszones.com - SPAM
|_fcrdns: FAIL (No PTR record)
| resolveall:
| Host 'localhost' also resolves to:
| Use the 'newtargets' script-arg to add the results as targets
|_ Use the --resolve-all option to scan all resolved addresses without using this script.
| unusual-port:
|_ WARNING: this script depends on Nmap's service/version detection (-sV)
Post-scan script results:
| reverse-index:
|_ 8080/tcp: 127.0.0.1
Nmap done: 1 IP address (1 host up) scanned in 551.51 seconds
L'utilisation de l'argument --script vous donne un contrôle granulaire sur votre processus d'audit, vous permettant d'adapter vos scans à vos besoins spécifiques en matière de tests de sécurité.
Résumé
Félicitations ! Vous avez terminé avec succès le laboratoire sur les bases du Nmap Scripting Engine (NSE).
Dans ce laboratoire, vous avez appris à :
- Localiser le répertoire par défaut des scripts NSE (
/usr/share/nmap/scripts/) et rechercher des scripts spécifiques à l'aide des commandes Linux standard. - Utiliser l'option
-sCpour exécuter une collection de scripts par défaut et sûrs afin de collecter automatiquement des informations telles que les clés d'hôte SSH et les titres de pages web HTTP. - Utiliser l'argument
--scriptpour exécuter des scripts individuels par leur nom ou lancer des catégories entières de scripts, vous offrant un contrôle précis sur vos tâches d'audit réseau.
Ces compétences fondamentales vous permettront d'exploiter Nmap comme un outil d'audit de sécurité puissant et automatisé dans vos futures explorations réseau et tests d'intrusion.



