Découvrez les services réseau avec Nmap et son moteur de scripts

CybersecurityCybersecurityBeginner
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 allez apprendre à connaître le Nmap Scripting Engine (NSE), une partie puissante de l'outil de scan réseau Nmap. Le NSE améliore les fonctionnalités de Nmap, vous permettant d'effectuer des découvertes réseau avancées, de détecter des vulnérabilités et d'énumérer les services.

Ce moteur est essentiel pour les administrateurs de réseau modernes, les experts en sécurité et les hackers éthiques. Ils ont besoin de comprendre les topologies réseau, de repérer les problèmes de sécurité potentiels et de collecter des informations détaillées sur les services réseau. Dans ce laboratoire, vous allez configurer un service réseau local et utiliser Nmap pour le découvrir et l'analyser. À la fin, vous maîtriserez les bases de l'utilisation de Nmap et de son moteur de scripts pour explorer et collecter des données sur les services réseau.

Configuration d'un service réseau local pour le scan

Dans cette étape, nous allons créer un simple service réseau. Pourquoi le faisons - nous? Eh bien, dans le monde réel de la cybersécurité, vous avez souvent besoin de trouver et d'analyser les services en cours d'exécution sur un réseau. En créant ce simple service, nous pourrons ensuite pratiquer l'utilisation de Nmap pour le scanner, tout comme vous le feriez dans une situation réelle.

Tout d'abord, nous devons ouvrir un terminal. Un terminal est une interface basée sur le texte où vous pouvez entrer des commandes pour interagir avec votre ordinateur. Une fois que vous avez ouvert le terminal, vous devez vous assurer que vous êtes dans le répertoire du projet. Le répertoire du projet est comme un dossier où tous les fichiers liés à ce projet sont stockés. Pour accéder au répertoire du projet, entrez la commande suivante dans le terminal :

cd /home/labex/project

Ensuite, nous allons créer un simple fichier HTML. HTML signifie HyperText Markup Language (langage de balisage hypertexte) et il est utilisé pour créer des pages web. Ce fichier sera hébergé par notre serveur, tout comme les pages web que vous voyez sur Internet. Le contenu de ce fichier est ce qu'un serveur web dans le monde réel pourrait servir aux utilisateurs. Pour créer le fichier, utilisez la commande suivante :

echo "<h1>Welcome to the hidden treasure chamber</h1>" > treasure.html

Cette commande fait deux choses. Tout d'abord, elle crée une chaîne de caractères avec un en - tête HTML. Ensuite, elle redirige cette chaîne de caractères dans un fichier nommé treasure.html. Pour vérifier si le fichier a été créé correctement, vous pouvez utiliser la commande cat. La commande cat est utilisée pour afficher le contenu d'un fichier. Entrez la commande suivante dans le terminal :

cat treasure.html

Si tout s'est bien passé, vous devriez voir le contenu HTML que nous venons d'ajouter :

<h1>Welcome to the hidden treasure chamber</h1>

Maintenant, nous allons démarrer un simple serveur HTTP. HTTP signifie HyperText Transfer Protocol (protocole de transfert hypertexte) et c'est le protocole utilisé pour transférer des pages web sur Internet. Nous allons utiliser le module intégré de Python pour démarrer ce serveur. Ce serveur écoutera sur le port 8000. Un port est comme une porte sur votre ordinateur où le trafic réseau peut entrer ou sortir. Le serveur servira les fichiers à partir du répertoire actuel, qui est le répertoire du projet dans lequel nous avons navigué précédemment. Pour démarrer le serveur, entrez la commande suivante dans le terminal :

python3 -m http.server 8000

Après avoir exécuté cette commande, vous devriez voir une sortie similaire à :

Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) ...

Cette sortie indique que le serveur HTTP est maintenant en cours d'exécution et qu'il attend des connexions sur le port 8000. Assurez - vous de laisser cette fenêtre de terminal ouverte. Si vous la fermez, le serveur cessera de fonctionner et nous ne pourrons pas le scanner avec Nmap plus tard.

Découverte de services réseau avec Nmap

Maintenant que nous avons réussi à configurer un service réseau, il est temps d'utiliser Nmap pour le découvrir et l'analyser. Nmap, acronyme de Network Mapper (cartographe de réseau), est un outil open - source bien connu et puissant. Il est largement utilisé pour la découverte de réseau, c'est - à - dire pour trouver quels appareils et services sont disponibles sur un réseau, et pour l'audit de sécurité, qui aide à identifier les risques de sécurité potentiels.

Tout d'abord, ouvrez une nouvelle fenêtre de terminal. Assurez - vous de laisser la fenêtre de terminal précédente ouverte, car elle exécute le serveur HTTP. Une fois que vous avez ouvert le nouveau terminal, vous devez accéder au répertoire du projet. Cela est important car toutes les commandes liées à ce projet seront exécutées à partir de ce répertoire. Utilisez la commande suivante pour changer de répertoire :

cd /home/labex/project

Commençons par un scan de port de base. Un scan de port est une technique utilisée pour vérifier quels ports sur un appareil sont ouverts et exécutent des services. Les ports sont comme des portes par lesquelles le trafic réseau entre et sort d'un appareil. Dans ce cas, nous allons scanner le port 8000 sur le localhost, qui fait référence à la machine sur laquelle nous travaillons actuellement. Exécutez la commande suivante :

nmap -p 8000 localhost

Cette commande indique à Nmap de scanner spécifiquement le port 8000 sur la machine locale. Après avoir exécuté la commande, vous devriez voir une sortie similaire à celle - ci :

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.000016s latency).

PORT     STATE SERVICE
8000/tcp open  http-alt

Nmap done: 1 IP address (1 host up) scanned in X.XX seconds

La sortie nous indique que le port 8000 est ouvert, ce qui signifie qu'un service s'exécute sur ce port. "http - alt" est la façon par défaut dont Nmap identifie les services HTTP alternatifs.

Ensuite, nous voulons collecter des informations plus détaillées sur ce service. Nous allons utiliser le flag -sV avec Nmap. Ce flag indique à Nmap d'essayer de déterminer la version du service en cours d'exécution. Connaître la version du service peut être crucial pour des raisons de sécurité, car cela aide à identifier s'il existe des vulnérabilités connues associées à cette version spécifique. Exécutez la commande suivante :

sudo nmap -sV -p 8000 localhost > /home/labex/project/nmap_output_service_version.txt

Cette commande effectue un scan de détection de version sur le port 8000. Le mot - clé sudo est utilisé pour exécuter la commande avec des privilèges d'administrateur, qui peuvent être nécessaires pour certaines opérations Nmap. Le symbole > redirige la sortie de la commande vers un fichier nommé nmap_output_service_version.txt. De cette façon, nous pouvons enregistrer les résultats pour une analyse ultérieure.

Pour afficher les résultats, utilisez la commande suivante :

cat /home/labex/project/nmap_output_service_version.txt

Vous devriez voir des informations plus détaillées sur le service HTTP, y compris la version possible du logiciel. 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.000016s latency).

PORT     STATE SERVICE VERSION
8000/tcp open  http    Python http.server 3.10.X (Python 3.10.X)

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

Cette sortie confirme que le service est un serveur HTTP alimenté par Python, ce qui correspond à ce que nous avons configuré à l'étape précédente.

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.

Résumé

Dans ce laboratoire, vous avez appris à utiliser le moteur de scripts Nmap (NSE - Nmap Scripting Engine) pour la découverte et l'analyse de services réseau. Vous avez tout d'abord configuré un serveur HTTP local, puis utilisé diverses commandes Nmap pour scanner et collecter des informations sur ce service.

Vous avez acquis des compétences telles que la configuration d'un service réseau de base pour les tests, l'utilisation de Nmap pour trouver les ports ouverts et les services en cours d'exécution, la détection de version avec le flag -sV, l'utilisation de scripts NSE pour obtenir des informations détaillées sur le service, et l'interprétation des résultats de scan Nmap pour comprendre les caractéristiques du service. Ces compétences sont essentielles pour les administrateurs de réseau, les professionnels de la sécurité et les hackers éthiques. Au fur et à mesure de votre progression en cybersécurité, Nmap et son moteur de scripts seront précieux pour la découverte de réseau et l'évaluation de la sécurité.