Optimización del Tiempo y Rendimiento del Escaneo en Nmap

NmapBeginner
Practicar Ahora

Introducción

En este laboratorio, el objetivo es optimizar el tiempo de barrido y el rendimiento en Nmap. Aprenderá varias técnicas para mejorar los barridos de Nmap, incluyendo el uso de la plantilla rápida con -T4 para un barrido de red rápido, aumentar la paralelismo, establecer retrasos, controlar el progreso, probar la disimulación y comparar el tiempo en la terminal Xfce. Estos pasos lo ayudarán a entender cómo equilibrar la velocidad y la precisión en los barridos de Nmap.

Usar la plantilla rápida con nmap -T4 192.168.1.0/24

En este paso, usaremos la opción de plantilla rápida con Nmap para realizar un barrido rápido de una red. La opción -T4 se utiliza para especificar una plantilla de tiempo que equilibra la velocidad y la precisión. Es más rápido que la plantilla predeterminada, pero puede ser menos precisa en algunos casos.

Antes de comenzar, entendamos qué es una plantilla de tiempo. Nmap utiliza plantillas de tiempo para controlar la forma en que escanea un objetivo. Estas plantillas afectan parámetros como el retraso entre las sondas, el número de reintentos y los valores de tiempo de espera. La opción -T le permite elegir una plantilla predefinida, que va desde -T0 (paranoico) hasta -T5 (insano). Números más altos indican un barrido más agresivo.

La plantilla -T4 es un buen compromiso para la mayoría de las redes. Es más rápida que la plantilla predeterminada (-T3), pero todavía evita ser demasiado agresiva, lo que podría causar paquetes perdidos o activar sistemas de detección de intrusiones.

Ahora, realicemos el barrido. Usaremos el comando nmap -T4 192.168.1.0/24 para escanear la red 192.168.1.0/24.

Abra su terminal en la VM de LabEx. Asegúrese de estar en el directorio ~/project.

Ejecute el siguiente comando:

sudo nmap -T4 192.168.1.0/24

Este comando le dice a Nmap que escanee todas las direcciones IP en el rango 192.168.1.0/24 usando la plantilla de tiempo -T4. El /24 especifica una máscara de subred de 255.255.255.0, lo que significa que Nmap escaneará 256 direcciones IP (desde 192.168.1.0 hasta 192.168.1.255).

La salida mostrará los resultados del barrido, incluyendo los puertos abiertos y los servicios en ejecución en cada host. Dado que la red 192.168.1.0/24 es probablemente su red local, los resultados variarán según los dispositivos conectados a ella.

Salida de ejemplo (variará según su red):

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

Esta salida muestra que Nmap escanearon 256 direcciones IP y encontraron dos hosts activos: 192.168.1.1 y 192.168.1.100. El host 192.168.1.1 tiene el puerto 80 (http) abierto, y el host 192.168.1.100 tiene el puerto 22 (ssh) abierto. El barrido tomó aproximadamente 5.23 segundos.

Aumentar la paralelización con nmap --min-parallelism 20 127.0.0.1

En este paso, aumentaremos la paralelización de los barridos de Nmap utilizando la opción --min-parallelism. Esta opción le permite especificar el número mínimo de sondas que Nmap envía en paralelo. Aumentar la paralelización puede acelerar significativamente los barridos, especialmente en redes con muchos hosts o puertos.

Por defecto, Nmap ajusta dinámicamente el nivel de paralelización según las condiciones de red. Sin embargo, puede usar --min-parallelism para garantizar que Nmap siempre envíe al menos un número determinado de sondas de forma concurrente.

Comprendamos qué significa la paralelización en el contexto de Nmap. Cuando Nmap escanea un objetivo, envía sondas a diferentes puertos o hosts. Con la paralelización, Nmap puede enviar múltiples sondas simultáneamente en lugar de esperar una respuesta de cada sonda antes de enviar la siguiente. Esto puede reducir significativamente el tiempo total de barrido.

Ahora, realicemos un barrido con paralelización aumentada. Usaremos el comando nmap --min-parallelism 20 127.0.0.1 para escanear el localhost (127.0.0.1) con un paralelismo mínimo de 20.

Abra su terminal en la VM de LabEx. Asegúrese de estar en el directorio ~/project.

Ejecute el siguiente comando:

sudo nmap --min-parallelism 20 127.0.0.1

Este comando le dice a Nmap que escanee 127.0.0.1 y que intente mantener al menos 20 sondas en paralelo. Tenga en cuenta que Nmap puede todavía ajustar la paralelización dinámicamente según las condiciones de red, pero intentará mantenerse por encima del mínimo especificado.

La salida mostrará los resultados del barrido, incluyendo los puertos abiertos y los servicios en ejecución en el localhost.

Salida de ejemplo (variará según su sistema):

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

Esta salida muestra que Nmap escanearon el localhost (127.0.0.1) y encontraron tres puertos abiertos: 22 (ssh), 631 (ipp) y 9000 (cslistener). El barrido se completó relativamente rápido debido al aumento de la paralelización. El tiempo real ahorrado dependerá de las condiciones de red y del objetivo que se está escanneando.

Establecer retraso con nmap --scan-delay 500ms 192.168.1.1

En este paso, estableceremos un retraso entre las sondas utilizando la opción --scan-delay en Nmap. Esta opción le permite especificar la cantidad de tiempo que Nmap debe esperar entre el envío de cada sonda. Aumentar el retraso de barrido puede ser útil para evitar la detección por sistemas de detección de intrusiones (IDS) o para escanear hosts que son sensibles al tráfico de red.

Por defecto, Nmap ajusta automáticamente el retraso de barrido según las condiciones de red. Sin embargo, puede usar --scan-delay para establecer manualmente un retraso específico. El retraso se especifica en milisegundos (ms) o segundos (s).

Comprendamos por qué podría querer usar un retraso de barrido. Un barrido muy rápido puede abrumar un host objetivo o desencadenar alertas de seguridad. Agregar un retraso hace que el barrido sea menos agresivo y menos probable que sea detectado. Esto es especialmente importante cuando se escanean sistemas o redes de producción donde se desea minimizar el impacto del barrido.

Ahora, realicemos un barrido con un retraso especificado. Usaremos el comando nmap --scan-delay 500ms 192.168.1.1 para escanear el host 192.168.1.1 con un retraso de 500 milisegundos entre cada sonda.

Abra su terminal en la VM de LabEx. Asegúrese de estar en el directorio ~/project.

Ejecute el siguiente comando:

sudo nmap --scan-delay 500ms 192.168.1.1

Este comando le dice a Nmap que escanée 192.168.1.1 y espere 500 milisegundos entre el envío de cada sonda. Esto significativamente ralentizará el barrido en comparación con un barrido sin retraso.

La salida mostrará los resultados del barrido, incluyendo los puertos abiertos y los servicios en ejecución en 192.168.1.1.

Salida de ejemplo (variará según su red):

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

Esta salida muestra que Nmap escanearon 192.168.1.1 y encontraron el puerto 80 (http) abierto. Observe que el barrido tomó más tiempo (5.50 segundos) que podría haber tomado sin la opción --scan-delay. El tiempo exacto variará según el objetivo y las condiciones de red.

Seguir el progreso con nmap -v --stats-every 5s 192.168.1.0/24

En este paso, aprenderemos a seguir el progreso de un escaneo de Nmap utilizando las opciones -v (detallado) y --stats-every. Estas opciones proporcionan retroalimentación en tiempo real sobre el progreso del escaneo, lo que es especialmente útil para escaneos de larga duración.

La opción -v aumenta el nivel de detalle de la salida de Nmap. Con -v, Nmap mostrará más información sobre el escaneo, incluyendo las sondas que se están enviando, las respuestas recibidas y el estado de cada host. Puede usar -vv para una salida aún más detallada.

La opción --stats-every le permite especificar con qué frecuencia Nmap debe imprimir estadísticas sobre el progreso del escaneo. El valor se especifica en segundos (s), minutos (m) o horas (h). Por ejemplo, --stats-every 5s imprimirá estadísticas cada 5 segundos.

Comprendamos por qué es importante seguir el progreso. Cuando se escanean grandes redes, los escaneos de Nmap pueden tomar un tiempo significativo. Sin información sobre el progreso, puede ser difícil saber qué tan avanzado está el escaneo y si está avanzando. Las opciones -v y --stats-every proporcionan información valiosa sobre el estado del escaneo.

Ahora, realicemos un escaneo con seguimiento de progreso. Usaremos el comando nmap -v --stats-every 5s 192.168.1.0/24 para escanear la red 192.168.1.0/24 e imprimir estadísticas cada 5 segundos.

Abra su terminal en la VM de LabEx. Asegúrese de estar en el directorio ~/project.

Ejecute el siguiente comando:

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

Este comando le dice a Nmap que escanée todas las direcciones IP en el rango 192.168.1.0/24, muestre una salida detallada e imprima estadísticas cada 5 segundos.

La salida mostrará el progreso del escaneo, incluyendo el número de hosts escaneados, el número de hosts activos y el tiempo estimado restante.

Salida de ejemplo (variará según su red):

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

Esta salida muestra el progreso del escaneo cada 5 segundos. Puede ver el número de hosts completados, la tasa de escaneo (hosts/s) y el número de hosts activos. El escaneo también informa sobre los puertos abiertos a medida que se descubren.

Probar el modo sigiloso con nmap -T1 127.0.0.1

En este paso, exploraremos cómo realizar un escaneo escondido usando Nmap con la plantilla de tiempo -T1. El escaneo escondido tiene como objetivo minimizar las posibilidades de ser detectado por sistemas de detección de intrusiones (IDS) o firewall.

La opción -T1 se conoce como la plantilla de tiempo "sutil". Es más lenta que la plantilla predeterminada y está diseñada para ser menos notoria. Logra esto aumentando el retraso entre las sondas, lo que reduce la carga en el sistema objetivo y hace que el escaneo sea menos probable que se marque como malicioso.

Es importante entender que ningún escaneo es verdaderamente invisible. Incluso con técnicas de escondido, siempre existe el riesgo de detección. Sin embargo, usar la opción -T1 puede reducir significativamente ese riesgo.

Ahora, realicemos un escaneo escondido del localhost (127.0.0.1) usando la plantilla de tiempo -T1.

Abra su terminal en la VM de LabEx. Asegúrese de estar en el directorio ~/project.

Ejecute el siguiente comando:

sudo nmap -T1 127.0.0.1

Este comando le dice a Nmap que escanée el localhost (127.0.0.1) usando la plantilla de tiempo -T1. Debido a que estamos escanneando el localhost, el escaneo debe completarse relativamente rápido, incluso con la plantilla de tiempo más lenta.

La salida mostrará los resultados del escaneo, incluyendo los puertos abiertos y los servicios en ejecución en el localhost.

Salida de ejemplo (puede variar según la configuración de su sistema):

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

Esta salida muestra que Nmap escanó el localhost y encontró tres puertos abiertos: 22 (ssh), 631 (ipp) y 9000 (cslistener). El escaneo tomó aproximadamente 10.50 segundos. Tenga en cuenta que el tiempo de escaneo puede ser más largo en comparación con el uso de una plantilla de tiempo más rápida como -T4.

Comparar tiempos en la terminal Xfce

En este paso, compararemos el tiempo de ejecución de los escaneos de Nmap utilizando diferentes plantillas de tiempo. Usaremos la terminal Xfce para ejecutar los escaneos y observar el tiempo que toma cada escaneo para completarse. Esto le ayudará a entender el impacto de las plantillas de tiempo en la velocidad del escaneo.

Compararemos las plantillas de tiempo -T1 (sutil) y -T4 (rápida). Escanearemos el localhost (127.0.0.1) para esta comparación.

Abra su terminal en la VM de LabEx. Asegúrese de estar en el directorio ~/project.

Primero, ejecutemos un escaneo utilizando la plantilla de tiempo -T1. Usaremos el comando time para medir el tiempo de ejecución.

Ejecute el siguiente comando:

time sudo nmap -T1 127.0.0.1

El comando time ejecutará el escaneo de Nmap y luego mostrará el tiempo que tardó en completarse. Presta atención al tiempo "real" informado por el comando time. Esto representa el tiempo transcurrido total.

Salida de ejemplo (el tiempo variará):

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

En este ejemplo, el tiempo "real" es de 0 minutos y 10.552 segundos.

Ahora, ejecutemos el mismo escaneo utilizando la plantilla de tiempo -T4.

Ejecute el siguiente comando:

time sudo nmap -T4 127.0.0.1

Nuevamente, preste atención al tiempo "real" informado por el comando time.

Salida de ejemplo (el tiempo variará):

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

En este ejemplo, el tiempo "real" es de 0 minutos y 1.285 segundos.

Compare los tiempos "real" de los dos escaneos. Debería observar que el escaneo utilizando la plantilla de tiempo -T4 se completa significativamente más rápido que el escaneo utilizando la plantilla de tiempo -T1. Esto demuestra el compromiso entre velocidad y escondido. -T1 es más lento pero más escondido, mientras que -T4 es más rápido pero potencialmente más notorio.

Resumen

En este laboratorio, los participantes aprendieron a optimizar el tiempo y el rendimiento de los escaneos de Nmap. Utilizaron la opción -T4 para realizar un escaneo rápido y equilibrado de la red 192.168.1.0/24, comprendiendo que valores más altos de -T significan un escaneo más agresivo. También aumentaron la paralelización con --min-parallelism 20, establecieron un retraso en el escaneo con --scan-delay 500ms, siguieron el progreso con -v --stats-every 5s, probaron el escaneo sigiloso con -T1 y compararon los tiempos en la terminal Xfce.