Apprendre l'analyse des ports 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 ports réseau à l'aide de Nmap, un puissant outil de balayage réseau open - source préféré par les professionnels de la cybersécurité. Le balayage de ports est une technique essentielle pour les administrateurs réseau et les analystes en sécurité afin de découvrir les ports ouverts et les services sur un système cible.

Vous apprendrez à effectuer un balayage TCP Connect de base, une méthode de balayage courante et fiable. Cette approche établit une connexion TCP complète avec le port cible pour vérifier son statut. À la fin de ce laboratoire, vous serez en mesure d'identifier les services ouverts sur un réseau, une première étape clé dans l'évaluation de la sécurité du réseau et le durcissement du système.


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/tcp_connect_scan("Basic TCP Connect Scan") nmap/NmapGroup -.-> nmap/save_output("Save Output to File") nmap/NmapGroup -.-> nmap/target_specification("Target Specification") subgraph Lab Skills nmap/installation -.-> lab-415936{{"Apprendre l'analyse des ports réseau avec Nmap"}} nmap/basic_syntax -.-> lab-415936{{"Apprendre l'analyse des ports réseau avec Nmap"}} nmap/tcp_connect_scan -.-> lab-415936{{"Apprendre l'analyse des ports réseau avec Nmap"}} nmap/save_output -.-> lab-415936{{"Apprendre l'analyse des ports réseau avec Nmap"}} nmap/target_specification -.-> lab-415936{{"Apprendre l'analyse des ports réseau avec Nmap"}} end

Comprendre les ports et les services réseau

Avant de commencer à apprendre le balayage, il est essentiel de comprendre ce que sont les ports réseau et pourquoi ils sont importants dans le domaine de la cybersécurité. Les ports réseau jouent un rôle crucial en permettant à différents services de communiquer sur un réseau. Ils sont comme des portes par lesquelles les données peuvent entrer et sortir d'un ordinateur.

Qu'est-ce que les ports réseau ?

Les ports réseau sont des points de terminaison virtuels pour la communication sur un réseau informatique. Imaginez-les comme des adresses spécifiques au sein d'un ordinateur où différents services peuvent recevoir et envoyer des données. Chaque port est identifié par un numéro allant de 0 à 65535. Différents services utilisent généralement des ports spécifiques. Par exemple, les serveurs web utilisent souvent le port 80 pour le protocole HTTP (Hypertext Transfer Protocol) et le port 443 pour le protocole HTTPS (HTTP Secure), qui est une version plus sécurisée du protocole HTTP. Les services SSH (Secure Shell), qui sont utilisés pour un accès distant sécurisé à un ordinateur, utilisent le port 22.

Lorsqu'un service s'exécute sur un ordinateur, il « écoute » sur un ou plusieurs ports pour les connexions entrantes. Cela signifie qu'il attend que des données arrivent sur un port particulier afin de les traiter. Le balayage de ports est le processus consistant à vérifier quels ports sur un ordinateur sont « ouverts » (ont un service qui écoute) ou « fermés » (n'acceptent pas de connexions). En effectuant un balayage de ports, nous pouvons identifier quels services s'exécutent sur un ordinateur et potentiellement trouver des vulnérabilités de sécurité.

Configuration d'un service à scanner

Maintenant, configurons un simple service sur votre machine locale que nous pourrons scanner. Nous utiliserons le serveur HTTP intégré à Python, qui est un moyen pratique de créer un serveur web de base. Ce serveur écoutera sur le port 8080.

Tout d'abord, assurez-vous d'être dans le répertoire du projet. Le répertoire du projet est l'endroit où tous les fichiers liés à cette expérience seront stockés. Vous pouvez y accéder en utilisant la commande suivante :

cd /home/labex/project

Maintenant, créons un simple fichier HTML que notre serveur hébergera. HTML (Hypertext Markup Language) est le langage standard pour créer des pages web. La commande suivante créera un fichier index.html avec un simple message de bienvenue :

echo "<html><body><h1>Welcome to Port Scanning Lab</h1></body></html>" > index.html

Ensuite, nous allons démarrer un serveur HTTP Python sur le port 8080. Nous le ferons s'exécuter en arrière-plan afin que vous puissiez continuer le laboratoire (lab) pendant que le serveur est en cours d'exécution. Le symbole & à la fin de la commande indique au système d'exécuter la commande en arrière-plan.

python3 -m http.server 8080 &

Vous devriez voir une sortie similaire à :

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

Cela signifie qu'un serveur web est maintenant en cours d'exécution sur votre machine et qu'il écoute sur le port 8080. Pour vérifier que le serveur fonctionne correctement, vous pouvez ouvrir un nouveau terminal et utiliser la commande curl. curl est un outil utilisé pour transférer des données depuis ou vers un serveur. La commande suivante enverra une requête au serveur en cours d'exécution sur votre machine locale au port 8080 :

curl http://localhost:8080

Vous devriez voir le contenu HTML que nous avons créé précédemment. Cela confirme que notre service est en cours d'exécution et prêt à être scanné.

Introduction à Nmap et au balayage TCP Connect

Maintenant que nous avons un service opérationnel, il est temps d'explorer Nmap et de comprendre comment l'utiliser pour le balayage de ports. Le balayage de ports est une technique essentielle en sécurité réseau, car il nous aide à identifier les ports ouverts sur un système cible. Les ports ouverts peuvent être des points d'entrée potentiels pour les attaquants, donc savoir quels ports sont ouverts et quels services s'exécutent sur eux est essentiel pour sécuriser un réseau.

Qu'est-ce que Nmap ?

Nmap, acronyme de Network Mapper, est l'un des outils les plus connus et les plus puissants dans le domaine de la découverte de réseau et de l'audit de sécurité. Il offre une grande variété de fonctionnalités extrêmement utiles pour les administrateurs réseau et les professionnels de la sécurité.

  • Découvrir les hôtes et les services sur un réseau : Nmap peut vous aider à savoir quels appareils sont connectés à un réseau et quels services ils proposent. Par exemple, il peut détecter s'il y a des serveurs web, des serveurs de fichiers ou des serveurs de messagerie sur un réseau local.
  • Identifier les ports ouverts sur les systèmes cibles : En envoyant des paquets à différents ports sur un système cible, Nmap peut déterminer quels ports sont ouverts et prêts à accepter des connexions.
  • Déterminer quels services s'exécutent sur ces ports : Une fois qu'un port ouvert est identifié, Nmap peut essayer de savoir quel service s'exécute sur ce port. Par exemple, si le port 80 est ouvert, il est probable qu'un serveur web s'exécute.
  • Détecter les systèmes d'exploitation et les versions de services : Nmap peut analyser les réponses d'un système cible pour deviner le système d'exploitation qu'il exécute et les versions des services. Cette information peut être utilisée pour identifier des vulnérabilités potentielles.
  • Effectuer différents types de balayages pour différents scénarios : Selon vos besoins, Nmap peut effectuer différents types de balayages, tels que les balayages TCP Connect, les balayages SYN, les balayages UDP, etc.

Comprendre le balayage TCP Connect

Le balayage TCP Connect est la forme la plus fondamentale de balayage TCP. Pour comprendre son fonctionnement, nous devons d'abord connaître l'échange de trois messages TCP (TCP three - way handshake). L'échange de trois messages TCP est un processus que deux appareils utilisent pour établir une connexion fiable. Il comporte trois étapes : le client envoie un paquet SYN (synchronize) au serveur, le serveur répond avec un paquet SYN - ACK (synchronize - acknowledgment), puis le client envoie un paquet ACK (acknowledgment) pour terminer la connexion.

Voici comment fonctionne le balayage TCP Connect :

  1. Nmap essaie d'établir un échange de trois messages TCP complet avec le port cible. Il agit comme un client normal essayant de se connecter à un service sur le système cible.
  2. Si la connexion réussit, c'est - à - dire que les trois étapes de l'échange sont terminées, le port est marqué comme "ouvert". Cela indique qu'il y a un service qui écoute sur ce port et est prêt à accepter des connexions.
  3. Si la connexion est refusée, par exemple, si le système cible envoie un paquet RST (reset), le port est marqué comme "fermé". Cela signifie qu'il n'y a pas de service qui écoute sur ce port.
  4. Si il n'y a pas de réponse du système cible, le port est marqué comme "filtré". Cela signifie généralement que le port peut être bloqué par un pare - feu ou un autre mécanisme de sécurité.

Il est important de noter que le balayage TCP Connect est fiable car il établit complètement une connexion. Cependant, il n'est pas très discret. Étant donné qu'il crée une vraie connexion, il laisse des journaux de connexion sur le système cible, ce qui pourrait alerter l'administrateur du système.

Effectuer votre premier balayage TCP Connect avec Nmap

Effectuons un balayage du service que nous avons configuré à l'étape précédente. Pour ce faire, ouvrons un nouveau terminal. Le terminal est une interface en ligne de commande où nous pouvons entrer des commandes pour interagir avec le système d'exploitation.

Une fois le terminal ouvert, exécutons la commande suivante :

nmap -sT localhost -p 8080

Décortiquons cette commande pour comprendre ce que chaque partie fait :

  • nmap : C'est le nom de l'outil que nous utilisons. Cela indique au système que nous voulons exécuter le programme Nmap.
  • -sT : C'est un indicateur qui spécifie un balayage TCP Connect. Lorsque Nmap voit cet indicateur, il effectuera un balayage TCP Connect sur la cible.
  • localhost : C'est la cible que nous balayons. Dans ce cas, localhost fait référence à notre propre machine. C'est un moyen de tester le processus de balayage sur le système local.
  • -p 8080 : Cette option spécifie le port que nous voulons balayer. Ici, nous balayons le port 8080.

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

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-20 12:34 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.04 seconds

La sortie montre les détails du balayage. Elle nous indique que Nmap a démarré, la cible qu'il a balayée, si l'hôte est actif et l'état du port que nous avons balayé. Dans ce cas, le port 8080 est marqué comme "ouvert" et le service qui s'exécute sur lui est identifié comme "http - proxy".

Maintenant, enregistrons cette sortie dans un fichier pour une référence ultérieure. Enregistrer la sortie est utile car nous pouvons la revoir plus tard ou la partager avec d'autres personnes. Pour ce faire, exécutez la commande suivante :

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

Cette commande effectue le même balayage TCP Connect que précédemment. Le symbole > est utilisé pour rediriger la sortie de la commande. Au lieu d'afficher la sortie sur l'écran du terminal, elle sera écrite dans un fichier nommé nmap_scan_output.txt situé dans le répertoire /home/labex/project.

Voyons le contenu du fichier pour confirmer que la sortie a été correctement enregistrée. Exécutez la commande suivante :

cat /home/labex/project/nmap_scan_output.txt

La commande cat est utilisée pour afficher le contenu d'un fichier. Après avoir exécuté cette commande, vous devriez voir la même sortie Nmap que précédemment, maintenant enregistrée dans le fichier.

Analyser les résultats du balayage et comprendre les états des ports

Maintenant que nous avons effectué avec succès notre premier balayage, il est temps d'approfondir l'analyse des résultats et de comprendre ce que chaque élément d'information signifie. Cette étape est cruciale car elle nous aide à interpréter les données que nous avons collectées et à tirer des conclusions pertinentes sur le système cible.

Comprendre les états des ports dans Nmap

Nmap, un puissant outil de balayage de réseau, classe les ports en six états différents. Chaque état fournit des informations précieuses sur le statut d'un port sur le système cible.

  1. open - Lorsqu'un port est signalé comme "open", cela signifie qu'une application écoute activement les connexions entrantes sur ce port. Cela indique qu'un service est en cours d'exécution et prêt à accepter des requêtes.
  2. closed - Un port "closed" signifie qu'aucune application n'écoute actuellement sur ce port. Cependant, le port reste accessible, ce qui signifie qu'il pourrait potentiellement être utilisé par un service à l'avenir.
  3. filtered - Si Nmap signale un port comme "filtered", cela signifie qu'il ne peut pas déterminer si le port est ouvert ou non. Cela est généralement dû à un pare - feu ou à une autre mesure de sécurité qui bloque l'accès au port.
  4. unfiltered - Un port "unfiltered" signifie que Nmap peut accéder au port, mais qu'il ne peut pas déterminer s'il est ouvert ou fermé. Cela peut être dû à divers facteurs, tels que la configuration du système cible ou les conditions du réseau.
  5. open|filtered - Lorsque Nmap signale un port comme "open|filtered", cela signifie qu'il ne peut pas déterminer si le port est ouvert ou filtré. C'est un résultat courant lors d'un balayage à travers un pare - feu ou un autre dispositif de sécurité.
  6. closed|filtered - Un port "closed|filtered" signifie que Nmap ne peut pas déterminer si le port est fermé ou filtré. De même que pour l'état "open|filtered", cela est souvent dû à des mesures de sécurité bloquant l'accès au port.

Dans nos résultats de balayage, le port 8080 a été signalé comme "open". Cela nous indique que notre serveur HTTP Python écoute avec succès sur ce port et est prêt à accepter les connexions entrantes.

Comprendre la détection de services

Vous avez peut - être remarqué que Nmap a identifié le service sur le port 8080 comme "http - proxy". Nmap utilise une base de données d'attributions de ports courantes pour faire une estimation éclairée sur le service qui pourrait s'exécuter sur un port. Le port 8080 est couramment utilisé pour les services de proxy HTTP, donc Nmap a fait cette hypothèse en se basant sur sa base de données.

Cependant, cette estimation n'est pas toujours précise. Pour obtenir des informations plus précises sur le service s'exécutant sur un port, vous pouvez utiliser le paramètre de détection de service (-sV). Ce paramètre indique à Nmap d'effectuer des vérifications supplémentaires pour déterminer le service exact et sa version.

Essayons d'utiliser le paramètre de détection de service :

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

Dans cette commande, -sT spécifie un balayage de connexion TCP, -sV active la détection de service, localhost est la cible que nous balayons, -p 8080 spécifie que nous ne balayons que le port 8080, et > /home/labex/project/nmap_service_output.txt redirige la sortie dans un fichier.

Maintenant, regardons la sortie :

cat /home/labex/project/nmap_service_output.txt

Après avoir exécuté cette commande, vous devriez voir des informations supplémentaires sur le service s'exécutant sur le port 8080. Il pourrait identifier le service comme "Python http.server" ou quelque chose de similaire, vous donnant une compréhension plus précise de ce qui s'exécute sur ce port.

Explorer plus d'informations avec le mode verbeux

Si vous souhaitez une compréhension plus détaillée de ce que fait Nmap pendant le balayage, vous pouvez utiliser le mode verbeux avec le paramètre -v. Le mode verbeux fournit des informations supplémentaires sur le processus de balayage, y compris des détails sur les paquets envoyés et reçus, des informations de chronométrage et les étapes exactes que Nmap a suivies pour déterminer l'état du port.

Essayons d'utiliser le mode verbeux :

nmap -sT -v localhost -p 8080 > /home/labex/project/nmap_verbose_output.txt

Dans cette commande, -sT est pour le balayage de connexion TCP, -v active le mode verbeux, localhost est la cible, -p 8080 spécifie le port à balayer, et > /home/labex/project/nmap_verbose_output.txt redirige la sortie dans un fichier.

Vérifions la sortie :

cat /home/labex/project/nmap_verbose_output.txt

La sortie verbeuse vous donnera un aperçu plus approfondi du processus de balayage, vous aidant à comprendre comment Nmap arrive à ses conclusions sur l'état du port et les services s'exécutant sur le système cible.

Élargir vos connaissances en matière de balayage

Maintenant que vous avez compris les bases du balayage TCP Connect, il est temps d'approfondir vos connaissances. Dans cette section, nous allons apprendre à balayer plusieurs ports et à interpréter les résultats. Cela vous aidera à avoir une vision plus complète des services réseau s'exécutant sur un système cible.

Balayer les ports courants

Commençons par balayer les ports les plus courants sur votre machine locale, également connue sous le nom de localhost. Ces ports courants sont souvent utilisés par des services réseau bien connus.

nmap -sT localhost --top-ports 10 > /home/labex/project/common_ports_scan.txt

Dans cette commande, l'option -sT indique à Nmap d'effectuer un balayage TCP Connect. localhost spécifie la cible, qui est votre propre machine. L'option --top-ports 10 demande à Nmap de balayer les 10 ports les plus couramment utilisés. Le symbole > redirige la sortie du balayage dans un fichier nommé common_ports_scan.txt dans le répertoire /home/labex/project.

Maintenant, regardons les résultats de ce balayage :

cat /home/labex/project/common_ports_scan.txt

La commande cat est utilisée pour afficher le contenu d'un fichier. Lorsque vous exécutez cette commande, vous verrez une liste de ports. Par exemple, le port 21 est utilisé pour le FTP (File Transfer Protocol), le port 22 pour le SSH (Secure Shell), le port 23 pour le Telnet, le port 25 pour le SMTP (Simple Mail Transfer Protocol) et le port 80 pour le HTTP (Hypertext Transfer Protocol). Sur votre système, la plupart de ces ports seront probablement fermés, sauf si vous avez des services spécifiques en cours d'exécution. Par exemple, si notre serveur HTTP sur le port 8080 fait partie des 10 ports les plus courants, il apparaîtra comme ouvert.

Balayer une plage de ports

En plus de balayer les ports courants, vous pouvez également balayer une plage spécifique de ports. Balayons les ports de 8000 à 8100 sur votre localhost.

nmap -sT localhost -p 8000-8100 > /home/labex/project/port_range_scan.txt

Ici, l'option -p 8000 - 8100 indique à Nmap de balayer les ports de la plage allant de 8000 à 8100. La sortie de ce balayage est redirigée dans un fichier nommé port_range_scan.txt dans le répertoire /home/labex/project.

Pour voir les résultats de ce balayage :

cat /home/labex/project/port_range_scan.txt

Dans la sortie, vous devriez voir que le port 8080 (s'il est dans la plage balayée) est ouvert, tandis que les autres ports de la plage sont probablement fermés.

Combiner les techniques

Combinons les techniques que nous avons apprises jusqu'à présent. Nous effectuerons un balayage TCP Connect et essaierons également de détecter les services s'exécutant sur les ports de la plage allant de 8000 à 8100.

nmap -sT -sV localhost -p 8000-8100 > /home/labex/project/combined_scan.txt

L'option -sV est utilisée pour activer la détection de service. Cela signifie que Nmap vous indiquera non seulement si un port est ouvert ou fermé, mais essaiera également d'identifier le service s'exécutant sur les ports ouverts. La sortie de ce balayage combiné est enregistrée dans le fichier combined_scan.txt dans le répertoire /home/labex/project.

Pour vérifier les résultats :

cat /home/labex/project/combined_scan.txt

Ce balayage fournit les informations les plus détaillées jusqu'à présent. Il montre l'état de chaque port dans la plage spécifiée et tente d'identifier les services s'exécutant sur les ports ouverts.

Nettoyer

Avant de terminer ce laboratoire, nous devons nettoyer en arrêtant le serveur HTTP Python que nous avons utilisé. Tout d'abord, nous devons trouver l'identifiant de processus (PID) du serveur.

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

La commande ps aux liste tous les processus en cours d'exécution sur votre système. Le symbole | est un tuyau (pipe) qui prend la sortie de la commande ps aux et la transmet à la commande grep. La commande grep recherche ensuite la ligne qui contient le texte "python3 -m http.server 8080", qui est la commande utilisée pour démarrer le serveur HTTP Python.

Recherchez la ligne qui montre le processus du serveur HTTP Python. La deuxième colonne de cette ligne contient l'identifiant de processus (PID). Une fois que vous avez noté le PID, vous pouvez utiliser la commande kill pour arrêter le processus.

kill <PID>

Remplacez <PID> par l'identifiant de processus réel que vous avez trouvé. Par exemple, si le PID est 1234, vous exécuterez :

kill 1234

Résumé

Dans ce laboratoire, vous avez appris les bases du balayage de ports réseau à l'aide de Nmap. Vous avez pratiqué la configuration d'un service pour le balayage, la réalisation de balayages TCP Connect de base et l'analyse des résultats du balayage.

Les compétences clés acquises incluent la compréhension des ports réseau et de l'importance de les balayer, la configuration d'un serveur HTTP simple, l'utilisation de Nmap pour les balayages TCP Connect, l'interprétation des états des ports, l'utilisation d'options Nmap pour obtenir des informations détaillées, le balayage de plusieurs ports et de plages de ports, et l'identification des services sur les ports ouverts. Ces compétences constituent la base de la reconnaissance réseau, essentielle pour l'administration réseau et l'évaluation de la sécurité. Au fur et à mesure de votre progression en cybersécurité, vous pourrez vous appuyer sur ces bases pour explorer des techniques avancées et des pratiques de sécurité.