Effectuer une analyse de réseau furtive avec Nmap

NmapBeginner
Pratiquer maintenant

Introduction

Dans ce laboratoire, vous apprendrez à effectuer des analyses de réseau furtives à l'aide de Nmap, un outil open-source puissant pour la découverte de réseaux et l'audit de sécurité. L'analyse furtive est essentielle en cybersécurité, permettant aux professionnels de la sécurité d'identifier les vulnérabilités du réseau tout en réduisant le risque de détection.

Vous explorerez différentes techniques de scan Nmap, en commençant par les scans furtifs de base et en passant aux méthodes plus avancées et discrètes. Ces compétences sont essentielles pour les professionnels de la sécurité effectuant des audits de réseau sans déclencher les systèmes de sécurité existants ni alerter les menaces potentielles sur le réseau. À la fin du laboratoire, vous acquerrez une expérience pratique de l'analyse furtive de Nmap et saurez comment appliquer ces techniques dans les évaluations de sécurité du monde réel.

Configuration de votre environnement de test

Dans cette étape, nous allons préparer votre environnement pour l'audit de réseau furtif. Nous allons configurer un serveur web simple qui servira de cible pour nos analyses. Disposer d'une cible contrôlée comme celle-ci est crucial car elle vous permet de pratiquer les techniques d'analyse furtive sans affecter les systèmes du monde réel.

Tout d'abord, nous devons ouvrir un terminal. Le terminal est comme une interface de ligne de commande où vous pouvez saisir des commandes pour interagir avec votre ordinateur. Une fois que vous avez ouvert le terminal, vous naviguerez vers votre espace de travail. Votre espace de travail est un répertoire spécifique où vous conserverez tous vos fichiers liés au projet. Pour ce faire, utilisez la commande suivante :

cd /home/labex/project

La commande cd signifie "changer de répertoire". Elle indique au système de se déplacer de votre emplacement actuel vers le répertoire spécifié, qui dans ce cas est /home/labex/project.

Maintenant que vous êtes dans votre espace de travail, nous allons créer un nouveau répertoire appelé stealth. Les répertoires sont comme des dossiers sur votre ordinateur, et la création d'un répertoire dédié vous aide à organiser votre travail. Utilisez la commande suivante pour créer le répertoire :

mkdir -p /home/labex/project/stealth

La commande mkdir sert à créer un nouveau répertoire. L'option -p garantit que si des répertoires intermédiaires dans le chemin n'existent pas, ils seront également créés.

Après avoir créé le répertoire, vous devez y naviguer. Ainsi, tous les fichiers que vous créez seront stockés dans le répertoire stealth. Utilisez à nouveau la commande cd :

cd /home/labex/project/stealth

Ensuite, nous allons créer un fichier HTML simple. HTML (Hypertext Markup Language) est le langage standard pour créer des pages web. Ce fichier sera servi par notre serveur web, simulant un service web du monde réel. Utilisez la commande suivante pour créer le fichier :

echo "Serveur robotique en cours d'exécution..." > index.html

La commande echo affiche le texte "Serveur robotique en cours d'exécution..." dans le terminal. Le symbole > redirige cette sortie et l'écrit dans un nouveau fichier appelé index.html.

Maintenant, nous devons configurer un résolveur DNS. DNS (Domain Name System) est comme un annuaire téléphonique pour Internet. Il traduit les noms de domaine (comme google.com) en adresses IP. En configurant un résolveur DNS, nous nous assurons que notre système peut se connecter correctement aux autres réseaux. Utilisez la commande suivante :

sudo sh -c 'echo "nameserver 8.8.8.8" > /etc/resolv.conf'

La commande sudo vous accorde des privilèges d'administrateur pour effectuer des actions qui nécessitent des autorisations spéciales. La commande sh -c est utilisée pour exécuter une commande shell. Nous écrivons la ligne "nameserver 8.8.8.8" dans le fichier /etc/resolv.conf, qui est l'endroit où le système stocke la configuration DNS.

Enfin, nous allons démarrer un serveur web simple à l'aide de la commande nc (netcat). Netcat est un utilitaire réseau polyvalent qui peut être utilisé pour diverses tâches, notamment la configuration d'un serveur simple. Ce serveur écoutera sur le port 8080 et servira le fichier HTML que nous avons créé précédemment. Utilisez la commande suivante :

nc -lvp 8080 < index.html &

Décomposons cette commande :

  • nc est l'utilitaire netcat pour les connexions réseau. Il vous permet de créer des connexions entre différents points de terminaison réseau.
  • -l indique à netcat d'écouter les connexions entrantes. Au lieu d'essayer de se connecter à un autre serveur, il attendra que d'autres se connectent à lui.
  • -v active la sortie détaillée. Cela signifie que netcat fournira des informations plus détaillées sur ce qu'il fait.
  • -p 8080 spécifie le port d'écoute. Les ports sont comme des portes sur un ordinateur, et dans ce cas, nous ouvrons le port 8080 aux connexions entrantes.
  • < index.html transmet le contenu de index.html à toute connexion. Lorsqu'un client se connecte à notre serveur, il recevra le contenu du fichier index.html.
  • & exécute le processus en arrière-plan. De cette façon, vous pouvez continuer à utiliser le terminal pour exécuter d'autres commandes pendant que le serveur fonctionne.

Après avoir exécuté la commande, vous devriez voir une sortie indiquant que le serveur écoute sur le port 8080 :

Écoute sur 0.0.0.0 8080

Vous avez maintenant un serveur web fonctionnant sur le port 8080 qui servira de cible pour les exercices d'analyse furtive.

Exécution d'analyses furtives de base avec Nmap

Dans cette étape, nous allons apprendre à effectuer une analyse furtive de base à l'aide de Nmap. Mais d'abord, comprenons ce qu'est une analyse furtive. L'analyse furtive, également connue sous le nom d'analyse SYN, est une technique très utile dans le domaine de la sécurité réseau. Lorsque vous essayez de déterminer quels ports sont ouverts sur un système cible, une analyse furtive peut vous aider à le faire tout en réduisant les risques d'être détecté par la cible. Ceci est important car si le système cible détecte votre analyse, il pourrait prendre des mesures défensives ou consigner votre activité.

Maintenant, avant de commencer l'analyse, nous devons nous assurer que nous sommes au bon endroit. Nous allons revenir à notre espace de travail principal. C'est comme retourner à votre base d'opérations où tous vos fichiers liés au projet sont stockés. Pour ce faire, nous utiliserons la commande suivante :

cd /home/labex/project

Comprendre l'analyse furtive

Pour bien comprendre le fonctionnement d'une analyse furtive, nous devons d'abord connaître les connexions TCP traditionnelles. Une connexion TCP traditionnelle suit un processus de trois voies. Il s'agit d'une série d'étapes que le client et le serveur suivent pour établir une connexion.

  1. Le client envoie un paquet SYN (synchronisation) au serveur. C'est comme si le client disait "Hé, je veux démarrer une conversation."
  2. Si le serveur est prêt à parler, il répond avec un paquet SYN-ACK (synchronisation-accusé de réception). C'est comme si le serveur disait "Bien sûr, je suis prêt à parler."
  3. Enfin, le client envoie un paquet ACK (accusé de réception) pour compléter la connexion. C'est comme si le client disait "Parfait, commençons la conversation."

Cependant, une analyse furtive ne suit pas ce processus complet. Au lieu de cela :

  1. Le client envoie un paquet SYN au serveur, comme dans une connexion normale.
  2. Si le port sur le serveur est ouvert, le serveur répond avec un paquet SYN-ACK.
  3. Mais voici la différence. Au lieu d'envoyer un paquet ACK pour compléter la connexion, le client envoie un paquet RST (réinitialisation). Cela empêche la connexion d'être complètement établie.

La raison pour laquelle cela est utile est que le système cible est moins susceptible de consigner ce type d'interaction car la connexion n'est jamais complètement établie. C'est donc une méthode discrète pour découvrir quels ports sont ouverts sans laisser de grandes traces.

Exécution d'une analyse furtive

Maintenant que nous comprenons comment fonctionne une analyse furtive, exécutons-en une contre notre serveur web local. Nous utiliserons la commande Nmap suivante :

sudo nmap -sS -p 8080 localhost > /home/labex/project/stealth_scan.txt

Décomposons cette commande pour que vous sachiez exactement ce que chaque partie fait :

  • sudo est utilisé car les analyses furtives nécessitent un accès aux sockets bruts. L'accès aux sockets bruts est une méthode de bas niveau d'interaction avec le réseau, et elle nécessite des autorisations spéciales. Par conséquent, nous utilisons sudo pour exécuter la commande avec des privilèges d'administrateur.
  • nmap est l'outil d'analyse que nous utilisons. C'est un outil très populaire et puissant pour l'exploration de réseaux et l'audit de sécurité.
  • -sS spécifie que nous voulons effectuer une analyse furtive SYN. Cela indique à Nmap d'utiliser la technique d'analyse furtive que nous venons d'apprendre.
  • -p 8080 indique à Nmap de ne scanner que le port 8080. Parfois, vous souhaiterez peut-être scanner plusieurs ports, mais dans ce cas, nous ne sommes intéressés que par le port 8080.
  • localhost est la cible de notre analyse. Puisque nous exécutons cela sur notre machine locale, localhost fait référence à notre propre ordinateur.
  • > /home/labex/project/stealth_scan.txt redirige la sortie de l'analyse vers un fichier texte. De cette façon, nous pouvons enregistrer les résultats et les consulter plus tard.

Après avoir exécuté l'analyse, nous voulons voir les résultats. Pour ce faire, nous utiliserons la commande suivante :

cat /home/labex/project/stealth_scan.txt

Lorsque vous exécutez cette commande, vous devriez voir une sortie similaire à ceci :

Démarrage de Nmap 7.80 ( https://nmap.org ) le 2023-10-25 à 12h00 UTC
Rapport d'analyse Nmap pour localhost (127.0.0.1)
L'hôte est actif (latence de 0,000097 s).

PORT     ÉTAT SERVICE
8080/tcp ouvert  http-proxy

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

Remarquez que Nmap a correctement identifié que le port 8080 est ouvert. Cela signifie que notre analyse furtive a réussi à détecter le serveur web que nous avons configuré à l'étape 1.

Comprendre les états des ports

Lors de l'analyse des résultats d'analyse, vous remarquerez que Nmap signale les ports dans différents états :

  1. ouvert - Un service accepte activement les connexions sur ce port
  2. fermé - Le port est accessible, mais aucun service n'écoute
  3. filtré - Un pare-feu ou un obstacle réseau bloque le port
  4. non filtré - Le port est accessible, mais Nmap ne peut pas déterminer s'il est ouvert ou fermé
  5. ouvert|filtré - Nmap ne peut pas déterminer si le port est ouvert ou filtré

Dans notre analyse, le port 8080 est signalé comme ouvert, ce qui indique que notre serveur web accepte activement les connexions.

L'avantage de l'utilisation d'une analyse furtive est qu'elle nous fournit des résultats précis tout en étant moins intrusive qu'une analyse complète de connexion TCP. Une analyse complète de connexion TCP passe par l'ensemble du processus de trois voies, ce qui est plus susceptible d'être remarqué par le système cible et de déclencher des alertes sur les systèmes surveillés.

Techniques avancées de balayage furtif

Dans cette étape, nous allons explorer des techniques d'analyse plus avancées offrant un niveau de furtivité encore plus élevé. Ces techniques sont cruciales en cybersécurité car elles permettent de recueillir des informations sur un réseau cible sans être facilement détecté. Une telle technique puissante est l'analyse inactive, également connue sous le nom d'analyse zombie. Cette méthode vous permet d'analyser une cible tout en masquant votre identité derrière un autre hôte.

Avant de commencer, il est important de vous assurer que vous êtes dans votre espace de travail. C'est là que tous vos fichiers et commandes liés au projet seront exécutés. Pour naviguer vers votre espace de travail, exécutez la commande suivante dans votre terminal :

cd /home/labex/project

Comprendre l'analyse inactive

L'analyse inactive est l'une des techniques d'analyse les plus furtives disponibles dans Nmap. Mais comment fonctionne-t-elle ? Eh bien, elle utilise un hôte tiers, que nous appelons un « zombie », pour effectuer l'analyse. Cela donne l'impression que l'analyse provient de l'hôte zombie et non de vous.

Décomposons le processus d'une analyse inactive étape par étape :

  1. Tout d'abord, le scanner envoie une sonde à l'hôte zombie. Cette sonde aide le scanner à déterminer la séquence actuelle d'ID IP du zombie. La séquence d'ID IP est un numéro unique que l'hôte attribue à chaque paquet IP qu'il envoie.
  2. Ensuite, le scanner envoie un paquet SYN à la cible. Cependant, il définit l'adresse IP source de ce paquet comme étant l'adresse IP du zombie. Un paquet SYN est utilisé pour initier une connexion TCP.
  3. Si le port de la cible est ouvert, la cible répondra avec un paquet SYN-ACK. Ce paquet est envoyé au zombie car c'est l'adresse IP source qu'il a vue dans le paquet SYN.
  4. Le zombie, qui ne s'attendait pas à ce paquet SYN-ACK, enverra un paquet RST à la cible. Un paquet RST est utilisé pour réinitialiser une connexion TCP.
  5. Le scanner sonde ensuite à nouveau le zombie. Il vérifie si la séquence d'ID IP du zombie a augmenté.
  6. Si la séquence d'ID IP a été incrémentée, cela indique que le port de la cible est ouvert. En effet, le zombie a envoyé un paquet RST en réponse au SYN-ACK de la cible.

La beauté de cette technique réside dans sa furtivité. La cible ne voit que la communication provenant du zombie, pas du scanner réel. Ainsi, il est très difficile pour la cible de détecter qu'elle est analysée.

Exécution d'une analyse inactive

Maintenant, exécutons une analyse inactive à l'aide de Nmap. Dans une situation réelle, vous utiliseriez un hôte zombie externe. Mais pour ce laboratoire, nous allons simuler le processus en utilisant votre machine locale.

Exécutez la commande suivante dans votre terminal :

sudo nmap -sI 127.0.0.1 localhost -p 8080 > /home/labex/project/idle_scan.txt

Commençons par comprendre chaque partie de cette commande :

  • sudo est utilisé car Nmap a besoin d'un accès aux sockets bruts pour effectuer l'analyse inactive. L'accès aux sockets bruts permet à Nmap de créer et d'envoyer des paquets IP personnalisés, ce qui est nécessaire pour ce type d'analyse.
  • nmap est l'outil d'analyse bien connu que nous utilisons pour cette tâche.
  • -sI 127.0.0.1 spécifie que nous effectuons une analyse inactive et utilisons 127.0.0.1 (qui est le localhost) comme hôte zombie.
  • localhost est la cible que nous voulons analyser.
  • -p 8080 indique à Nmap de ne scanner que le port 8080 sur la cible.
  • > /home/labex/project/idle_scan.txt redirige la sortie de l'analyse vers un fichier texte. De cette façon, nous pouvons facilement revoir les résultats plus tard.

Après avoir exécuté l'analyse, examinons les résultats. Utilisez la commande suivante pour afficher le contenu du fichier de sortie :

cat /home/labex/project/idle_scan.txt

Vous pourriez voir une sortie similaire à ceci :

Démarrage de Nmap 7.80 ( https://nmap.org ) le 2023-10-25 à 12h10 UTC
Analyse inactive utilisant le zombie 127.0.0.1 (127.0.0.1:80); Classe : Incrémentale
Saut de l'analyse inactive contre localhost (127.0.0.1) -- vous ne pouvez pas effectuer d'analyse inactive sur votre propre machine (localhost).
Rapport d'analyse Nmap pour localhost (127.0.0.1)
L'hôte est actif.

PORT     ÉTAT   SERVICE
8080/tcp inconnu http-proxy

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

Remarquez que Nmap signale qu'il saute l'analyse inactive. En effet, vous essayez d'utiliser votre propre machine à la fois comme zombie et comme cible. Dans un scénario réel avec des hôtes distincts, cette technique serait très efficace pour les analyses secrètes.

Même si nous avons cette limitation dans notre environnement de laboratoire, cet exercice vous montre toujours comment utiliser la commande d'analyse inactive. En pratique, vous choisiriez un autre hôte comme zombie, et l'analyse s'exécuterait sans ce message d'avertissement.

Cette technique avancée est très précieuse lorsque vous avez besoin d'une furtivité maximale. Elle rend extrêmement difficile pour la cible de retracer l'analyse jusqu'au scanner réel.

Comparaison des résultats d'analyse

Comparons les sorties des deux types d'analyse pour voir les différences :

echo "=== Résultats de l'analyse furtive ===" && cat /home/labex/project/stealth_scan.txt
echo "=== Résultats de l'analyse inactive ===" && cat /home/labex/project/idle_scan.txt

Les deux analyses ont réussi à détecter le port 8080 ouvert, mais l'analyse inactive affiche des informations supplémentaires sur la technique d'analyse utilisée.

Nettoyage

Avant de terminer, nettoyons notre environnement en arrêtant le serveur web :

pkill -f "nc -lvp 8080"

Cela met fin au processus netcat exécutant notre serveur web sur le port 8080.

Résumé

Dans ce laboratoire, vous avez appris à effectuer des analyses de réseau furtives à l'aide de Nmap, une compétence essentielle pour les professionnels de la cybersécurité. Vous avez commencé par configurer un environnement de test avec un serveur web simple pour vous entraîner à l'analyse dans un cadre contrôlé. Ensuite, vous avez exploré l'analyse furtive de base avec la technique d'analyse SYN, qui offre des résultats précis et réduit le risque de détection, la rendant utile pour les audits de sécurité sans alerter les systèmes surveillés.

Enfin, vous vous êtes plongé dans des méthodes d'analyse secrète plus avancées, telles que l'analyse inactive, qui peut masquer l'origine de l'analyse. Bien que son application ait été limitée dans l'environnement de laboratoire, vous avez appris comment elle fonctionne dans des scénarios réels. Vous avez également pratiqué l'interprétation des résultats d'analyse en comprenant les différents états des ports et en comparant les sorties de différentes techniques d'analyse. La maîtrise de ces techniques d'analyse furtive vous permet d'effectuer des évaluations complètes du réseau dans le cadre de votre travail en cybersécurité.