Effectuer une découverte d'hôtes avancée dans 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, vous allez apprendre à effectuer une découverte d'hôtes avancée à l'aide de Nmap. Le laboratoire couvre diverses techniques, notamment le ping TCP sur des ports spécifiques avec l'option -PS, le ping UDP avec l'option -PU, le saut du ping avec -Pn et la combinaison de ces techniques pour effectuer un scan exhaustif. Vous allez également apprendre à enregistrer les résultats de la découverte dans un fichier et à analyser les hôtes actifs dans le terminal Xfce.

Au cours du laboratoire, vous exécuterez des commandes telles que nmap -PS22,80 192.168.1.1 pour effectuer des scans de ping TCP, nmap -PU53 192.168.1.1 pour le ping UDP et nmap -Pn -oN hosts.txt 192.168.1.1 pour enregistrer les résultats. Ces exercices pratiques amélioreront votre compréhension des capacités de découverte d'hôtes de Nmap.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL nmap(("Nmap")) -.-> nmap/NmapGroup(["Nmap"]) nmap/NmapGroup -.-> nmap/tcp_connect_scan("Basic TCP Connect Scan") nmap/NmapGroup -.-> nmap/save_output("Save Output to File") nmap/NmapGroup -.-> nmap/port_scanning("Port Scanning Methods") nmap/NmapGroup -.-> nmap/host_discovery("Host Discovery Techniques") nmap/NmapGroup -.-> nmap/target_specification("Target Specification") nmap/NmapGroup -.-> nmap/udp_scanning("UDP Scanning Techniques") subgraph Lab Skills nmap/tcp_connect_scan -.-> lab-547102{{"Effectuer une découverte d'hôtes avancée dans Nmap"}} nmap/save_output -.-> lab-547102{{"Effectuer une découverte d'hôtes avancée dans Nmap"}} nmap/port_scanning -.-> lab-547102{{"Effectuer une découverte d'hôtes avancée dans Nmap"}} nmap/host_discovery -.-> lab-547102{{"Effectuer une découverte d'hôtes avancée dans Nmap"}} nmap/target_specification -.-> lab-547102{{"Effectuer une découverte d'hôtes avancée dans Nmap"}} nmap/udp_scanning -.-> lab-547102{{"Effectuer une découverte d'hôtes avancée dans Nmap"}} end

Utiliser le ping TCP sur des ports avec nmap -PS22,80 192.168.1.1

Dans cette étape, vous allez apprendre à utiliser Nmap pour effectuer un scan de ping TCP sur des ports spécifiques d'un hôte cible. Cette technique est utile pour déterminer si un hôte est en ligne et si des services spécifiques sont exécutés sur ces ports.

Avant de commencer, clarifions ce qu'est un ping TCP. Contrairement à un ping ICMP traditionnel, un ping TCP envoie un paquet TCP SYN vers un port spécifié sur l'hôte cible. Si le port est ouvert, l'hôte cible répondra avec un paquet SYN/ACK. Si le port est fermé, l'hôte cible répondra avec un paquet RST. Nmap utilise ce comportement pour déterminer si un hôte est en ligne et si un port est ouvert ou fermé.

L'option -PS dans Nmap est utilisée pour effectuer un scan de ping TCP SYN. Vous pouvez spécifier un ou plusieurs ports à scanner en utilisant une liste séparée par des virgules.

Essayons un exemple. Nous allons utiliser Nmap pour effectuer un scan de ping TCP sur les ports 22 et 80 de l'hôte 192.168.1.1.

Ouvrez votre terminal dans la machine virtuelle LabEx. Rappelez-vous que votre répertoire par défaut est ~/project. Exécutez la commande suivante :

nmap -PS22,80 192.168.1.1

Cette commande indique à Nmap d'envoyer des paquets TCP SYN vers les ports 22 et 80 de l'hôte 192.168.1.1.

Vous devriez voir une sortie similaire à la suivante :

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:00 UTC
Nmap scan report for 192.168.1.1
Host is up (0.0013s latency).
PORT   STATE SERVICE
22/tcp open  ssh
80/tcp open  http

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

Dans cet exemple, Nmap indique que l'hôte 192.168.1.1 est en ligne et que les ports 22 (SSH) et 80 (HTTP) sont ouverts. Si un port était fermé, la sortie montrerait "closed" au lieu de "open". Si l'hôte était éteint, Nmap signalerait "Host is down".

Maintenant, considérons un scénario où l'hôte cible n'est pas accessible ou est protégé par un pare-feu. Dans de tels cas, Nmap peut ne pas recevoir de réponse, et la sortie indiquera que l'hôte est éteint ou que les ports sont filtrés.

nmap -PS22,80 192.168.1.2

Si 192.168.1.2 n'est pas accessible, vous pouvez voir :

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:00 UTC
Nmap scan report for 192.168.1.2
Host is down (no responses received).

Nmap done: 1 IP address (0 hosts up) scanned in 5.03s

Cela indique que Nmap n'a pas reçu de réponse de l'hôte cible, ce qui suggère qu'il pourrait être éteint ou inaccessible en raison de problèmes réseau ou de règles de pare-feu.

Effectuer un ping UDP avec nmap -PU53 192.168.1.1

Dans cette étape, vous allez apprendre à utiliser Nmap pour effectuer un scan de ping UDP sur un port spécifique d'un hôte cible. Cette technique est utile pour déterminer si un hôte est en ligne, en particulier lorsque le ping TCP est bloqué par des pare-feu.

Avant de commencer, comprenons ce qu'est un ping UDP. Contrairement au ping TCP, qui envoie un paquet TCP SYN, un ping UDP envoie un paquet UDP vers un port spécifié sur l'hôte cible. Si le port est ouvert, l'hôte cible peut ne pas répondre du tout (car de nombreux services UDP ne renvoient pas de réponse à moins qu'une demande spécifique ne soit faite). Si le port est fermé, l'hôte cible répondra généralement avec une erreur ICMP "port inaccessible". Nmap utilise la présence ou l'absence d'une réponse (ou le type de réponse) pour déterminer si un hôte est en ligne.

L'option -PU dans Nmap est utilisée pour effectuer un scan de ping UDP. Vous devez spécifier le port à scanner. Un port commun à utiliser pour le ping UDP est le port 53 (DNS), car les serveurs DNS sont souvent accessibles.

Essayons un exemple. Nous allons utiliser Nmap pour effectuer un scan de ping UDP sur le port 53 de l'hôte 192.168.1.1.

Ouvrez votre terminal dans la machine virtuelle LabEx. Rappelez-vous que votre répertoire par défaut est ~/project. Exécutez la commande suivante :

nmap -PU53 192.168.1.1

Cette commande indique à Nmap d'envoyer un paquet UDP vers le port 53 de l'hôte 192.168.1.1.

Vous devriez voir une sortie similaire à la suivante :

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:00 UTC
Nmap scan report for 192.168.1.1
Host is up (0.0020s latency).
PORT   STATE         SERVICE
53/udp open|filtered domain

Nmap done: 1 IP address (1 host up) scanned in 2.03s

Dans cet exemple, Nmap indique que l'hôte 192.168.1.1 est en ligne. L'état du port 53 est affiché comme open|filtered. Cela signifie que Nmap a reçu une réponse du port (ce qui indique qu'il est ouvert) ou n'a pas reçu de réponse mais n'a pas pu déterminer définitivement si le port est fermé (ce qui indique qu'il est filtré, probablement par un pare-feu).

Maintenant, considérons un scénario où l'hôte cible n'est pas accessible. Dans de tels cas, Nmap peut ne pas recevoir de réponse, et la sortie indiquera que l'hôte est éteint.

nmap -PU53 192.168.1.2

Si 192.168.1.2 n'est pas accessible, vous pouvez voir :

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:00 UTC
Nmap scan report for 192.168.1.2
Host is down (no responses received).

Nmap done: 1 IP address (0 hosts up) scanned in 5.03s

Cela indique que Nmap n'a pas reçu de réponse de l'hôte cible, ce qui suggère qu'il pourrait être éteint ou inaccessible.

Éviter le ping avec nmap -Pn 127.0.0.1

Dans cette étape, vous allez apprendre à utiliser l'option -Pn dans Nmap pour ignorer le ping de découverte d'hôte. Cela est utile lorsque vous voulez scanner un hôte sans vérifier d'abord s'il est en ligne. Cela peut être pratique dans des situations où le ping est bloqué par un pare-feu, ou lorsque vous voulez gagner du temps en supposant que l'hôte est actif.

Normalement, Nmap effectue une phase de découverte d'hôte avant de scanner les ports. Cela implique d'envoyer divers types de sondes (ICMP, TCP SYN, etc.) pour déterminer si l'hôte cible est en ligne. Si Nmap détermine que l'hôte est éteint, il saute la phase de balayage des ports.

L'option -Pn indique à Nmap de sauter cette phase de découverte d'hôte et de considérer tous les hôtes cibles comme étant en ligne. Cela signifie que Nmap passera directement à la phase de balayage des ports, quelle que soit la réponse de l'hôte aux sondes de ping.

Essayons un exemple. Nous allons utiliser Nmap avec l'option -Pn pour scanner l'adresse localhost 127.0.0.1.

Ouvrez votre terminal dans la machine virtuelle LabEx. Rappelez-vous que votre répertoire par défaut est ~/project. Exécutez la commande suivante :

nmap -Pn 127.0.0.1

Cette commande indique à Nmap de sauter le ping de découverte d'hôte et de scanner les ports de 127.0.0.1.

Vous devriez voir une sortie similaire à la suivante :

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:00 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000073s latency).
Not shown: 997 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
631/tcp  open  ipp
3306/tcp open  mysql

Nmap done: 1 IP address (1 host up) scanned in 0.10s

Dans cet exemple, Nmap indique que l'hôte 127.0.0.1 est actif et montre les ports ouverts. Même si le ping ICMP était bloqué sur le système, Nmap scannerait toujours les ports en raison de l'option -Pn.

Il est important de noter que l'utilisation de l'option -Pn peut entraîner des résultats inexacts si l'hôte cible est effectivement éteint. Nmap tentera toujours de scanner les ports, mais il peut ne pas recevoir de réponse, ce qui peut conduire à des conclusions erronées sur l'état de l'hôte.

Combiner des techniques avec nmap -PS22 -PU53 192.168.1.0/24

Dans cette étape, vous allez apprendre à combiner les techniques de ping TCP et UDP dans Nmap pour découvrir les hôtes actifs sur un réseau. La combinaison de techniques peut augmenter la fiabilité de la découverte d'hôtes, en particulier lorsqu'il s'agit de traiter des pare-feu ou d'autres mesures de sécurité réseau.

Comme vous l'avez appris dans les étapes précédentes, -PS est utilisé pour le ping TCP SYN et -PU est utilisé pour le ping UDP. En combinant ces techniques, vous pouvez envoyer à la fois des paquets TCP SYN vers un port spécifique et des paquets UDP vers un autre port. Si l'une de ces sondes reçoit une réponse, Nmap considérera l'hôte comme actif.

Dans cet exemple, nous allons utiliser Nmap pour envoyer un paquet TCP SYN vers le port 22 (SSH) et un paquet UDP vers le port 53 (DNS) sur tout le réseau 192.168.1.0/24.

Ouvrez votre terminal dans la machine virtuelle LabEx. Rappelez-vous que votre répertoire par défaut est ~/project. Exécutez la commande suivante :

nmap -PS22 -PU53 192.168.1.0/24

Cette commande indique à Nmap de réaliser les actions suivantes :

  • -PS22 : Envoyer un paquet TCP SYN vers le port 22 de chaque hôte dans le réseau cible.
  • -PU53 : Envoyer un paquet UDP vers le port 53 de chaque hôte dans le réseau cible.
  • 192.168.1.0/24 : Scanner tout le réseau 192.168.1.0/24. Il s'agit d'une notation CIDR qui spécifie une plage d'adresses IP allant de 192.168.1.0 à 192.168.1.255.

Vous devriez voir une sortie similaire à la suivante :

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:00 UTC
Nmap scan report for 192.168.1.1
Host is up (0.0016s latency).
Nmap scan report for 192.168.1.10
Host is up (0.0020s latency).
Nmap scan report for 192.168.1.20
Host is up (0.0025s latency).
...
Nmap done: 256 IP addresses (3 hosts up) scanned in 5.03 seconds

Dans cet exemple, Nmap indique que les hôtes 192.168.1.1, 192.168.1.10 et 192.168.1.20 sont actifs. Nmap a déterminé cela en recevant une réponse au paquet TCP SYN envoyé vers le port 22 ou au paquet UDP envoyé vers le port 53.

La combinaison de techniques de cette manière peut être plus efficace que l'utilisation d'une seule technique, car elle augmente les chances de contourner les pare-feu ou d'autres mesures de sécurité qui pourraient bloquer un type de sonde mais pas un autre.

Sauvegarder les résultats de découverte avec nmap -Pn -oN hosts.txt 192.168.1.1

Dans cette étape, vous allez apprendre à sauvegarder les résultats d'un scan Nmap dans un fichier à l'aide de l'option -oN. Cela est pratique pour documenter vos découvertes et pour une analyse ultérieure.

L'option -oN indique à Nmap de sauvegarder les résultats du scan dans un format "normal" dans le fichier spécifié. Le format normal est un format lisible par l'homme et facile à analyser.

Dans cet exemple, nous allons utiliser Nmap pour scanner l'hôte 192.168.1.1, ignorer le ping de découverte d'hôte (-Pn), et sauvegarder les résultats dans un fichier nommé hosts.txt dans votre répertoire ~/project.

Ouvrez votre terminal dans la machine virtuelle LabEx. Rappelez-vous que votre répertoire par défaut est ~/project. Exécutez la commande suivante :

nmap -Pn -oN hosts.txt 192.168.1.1

Cette commande indique à Nmap de réaliser les actions suivantes :

  • -Pn : Ignorer le ping de découverte d'hôte.
  • -oN hosts.txt : Sauvegarder les résultats du scan dans le format normal dans le fichier hosts.txt.
  • 192.168.1.1 : Scanner l'hôte 192.168.1.1.

Une fois le scan terminé, vous pouvez afficher le contenu du fichier hosts.txt à l'aide de la commande cat :

cat hosts.txt

Vous devriez voir une sortie similaire à la suivante :

## Nmap 7.80 scan initiated Tue Oct 27 10:00:00 2023 as: nmap -Pn -oN hosts.txt 192.168.1.1
Nmap scan report for 192.168.1.1
Host is up (0.000073s latency).
Not shown: 997 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
80/tcp   open  http
443/tcp  open  https

## Nmap done at Tue Oct 27 10:00:05 2023 -- 1 IP address (1 host up) scanned in 5.03 seconds

Le fichier hosts.txt contient désormais les résultats du scan Nmap dans un format lisible par l'homme. Vous pouvez utiliser ce fichier pour la documentation, le rapport ou une analyse plus approfondie.

Analyser les hôtes actifs dans le terminal Xfce

Dans cette étape, vous allez apprendre à analyser les résultats d'un scan Nmap directement dans le terminal Xfce. Vous utiliserez des commandes Linux de base pour filtrer et extraire des informations à partir du fichier hosts.txt que vous avez créé dans l'étape précédente. Cela vous aidera à identifier rapidement les hôtes actifs et leurs ports ouverts.

Tout d'abord, examinons le contenu du fichier hosts.txt. Ouvrez votre terminal dans la machine virtuelle LabEx. Rappelez-vous que votre répertoire par défaut est ~/project. Exécutez la commande suivante :

cat hosts.txt

Vous devriez voir les résultats du scan Nmap, y compris l'état de l'hôte (actif ou inactif) et les ports ouverts.

Pour extraire seulement les lignes qui indiquent qu'un hôte est actif, vous pouvez utiliser la commande grep :

grep "Host is up" hosts.txt

Cette commande filtrera le fichier hosts.txt et affichera seulement les lignes qui contiennent la chaîne "Host is up". La sortie ressemblera à ceci :

Nmap scan report for 192.168.1.1
Host is up (0.000073s latency).

Cela vous indique que l'hôte 192.168.1.1 est actif.

Pour extraire l'adresse IP de l'hôte actif, vous pouvez combiner grep avec awk. awk est un puissant outil de traitement de texte qui peut être utilisé pour extraire des champs spécifiques d'une ligne de texte.

grep "Host is up" hosts.txt | awk '{print $5}'

Cette commande filtre d'abord le fichier hosts.txt pour trouver les lignes contenant "Host is up", puis utilise awk pour imprimer le cinquième champ ($5) de chaque ligne correspondante, qui est l'adresse IP. La sortie sera :

192.168.1.1

Pour trouver les ports ouverts pour un hôte spécifique, vous pouvez utiliser grep pour filtrer le fichier hosts.txt pour les lignes contenant le numéro de port. Par exemple, pour trouver les ports ouverts pour 192.168.1.1, vous pouvez utiliser la commande suivante :

grep "192.168.1.1" hosts.txt

Cela montrera toutes les lignes dans le fichier hosts.txt qui contiennent 192.168.1.1, y compris les lignes qui listent les ports ouverts.

En combinant ces commandes Linux de base, vous pouvez rapidement analyser les résultats d'un scan Nmap directement dans le terminal Xfce et extraire les informations dont vous avez besoin.

Sommaire

Dans ce laboratoire, les participants apprennent à effectuer une découverte d'hôtes avancée à l'aide de Nmap. Ils commencent par utiliser le ping TCP sur des ports spécifiques avec l'option -PS, par exemple nmap -PS22,80 192.168.1.1, pour vérifier si un hôte est en ligne et si des services spécifiques sont en cours d'exécution. Ils effectuent également un ping UDP avec -PU, ignorent le ping avec -Pn et combinent des techniques pour effectuer des scans plus larges. De plus, ils apprennent à sauvegarder les résultats de la découverte dans un fichier et à analyser les hôtes actifs dans le terminal Xfce.