Introduction
Dans ce laboratoire, vous découvrirez le scan SYN Nmap, une technique clé en sécurité réseau pour la reconnaissance furtive de ports. Le scan 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. Il s'agit d'une compétence cruciale pour les professionnels de la sécurité afin d'évaluer les vulnérabilités réseau et de renforcer les défenses.
À la fin de ce laboratoire, vous saurez comment effectuer des scans SYN, interpréter leurs résultats et comprendre leur importance dans les évaluations de sécurité réseau.
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 scan SYN Nmap. Avant de commencer à scanner un réseau ou un système, il est crucial de comprendre que le scan é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é.
Tout d'abord, vous devez ouvrir un terminal. Un terminal est une interface textuelle qui vous permet d'interagir avec le système d'exploitation de votre ordinateur en tapant des commandes. Une fois le terminal ouvert, vous accéderez à votre répertoire de 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 vers le répertoire du projet :
cd /home/labex/projectMaintenant, nous allons utiliser Python, un langage de programmation populaire, pour créer un serveur HTTP simple. Un serveur HTTP est un logiciel capable de servir des pages web à des clients, comme des navigateurs web. Python dispose de fonctionnalités intégrées qui facilitent la configuration d'un tel serveur. Nous utiliserons ce serveur comme cible pour notre scan SYN Nmap. Exécutez la commande suivante dans le terminal :
python -m http.server --bind 127.0.0.1 8080 &Cette commande démarre un serveur web simple sur le port 8080 et le lie à l'adresse de bouclage IPv4
127.0.0.1. 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. L'utilisation d'une adresse IPv4 explicite permet de maintenir le serveur et le scan Nmap ultérieur sur la même interface de bouclage. 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.Après avoir démarré le serveur, nous devons vérifier qu'il est bien en cours d'exécution. Nous pouvons le faire en vérifiant les connexions réseau ouvertes sur notre système. La commande
ssest un outil qui permet d'afficher les statistiques de socket, y compris des informations sur les connexions réseau ouvertes. Nous l'utiliserons pour vérifier si notre serveur écoute sur le port 8080. Exécutez la commande suivante :ss -tulwn | grep 8080Le symbole
|est un opérateur de tube (pipe) qui prend la sortie de la commandesset l'utilise comme entrée pour la commandegrep. La commandegreprecherche la chaîne8080dans la sortie de la commandess. Si le serveur est en cours d'exécution, vous devriez voir une sortie similaire à celle-ci :tcp LISTEN 0 5 127.0.0.1:8080 0.0.0.0:*Cette sortie indique que le serveur écoute sur le port 8080, ce qui signifie qu'il fonctionne correctement et qu'il est prêt à être scanné.
Comprendre et effectuer un scan SYN Nmap
Maintenant que nous avons un service cible opérationnel, il est temps de nous plonger dans les scans SYN. Les scans SYN sont une partie cruciale des tests de sécurité réseau, nous permettant de découvrir les ports ouverts sur un système cible. Dans cette section, nous apprendrons comment fonctionnent les scans SYN, puis nous utiliserons Nmap, un puissant outil de scan réseau, pour effectuer un scan SYN sur notre serveur HTTP.
Qu'est-ce qu'un scan SYN ?
Avant de commencer le scan proprement dit, il est essentiel de comprendre le mécanisme sous-jacent d'un scan SYN. Pour ce faire, examinons d'abord comment une connexion TCP normale est établie.
Connexion TCP normale
Dans une connexion TCP normale, un "three-way handshake" (poignée de main en trois étapes) a lieu. Il s'agit d'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 entamer une conversation, demandant au serveur s'il est prêt à communiquer.
- Étape 2 : Paquet SYN-ACK du serveur À la réception du paquet SYN, si le serveur est disponible et disposé à communiquer, il répond avec un paquet SYN-ACK (synchronize-acknowledge). Ce paquet confirme la demande du client et indique également que le serveur est prêt à établir la connexion.
- Étape 3 : Paquet ACK du client Enfin, le client envoie un paquet ACK (acknowledge) pour terminer la poignée de main en trois étapes. Après cette étape, la connexion TCP est entièrement établie et les données peuvent être échangées entre le client et le serveur.
Processus de scan SYN
Un scan SYN, en revanche, adopte une approche différente :
- Étape 1 : Paquet SYN de Nmap Nmap, notre outil de scan, envoie le paquet SYN initial au port cible. C'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 paquet ACK final pour terminer la poignée de main, Nmap termine la connexion. Cela rend le scan moins détectable car la connexion complète n'est jamais établie. De plus, c'est plus rapide qu'un scan de connexion complet, qui termine l'intégralité de la poignée de main en trois étapes pour chaque port scanné.
Exécution du scan SYN
Étape 1 : Accéder au répertoire du projet
Tout d'abord, nous devons nous assurer que nous sommes dans le bon répertoire de projet. C'est important car nous enregistrerons les résultats du scan dans un fichier situé dans ce répertoire. Pour accéder au répertoire du projet, exécutez la commande suivante dans votre terminal :
cd /home/labex/project
Étape 2 : Exécuter le scan SYN
Maintenant, nous sommes prêts à effectuer le scan SYN en utilisant Nmap. Exécutez la commande suivante dans votre terminal :
sudo nmap -sS 127.0.0.1 -p 8080 > /home/labex/project/nmap-syn-scan-results.txt
Analysons cette commande pour comprendre ce que fait chaque partie :
sudo: Cette commande est utilisée pour exécuter la commande suivante avec des privilèges élevés. Les scans SYN nécessitent des privilèges root car ils impliquent l'envoi de paquets réseau bruts, nous devons donc utilisersudopour exécuter la commandenmap.nmap: Il s'agit de l'outil de scan réseau que nous utilisons. Nmap est largement utilisé pour l'exploration réseau et l'audit de sécurité.-sS: Cette option spécifie que nous voulons effectuer un scan SYN.127.0.0.1: Il s'agit de l'adresse de bouclage IPv4 de notre propre machine. L'utilisation de l'adresse IPv4 explicite permet de maintenir le scan aligné avec le serveur HTTP que nous avons démarré à l'étape 1.-p 8080: Cette option indique à Nmap de ne scanner que le port 8080. Nous voulons 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 scannmapvers un fichier nomménmap-syn-scan-results.txtdans le répertoire du projet. De cette façon, nous pourrons examiner les résultats plus tard.
Étape 3 : Afficher les résultats du scan
Une fois le scan terminé, nous pouvons consulter 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 à la suivante :
Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-18 12:00 UTC
Nmap scan report for 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 le dépannage réseau.
Analyse des résultats du scan et implications en matière de sécurité
Après avoir effectué un scan SYN, il est crucial de savoir comment 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. Examinons les détails.
Interprétation des résultats du scan
Tout d'abord, examinons de plus près les résultats du scan. Nous utiliserons la commande
catpour afficher le contenu du fichier qui stocke les résultats du scan SYN Nmap. La commandecatest un moyen simple d'afficher le contenu d'un fichier dans le terminal.cat /home/labex/project/nmap-syn-scan-results.txtLorsque 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 scan a pu communiquer avec la cible.- La valeur de latence : Elle indique la rapidité avec laquelle la cible a répondu à votre scan. 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: Il s'agit de la supposition de Nmap quant au service qui s'exécute sur le port 8080. Nmap tente d'identifier le service en fonction des réponses qu'il reçoit pendant le scan.
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 tenter d'exploiter des vulnérabilités dans l'application web.
- Un service qui peut présenter des vulnérabilités : Chaque service s'exécutant sur un port ouvert a le potentiel de présenter des failles de sécurité. Ces vulnérabilités peuvent être exploitées par des 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 par lesquels un attaquant peut tenter de pénétrer dans un système. Les ports ouverts font partie de cette surface d'attaque et doivent être correctement sécurisés.
Bonnes pratiques de sécurité
Lors de la sécurisation d'un réseau, vous devez suivre ces bonnes pratiques :
- Seuls les ports nécessaires doivent être ouverts : L'ouverture de 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.
- Chaque port ouvert doit servir un objectif commercial légitime : Si un port est ouvert, il doit l'être pour une raison valable, comme l'exécution d'un serveur web ou d'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.
- Tous les services doivent être maintenus à jour pour éviter toute exploitation : Les éditeurs 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.
- Les règles de pare-feu doivent restreindre l'accès aux ports sensibles : Les pare-feu 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 aux seuls utilisateurs ou systèmes autorisés.
Nettoyage de notre environnement
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 numéro unique attribué à chaque processus en cours d'exécution sur le système. Nous utiliserons la commande
ps auxpour lister tous les processus en cours, puis nous filtrerons les résultats pour trouver le processus du serveur HTTP.ps aux | grep "http.server" | grep -v grepLorsque vous exécutez cette commande, vous verrez une sortie similaire à la suivante :
labex 1234 0.0 0.1 31116 3164 pts/0 S 12:00 0:00 python -m http.server --bind 127.0.0.1 8080La deuxième colonne de la sortie indique le PID du processus du serveur HTTP.
Ensuite, nous utiliserons le PID pour arrêter le serveur. Nous utiliserons la commande
kill, qui envoie un signal de terminaison au processus. La commande suivante trouve et tue automatiquement 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 qu'auparavant, puis transmet le PID à la commande
kill.Enfin, nous devons vérifier que le serveur s'est arrêté. Nous utiliserons la commande
ss, qui est utilisée pour afficher les statistiques de socket. En filtrant la sortie pour n'afficher que les informations sur le port 8080, nous pouvons vérifier si le serveur est toujours en cours d'exécution.ss -tulwn | grep 8080Si le serveur s'est arrêté avec succès, il ne devrait y avoir aucune sortie de cette commande, ce qui indique que le serveur n'écoute plus sur le port 8080.
Résumé
Dans ce laboratoire, vous avez appris à effectuer et à comprendre le scan SYN Nmap, une technique clé de la reconnaissance en sécurité réseau. Vous avez configuré un environnement contrôlé à l'aide d'un serveur HTTP Python, effectué un scan SYN pour trouver des ports ouverts, analysé les résultats et nettoyé l'environnement de test. Ces compétences sont essentielles pour le scan réseau éthique et l'évaluation des vulnérabilités.
La compréhension des scans SYN permet aux professionnels de la sécurité de détecter efficacement les vulnérabilités réseau potentielles tout en réduisant le risque de détection. À mesure que vous progressez dans votre parcours en cybersécurité, assurez-vous toujours d'avoir l'autorisation de scanner les réseaux avant d'appliquer ces techniques.



