Introduction
Dans ce labo, vous apprendrez à utiliser Nmap, un outil puissant de balayage réseau, à différents niveaux de verbosité. Nmap est l'outil de prédilection des experts en sécurité pour découvrir les hôtes et les services sur les réseaux informatiques. La maîtrise des options de verbosité de Nmap vous permet de réguler les informations affichées lors des scans, ce qui est essentiel pour une analyse réseau et un dépannage efficaces.
Tout au long du labo, vous configurerez un serveur local pour vous entraîner aux scans. Vous découvrirez également comment les différents niveaux de verbosité influencent les résultats des scans et les informations présentées.
Configuration de votre environnement pour l'analyse de réseau
Dans cette étape, nous allons configurer un serveur web local sur votre machine. Ce serveur servira de cible pour nos scans Nmap. Nmap est un outil d'analyse réseau puissant utilisé en cybersécurité pour découvrir les hôtes et les services sur un réseau informatique. En disposant d'un serveur local, vous pouvez vous entraîner à utiliser Nmap en toute sécurité, sans affecter les réseaux réels.
Comprendre les serveurs HTTP
Avant de créer le serveur, comprenons ce qu'est un serveur HTTP. HTTP signifie HyperText Transfer Protocol (Protocole de transfert hypertexte). C'est le protocole que votre navigateur web utilise pour communiquer avec les sites web. Un serveur HTTP est une application logicielle capable de comprendre les URL (adresses web) et le protocole HTTP. Lorsque vous saisissez une adresse web dans votre navigateur, celui-ci envoie une requête HTTP au serveur HTTP correspondant, qui renvoie ensuite la page web demandée. Pour notre labo, nous allons créer un serveur HTTP simple à l'aide de Python, un langage de programmation populaire et facile à apprendre.
Création du serveur HTTP
Tout d'abord, nous devons nous assurer que vous vous trouvez dans le répertoire de travail correct. Le répertoire de travail est l'emplacement où vos commandes s'exécuteront. Dans ce cas, nous souhaitons nous placer dans le répertoire /home/labex/project. Pour y accéder, utilisez la commande suivante :
cd /home/labex/project
Maintenant que nous sommes au bon endroit, nous allons utiliser le module de serveur HTTP intégré de Python pour créer un serveur web simple. Nous allons configurer ce serveur pour qu'il écoute sur le port 8080. Un port est comparable à une porte sur un ordinateur par laquelle le trafic réseau peut entrer ou sortir. Différents services utilisent des ports différents. Saisissez la commande suivante :
python -m http.server --bind 127.0.0.1 8080 &
Analysons ce que fait cette commande :
python -m http.server: Cette partie démarre le module de serveur HTTP intégré de Python. Elle indique à Python d'exécuter les fonctionnalités du serveur HTTP.--bind 127.0.0.1: Cela fait écouter le serveur sur l'adresse de bouclage (loopback) IPv4, que Nmap analyse pourlocalhostdans cet environnement.8080: Cela spécifie que le serveur doit écouter sur le port 8080. Cela signifie que toutes les requêtes HTTP entrantes sur ce port seront traitées par notre serveur.&: L'ajout d'une esperluette à la fin de la commande exécute le serveur en arrière-plan. C'est pratique car cela vous permet de continuer à utiliser le terminal pour d'autres commandes pendant que le serveur tourne.
Après avoir exécuté la commande, vous devriez voir une sortie similaire à :
Serving HTTP on 127.0.0.1 port 8080 (http://127.0.0.1:8080/) ...
Cette sortie indique que votre serveur HTTP est maintenant en cours d'exécution et prêt à accepter les connexions sur le port 8080. Avec ce serveur opérationnel, nous disposons désormais d'une cible que nous pourrons scanner à l'aide de Nmap lors des prochaines étapes.
Vérification du bon fonctionnement du serveur HTTP
Il est important de s'assurer que votre serveur fonctionne correctement. Pour ce faire, nous pouvons utiliser la commande suivante :
ss -tulwn | grep 8080
La commande ss est utilisée pour afficher les statistiques des sockets. Les options -tulwn indiquent à ss d'afficher les informations relatives aux sockets TCP, UDP, en écoute (listening) et numériques. Le symbole | est un tube (pipe) qui prend la sortie de la commande ss et la transmet à la commande grep. La commande grep recherche ensuite la chaîne de caractères 8080 dans cette sortie. Si le serveur fonctionne, cette commande doit afficher un résultat indiquant qu'un processus est à l'écoute sur le port 8080, ce qui confirme que votre serveur HTTP est actif et prêt pour les scans Nmap.
Comprendre les bases de Nmap et la verbosité par défaut
Dans cette étape, notre serveur cible étant opérationnel, il est temps de commencer à explorer Nmap et ses niveaux de verbosité. Nmap, abréviation de Network Mapper, est un scanner de sécurité puissant. Son objectif principal est de vous aider à découvrir les hôtes et les services sur un réseau informatique. C'est crucial en cybersécurité, car cela vous permet de comprendre la structure du réseau et d'identifier les risques potentiels pour la sécurité.
Qu'est-ce que la verbosité de Nmap ?
Dans Nmap, la verbosité détermine la quantité d'informations affichées lors d'un scan. Selon le niveau de détail souhaité pour les résultats de votre analyse, vous pouvez choisir différents niveaux de verbosité. Voici un récapitulatif des niveaux de verbosité courants :
- Niveau 0 : C'est le niveau par défaut. Il fournit la sortie standard, qui contient les informations de base sur le scan.
- Niveau 1 : En utilisant l'option
-v, vous obtenez plus de détails dans la sortie du scan. - Niveau 2 : L'utilisation de l'option
-vvvous fournit des informations encore plus détaillées.
Effectuer un scan avec la verbosité par défaut (Niveau 0)
Commençons par effectuer notre premier scan en utilisant le niveau de verbosité par défaut de Nmap. Cela nous donnera une base de référence sur le type d'informations que l'on peut obtenir sans ajouter de verbosité supplémentaire.
nmap -p 8080 localhost > /home/labex/project/verbosity-0.txt
Décomposons cette commande :
nmap: C'est la commande pour lancer l'outil de scan Nmap. Elle indique à votre système d'utiliser Nmap pour le balayage du réseau.-p 8080: Cette option indique à Nmap de concentrer le scan uniquement sur le port 8080. Les ports sont comme des portes sur un ordinateur, et différents services utilisent différents ports. En spécifiant le port 8080, nous ne nous intéressons qu'au service s'exécutant sur ce port particulier.localhost: Cela indique que nous scannons la machine locale. En d'autres termes, nous vérifions les services en cours d'exécution sur l'ordinateur même où nous exécutons la commande Nmap.> /home/labex/project/verbosity-0.txt: Cette partie de la commande redirige la sortie du scan vers un fichier nomméverbosity-0.txtsitué dans le répertoire/home/labex/project. Enregistrer la sortie dans un fichier nous permet de la consulter ultérieurement.
Maintenant, affichons les résultats du scan :
cat /home/labex/project/verbosity-0.txt
Après avoir exécuté cette commande, vous devriez voir un résultat similaire à ceci :
Starting Nmap 7.80 ( https://nmap.org ) at 2023-08-10 15:30 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000097s latency).
PORT STATE SERVICE
8080/tcp open http-proxy
Nmap done: 1 IP address (1 host up) scanned in 0.05 seconds
Comprenons ce que signifie ce résultat :
- Heure de début du scan : La première ligne indique l'heure exacte à laquelle le scan Nmap a commencé. C'est utile pour garder une trace du moment où les informations ont été collectées.
- La cible du scan : Il est indiqué que nous scannions
localhost, qui possède l'adresse IP127.0.0.1. - État de l'hôte : Cela indique que l'hôte est actif (up) et réactif, avec une très faible latence de
0,000097secondes. - État du port : Cela nous apprend que le port 8080 est à l'état
open(ouvert), ce qui signifie qu'un service est à l'écoute sur ce port. - Service en cours d'exécution : Cela suggère que le service probable s'exécutant sur le port 8080 est
http-proxy. - Statistiques de fin de scan : La dernière ligne donne des informations sur la durée du scan, qui dans ce cas était de
0,05secondes.
Le niveau par défaut fournit des informations essentielles, mais il manque d'analyses détaillées. Dans les étapes suivantes, nous allons explorer comment des niveaux de verbosité plus élevés peuvent nous fournir des informations plus approfondies sur le scan.
Augmentation de la verbosité avec l'option -v
Dans le domaine de l'analyse réseau, l'obtention d'informations détaillées est primordiale. Dans cette étape, nous allons apprendre à obtenir des détails plus approfondis de la part de Nmap en augmentant le niveau de verbosité. La verbosité dans Nmap désigne la quantité d'informations affichées lors d'un scan. L'option -v, qui définit le niveau de verbosité à 1, fournit des informations supplémentaires qui peuvent s'avérer extrêmement utiles pour l'analyse réseau.
Exécution d'un scan avec une verbosité accrue
Commençons par lancer un scan avec une verbosité accrue. Nous utiliserons la commande suivante :
nmap -p 8080 localhost -v > /home/labex/project/verbosity-1.txt
Décomposons cette commande :
nmapest la commande pour lancer l'outil de scan Nmap. Nmap est un outil d'exploration réseau et d'audit de sécurité puissant et largement utilisé.-p 8080indique à Nmap de scanner uniquement le port 8080. Les ports sont comme des portes dans un réseau, et en spécifiant un port, nous focalisons notre scan sur un service particulier susceptible de s'y exécuter.localhostindique que nous ciblons la machine locale. C'est utile pour tester et comprendre le fonctionnement de Nmap sur votre propre système.-vaugmente le niveau de verbosité à 1. Cela signifie que Nmap affichera davantage d'informations concernant le processus de scan.> /home/labex/project/verbosity-1.txtredirige la sortie du scan vers un fichier nomméverbosity-1.txtdans le répertoire/home/labex/project. Enregistrer la sortie dans un fichier permet de la consulter plus tard.
Voyons maintenant les résultats de notre scan :
cat /home/labex/project/verbosity-1.txt
Lorsque vous exécutez cette commande, vous devriez obtenir une sortie plus détaillée similaire à celle-ci :
Starting Nmap 7.80 ( https://nmap.org ) at 2023-08-10 15:35 UTC
Initiating Ping Scan at 15:35
Scanning localhost (127.0.0.1) [2 ports]
Completed Ping Scan at 15:35, 0.00s elapsed (1 total hosts)
Initiating Connect Scan at 15:35
Scanning localhost (127.0.0.1) [1 port]
Discovered open port 8080/tcp on 127.0.0.1
Completed Connect Scan at 15:35, 0.00s elapsed (1 total ports)
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000089s latency).
PORT STATE SERVICE
8080/tcp open http-proxy
Read data files from: /usr/bin/../share/nmap
Nmap done: 1 IP address (1 host up) scanned in 0.07 seconds
Comprendre les informations supplémentaires
Avec le niveau de verbosité 1, la sortie fournit une mine de détails supplémentaires. Voici ce que vous pouvez observer :
- Le processus de scan est découpé en étapes. Par exemple, il y a un scan de type Ping (Ping Scan) et un scan de type Connexion (Connect Scan). Le scan Ping est utilisé pour vérifier si un hôte est joignable, tandis que le scan Connexion tente d'établir une connexion vers un port spécifique.
- Des informations de minutage (timing) sont fournies pour chaque étape. Cela vous aide à comprendre le temps pris par chaque partie du scan.
- Vous pouvez voir le moment exact où le port ouvert a été découvert. C'est important car cela vous donne un calendrier précis du scan.
- Les fichiers de données utilisés par Nmap pendant le scan sont également affichés. Ces fichiers contiennent des informations sur les services, les ports et d'autres données relatives au réseau que Nmap utilise pour effectuer ses scans.
Ces informations supplémentaires sont très utiles car elles vous permettent de :
- Comprendre comment Nmap effectue ses scans. En visualisant les différentes étapes et l'ordre dans lequel elles se déroulent, vous saisissez mieux le processus d'analyse.
- Connaître le déroulement temporel exact des événements lors du scan. Cela peut s'avérer utile pour le dépannage ou pour comprendre le comportement d'un réseau.
- Déterminer à quel moment des ports et des services spécifiques ont été découverts. C'est crucial pour les bilans de sécurité et la gestion du réseau.
Comparaison des niveaux de verbosité
Pour mieux apprécier la différence entre un scan normal et un scan à verbosité accrue, nous allons comparer les deux fichiers de sortie. Utilisez la commande suivante :
diff /home/labex/project/verbosity-0.txt /home/labex/project/verbosity-1.txt
La commande diff compare le contenu de deux fichiers et en affiche les différences. Le résultat de cette commande démontre comment l'augmentation du niveau de verbosité offre un meilleur aperçu du processus de scan. Cette information supplémentaire peut s'avérer particulièrement utile lorsque vous dépannez des problèmes réseau ou effectuez des évaluations de sécurité détaillées.
Niveaux de verbosité supplémentaires
Nmap ne s'arrête pas au niveau de verbosité 1. Il prend en charge des niveaux encore plus élevés :
-vvdéfinit le niveau de verbosité à 2.-vvvdéfinit le niveau de verbosité à 3.
Au fur et à mesure que vous augmentez le niveau de verbosité, Nmap fournit des informations de plus en plus détaillées sur le processus de scan. Cela peut s'avérer très utile lorsque vous devez creuser plus profondément dans le réseau et comprendre chaque aspect du scan.
Exploration de niveaux de verbosité plus élevés et applications pratiques
Dans cette étape, nous allons approfondir les fonctionnalités de Nmap. Nous commencerons par utiliser un niveau de verbosité encore plus élevé, ce qui nous fournira des informations plus détaillées au cours du processus de scan. Ensuite, nous aborderons les applications pratiques des différents paramètres de verbosité, afin que vous sachiez quand utiliser chaque niveau dans des scénarios réels.
Exécution d'un scan avec une verbosité maximale
Exécutons un scan avec le niveau de verbosité 2. Dans Nmap, nous pouvons définir le niveau de verbosité à l'aide de l'option -vv. Le niveau de verbosité 2 fournira une quantité significative d'informations détaillées sur le scan. Voici la commande pour lancer ce scan :
nmap -p 8080 localhost -vv > /home/labex/project/verbosity-2.txt
Dans cette commande, -p 8080 indique à Nmap de scanner le port 8080. localhost est la cible que nous scannons, ce qui fait référence à la machine locale. L'option -vv augmente la verbosité au niveau 2. Le symbole > redirige la sortie du scan vers le fichier /home/labex/project/verbosity-2.txt.
Examinons maintenant les résultats du scan. Nous pouvons utiliser la commande cat pour afficher le contenu du fichier :
cat /home/labex/project/verbosity-2.txt
En observant la sortie, vous remarquerez qu'elle contient des détails techniques encore plus poussés sur le processus de scan. Ces détails incluent :
- Des informations de minutage plus approfondies : cela vous aide à comprendre le temps nécessaire aux différentes parties du scan.
- Des informations de débogage supplémentaires : utiles si un problème survient au cours du scan.
- Des informations de protocole plus détaillées : cela vous donne une meilleure compréhension des protocoles réseau impliqués dans le scan.
Applications pratiques des différents niveaux de verbosité
Les différents niveaux de verbosité s'avèrent utiles dans diverses situations. Examinons chaque niveau et ses applications pratiques :
Niveau par défaut (0) :
- Le niveau de verbosité par défaut est idéal pour les scans rapides. Lorsque vous avez seulement besoin d'informations de base sur la cible (par exemple, savoir si un port spécifique est ouvert ou fermé), ce niveau suffit amplement.
- Il est également utile pour les vérifications de routine et la cartographie simple du réseau. Par exemple, si vous souhaitez vérifier rapidement l'état de base des ports d'un serveur, vous pouvez utiliser le niveau par défaut.
- Un cas d'utilisation type consiste à vérifier si des ports spécifiques sont ouverts sur un serveur. Vous obtenez un aperçu rapide sans vous enliser dans les détails.
Niveau de verbosité 1 (-v) :
- Ce niveau est utile pour une analyse plus détaillée. Il fournit plus d'informations que le niveau par défaut, ce qui vous aide à mieux comprendre le calendrier du scan.
- Si vous dépannez des problèmes de connectivité, les informations supplémentaires de ce niveau peuvent s'avérer très précieuses. Vous pouvez identifier quelles parties du scan prennent le plus de temps ou repérer d'éventuelles erreurs.
- Un cas d'utilisation type est le dépannage de problèmes de connectivité. Vous pouvez exploiter les détails supplémentaires pour identifier l'origine potentielle du problème.
Niveaux de verbosité supérieurs (-vv, -vvv) :
- Ces niveaux sont parfaits pour l'analyse approfondie et le débogage. Ils fournissent un maximum d'informations, ce qui est très utile lors d'audits de sécurité.
- Lorsque vous réalisez une évaluation de sécurité détaillée ou que vous devez comprendre précisément comment le scan interagit avec la cible, l'utilisation de niveaux de verbosité élevés est incontournable.
- Un cas d'utilisation type correspond aux évaluations de sécurité approfondies ou aux situations où vous devez comprendre exactement comment le scan interagit avec la cible. Vous obtenez ainsi une vue d'ensemble exhaustive du processus de scan.
Combinaison de la verbosité avec d'autres options de Nmap
Les options de verbosité peuvent être combinées avec d'autres options de Nmap pour réaliser des analyses plus poussées. Essayons un scan plus avancé à l'aide de la commande suivante :
nmap -p 8080 -sV localhost -v > /home/labex/project/advanced-scan.txt
Décomposons cette commande :
-p 8080spécifie que nous voulons scanner le port 8080.-sVactive la détection de version. Cette option tente de déterminer la version du service s'exécutant sur le port analysé.-vaugmente la verbosité au niveau 1, ce qui nous permet d'obtenir des informations plus détaillées sur le déroulement du scan.- Le symbole
>redirige la sortie du scan vers le fichier/home/labex/project/advanced-scan.txt.
À présent, consultons les résultats du scan :
cat /home/labex/project/advanced-scan.txt
Vous remarquerez que l'ajout de l'option -sV fournit des informations sur la version du service en cours d'exécution sur le port 8080. Parallèlement, l'option -v garantit l'obtention de détails précis sur le processus de scan, facilitant ainsi l'analyse des résultats.
Nettoyage
Avant de terminer cette expérimentation, nous devons arrêter proprement le serveur HTTP que nous avions créé au début. Nous pouvons utiliser la commande suivante pour y parvenir :
pkill -f "python -m http.server"
Cette commande met fin au processus du serveur HTTP Python en cours d'exécution sur le port 8080. Il est important d'effectuer ce nettoyage pour éviter tout conflit ou problème d'utilisation des ressources par la suite.
Résumé
Dans ce labo, vous avez appris à utiliser efficacement les niveaux de verbosité de Nmap pour contrôler les informations affichées lors des scans réseau. En commençant par la configuration d'un serveur HTTP local de base, vous avez exploré l'impact des différents niveaux de verbosité sur les résultats des scans Nmap.
Vous avez constaté que le niveau de verbosité par défaut (0) fournit les détails essentiels sur les ports ouverts et les services. L'utilisation de l'option -v accroît la verbosité, offrant un meilleur aperçu du processus de scan. Des niveaux plus élevés, tels que -vv et -vvv, fournissent des informations techniques détaillées pour une analyse approfondie. Les options de verbosité peuvent également être combinées avec d'autres techniques de Nmap pour réaliser des analyses réseau encore plus puissantes. Ces compétences sont indispensables pour les administrateurs réseau et les professionnels de la sécurité, car elles leur permettent de collecter des données réseau de manière efficace et d'adapter les scans à des tâches spécifiques.



