Évasion avancée de pare-feu avec fragmentation de paquets
Dans cette étape, nous allons explorer une technique plus avancée d'évasion des pare - feux appelée fragmentation de paquets. Avant de plonger dans le sujet, comprenons ce que signifie la fragmentation de paquets. Lorsque des données sont envoyées sur un réseau, elles sont divisées en unités plus petites appelées paquets. Certains pare - feux et systèmes de détection d'intrusion (Intrusion Detection Systems - IDS) sont conçus pour inspecter ces paquets à la recherche de tout signe d'activité malveillante. Cependant, ces systèmes de sécurité peuvent avoir des difficultés à traiter les paquets fragmentés, qui sont des paquets qui ont été divisés en morceaux encore plus petits. Cette difficulté peut nous offrir une opportunité de contourner certaines mesures de sécurité lors de nos numérisations.
Nous continuerons à utiliser notre serveur HTTP local comme cible pour notre numérisation. Tout d'abord, nous devons nous déplacer dans le répertoire approprié dans le terminal où nous avons effectué notre numérisation précédente. C'est dans ce répertoire que se trouvent nos fichiers de projet, et il est important d'être dans ce répertoire pour que nos commandes fonctionnent correctement. Pour ce faire, nous exécuterons la commande suivante :
cd /home/labex/project
Maintenant que nous sommes dans le bon répertoire, nous sommes prêts à exécuter une numérisation en utilisant l'option de fragmentation de Nmap. Cette option va diviser les paquets IP en fragments plus petits, rendant plus difficile la détection de notre numérisation par les filtres de paquets. Voici la commande que nous allons utiliser :
sudo nmap -f -Pn --reason -p 8000 localhost
Décortiquons l'option supplémentaire -f dans cette commande. L'option -f indique à Nmap de fragmenter les paquets IP. En faisant cela, nous rendons plus difficile l'analyse des paquets par les filtres de paquets et la détection de notre numérisation.
Après avoir exécuté la commande, vous devriez voir une sortie similaire à la suivante :
Starting Nmap 7.80 ( https://nmap.org ) at 2025-03-18 16:46 CST
Nmap scan report for localhost (127.0.0.1)
Host is up, received user-set (0.000062s latency).
Other addresses for localhost (not scanned): ::1
PORT STATE SERVICE REASON
8000/tcp open http-alt syn-ack ttl 64
Nmap done: 1 IP address (1 host up) scanned in 0.08 seconds
Cette sortie nous montre les résultats de notre numérisation. Elle nous indique que l'hôte (localhost) est en ligne et que le port 8000 est ouvert.
Ensuite, nous voulons enregistrer ces résultats dans un fichier séparé. Ainsi, nous pourrons y faire référence plus tard et les comparer avec d'autres résultats de numérisation. Pour enregistrer les résultats, nous exécuterons la commande suivante :
sudo nmap -f -Pn --reason -p 8000 localhost > /home/labex/project/nmap_frag_scan.txt
Le symbole > dans cette commande redirige la sortie de la numérisation Nmap vers le fichier spécifié.
Maintenant, vérifions le contenu de ce fichier pour nous assurer que les résultats ont été enregistrés correctement. Nous utiliserons la commande cat, qui est utilisée pour afficher le contenu d'un fichier :
cat /home/labex/project/nmap_frag_scan.txt
Les résultats de la numérisation peuvent ressembler à ceux de notre numérisation précédente, mais la technique sous - jacente est différente. Dans ce cas, Nmap a fragmenté les paquets IP en morceaux plus petits, ce qui rend plus difficile la détection de la numérisation par les filtres de paquets sans état.
Comparons les deux méthodes de numérisation que nous avons utilisées jusqu'à présent : la numérisation classique et la numérisation fragmentée. Nous allons créer un nouveau fichier pour stocker cette comparaison. Voici les commandes pour cela :
echo "Comparing regular scan vs. fragmented scan:" > /home/labex/project/scan_comparison.txt
echo "---------------------------------------------" >> /home/labex/project/scan_comparison.txt
echo "" >> /home/labex/project/scan_comparison.txt
echo "1. Regular scan with -Pn:" >> /home/labex/project/scan_comparison.txt
cat /home/labex/project/nmap_scan.txt >> /home/labex/project/scan_comparison.txt
echo "" >> /home/labex/project/scan_comparison.txt
echo "2. Fragmented scan with -f -Pn:" >> /home/labex/project/scan_comparison.txt
cat /home/labex/project/nmap_frag_scan.txt >> /home/labex/project/scan_comparison.txt
Ces commandes écrivent d'abord un en - tête dans le fichier de comparaison, puis ajoutent les résultats de la numérisation classique et de la numérisation fragmentée au fichier.
Maintenant, examinons notre comparaison en affichant le contenu du fichier de comparaison :
cat /home/labex/project/scan_comparison.txt
Dans notre environnement contrôlé, les résultats des deux numérisations peuvent ressembler. Cependant, dans des scénarios réels, ces différentes techniques peuvent avoir des niveaux de réussite variables en fonction des configurations de pare - feux. La fragmentation de paquets (-f) est particulièrement efficace contre les filtres de paquets sans état. Les filtres de paquets sans état examinent chaque paquet indépendamment et ne peuvent souvent pas réassembler les fragments pour inspecter le paquet complet, ce qui donne à notre numérisation fragmentée de meilleures chances de contourner ces filtres.
Pour encore plus de fragmentation, Nmap vous permet d'augmenter le niveau en utilisant plusieurs indicateurs -f (par exemple, -ff) ou en spécifiant une taille de Unité Maximale de Transmission (Maximum Transmission Unit - MTU) personnalisée avec l'option --mtu. L'MTU est la taille maximale d'un paquet qui peut être transmis sur un réseau. En spécifiant une MTU personnalisée, vous pouvez contrôler la façon dont les paquets sont fragmentés.
Cette technique démontre comment la fragmentation de paquets peut être utilisée comme méthode supplémentaire pour éviter la détection par les pare - feux lors de l'exécution d'évaluations de sécurité.