Utilisation du moteur de scripts Nmap (NSE)
Le moteur de scripts Nmap (NSE - Nmap Scripting Engine) est un outil puissant qui vous permet d'étendre les capacités de Nmap à l'aide de scripts Lua. Lua est un langage de programmation léger, et ces scripts peuvent effectuer une grande variété de tâches. Par exemple, ils peuvent aider à la détection avancée de services, ce qui signifie identifier plus précisément quels services s'exécutent sur un appareil réseau. Ils peuvent également être utilisés pour le scan de vulnérabilités, ce qui est crucial pour trouver les faiblesses de sécurité d'un système.
Utilisons le NSE pour collecter plus d'informations sur notre serveur HTTP. Les scripts NSE sont regroupés en différentes catégories. Ces catégories incluent "default" (par défaut), qui contient les scripts couramment utilisés et sûrs ; "discovery" (découverte), qui sert à trouver les services réseau ; "safe" (sûr), qui ne causera aucun dommage au système cible ; et "vuln" (vulnérabilité), qui est utilisé pour le scan de vulnérabilités.
Tout d'abord, nous voulons voir quels scripts liés à HTTP sont disponibles. Pour ce faire, nous allons utiliser la commande suivante :
ls /usr/share/nmap/scripts/http*
Cette commande liste tous les scripts NSE dans le répertoire /usr/share/nmap/scripts/
qui commencent par http
. Lorsque vous exécutez cette commande, vous verrez une liste de scripts conçus pour interagir avec les services HTTP. Ces scripts peuvent effectuer différentes fonctions, allant de la simple collecte d'informations, comme obtenir le titre d'une page web, à des tâches plus complexes telles que le scan de vulnérabilités dans un service HTTP.
Maintenant, utilisons le script http-title
pour extraire le titre de notre page web. Le script http-title
est conçu pour examiner un service HTTP et trouver le titre de la page web qu'il sert. Voici la commande pour exécuter ce script :
sudo nmap --script=http-title -p 8000 localhost > /home/labex/project/nmap_script_output.txt
Dans cette commande, sudo
est utilisé pour exécuter la commande avec des privilèges d'administrateur car certaines opérations Nmap peuvent en avoir besoin. nmap
est la commande principale, et --script=http-title
indique à Nmap d'utiliser le script http-title
. -p 8000
spécifie que nous ciblons le port 8000, qui est là où notre serveur HTTP s'exécute. localhost
est la cible, ce qui signifie que nous effectuons le scan sur notre propre machine. Le symbole >
redirige la sortie de la commande vers le fichier /home/labex/project/nmap_script_output.txt
.
Vérifions la sortie de la commande. Nous pouvons le faire en utilisant la commande suivante :
cat /home/labex/project/nmap_script_output.txt
La commande cat
est utilisée pour afficher le contenu d'un fichier. Lorsque vous exécutez cette commande, vous devriez voir une sortie qui inclut des informations sur le titre de notre page web. La sortie pourrait ressembler à ceci :
Starting Nmap 7.80 ( https://nmap.org ) at 2023-XX-XX XX:XX XXX
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000040s latency).
PORT STATE SERVICE
8000/tcp open http-alt
|_http-title: Directory listing for /
Nmap done: 1 IP address (1 host up) scanned in X.XX seconds
Maintenant, essayons un scan plus complet en utilisant plusieurs scripts. La catégorie "default" inclut des scripts sûrs qui fournissent des informations utiles sur la cible. Pour exécuter tous les scripts de la catégorie "default" contre notre serveur HTTP sur le port 8000, nous utilisons la commande suivante :
sudo nmap --script=default -p 8000 localhost > /home/labex/project/nmap_default_scripts.txt
Cette commande est similaire à la précédente, mais au lieu de spécifier un seul script, nous indiquons à Nmap d'exécuter tous les scripts de la catégorie "default".
Examinons les résultats de ce scan. Nous pouvons le faire en utilisant à nouveau la commande cat
:
cat /home/labex/project/nmap_default_scripts.txt
La sortie contiendra des informations plus détaillées sur notre serveur HTTP, collectées par divers scripts NSE qui s'exécutent par défaut.
Enfin, explorons la fonction d'aide aux scripts pour en savoir plus sur un script spécifique. Si vous voulez en savoir plus sur le script http-title
, vous pouvez utiliser la commande suivante :
nmap --script-help=http-title
Cette commande affiche la documentation du script http-title
. La documentation inclut le but du script, comment l'utiliser et le format de sa sortie. Comprendre la documentation des scripts est essentiel lorsque vous utilisez le NSE pour des tâches spécifiques car cela vous aide à savoir ce que le script fait et comment l'utiliser correctement.