Optimiser le timing et les performances de scan dans Nmap

NmapNmapBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce laboratoire, le but est d'optimiser le temps de balayage et les performances de Nmap. Vous allez apprendre diverses techniques pour améliorer les balayages Nmap, notamment en utilisant le modèle rapide avec -T4 pour un balayage réseau rapide, en augmentant la parallélisme, en configurant des délais, en suivant l'avancement, en testant la discrétion et en comparant les temps dans le terminal Xfce. Ces étapes vous aideront à comprendre comment équilibrer la vitesse et la précision dans les balayages Nmap.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL nmap(("Nmap")) -.-> nmap/NmapGroup(["Nmap"]) nmap/NmapGroup -.-> nmap/port_scanning("Port Scanning Methods") nmap/NmapGroup -.-> nmap/target_specification("Target Specification") nmap/NmapGroup -.-> nmap/timing_performance("Timing and Performance") nmap/NmapGroup -.-> nmap/verbosity("Verbosity Levels") nmap/NmapGroup -.-> nmap/firewall_evasion("Firewall Evasion Techniques") nmap/NmapGroup -.-> nmap/stealth_scanning("Stealth and Covert Scanning") subgraph Lab Skills nmap/port_scanning -.-> lab-530183{{"Optimiser le timing et les performances de scan dans Nmap"}} nmap/target_specification -.-> lab-530183{{"Optimiser le timing et les performances de scan dans Nmap"}} nmap/timing_performance -.-> lab-530183{{"Optimiser le timing et les performances de scan dans Nmap"}} nmap/verbosity -.-> lab-530183{{"Optimiser le timing et les performances de scan dans Nmap"}} nmap/firewall_evasion -.-> lab-530183{{"Optimiser le timing et les performances de scan dans Nmap"}} nmap/stealth_scanning -.-> lab-530183{{"Optimiser le timing et les performances de scan dans Nmap"}} end

Utiliser le modèle rapide avec nmap -T4 192.168.1.0/24

Dans cette étape, nous allons utiliser l'option de modèle rapide avec Nmap pour effectuer un balayage rapide d'un réseau. L'option -T4 est utilisée pour spécifier un modèle de temporisation qui équilibre la vitesse et la précision. Il est plus rapide que le modèle par défaut, mais peut être moins précis dans certains cas.

Avant de commencer, comprenons ce qu'est un modèle de temporisation. Nmap utilise des modèles de temporisation pour contrôler la manière dont il balaye une cible. Ces modèles affectent des paramètres tels que le délai entre les sondes, le nombre de retours en arrière et les valeurs de délai d'attente. L'option -T vous permet de choisir un modèle prédéfini, allant de -T0 (paranoïaque) à -T5 (insensé). Des nombres plus élevés indiquent un balayage plus agressif.

Le modèle -T4 est un bon compromis pour la plupart des réseaux. Il est plus rapide que le modèle par défaut (-T3), mais évite toujours d'être trop agressif, ce qui pourrait entraîner la perte de paquets ou déclencher des systèmes de détection d'intrusions.

Maintenant, effectuons le balayage. Nous allons utiliser la commande nmap -T4 192.168.1.0/24 pour balayer le réseau 192.168.1.0/24.

Ouvrez votre terminal dans la machine virtuelle LabEx. Assurez-vous d'être dans le répertoire ~/project.

Exécutez la commande suivante :

sudo nmap -T4 192.168.1.0/24

Cette commande indique à Nmap de balayer toutes les adresses IP dans la plage 192.168.1.0/24 en utilisant le modèle de temporisation -T4. Le /24 spécifie un masque de sous-réseau de 255.255.255.0, ce qui signifie que Nmap balayera 256 adresses IP (de 192.168.1.0 à 192.168.1.255).

La sortie montrera les résultats du balayage, y compris les ports ouverts et les services en cours d'exécution sur chaque hôte. Étant donné que le réseau 192.168.1.0/24 est probablement votre réseau local, les résultats varieront selon les appareils connectés à celui-ci.

Exemple de sortie (variera selon votre réseau) :

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:00 UTC
Nmap scan report for 192.168.1.1
Host is up (0.00028s latency).
Not shown: 999 closed ports
PORT    STATE SERVICE
80/tcp  open  http

Nmap scan report for 192.168.1.100
Host is up (0.00031s latency).
Not shown: 999 closed ports
PORT    STATE SERVICE
22/tcp  open  ssh

Nmap done: 256 IP addresses (2 hosts up) scanned in 5.23 seconds

Cette sortie montre que Nmap a balayé 256 adresses IP et a trouvé deux hôtes actifs : 192.168.1.1 et 192.168.1.100. L'hôte 192.168.1.1 a le port 80 (http) ouvert, et l'hôte 192.168.1.100 a le port 22 (ssh) ouvert. Le balayage a pris environ 5,23 secondes.

Augmenter la parallélisme avec nmap --min-parallelism 20 127.0.0.1

Dans cette étape, nous allons augmenter la parallélisme des balayages Nmap en utilisant l'option --min-parallelism. Cette option vous permet de spécifier le nombre minimum de sondes que Nmap envoie en parallèle. Augmenter la parallélisme peut considérablement accélérer les balayages, en particulier sur des réseaux avec de nombreux hôtes ou de nombreux ports.

Par défaut, Nmap ajuste dynamiquement le niveau de parallélisme en fonction des conditions réseau. Cependant, vous pouvez utiliser --min-parallelism pour vous assurer que Nmap envoie toujours au moins un certain nombre de sondes simultanément.

Comprenons ce que signifie la parallélisme dans le contexte de Nmap. Lorsque Nmap balaye une cible, il envoie des sondes vers différents ports ou hôtes. Avec la parallélisme, Nmap peut envoyer plusieurs sondes simultanément au lieu d'attendre une réponse de chaque sonde avant d'envoyer la suivante. Cela peut considérablement réduire le temps total de balayage.

Maintenant, effectuons un balayage avec un parallélisme accru. Nous allons utiliser la commande nmap --min-parallelism 20 127.0.0.1 pour balayer l'hôte local (127.0.0.1) avec un parallélisme minimum de 20.

Ouvrez votre terminal dans la machine virtuelle LabEx. Assurez-vous d'être dans le répertoire ~/project.

Exécutez la commande suivante :

sudo nmap --min-parallelism 20 127.0.0.1

Cette commande indique à Nmap de balayer 127.0.0.1 et d'essayer de maintenir au moins 20 sondes en parallèle. Notez que Nmap peut toujours ajuster le parallélisme dynamiquement en fonction des conditions réseau, mais il essaiera de rester au-dessus du minimum spécifié.

La sortie montrera les résultats du balayage, y compris les ports ouverts et les services en cours d'exécution sur l'hôte local.

Exemple de sortie (variera selon votre système) :

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:05 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000027s latency).
Not shown: 997 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
631/tcp  open  ipp
9000/tcp open  cslistener

Nmap done: 1 IP address (1 host up) scanned in 0.15 seconds

Cette sortie montre que Nmap a balayé l'hôte local (127.0.0.1) et a trouvé trois ports ouverts : 22 (ssh), 631 (ipp) et 9000 (cslistener). Le balayage s'est achevé relativement rapidement en raison de l'augmentation du parallélisme. Le temps réel économisé dépendra des conditions réseau et de la cible balayée.

Régler un délai avec nmap --scan-delay 500ms 192.168.1.1

Dans cette étape, nous allons régler un délai entre les sondes en utilisant l'option --scan-delay dans Nmap. Cette option vous permet de spécifier la durée pendant laquelle Nmap doit attendre entre l'envoi de chaque sonde. Augmenter le délai de balayage peut être utile pour éviter la détection par des systèmes de détection d'intrusions (IDS) ou pour scanner des hôtes sensibles au trafic réseau.

Par défaut, Nmap ajuste automatiquement le délai de balayage en fonction des conditions réseau. Cependant, vous pouvez utiliser --scan-delay pour définir manuellement un délai spécifique. Le délai est spécifié en millisecondes (ms) ou en secondes (s).

Comprenons pourquoi vous voudriez peut-être utiliser un délai de balayage. Un balayage très rapide peut saturer un hôte cible ou déclencher des alertes de sécurité. Ajouter un délai rend le balayage moins agressif et moins susceptible d'être remarqué. Cela est particulièrement important lors du balayage de systèmes ou de réseaux de production où vous voulez minimiser l'impact du balayage.

Maintenant, effectuons un balayage avec un délai spécifié. Nous allons utiliser la commande nmap --scan-delay 500ms 192.168.1.1 pour balayer l'hôte 192.168.1.1 avec un délai de 500 millisecondes entre chaque sonde.

Ouvrez votre terminal dans la machine virtuelle LabEx. Assurez-vous d'être dans le répertoire ~/project.

Exécutez la commande suivante :

sudo nmap --scan-delay 500ms 192.168.1.1

Cette commande indique à Nmap de balayer 192.168.1.1 et d'attendre 500 millisecondes entre l'envoi de chaque sonde. Cela ralentira considérablement le balayage par rapport à un balayage sans délai.

La sortie montrera les résultats du balayage, y compris les ports ouverts et les services en cours d'exécution sur 192.168.1.1.

Exemple de sortie (variera selon votre réseau) :

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:10 UTC
Nmap scan report for 192.168.1.1
Host is up (0.00031s latency).
Not shown: 999 closed ports
PORT    STATE SERVICE
80/tcp  open  http

Nmap done: 1 IP address (1 host up) scanned in 5.50 seconds

Cette sortie montre que Nmap a balayé 192.168.1.1 et a trouvé le port 80 (http) ouvert. Remarquez que le balayage a pris plus de temps (5,50 secondes) qu'il n'aurait probablement fallu sans l'option --scan-delay. Le temps exact variera selon la cible et les conditions réseau.

Suivre la progression avec nmap -v --stats-every 5s 192.168.1.0/24

Dans cette étape, nous allons apprendre à suivre la progression d'un balayage Nmap en utilisant les options -v (verbeux) et --stats-every. Ces options fournissent des informations en temps réel sur la progression du balayage, ce qui est particulièrement utile pour les balayages de longue durée.

L'option -v augmente le niveau de verbeosité de la sortie de Nmap. Avec -v, Nmap affichera plus d'informations sur le balayage, y compris les sondes envoyées, les réponses reçues et l'état de chaque hôte. Vous pouvez utiliser -vv pour une sortie encore plus détaillée.

L'option --stats-every vous permet de spécifier avec quelle fréquence Nmap doit imprimer des statistiques sur la progression du balayage. La valeur est spécifiée en secondes (s), minutes (m) ou heures (h). Par exemple, --stats-every 5s imprimera les statistiques toutes les 5 secondes.

Comprenons pourquoi suivre la progression est importante. Lors du balayage de grands réseaux, les balayages Nmap peuvent prendre beaucoup de temps. Sans informations sur la progression, il peut être difficile de savoir jusqu'où le balayage est avancé et s'il progresse. Les options -v et --stats-every fournissent des informations précieuses sur l'état du balayage.

Maintenant, effectuons un balayage avec suivi de la progression. Nous allons utiliser la commande nmap -v --stats-every 5s 192.168.1.0/24 pour balayer le réseau 192.168.1.0/24 et imprimer les statistiques toutes les 5 secondes.

Ouvrez votre terminal dans la machine virtuelle LabEx. Assurez-vous d'être dans le répertoire ~/project.

Exécutez la commande suivante :

sudo nmap -v --stats-every 5s 192.168.1.0/24

Cette commande indique à Nmap de balayer toutes les adresses IP de la plage 192.168.1.0/24, d'afficher une sortie détaillée et d'imprimer les statistiques toutes les 5 secondes.

La sortie montrera la progression du balayage, y compris le nombre d'hôtes balayés, le nombre d'hôtes actifs et le temps estimé restant.

Exemple de sortie (variera selon votre réseau) :

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:20 UTC
Initiating Ping Scan at 10:20
Scanning 256 hosts [2 ports/host]
Completed Ping Scan at 10:20, 0.23s elapsed (256 total hosts)
Initiating Parallel DNS resolution of 256 hosts. at 10:20
Completed Parallel DNS resolution of 256 hosts. at 10:20, 1.42s elapsed
Initiating SYN Stealth Scan at 10:20
Scanning 256 hosts [1000 ports/host]
5s elapsed; 0 hosts completed (0.00/s). 0 hosts up.
10s elapsed; 0 hosts completed (0.00/s). 0 hosts up.
15s elapsed; 0 hosts completed (0.00/s). 0 hosts up.
20s elapsed; 1 hosts completed (0.04/s). 1 hosts up.
Nmap scan report for 192.168.1.1
Host is up (0.00029s latency).
Not shown: 999 closed ports
PORT    STATE SERVICE
80/tcp  open  http

25s elapsed; 1 hosts completed (0.04/s). 1 hosts up.
Nmap scan report for 192.168.1.100
Host is up (0.00032s latency).
Not shown: 999 closed ports
PORT    STATE SERVICE
22/tcp  open  ssh

30s elapsed; 2 hosts completed (0.07/s). 2 hosts up.
Nmap done: 256 IP addresses (2 hosts up) scanned in 32.50 seconds

Cette sortie montre la progression du balayage toutes les 5 secondes. Vous pouvez voir le nombre d'hôtes terminés, le taux de balayage (hôtes/s) et le nombre d'hôtes actifs. Le balayage rapporte également les ports ouverts au fur et à mesure qu'ils sont découverts.

Tester la discrétion avec nmap -T1 127.0.0.1

Dans cette étape, nous allons explorer la manière de réaliser un balayage discrètement en utilisant Nmap avec le modèle de temporisation -T1. Le balayage discrètement vise à minimiser les chances d'être détecté par des systèmes de détection d'intrusions (IDS) ou des pare-feu.

L'option -T1 est connue sous le nom de modèle de temporisation "furtif". Il est plus lent que le modèle par défaut et est conçu pour être moins perceptible. Il y parvient en augmentant le délai entre les sondes, ce qui réduit la charge sur le système cible et rend le balayage moins susceptible d'être signalé comme malveillant.

Il est important de comprendre que aucun balayage n'est réellement invisible. Même avec des techniques de discrétion, il existe toujours un risque d'être détecté. Cependant, l'utilisation de l'option -T1 peut réduire considérablement ce risque.

Maintenant, effectuons un balayage discrètement de l'ordinateur local (127.0.0.1) en utilisant le modèle de temporisation -T1.

Ouvrez votre terminal dans la machine virtuelle LabEx. Assurez-vous d'être dans le répertoire ~/project.

Exécutez la commande suivante :

sudo nmap -T1 127.0.0.1

Cette commande indique à Nmap de balayer l'ordinateur local (127.0.0.1) en utilisant le modèle de temporisation -T1. Étant donné que nous balayons l'ordinateur local, le balayage devrait être terminé relativement rapidement, même avec le modèle de temporisation plus lent.

La sortie montrera les résultats du balayage, y compris les ports ouverts et les services en cours d'exécution sur l'ordinateur local.

Exemple de sortie (peut varier selon votre configuration système) :

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:40 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000007s latency).
Not shown: 997 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
631/tcp  open  ipp
9000/tcp open  cslistener

Nmap done: 1 IP address (1 host up) scanned in 10.50 seconds

Cette sortie montre que Nmap a balayé l'ordinateur local et a trouvé trois ports ouverts : 22 (ssh), 631 (ipp) et 9000 (cslistener). Le balayage a pris environ 10,50 secondes. Notez que le temps de balayage peut être plus long par rapport à l'utilisation d'un modèle de temporisation plus rapide comme -T4.

Comparer les temps d'exécution dans le terminal Xfce

Dans cette étape, nous allons comparer le temps d'exécution des balayages Nmap en utilisant différents modèles de temporisation. Nous utiliserons le terminal Xfce pour exécuter les balayages et observer le temps qu'il prend pour chaque balayage de se terminer. Cela vous aidera à comprendre l'impact des modèles de temporisation sur la vitesse de balayage.

Nous comparerons les modèles de temporisation -T1 (furtif) et -T4 (rapide). Nous allons balayer l'ordinateur local (127.0.0.1) pour cette comparaison.

Ouvrez votre terminal dans la machine virtuelle LabEx. Assurez-vous d'être dans le répertoire ~/project.

Tout d'abord, exécutons un balayage en utilisant le modèle de temporisation -T1. Nous utiliserons la commande time pour mesurer le temps d'exécution.

Exécutez la commande suivante :

time sudo nmap -T1 127.0.0.1

La commande time exécutera le balayage Nmap puis affichera le temps qu'il a pris pour se terminer. Attention au temps "réel" rapporté par la commande time. Cela représente le temps total écoulé.

Exemple de sortie (le temps variera) :

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 11:00 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000007s latency).
Not shown: 997 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
631/tcp  open  ipp
9000/tcp open  cslistener

Nmap done: 1 IP address (1 host up) scanned in 10.50 seconds

real    0m10.552s
user    0m0.103s
sys     0m0.032s

Dans cet exemple, le temps "réel" est de 0 minute et 10,552 secondes.

Maintenant, exécutons le même balayage en utilisant le modèle de temporisation -T4.

Exécutez la commande suivante :

time sudo nmap -T4 127.0.0.1

Encore une fois, attention au temps "réel" rapporté par la commande time.

Exemple de sortie (le temps variera) :

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 11:01 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000007s latency).
Not shown: 997 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
631/tcp  open  ipp
9000/tcp open  cslistener

Nmap done: 1 IP address (1 host up) scanned in 1.23 seconds

real    0m1.285s
user    0m0.098s
sys     0m0.029s

Dans cet exemple, le temps "réel" est de 0 minute et 1,285 secondes.

Comparez les temps "réels" des deux balayages. Vous devriez constater que le balayage utilisant le modèle de temporisation -T4 se termine considérablement plus rapidement que le balayage utilisant le modèle de temporisation -T1. Cela démontre le compromis entre vitesse et discrétion. -T1 est plus lent mais plus discret, tandis que -T4 est plus rapide mais potentiellement plus perceptible.

Sommaire

Dans ce laboratoire, les participants ont appris à optimiser le temps d'exécution et les performances des balayages Nmap. Ils ont utilisé l'option -T4 pour effectuer un balayage rapide et équilibré du réseau 192.168.1.0/24, en sachant que de plus hautes valeurs de -T signifient un balayage plus agressif. Ils ont également augmenté la parallélisme avec --min-parallelism 20, ont défini un délai de balayage avec --scan-delay 500ms, ont suivi l'avancée avec -v --stats-every 5s, ont testé le balayage discrètement avec -T1 et ont comparé les temps d'exécution dans le terminal Xfce.