Découverte Avancée d'Hôtes avec Nmap

NmapBeginner
Pratiquer maintenant

Introduction

Dans ce laboratoire, vous apprendrez à effectuer une découverte avancée d'hôtes à l'aide de Nmap. La découverte d'hôtes est le processus d'identification des périphériques actifs sur un réseau. Il s'agit d'une étape cruciale dans la reconnaissance de réseau, vous aidant à comprendre la structure du réseau et à identifier les cibles potentielles pour une analyse plus approfondie.

Vous explorerez différentes techniques Nmap, notamment :

  • Balayage de ping TCP (-PS) : Envoi de paquets TCP SYN vers des ports spécifiques pour déterminer si un hôte est en ligne et si ces ports sont ouverts.
  • Balayage de ping UDP (-PU) : Envoi de paquets UDP vers des ports spécifiques, souvent utilisé lorsque les pings TCP sont bloqués, pour déduire l'état de l'hôte en fonction des réponses ou de leur absence.
  • Ignorer le balayage de ping (-Pn) : Ignorer la phase de découverte d'hôtes par défaut de Nmap, forçant Nmap à supposer que tous les hôtes cibles sont en ligne et à passer directement au balayage de ports.
  • Combinaison de techniques : Utilisation de plusieurs méthodes de découverte pour augmenter la fiabilité de la détection d'hôtes, en particulier dans les environnements réseau complexes avec des pare-feu.
  • Sauvegarde et analyse des résultats : Enregistrement de la sortie Nmap dans un fichier pour une revue ultérieure et utilisation de commandes Linux de base pour extraire des informations précieuses des résultats du scan.

Tout au long du laboratoire, vous exécuterez des commandes telles que nmap -PS2222,8080 127.0.0.1 pour les balayages de ping TCP, nmap -PU5353 127.0.0.1 pour les pings UDP, et nmap -Pn -oN hosts.txt 127.0.0.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 et vous prépareront aux tâches de reconnaissance de réseau dans le monde réel.

Utiliser le Ping TCP sur des Ports Spécifiques avec nmap -PS

Dans cette étape, vous apprendrez à utiliser Nmap pour effectuer un balayage 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 fonctionnent sur ces ports, en particulier lorsque les pings ICMP traditionnels sont bloqués par des pare-feu.

Comprendre le ping TCP :
Contrairement à un ping ICMP traditionnel, un ping TCP envoie un paquet TCP SYN à un port spécifié sur l'hôte cible.

  • Si le port est ouvert, l'hôte cible répondra généralement par un paquet SYN/ACK.
  • Si le port est fermé, l'hôte cible répondra généralement par un paquet RST.
  • Si le port est filtrée (par exemple, par un pare-feu), il n'y aura peut-être aucune réponse.

Nmap utilise ces réponses (ou leur absence) pour déterminer si un hôte est en ligne et l'état des ports spécifiés. L'option -PS dans Nmap est utilisée pour effectuer un balayage de ping TCP SYN. Vous pouvez spécifier un ou plusieurs ports à scanner en utilisant une liste séparée par des virgules.

Pour ce laboratoire, le script de configuration a configuré plusieurs services sur votre machine locale (127.0.0.1). Nous ciblerons le service SSH sur le port 2222 et le serveur web Nginx sur le port 8080.

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

nmap -PS2222,8080 127.0.0.1

Cette commande indique à Nmap d'envoyer des paquets TCP SYN aux ports 2222 et 8080 de l'hôte 127.0.0.1.

Vous devriez voir une sortie similaire à la suivante, indiquant que l'hôte est actif et que les ports spécifiés sont ouverts :

Démarrage de Nmap 7.80 ( https://nmap.org ) le YYYY-MM-DD HH:MM CST
Rapport de balayage Nmap pour localhost (127.0.0.1)
Hôte actif (latence de 0,000085 s).
Non affiché : 995 ports fermés
PORT     ÉTAT SERVICE
22/tcp   ouvert ssh
2121/tcp ouvert ccproxy-ftp
2222/tcp ouvert EtherNetIP-1
3001/tcp ouvert nessus
8080/tcp ouvert http-proxy

Nmap terminé : 1 adresse IP (1 hôte actif) analysée en 0,05 secondes

Dans cet exemple, Nmap indique que l'hôte 127.0.0.1 est actif et que les ports 2222 (SSH) et 8080 (proxy HTTP) sont ouverts. Si un port était fermé, la sortie afficherait "fermé" au lieu de "ouvert". Si l'hôte était inactif ou inaccessible, Nmap signalerait "Hôte inactif".

Exécuter un Ping UDP avec nmap -PU

Dans cette étape, vous apprendrez à utiliser Nmap pour effectuer un balayage de ping UDP sur un port spécifique d'un hôte cible. Cette technique est particulièrement utile pour la découverte d'hôtes lorsque le ping TCP est bloqué par des pare-feu, ou lorsque vous soupçonnez qu'un hôte ne dispose que de services UDP.

Comprendre le ping UDP :
Contrairement au ping TCP, qui attend une réponse SYN/ACK ou RST, un ping UDP envoie un paquet UDP à un port spécifié.

  • Si le port est ouvert, l'hôte cible peut ne pas répondre du tout (car de nombreux services UDP n'envoient pas de réponses à moins qu'une requête spécifique ne soit effectuée).
  • Si le port est fermé, l'hôte cible répondra généralement par une erreur ICMP "port inaccessible".
  • Si le port est filtré, il n'y aura aucune réponse.

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 balayage de ping UDP. Vous devez spécifier le port à scanner. Pour ce laboratoire, nous ciblerons le service DNS sur le port 5353 de votre machine locale (127.0.0.1).

Remarque importante : Les balayages de ping UDP nécessitent des privilèges root pour lire les réponses réseau brutes. Vous devrez utiliser sudo avec la commande nmap.

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

sudo nmap -PU5353 127.0.0.1

Cette commande indique à Nmap d'envoyer un paquet UDP au port 5353 de l'hôte 127.0.0.1.

Vous devriez voir une sortie similaire à la suivante :

Démarrage de Nmap 7.80 ( https://nmap.org ) le YYYY-MM-DD HH:MM CST
Rapport de balayage Nmap pour localhost (127.0.0.1)
Hôte actif (latence de 0,0000040 s).
Non affiché : 995 ports fermés
PORT     ÉTAT SERVICE
22/tcp   ouvert ssh
2121/tcp ouvert ccproxy-ftp
2222/tcp ouvert EtherNetIP-1
3001/tcp ouvert nessus
8080/tcp ouvert http-proxy

Nmap terminé : 1 adresse IP (1 hôte actif) analysée en 0,09 secondes

Dans cet exemple, Nmap indique que l'hôte 127.0.0.1 est actif. Notez que lors de l'utilisation du ping UDP pour la découverte d'hôtes, Nmap effectue toujours son balayage de port par défaut après avoir déterminé que l'hôte est actif, c'est pourquoi vous voyez les ports TCP dans la sortie. Le ping UDP a réussi à détecter que l'hôte est en ligne.

Ignorer le Ping avec nmap -Pn

Dans cette étape, vous apprendrez à utiliser l'option -Pn dans Nmap pour ignorer le ping de découverte d'hôte. Ceci est particulièrement utile lorsque vous souhaitez scanner un hôte sans vérifier d'abord s'il est en ligne. Cela peut être utile dans les situations où les méthodes de ping traditionnelles (comme les pings ICMP ou même TCP/UDP) sont bloquées par un pare-feu, ou lorsque vous souhaitez simplement gagner du temps en supposant que l'hôte est actif.

Comprendre -Pn :
Normalement, Nmap effectue une phase de découverte d'hôte avant de scanner les ports. Cela implique l'envoi de différents types de sondes (requêtes ICMP echo, paquets TCP SYN, paquets UDP, etc.) pour déterminer si l'hôte cible est en ligne. Si Nmap détermine que l'hôte est inactif, il sautera la phase de scan de ports pour cet hôte.

L'option -Pn indique à Nmap d'ignorer complètement cette phase de découverte d'hôte et de traiter tous les hôtes cibles comme s'ils étaient en ligne. Cela signifie que Nmap passera directement à la phase de scan de ports, indépendamment du fait que l'hôte réponde ou non aux sondes de ping.

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

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

nmap -Pn 127.0.0.1

Cette commande indique à Nmap d'ignorer 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, affichant divers ports ouverts sur votre machine locale, y compris ceux configurés par l'environnement de laboratoire :

Démarrage de Nmap 7.80 ( https://nmap.org ) le YYYY-MM-DD HH:MM CST
Rapport de balayage Nmap pour localhost (127.0.0.1)
Hôte actif (latence de 0,000098 s).
Non affiché : 995 ports fermés
PORT     ÉTAT SERVICE
22/tcp   ouvert ssh
2121/tcp ouvert ccproxy-ftp
2222/tcp ouvert EtherNetIP-1
3001/tcp ouvert nessus
8080/tcp ouvert http-proxy

Nmap terminé : 1 adresse IP (1 hôte actif) analysée en 0,05 secondes

Dans cet exemple, Nmap indique que l'hôte 127.0.0.1 est actif et affiche les ports ouverts. Même si le ping ICMP ou d'autres méthodes de découverte d'hôte étaient bloqués sur le système, Nmap tenterait toujours de scanner les ports en raison de l'option -Pn.

Il est important de noter que l'utilisation de l'option -Pn peut entraîner des temps de scan plus longs si vous ciblez de nombreux hôtes, car Nmap tentera de scanner les ports sur chaque adresse IP spécifiée, même si bon nombre d'entre elles sont en réalité hors ligne.

Combiner les techniques de découverte d'hôtes

Dans cette étape, vous apprendrez à combiner les techniques de ping TCP et UDP dans Nmap pour découvrir les hôtes actifs. Combiner les techniques peut significativement améliorer la fiabilité de la découverte d'hôtes, en particulier lorsqu'il s'agit de pare-feu ou d'autres mesures de sécurité réseau qui pourraient bloquer un type de sonde mais pas un autre.

Comme vous l'avez appris dans les étapes précédentes :

  • -PS est utilisé pour le ping TCP SYN.
  • -PU est utilisé pour le ping UDP (nécessite des privilèges root).

En combinant ces options, Nmap enverra à la fois des paquets TCP SYN à un port TCP spécifié et des paquets UDP à un port UDP spécifié. Si l'une de ces sondes reçoit une réponse, Nmap considérera l'hôte comme actif. Cela fournit un moyen plus robuste de détecter les hôtes actifs.

Dans cet exemple, nous utiliserons Nmap pour envoyer un paquet TCP SYN au port 2222 (SSH) et un paquet UDP au port 5353 (DNS) sur votre machine locale (127.0.0.1).

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

sudo nmap -PS2222 -PU5353 127.0.0.1

Cette commande indique à Nmap d'effectuer les actions suivantes :

  • -PS2222 : Envoyer un paquet TCP SYN au port 2222 de l'hôte cible.
  • -PU5353 : Envoyer un paquet UDP au port 5353 de l'hôte cible.
  • 127.0.0.1 : Scanner l'hôte local.

Vous devriez voir une sortie similaire à la suivante :

Démarrage de Nmap 7.80 ( https://nmap.org ) le YYYY-MM-DD HH:MM CST
Rapport de balayage Nmap pour localhost (127.0.0.1)
Hôte actif (latence de 0,0000040 s).
Non affiché : 995 ports fermés
PORT     ÉTAT SERVICE
22/tcp   ouvert ssh
2121/tcp ouvert ccproxy-ftp
2222/tcp ouvert EtherNetIP-1
3001/tcp ouvert nessus
8080/tcp ouvert http-proxy

Nmap terminé : 1 adresse IP (1 hôte actif) analysée en 0,10 secondes

Dans cet exemple, Nmap signale que l'hôte 127.0.0.1 est actif. Nmap l'a déterminé en recevant une réponse soit au paquet TCP SYN envoyé au port 2222, soit au paquet UDP envoyé au port 5353. Après avoir confirmé que l'hôte est actif via les sondes de ping, Nmap procède à son scan de port par défaut, affichant les ports TCP ouverts.

Combiner les techniques de cette manière est souvent plus efficace qu'une seule méthode, car cela augmente les chances de contourner les pare-feu ou autres mesures de sécurité qui pourraient bloquer un type de sonde mais pas un autre, conduisant à des résultats de découverte d'hôtes plus précis.

Enregistrer les résultats de la découverte dans un fichier

Dans cette étape, vous apprendrez à enregistrer les résultats d'un scan Nmap dans un fichier à l'aide de l'option -oN. Enregistrer les résultats de scan est crucial pour documenter vos découvertes, effectuer des analyses ultérieures ou partager des informations avec d'autres.

L'option -oN indique à Nmap d'enregistrer les résultats du scan dans un format « normal » dans le fichier spécifié. Le format normal est un fichier texte lisible par l'homme, facile à visualiser et à analyser.

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

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

nmap -Pn -oN hosts.txt 127.0.0.1

Cette commande indique à Nmap d'effectuer les actions suivantes :

  • -Pn : Ignorer le ping de découverte d'hôte (supposer que l'hôte est actif).
  • -oN hosts.txt : Enregistrer les résultats du scan dans un format normal dans le fichier hosts.txt.
  • 127.0.0.1 : Scanner l'hôte 127.0.0.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, qui inclut la version Nmap, l'heure du scan, l'état de l'hôte et les ports ouverts :

## Nmap 7.80 scan lancé le mar. 3 juin 10 h 50 min 49 s 2025 comme : nmap -Pn -oN hosts.txt 127.0.0.1
Rapport de balayage Nmap pour localhost (127.0.0.1)
Hôte actif (latence de 0,000089 s).
Non affiché : 995 ports fermés
PORT     ÉTAT SERVICE
22/tcp   ouvert ssh
2121/tcp ouvert ccproxy-ftp
2222/tcp ouvert EtherNetIP-1
3001/tcp ouvert nessus
8080/tcp ouvert http-proxy

## Nmap terminé le mar. 3 juin 10 h 50 min 49 s 2025 -- 1 adresse IP (1 hôte actif) analysée en 0,05 secondes

Le fichier hosts.txt contient maintenant les résultats du scan Nmap dans un format lisible par l'homme. Vous pouvez utiliser ce fichier pour la documentation, les rapports ou des analyses plus poussées avec des commandes Linux de base comme grep pour extraire des informations spécifiques sur les hôtes et services découverts.

Résumé

Dans ce laboratoire, vous avez appris à effectuer une découverte d'hôtes avancée à l'aide de Nmap. Vous avez commencé par comprendre et appliquer des options spécifiques de Nmap pour la découverte d'hôtes :

  • Scan de ping TCP (-PS) : Vous avez utilisé nmap -PS2222,8080 127.0.0.1 pour identifier les hôtes actifs et les ports TCP ouverts.
  • Scan de ping UDP (-PU) : Vous avez exécuté sudo nmap -PU5353 127.0.0.1 pour découvrir les hôtes en utilisant des sondes UDP, ce qui est utile lorsque le TCP est restreint.
  • Ignorer le scan de ping (-Pn) : Vous avez appris à forcer Nmap à scanner les hôtes sans découverte préalable d'hôte à l'aide de nmap -Pn 127.0.0.1, ce qui est essentiel pour les environnements avec pare-feu.
  • Combinaison de techniques : Vous avez combiné les scans de ping TCP et UDP avec sudo nmap -PS2222 -PU5353 127.0.0.1 pour obtenir une détection d'hôte plus fiable.

De plus, vous avez acquis des compétences pratiques dans la gestion de la sortie Nmap :

  • Sauvegarde des résultats : Vous avez enregistré les résultats de votre scan dans un fichier lisible par l'homme à l'aide de nmap -Pn -oN hosts.txt 127.0.0.1.

En maîtrisant ces techniques Nmap, vous êtes maintenant mieux équipé pour effectuer une reconnaissance réseau efficace, identifier les périphériques actifs et recueillir des informations cruciales pour les évaluations de sécurité ou les tâches d'administration réseau. Les fichiers de sortie enregistrés peuvent être analysés plus en détail à l'aide d'outils standard de traitement de texte Linux pour des rapports et une documentation détaillés.