Saltar a contenido

Performance

El rendimiento del escaneo juega un papel significativo cuando necesitamos escanear una red extensa o cuando lidiamos con ancho de banda de red bajo. Podemos usar varias opciones para indicar a Nmap qué tan rápido (-T <0-5>), con qué frecuencia (--min-parallelism <número>), qué tiempos de espera (--max-rtt-timeout <tiempo>) deben tener los paquetes de prueba, cuántos paquetes deben enviarse simultáneamente (--min-rate <número>), y con cuántos reintentos (--max-retries <número>) se deben escanear los puertos de los objetivos.


Timeouts

Cuando Nmap envía un paquete, lleva algún tiempo (Round-Trip-Time - RTT) recibir una respuesta desde el puerto escaneado. Generalmente, Nmap comienza con un tiempo de espera alto (--min-RTT-timeout) de 100ms. Veamos un ejemplo escaneando toda la red con 256 hosts, incluyendo los 100 puertos principales.

Default Scan

sudo nmap 10.129.2.0/24 -F

<SNIP>
Nmap done: 256 IP addresses (10 hosts up) scanned in 39.44 seconds

Optimized RTT

sudo nmap 10.129.2.0/24 -F --initial-rtt-timeout 50ms --max-rtt-timeout 100ms

<SNIP>
Nmap done: 256 IP addresses (8 hosts up) scanned in 12.29 seconds
Opciones de Escaneo Descripción
10.129.2.0/24 Escanea la red objetivo especificada.
-F Escanea los 100 puertos principales.
--initial-rtt-timeout 50ms Establece el valor especificado como tiempo inicial de RTT.
--max-rtt-timeout 100ms Establece el valor especificado como tiempo máximo de RTT.

Al comparar los dos escaneos, podemos ver que encontramos dos hosts menos con el escaneo optimizado, pero el escaneo tomó solo una cuarta parte del tiempo. De esto podemos concluir que establecer el tiempo inicial de RTT timeout (--initial-rtt-timeout) demasiado corto puede causar que pasemos por alto algunos hosts.


Max Retries

Otra forma de aumentar la velocidad de los escaneos es especificar la tasa de reintentos de los paquetes enviados (--max-retries). El valor predeterminado para la tasa de reintentos es 10, por lo que si Nmap no recibe una respuesta para un puerto, no enviará más paquetes a ese puerto y lo omitirá.

Default Scan

sudo nmap 10.129.2.0/24 -F | grep "/tcp" | wc -l

23

Reduced Retries

sudo nmap 10.129.2.0/24 -F --max-retries 0 | grep "/tcp" | wc -l

21
Opciones de Escaneo Descripción
10.129.2.0/24 Escanea la red objetivo especificada.
-F Escanea los 100 puertos principales.
--max-retries 0 Establece el número de reintentos que se realizarán durante el escaneo.

Una vez más, reconocemos que acelerar también puede tener un efecto negativo en nuestros resultados, lo que significa que podríamos pasar por alto información importante.


Rates

Durante una prueba de penetración de tipo white-box, es posible que nos incluyan en la lista blanca de los sistemas de seguridad para verificar las vulnerabilidades en los sistemas de la red y no solo probar las medidas de protección. Si conocemos el ancho de banda de la red, podemos trabajar con la tasa de envío de paquetes, lo que acelera significativamente nuestros escaneos con Nmap. Al establecer la tasa mínima (--min-rate <número>) para enviar paquetes, indicamos a Nmap que envíe simultáneamente el número especificado de paquetes, intentando mantener la tasa de envío en consecuencia.

Default Scan

sudo nmap 10.129.2.0/24 -F -oN tnet.default

<SNIP>
Nmap done: 256 IP addresses (10 hosts up) scanned in 29.83 seconds

Optimized Scan

sudo nmap 10.129.2.0/24 -F -oN tnet.minrate300 --min-rate 300

<SNIP>
Nmap done: 256 IP addresses (10 hosts up) scanned in 8.67 seconds
Opciones de Escaneo Descripción
10.129.2.0/24 Escanea la red objetivo especificada.
-F Escanea los 100 puertos principales.
-oN tnet.minrate300 Guarda los resultados en formatos normales, comenzando con el nombre de archivo especificado.
--min-rate 300 Establece el número mínimo de paquetes que se enviarán por segundo.

Default Scan - Found Open Ports

cat tnet.default | grep "/tcp" | wc -l

23

Optimized Scan - Found Open Ports

cat tnet.minrate300 | grep "/tcp" | wc -l

23

Timing

Debido a que estas configuraciones no siempre pueden optimizarse manualmente, como en una prueba de penetración de tipo black-box, Nmap ofrece seis plantillas de temporización diferentes (-T <0-5>) que podemos utilizar. Estos valores (0-5) determinan la agresividad de nuestros escaneos. Esto también puede tener efectos negativos si el escaneo es demasiado agresivo, ya que los sistemas de seguridad pueden bloquearnos debido al tráfico de red generado. La plantilla de temporización predeterminada utilizada cuando no hemos definido otra cosa es la normal (-T 3).

  • -T 0 / -T paranoid
  • -T 1 / -T sneaky
  • -T 2 / -T polite
  • -T 3 / -T normal
  • -T 4 / -T aggressive
  • -T 5 / -T insane

Estas plantillas contienen opciones que también podemos configurar manualmente, y algunas de ellas ya las hemos visto. Los desarrolladores determinaron los valores establecidos para estas plantillas según sus mejores resultados, lo que facilita adaptar nuestros escaneos al entorno de red correspondiente. Podemos encontrar las opciones exactas utilizadas con sus valores aquí: https://nmap.org/book/performance-timing-templates.html

Default Scan

sudo nmap 10.129.2.0/24 -F -oN tnet.default 

<SNIP>
Nmap done: 256 IP addresses (10 hosts up) scanned in 32.44 seconds

Insane Scan

sudo nmap 10.129.2.0/24 -F -oN tnet.T5 -T 5

<SNIP>
Nmap done: 256 IP addresses (10 hosts up) scanned in 18.07 seconds
Opciones de Escaneo Descripción
10.129.2.0/24 Escanea la red objetivo especificada.
-F Escanea los 100 puertos principales.
-oN tnet.T5 Guarda los resultados en formatos normales, comenzando con el nombre de archivo especificado.
-T 5 Especifica la plantilla de temporización "insane" (extrema).

Default Scan - Found Open Ports

cat tnet.default | grep "/tcp" | wc -l

23

Insane Scan - Found Open Ports

cat tnet.T5 | grep "/tcp" | wc -l

23