Effectuer des scans SYN Nmap pour la sécurité réseau

NmapBeginner
Pratiquer maintenant

Introduction

Dans ce laboratoire (lab), vous allez apprendre le balayage SYN de Nmap, une technique clé en sécurité des réseaux pour la reconnaissance discrète des ports. Le balayage SYN identifie efficacement les ports ouverts sur un système cible sans établir complètement une connexion TCP, ce qui le rend moins détectable que les méthodes traditionnelles. Cela est crucial pour les professionnels de la sécurité afin d'évaluer les vulnérabilités des réseaux et de renforcer les défenses.

À la fin de ce laboratoire (lab), vous comprendrez comment effectuer des balayages SYN, interpréter leurs résultats et reconnaître leur importance dans les évaluations de sécurité des réseaux.

Création d'un service cible pour le scan

Dans cette étape, nous allons créer un environnement contrôlé où vous pourrez pratiquer le balayage SYN de Nmap. Avant de commencer à scanner un réseau ou un système, il est crucial de comprendre que le balayage éthique nécessite une autorisation appropriée. Pour éviter tout problème juridique, nous allons configurer notre propre service que nous pourrons scanner en toute sécurité.

  1. Tout d'abord, vous devez ouvrir un terminal. Un terminal est une interface basée sur le texte qui vous permet d'interagir avec le système d'exploitation de votre ordinateur en tapant des commandes. Une fois le terminal ouvert, vous allez naviguer jusqu'au répertoire de votre projet. Le répertoire de projet est l'endroit où tous les fichiers liés à cette expérience seront stockés. Utilisez la commande suivante pour changer le répertoire actuel en le répertoire de projet :

    cd /home/labex/project
    
  2. Maintenant, nous allons utiliser Python, un langage de programmation populaire, pour créer un simple serveur HTTP. Un serveur HTTP est un logiciel qui peut servir des pages web aux clients, comme les navigateurs web. Python a des fonctionnalités intégrées qui facilitent la configuration d'un tel serveur. Nous allons utiliser ce serveur comme cible pour notre balayage SYN de Nmap. Exécutez la commande suivante dans le terminal :

    python -m http.server --bind localhost 8080 &
    

    Cette commande démarre un simple serveur web sur le port 8080. Un port est un point de terminaison de communication dans le réseau d'un ordinateur. Différents services utilisent différents ports pour communiquer. Le symbole & à la fin de la commande exécute le serveur en arrière - plan. Cela signifie que le serveur continuera de fonctionner et que vous pourrez continuer à utiliser la même fenêtre de terminal pour exécuter d'autres commandes.

  3. Après avoir démarré le serveur, nous devons vérifier qu'il est effectivement en cours d'exécution. Nous pouvons le faire en vérifiant les connexions réseau ouvertes sur notre système. La commande ss est un outil qui peut afficher les statistiques des sockets, ce qui inclut des informations sur les connexions réseau ouvertes. Nous allons l'utiliser pour vérifier si notre serveur écoute sur le port 8080. Exécutez la commande suivante :

    ss -tulwn | grep 8080
    

    Le symbole | est un opérateur de canalisation qui prend la sortie de la commande ss et l'utilise comme entrée pour la commande grep. La commande grep recherche la chaîne 8080 dans la sortie de la commande ss. Si le serveur est en cours d'exécution, vous devriez voir une sortie similaire à ceci :

    tcp   LISTEN 0      1            0.0.0.0:8080       0.0.0.0:*
    

    Cette sortie indique que le serveur écoute sur le port 8080, ce qui signifie qu'il est lancé avec succès et prêt à être scanné.

Comprendre et effectuer un scan SYN Nmap

Maintenant que nous avons un service cible opérationnel, il est temps de plonger dans les balayages SYN. Les balayages SYN sont une partie cruciale des tests de sécurité des réseaux, car ils nous permettent de découvrir les ports ouverts sur un système cible. Dans cette section, nous allons apprendre le fonctionnement des balayages SYN, puis utiliser Nmap, un puissant outil de balayage de réseau, pour effectuer un balayage SYN sur notre serveur HTTP.

Qu'est - ce qu'un balayage SYN ?

Avant de commencer le balayage réel, il est essentiel de comprendre le mécanisme sous - jacent d'un balayage SYN. Pour cela, regardons d'abord comment une connexion TCP normale est établie.

Connexion TCP normale

Dans une connexion TCP normale, un échange de trois messages (trois - way handshake) a lieu. C'est un processus fondamental pour établir une connexion fiable entre un client et un serveur :

  • Étape 1 : Paquet SYN du client Le client initie la connexion en envoyant un paquet SYN (synchronize) au serveur. Ce paquet est comme une demande pour commencer une conversation, demandant au serveur s'il est prêt à communiquer.
  • Étape 2 : Paquet SYN - ACK du serveur Lorsqu'il reçoit le paquet SYN, si le serveur est disponible et prêt à communiquer, il répond avec un paquet SYN - ACK (synchronize - acknowledge). Ce paquet reconnaît la demande du client et indique également que le serveur est prêt à démarrer la connexion.
  • Étape 3 : Paquet ACK du client Enfin, le client envoie un paquet ACK (acknowledge) pour terminer l'échange de trois messages. Après cette étape, la connexion TCP est complètement établie et les données peuvent être échangées entre le client et le serveur.

Processus de balayage SYN

Un balayage SYN, en revanche, adopte une approche différente :

  • Étape 1 : Paquet SYN de Nmap Nmap, notre outil de balayage, envoie le paquet SYN initial au port cible. Cela est similaire à la première étape d'une connexion TCP normale.
  • Étape 2 : Réponse SYN - ACK de la cible Si le port cible est ouvert, il répondra avec un paquet SYN - ACK, tout comme dans une connexion TCP normale.
  • Étape 3 : Terminaison de la connexion par Nmap Au lieu d'envoyer le dernier paquet ACK pour terminer l'échange de trois messages, Nmap termine la connexion. Cela rend le balayage moins détectable car la connexion complète n'est jamais établie. De plus, il est plus rapide qu'un balayage de connexion complet, qui termine l'ensemble de l'échange de trois messages pour chaque port scanné.

Effectuer le balayage SYN

Étape 1 : Naviguer jusqu'au répertoire du projet

Tout d'abord, nous devons nous assurer que nous sommes dans le bon répertoire de projet. Cela est important car nous allons enregistrer les résultats du balayage dans un fichier à l'intérieur de ce répertoire. Pour naviguer jusqu'au répertoire de projet, exécutez la commande suivante dans votre terminal :

cd /home/labex/project

Étape 2 : Exécuter le balayage SYN

Maintenant, nous sommes prêts à effectuer le balayage SYN en utilisant Nmap. Exécutez la commande suivante dans votre terminal :

sudo nmap -sS localhost -p 8080 > /home/labex/project/nmap-syn-scan-results.txt

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

  • sudo : Cette commande est utilisée pour exécuter la commande suivante avec des privilèges élevés. Les balayages SYN nécessitent des privilèges root car ils impliquent l'envoi de paquets réseau bruts, donc nous devons utiliser sudo pour exécuter la commande nmap.
  • nmap : C'est l'outil de balayage de réseau que nous utilisons. Nmap est largement utilisé pour l'exploration de réseau et l'audit de sécurité.
  • -sS : Cette option spécifie que nous voulons effectuer un balayage SYN.
  • localhost : C'est la cible de notre balayage. Dans ce cas, nous scannons notre propre machine.
  • -p 8080 : Cette option indique à Nmap de ne scanner que le port 8080. Nous sommes intéressés à vérifier si ce port spécifique est ouvert sur notre machine locale.
  • > /home/labex/project/nmap-syn-scan-results.txt : Cette partie de la commande redirige la sortie du balayage nmap vers un fichier nommé nmap - syn - scan - results.txt dans le répertoire du projet. Ainsi, nous pouvons consulter les résultats plus tard.

Étape 3 : Voir les résultats du balayage

Après que le balayage soit terminé, nous pouvons voir les résultats. Exécutez la commande suivante dans votre terminal :

cat /home/labex/project/nmap-syn-scan-results.txt

Vous devriez voir une sortie similaire à ceci :

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

Cette sortie fournit des informations précieuses. Elle confirme que le port 8080 est ouvert sur votre machine locale et qu'il exécute un service HTTP. Ces informations peuvent être utilisées pour une analyse de sécurité plus approfondie ou pour la résolution de problèmes réseau.

Analyse des résultats de scan et des implications en matière de sécurité

Après avoir effectué un balayage SYN, il est crucial de savoir interpréter les résultats et leurs implications en matière de sécurité. Cette étape est essentielle car elle vous aide à identifier les risques potentiels dans votre réseau. Entrons dans les détails.

Interprétation des résultats du balayage

  1. Tout d'abord, examinons de plus près les résultats du balayage. Nous allons utiliser la commande cat pour afficher le contenu du fichier qui stocke les résultats du balayage SYN de Nmap. La commande cat est un moyen simple d'afficher le contenu d'un fichier dans le terminal.

    cat /home/labex/project/nmap-syn-scan-results.txt
    

    Lorsque vous exécutez cette commande, vous verrez une sortie. Voici ce que signifient les différentes parties de la sortie :

    • Host is up : Ce message indique que l'hôte cible est accessible sur le réseau. Si l'hôte est actif, cela signifie que votre balayage a pu communiquer avec la cible.
    • La valeur de latence : Elle montre la rapidité avec laquelle la cible a répondu à votre balayage. Une latence plus faible signifie que la cible a répondu plus rapidement.
    • 8080/tcp open : Cela indique que le port 8080 sur l'hôte cible est ouvert et prêt à accepter les connexions entrantes. Un port ouvert peut être un point d'entrée potentiel pour les attaquants.
    • http-proxy : C'est la supposition de Nmap sur le service qui s'exécute sur le port 8080. Nmap essaie d'identifier le service en fonction des réponses qu'il reçoit lors du balayage.
  2. Dans une évaluation de sécurité réelle, chaque port ouvert sur un hôte cible représente plusieurs choses :

    • Un point d'entrée potentiel pour les attaquants : Les attaquants peuvent utiliser les ports ouverts pour accéder au système cible. Par exemple, si un serveur web s'exécute sur un port ouvert, les attaquants pourraient essayer d'exploiter les vulnérabilités de l'application web.
    • Un service qui peut avoir des vulnérabilités : Chaque service s'exécutant sur un port ouvert a le potentiel d'avoir des failles de sécurité. Ces vulnérabilités peuvent être exploitées par les attaquants pour compromettre le système.
    • Une partie de la surface d'attaque qui doit être sécurisée : La surface d'attaque est la somme de tous les points où un attaquant peut essayer d'entrer dans un système. Les ports ouverts font partie de cette surface d'attaque et doivent être correctement sécurisés.

Bonnes pratiques en matière de sécurité

Lorsque vous sécurisez un réseau, vous devriez suivre ces bonnes pratiques :

  1. Seuls les ports nécessaires doivent être ouverts : Ouvrir des ports inutiles augmente la surface d'attaque de votre réseau. En fermant les ports inutilisés, vous réduisez le nombre de points d'entrée potentiels pour les attaquants.
  2. Chaque port ouvert doit servir un objectif commercial légitime : Si un port est ouvert, il doit y avoir une raison valable, comme exécuter un serveur web ou un service de base de données. Cela permet de garantir que votre réseau est utilisé de manière efficace et sécurisée.
  3. Tous les services doivent être mis à jour pour prévenir les exploitations : Les fournisseurs de logiciels publient régulièrement des mises à jour pour corriger les vulnérabilités de sécurité. En gardant vos services à jour, vous pouvez protéger votre réseau contre les menaces connues.
  4. Les règles de pare - feu doivent restreindre l'accès aux ports sensibles : Les pare - feux peuvent être utilisés pour contrôler qui peut accéder à des ports spécifiques sur votre réseau. En configurant des règles de pare - feu appropriées, vous pouvez limiter l'accès aux ports sensibles à seulement les utilisateurs ou systèmes autorisés.

Nettoyage de notre environnement

  1. Maintenant, nous devons nettoyer notre environnement en arrêtant le serveur HTTP que nous avons démarré précédemment. Tout d'abord, nous devons identifier l'identifiant de processus (PID) du serveur HTTP. Le PID est un nombre unique attribué à chaque processus en cours d'exécution sur le système. Nous allons utiliser la commande ps aux pour lister tous les processus en cours d'exécution, puis filtrer les résultats pour trouver le processus du serveur HTTP.

    ps aux | grep "http.server" | grep -v grep
    

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

    labex      1234  0.0  0.1  31116  3164 pts/0    S    12:00   0:00 python -m http.server 8080
    

    La deuxième colonne de la sortie montre le PID du processus du serveur HTTP.

  2. Ensuite, nous allons utiliser le PID pour arrêter le serveur. Nous allons utiliser la commande kill, qui envoie un signal de terminaison au processus. La commande suivante trouve automatiquement et tue le processus du serveur HTTP :

    kill $(ps aux | grep "http.server" | grep -v grep | awk '{print $2}')
    

    Cette commande trouve d'abord le PID du processus du serveur HTTP en utilisant la même méthode de filtrage que précédemment, puis passe le PID à la commande kill.

  3. Enfin, nous devons vérifier que le serveur a été arrêté. Nous allons utiliser la commande ss, qui est utilisée pour afficher les statistiques des sockets. En filtrant la sortie pour afficher uniquement les informations sur le port 8080, nous pouvons vérifier si le serveur est toujours en cours d'exécution.

    ss -tulwn | grep 8080
    

    Si le serveur a été arrêté avec succès, il ne devrait y avoir aucune sortie de cette commande, indiquant que le serveur n'écoute plus sur le port 8080.

Résumé

Dans ce laboratoire, vous avez appris à effectuer et à comprendre le balayage SYN avec Nmap, une technique clé dans la reconnaissance de sécurité des réseaux. Vous avez configuré un environnement contrôlé en utilisant un serveur HTTP Python, effectué un balayage SYN pour trouver les ports ouverts, analysé les résultats et nettoyé l'environnement de test. Ces compétences sont essentielles pour le balayage éthique de réseaux et l'évaluation des vulnérabilités.

Comprendre les balayages SYN permet aux professionnels de la sécurité de détecter efficacement les vulnérabilités potentielles du réseau tout en réduisant le risque de détection. Au fur et à mesure de votre progression dans le domaine de la cybersécurité, assurez - vous toujours d'avoir l'autorisation de scanner les réseaux avant d'appliquer ces techniques.