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