Apprendre les bases de l'analyse réseau avec Nmap

NmapNmapBeginner
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 (lab), vous allez apprendre les bases du balayage de réseau à l'aide de Nmap. Nmap est un outil puissant et polyvalent largement utilisé par les administrateurs de réseau et les professionnels de la sécurité. C'est une utilité open - source pour la découverte de réseau et l'audit de sécurité, capable de scanner des réseaux pour trouver des hôtes et des services, identifier les systèmes d'exploitation et détecter les vulnérabilités.

Grâce à des exercices pratiques, vous comprendrez comment effectuer différents types de balayages de ports. Vous apprendrez également à interpréter les résultats des balayages et à acquérir des connaissances sur les techniques d'évaluation de la sécurité des réseaux.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL nmap(("Nmap")) -.-> nmap/NmapGroup(["Nmap"]) nmap/NmapGroup -.-> nmap/installation("Installation and Setup") nmap/NmapGroup -.-> nmap/basic_syntax("Basic Command Syntax") nmap/NmapGroup -.-> nmap/save_output("Save Output to File") nmap/NmapGroup -.-> nmap/port_scanning("Port Scanning Methods") nmap/NmapGroup -.-> nmap/target_specification("Target Specification") nmap/NmapGroup -.-> nmap/service_detection("Service Detection") subgraph Lab Skills nmap/installation -.-> lab-415927{{"Apprendre les bases de l'analyse réseau avec Nmap"}} nmap/basic_syntax -.-> lab-415927{{"Apprendre les bases de l'analyse réseau avec Nmap"}} nmap/save_output -.-> lab-415927{{"Apprendre les bases de l'analyse réseau avec Nmap"}} nmap/port_scanning -.-> lab-415927{{"Apprendre les bases de l'analyse réseau avec Nmap"}} nmap/target_specification -.-> lab-415927{{"Apprendre les bases de l'analyse réseau avec Nmap"}} nmap/service_detection -.-> lab-415927{{"Apprendre les bases de l'analyse réseau avec Nmap"}} end

Comprendre les ports et configurer l'environnement

Avant de commencer à apprendre le balayage de ports, il est essentiel de comprendre ce que sont les ports dans le contexte des réseaux informatiques. Les ports servent d'extrémités de communication. Ils permettent à différents processus sur un ordinateur de partager les ressources réseau. Imaginez - les comme des portes par lesquelles les données peuvent entrer et sortir d'un ordinateur. Il y a au total 65 535 ports disponibles, et ils sont divisés en trois plages :

  • Ports bien connus (Well - known ports): Ce sont les ports numérotés de 0 à 1023. Ils sont réservés pour des services spécifiques. Par exemple, le port 80 est utilisé pour le protocole HTTP (Hypertext Transfer Protocol), qui est le protocole utilisé pour transférer les pages web. Le port 22 est utilisé pour le protocole SSH (Secure Shell), qui est un protocole pour accéder en toute sécurité à un ordinateur distant.
  • Ports enregistrés (Registered ports): Ces ports vont de 1024 à 49151. Ils sont enregistrés auprès de l'Internet Assigned Numbers Authority (IANA). Bien qu'ils soient enregistrés, les utilisateurs ordinaires peuvent également les utiliser pour leurs propres applications.
  • Ports dynamiques/privés (Dynamic/Private ports): Ces ports sont dans la plage de 49152 à 65535. Ils sont librement disponibles pour une utilisation temporaire. Les applications peuvent utiliser ces ports lorsqu'elles ont besoin d'établir une connexion de courte durée.

Dans cette étape, nous allons configurer un service local dans notre environnement de laboratoire (lab). Nous scannerons ce service plus tard. Cette approche pratique vous aidera à comprendre comment Nmap, un puissant outil de balayage de ports, détecte les ports ouverts et les services qui s'exécutent sur eux.

Tout d'abord, ouvrez 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 le terminal ouvert, vous devez vous assurer que vous êtes dans le répertoire du projet. Le répertoire du projet est l'endroit où tous les fichiers liés à cette expérience sont stockés. Vous pouvez accéder au répertoire du projet en exécutant la commande suivante :

cd /home/labex/project

Ensuite, nous allons créer un simple serveur HTTP sur votre machine. Nous utiliserons le module de serveur HTTP intégré à Python. Ce serveur écoutera sur le port 8080. Écouter sur un port signifie que le serveur attend les requêtes entrantes sur ce port spécifique. Ce serveur sera la cible de nos balayages Nmap. Pour démarrer le serveur, exécutez la commande suivante :

python3 -m http.server 8080 &

Après avoir exécuté cette commande, la sortie devrait ressembler à :

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

Le symbole & à la fin de la commande est important. Il exécute le processus en arrière - plan. Cela signifie que le serveur continuera de fonctionner, et vous pourrez continuer à utiliser le terminal pour entrer d'autres commandes.

Pour vérifier que le serveur est en cours d'exécution, nous allons vérifier les ports d'écoute. Nous pouvons le faire en exécutant la commande suivante :

ss -tuln | grep 8080

La commande ss est utilisée pour afficher les statistiques des sockets. Les options -tuln indiquent à la commande d'afficher les sockets TCP, UDP, en écoute et d'afficher les adresses numériques. Le symbole | est un tuyau (pipe) qui prend la sortie de la commande ss et la transmet à la commande grep. La commande grep recherche ensuite la chaîne 8080 dans la sortie.

Si le serveur fonctionne correctement, la sortie devrait montrer que le port 8080 est utilisé :

tcp   LISTEN  0       1            0.0.0.0:8080      0.0.0.0:*

Cette sortie confirme que notre serveur HTTP fonctionne comme prévu et est prêt à être scanné par Nmap.

Balayage de ports de base avec Nmap

Maintenant que notre serveur HTTP est démarré et fonctionne, nous sommes prêts à commencer à effectuer des balayages de ports de base à l'aide de Nmap. Mais d'abord, comprenons ce que signifie le balayage de ports. Le balayage de ports est une technique fondamentale en sécurité des réseaux. Il nous aide à découvrir quels ports sur un hôte sont ouverts. Les ports sont comme des portes dans un bâtiment ; chaque service exécuté sur un ordinateur utilise un port spécifique pour communiquer. Pour les administrateurs de réseau, savoir quels ports sont ouverts garantit que leurs services fonctionnent comme prévu. Pour les professionnels de la sécurité, c'est une étape cruciale pour identifier les vulnérabilités potentielles car les ports ouverts peuvent parfois être exploités par des attaquants.

Tout d'abord, nous devons nous assurer que Nmap est installé sur notre système. Nmap est un puissant outil de balayage de réseau que nous utiliserons tout au long de cette expérience. Pour vérifier s'il est installé, nous pouvons exécuter la commande suivante dans le terminal :

nmap --version

Cette commande demande au système d'afficher la version de Nmap installée. Si Nmap est correctement installé, vous devriez voir une sortie similaire à celle - ci :

Nmap version 7.80 ( https://nmap.org )

Effectuer un balayage de ports de base

Maintenant que nous avons confirmé que Nmap est installé, effectuons un balayage de base pour vérifier si le port 8080 est ouvert sur notre localhost. Le localhost fait référence à l'ordinateur sur lequel nous travaillons actuellement, représenté par l'adresse IP 127.0.0.1. Pour effectuer le balayage, exécutez la commande suivante :

nmap -p 8080 localhost

Dans cette commande, le drapeau -p est utilisé pour spécifier le ou les ports que nous voulons scanner. Ici, nous ne sommes intéressés que par le port 8080. Lorsque vous exécutez cette commande, Nmap enverra des paquets réseau spéciaux au port 8080 sur le localhost et analysera les réponses pour déterminer si le port est ouvert.

Vous devriez voir une sortie similaire à celle - ci :

Starting Nmap 7.80 ( https://nmap.org ) at 2023-08-01 10:00 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00020s latency).

PORT     STATE SERVICE
8080/tcp open  http-proxy

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

Cette sortie nous fournit des informations importantes. Elle nous indique que le port 8080 est ouvert et que Nmap a identifié le service exécuté sur ce port comme "http - proxy".

Ensuite, nous voulons enregistrer la sortie de ce balayage dans un fichier. Enregistrer les résultats du balayage est utile car nous pouvons y faire référence plus tard pour une analyse plus approfondie. Pour enregistrer la sortie, exécutez la commande suivante :

nmap -p 8080 localhost > /home/labex/project/basic_scan.txt

Dans cette commande, le symbole > est utilisé pour rediriger la sortie du balayage Nmap vers un fichier nommé basic_scan.txt situé dans le répertoire /home/labex/project.

Pour vérifier que la sortie a été correctement enregistrée, nous pouvons utiliser la commande cat. La commande cat est utilisée pour afficher le contenu d'un fichier. Exécutez la commande suivante :

cat /home/labex/project/basic_scan.txt

Vous devriez voir la même sortie que précédemment, maintenant enregistrée dans le fichier.

Comprendre la sortie

Examinons de plus près la sortie de notre balayage Nmap pour comprendre ce que chaque ligne signifie :

  • Starting Nmap 7.80 ( https://nmap.org ) at 2023-08-01 10:00 UTC : Cette ligne nous indique quand le balayage Nmap a commencé. Elle est utile pour suivre quand le balayage a été effectué.
  • Nmap scan report for localhost (127.0.0.1) : Cette ligne identifie l'hôte cible du balayage. Dans ce cas, c'est le localhost avec l'adresse IP 127.0.0.1.
  • Host is up (0.00020s latency) : Cette ligne confirme que l'hôte cible est en ligne. La valeur de latence indique combien de temps il faut pour que les paquets réseau voyagent jusqu'à l'hôte et reviennent. Une latence très faible est attendue pour le localhost car c'est le même ordinateur sur lequel nous travaillons.
  • PORT STATE SERVICE : C'est l'en - tête des résultats du balayage de ports. Elle nous indique quelles informations seront affichées dans les lignes suivantes.
  • 8080/tcp open http-proxy : Cette ligne indique que le port 8080 est ouvert. La partie /tcp spécifie le type de protocole réseau utilisé (TCP, qui est un protocole courant pour le transfert de données fiable). Nmap a identifié le service exécuté sur ce port comme "http - proxy".
  • Nmap done: 1 IP address (1 host up) scanned in 0.05 seconds : Cette ligne résume le balayage. Elle nous indique que Nmap a scanné une adresse IP (le localhost), a trouvé l'hôte en ligne et a terminé le balayage en 0,05 secondes.

Techniques avancées de balayage avec Nmap

Maintenant que nous avons réussi à effectuer un balayage de ports de base, il est temps d'améliorer nos compétences et d'explorer certaines techniques de balayage plus avancées avec Nmap. Nmap est un outil puissant qui propose de nombreuses options pour collecter des informations détaillées sur les services réseau. Ces informations sont cruciales à la fois pour l'administration réseau et l'évaluation de la sécurité. En utilisant des techniques de balayage avancées, vous pouvez découvrir plus de choses sur les systèmes de votre réseau, ce qui vous aide à identifier les risques de sécurité potentiels et à gérer votre réseau plus efficacement.

Détection de la version du service

L'une des fonctionnalités les plus utiles de Nmap est sa capacité à déterminer quel service et quelle version s'exécutent sur un port ouvert. Connaître le service et sa version est essentiel car cela vous aide à identifier les vulnérabilités potentielles associées à des versions spécifiques de services. De nombreuses vulnérabilités logiciels sont liées à des versions particulières. Ainsi, en connaissant la version exacte s'exécutant sur un port, vous pouvez rapidement vérifier s'il existe des problèmes de sécurité connus.

Pour effectuer un balayage de détection de la version du service sur le port 8080, vous devez exécuter la commande suivante :

nmap -sV -p 8080 localhost

Dans cette commande, le drapeau -sV est essentiel. Il indique à Nmap de sonder les ports ouverts pour déterminer les informations sur le service. L'option -p 8080 spécifie que nous voulons scanner le port 8080, et localhost indique que nous sommes en train de scanner notre propre machine.

La sortie de cette commande devrait ressembler à ce qui suit :

Starting Nmap 7.80 ( https://nmap.org ) at 2023-08-01 10:15 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00022s latency).

PORT     STATE SERVICE VERSION
8080/tcp open  http    SimpleHTTPServer 0.6 (Python 3.10.12)

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

Comme vous pouvez le voir, Nmap fournit maintenant des informations plus détaillées sur le service s'exécutant sur le port 8080. Il identifie le service comme étant un SimpleHTTPServer Python, avec sa version et la version de Python sur laquelle il s'exécute.

Maintenant, enregistrons ces informations précieuses dans un fichier. Vous pouvez le faire en exécutant la commande suivante :

nmap -sV -p 8080 localhost > /home/labex/project/advanced_scan.txt

Le symbole > est utilisé pour rediriger la sortie de la commande nmap vers le fichier spécifié.

Pour afficher le contenu du fichier, vous pouvez utiliser la commande cat :

cat /home/labex/project/advanced_scan.txt

Comprendre la différence entre les balayages de base et avancés

Comparons le balayage de base et le balayage avancé pour comprendre pourquoi les balayages avancés sont si utiles.

  1. Balayage de base (nmap -p 8080 localhost) : Lorsque vous exécutez un balayage de base, il ne vous indique que le port 8080 est ouvert et qu'un service s'y exécute. Sur la base du numéro de port, Nmap suppose que le service pourrait être "http - proxy". Cependant, il s'agit seulement d'une estimation approximative, et cela ne vous donne pas d'informations détaillées sur le service réel.

  2. Balayage avancé (nmap -sV -p 8080 localhost) : En revanche, un balayage avancé fournit beaucoup plus d'informations détaillées. Il vous indique le nom exact du service (SimpleHTTPServer), sa version (0.6), et même le langage de programmation et sa version (Python 3.10.12) sur lequel le service s'exécute.

Ces informations supplémentaires sont précieuses pour plusieurs raisons :

  • Identification des services obsolètes : En connaissant la version exacte d'un service, vous pouvez facilement vérifier s'il s'agit d'une version obsolète qui pourrait avoir des vulnérabilités connues. Dans ce cas, vous pouvez prendre des mesures pour mettre à jour le service et sécuriser votre réseau.
  • Compréhension de votre réseau : Vous pouvez avoir une image claire de ce qui est exactement exécuté sur votre réseau. Cela aide à la gestion du réseau et à l'allocation des ressources.
  • Planification des mesures de sécurité : Vous pouvez planifier des mesures de sécurité spécifiques aux services s'exécutant sur vos systèmes. Par exemple, si vous savez qu'un service particulier a une vulnérabilité connue, vous pouvez mettre en œuvre des contrôles de sécurité ciblés.

Autres options utiles de Nmap

Nmap propose de nombreuses autres options de balayage qui peuvent être combinées pour effectuer différents types de balayages. Voici quelques-unes des options les plus couramment utilisées :

  • -sS : Il s'agit d'un balayage TCP SYN, également connu sous le nom de balayage furtif. C'est un moyen rapide et discret de scanner des ports car il n'achève pas la connexion TCP complète, ce qui le rend plus difficile à détecter.
  • -O : Cette option active la détection du système d'exploitation. Elle permet à Nmap d'essayer de déterminer le système d'exploitation s'exécutant sur la machine cible.
  • -A : Un balayage agressif qui combine plusieurs fonctionnalités, notamment la détection du système d'exploitation, la détection de la version, le balayage de scripts et le traceroute. Il fournit une vue complète du système cible.
  • -T<0 - 5> : Cette option est utilisée pour définir le modèle de temporisation. Un nombre plus élevé signifie un balayage plus rapide, mais cela peut également augmenter les chances d'être détecté.
  • -Pn : Cette option considère tous les hôtes comme étant en ligne, en sautant la phase de découverte d'hôtes. Elle est utile lorsque vous savez que la cible est en ligne et que vous voulez gagner du temps.

Par exemple, si vous voulez effectuer un balayage rapide de tous les ports bien connus sur votre machine locale, vous pouvez utiliser la commande suivante :

nmap -F localhost

L'option -F (rapide) indique à Nmap de scanner moins de ports que le balayage par défaut. Cela est utile lorsque vous voulez avoir un aperçu rapide des ports ouverts sur un système.

Notez que, dans une évaluation réelle de la sécurité du réseau, il est important d'avoir l'autorisation appropriée avant de scanner tout système. Le balayage non autorisé peut être illégal dans de nombreuses juridictions.

Interprétation et analyse des résultats de balayage

Dans cette étape, nous allons apprendre à comprendre et à analyser les résultats de nos balayages Nmap. En matière de sécurité des réseaux, être capable de lire la sortie d'un balayage est essentiel. Cela vous aide à prendre des décisions éclairées concernant la sécurité de votre réseau. Par exemple, vous pouvez identifier les vulnérabilités potentielles ou les points d'accès non autorisés en fonction des résultats du balayage.

Comparaison de différents types de balayages

Effectuons quelques autres types de balayages pour voir comment leurs sorties diffèrent. Tout d'abord, nous allons effectuer un balayage complet. Ce type de balayage inclut toutes les options courantes, ce qui nous donne une vue détaillée de la cible.

nmap -A -p 8080 localhost > /home/labex/project/comprehensive_scan.txt

Dans cette commande, le drapeau -A est très important. Il active les options de balayage agressif. Ces options incluent la détection du système d'exploitation de la cible, la détermination de la version des services en cours d'exécution, le balayage des scripts disponibles et l'exécution d'un traceroute. En utilisant ce drapeau, nous pouvons collecter beaucoup d'informations utiles sur la cible.

Maintenant, examinons les résultats de ce balayage complet.

cat /home/labex/project/comprehensive_scan.txt

La sortie sera assez détaillée. Elle contiendra des informations sur le service en cours d'exécution sur le port 8080, tous les scripts possibles qui pourraient être exécutés contre le service et d'autres détails pertinents. Ces informations détaillées nous aident à mieux comprendre la situation de sécurité de la cible.

Compréhension des états des ports

Nmap indique plusieurs états possibles pour les ports. Chaque état nous dit quelque chose de différent sur le statut du port.

  • open : Cela signifie qu'une application accepte activement les connexions TCP ou les paquets UDP sur ce port. C'est comme une porte ouverte prête à recevoir des visiteurs.
  • closed : Le port est accessible, mais aucune application n'écoute dessus. C'est comme une porte déverrouillée, mais personne n'est à l'intérieur pour répondre.
  • filtered : Nmap ne peut pas déterminer si le port est ouvert car le filtrage des paquets empêche ses sondes d'atteindre le port. C'est comme s'il y avait un garde de sécurité bloquant la vue de Nmap sur la porte.
  • unfiltered : Le port est accessible, mais Nmap ne peut pas dire s'il est ouvert ou fermé. C'est comme regarder une porte sans pouvoir savoir si quelqu'un est à l'intérieur.
  • open|filtered : Nmap ne peut pas déterminer si le port est ouvert ou filtré. C'est un état incertain où nous ne sommes pas sûrs si la porte est ouverte ou bloquée.
  • closed|filtered : Nmap ne peut pas déterminer si le port est fermé ou filtré. De même que l'état précédent, nous ne sommes pas sûrs si la porte est verrouillée ou bloquée.

Voyons comment ces états apparaissent dans nos résultats de balayage en scannant une plage de ports.

nmap -p 8080-8085 localhost > /home/labex/project/port_states.txt

Une fois le balayage terminé, nous pouvons afficher les résultats.

cat /home/labex/project/port_states.txt

Vous devriez voir que le port 8080 est indiqué comme ouvert, tandis que les autres ports de la plage sont probablement indiqués comme fermés. Cela nous donne une idée de quels ports sont activement utilisés et lesquels ne le sont pas.

Analyse pratique des résultats

Maintenant, créons un rapport synthétique en extrayant les informations clés de nos résultats de balayage. Nous allons utiliser la commande grep pour filtrer les ports ouverts. Les ports ouverts sont très importants pour l'évaluation de la sécurité car ils sont des points d'entrée potentiels pour les attaquants.

grep "open" /home/labex/project/comprehensive_scan.txt > /home/labex/project/open_ports.txt

Après le filtrage, nous pouvons afficher les résultats.

cat /home/labex/project/open_ports.txt

Cette sortie filtrée nous permet de nous concentrer plus facilement sur les ports ouverts. Au lieu de regarder tout le rapport de balayage détaillé, nous pouvons rapidement voir quels ports sont ouverts et commencer à évaluer leurs risques de sécurité.

Conséquences en matière de sécurité

Comprendre les conséquences en matière de sécurité de vos résultats de balayage est crucial. Voici quelques points clés à retenir.

  1. Ports ouverts inutiles : Tout port ouvert est un point d'entrée potentiel pour les attaquants. Si un service n'est pas nécessaire, il devrait être désactivé. Par exemple, si vous avez un port ouvert pour un service que vous n'utilisez plus, un attaquant pourrait utiliser ce port pour accéder à votre système.
  2. Services obsolètes : Les anciennes versions de services peuvent avoir des vulnérabilités connues que les attaquants peuvent exploiter. Il est important de maintenir vos services à jour pour éviter ces risques.
  3. Services mal configurés : Même les services à jour peuvent être vulnérables s'ils sont mal configurés. Une petite erreur de configuration peut exposer votre système aux attaques.

Dans notre environnement de laboratoire, nous avons intentionnellement ouvert le port 8080 pour le serveur HTTP. Mais dans un environnement de production du monde réel, vous devriez évaluer soigneusement si ce service est nécessaire et s'il est correctement sécurisé.

Arrêt du serveur HTTP

Avant de terminer cette étape, nettoyons en arrêtant le serveur HTTP que nous avons démarré plus tôt. Tout d'abord, nous devons trouver son identifiant de processus.

ps aux | grep "python3 -m http.server"

Lorsque vous exécutez cette commande, recherchez la ligne qui montre notre processus de serveur HTTP. La deuxième colonne de la sortie contient l'identifiant de processus (PID). Une fois que vous avez trouvé le PID, vous pouvez l'utiliser pour arrêter le serveur.

kill <PID>

Remplacez <PID> par l'identifiant de processus réel de la sortie de la commande précédente.

Alternativement, vous pouvez utiliser la commande suivante pour trouver et tuer le processus en une seule étape.

pkill -f "python3 -m http.server"

Après avoir arrêté le serveur, nous devons vérifier qu'il n'est plus en cours d'exécution.

ss -tuln | grep 8080

Si il n'y a pas de sortie, cela signifie que le serveur a été arrêté avec succès.

Résumé

Dans ce laboratoire, vous avez appris les bases du balayage réseau à l'aide de Nmap, un outil puissant et largement utilisé dans l'industrie de la cybersécurité. Tout d'abord, vous avez compris le concept des ports et leurs fonctions dans les réseaux informatiques. Ensuite, vous avez configuré un serveur HTTP local pour pratiquer le balayage d'un service du monde réel.

Vous avez effectué divers balayages Nmap, allant des balayages de ports de base à la détection avancée de la version des services. Vous avez appris à interpréter les résultats de balayage, en comprenant les états des ports et leurs implications en matière de sécurité. Vous avez également pratiqué le filtrage des résultats pour les évaluations de sécurité. Ces compétences sont cruciales pour les administrateurs de réseau et les professionnels de la sécurité afin d'identifier les ports ouverts, de détecter les vulnérabilités, de prendre des décisions éclairées en matière de sécurité et de documenter les configurations réseau. En maîtrisant ces techniques, vous avez fait un pas important vers la maîtrise de l'évaluation et de l'administration de la sécurité des réseaux. Toujours obtenir l'autorisation appropriée avant de scanner des systèmes dans des scénarios réels, car le balayage non autorisé peut être illégal.