Desactivar búsquedas DNS para escaneos más rápidos en Nikto

Kali LinuxBeginner
Practicar Ahora

Introducción

Nikto es un popular escáner de servidores web de código abierto que realiza pruebas exhaustivas contra servidores web para múltiples elementos, incluyendo más de 6700 archivos/programas potencialmente peligrosos, comprobaciones de versiones obsoletas de más de 1250 servidores y problemas específicos de versión en más de 270 servidores.

Por defecto, Nikto realiza búsquedas inversas de DNS en las direcciones IP que encuentra en el contenido del servidor web. Si bien esto puede ser útil para descubrir nombres de host relacionados, también puede ralentizar significativamente el escaneo, especialmente al escanear redes grandes o destinos que no responden.

En este laboratorio, aprenderá a utilizar la opción -nolookup para deshabilitar esta función y comparar los tiempos de escaneo para comprender los beneficios de rendimiento.

Comprender el propósito de la opción -nolookup

En este paso, aprenderá sobre la opción -nolookup en Nikto.

Cuando Nikto escanea un servidor web, puede encontrar direcciones IP en los archivos de configuración, registros o páginas web del servidor. Por defecto, Nikto intenta realizar una búsqueda inversa de DNS para cada una de estas IPs para encontrar sus nombres de host asociados. Este proceso puede consumir mucho tiempo.

La opción -nolookup le indica a Nikto que omita este paso por completo. Esto puede resultar en un escaneo mucho más rápido, pero se perderá información potencialmente valiosa sobre otros nombres de host asociados con el objetivo.

Puede ver esta opción y otras visualizando el menú de ayuda de Nikto. Hagámoslo ahora.

Ejecute el siguiente comando en su terminal:

nikto -Help

Desplácese por la salida y busque la opción -nolookup. Se listará con una breve descripción.

...
-nolookup           Omitir búsquedas de nombres
...

Ahora que comprende lo que hace -nolookup, podemos proceder a verlo en acción.

Ejecutar un escaneo de referencia contra un objetivo utilizando su dirección IP

En este paso, realizará un escaneo estándar de Nikto contra un servidor web local. Utilizaremos el comando time para medir cuánto tiempo tarda el escaneo. Esto servirá como nuestra línea de base para la comparación.

El entorno del laboratorio ya ha iniciado un servidor web Nginx simple que se ejecuta en 127.0.0.1. Utilizaremos este como nuestro objetivo.

Para ejecutar el escaneo y medir su tiempo, ejecute el siguiente comando:

time nikto -h 127.0.0.1

El escaneo comenzará y verá una salida similar a la siguiente. Tenga paciencia, ya que puede tardar un minuto en completarse.

- Nikto v2.5.0
---------------------------------------------------------------------------
+ Target IP:          127.0.0.1
+ Target Hostname:    localhost
+ Target Port:        80
+ Start Time:         ...
---------------------------------------------------------------------------
+ Server: nginx/1.18.0 (Ubuntu)
+ The anti-clickjacking X-Frame-Options header is not present.
+ The X-XSS-Protection header is not defined. This header can hint to the user agent to protect against some forms of XSS
+ The X-Content-Type-Options header is not set. This could allow the user agent to render the content of the site in a different fashion to the MIME type
+ No CGI directories found (use '-C all' to force check all possible dirs)
+ Retrieved x-powered-by header: PHP/8.1.2
+ Allowed HTTP Methods: GET, HEAD
+ Public HTTP Methods: GET, HEAD
+ OSVDB-3233: /index.html: Server may leak inodes via ETags, header found with file /var/www/html/index.html inode 262204, size 612, mtime ...
+ 7554 requests: 0 error(s) and 7 item(s) reported on remote host
+ End Time:           ... (15 seconds)
---------------------------------------------------------------------------
+ 1 host(s) tested

real    0m15.543s
user    0m14.987s
sys     0m0.312s

Preste mucha atención a las últimas tres líneas, que son la salida del comando time. El tiempo real es el tiempo total transcurrido en el reloj. Anote este valor para el siguiente paso.

Ejecutar el mismo escaneo nuevamente con la bandera -nolookup

Ahora que tiene un tiempo de ejecución de referencia, ejecutemos el mismo escaneo exacto pero con la bandera -nolookup añadida. Esto evitará que Nikto realice búsquedas inversas de DNS.

Ejecute el siguiente comando en su terminal:

time nikto -h 127.0.0.1 -nolookup

El escaneo se ejecutará de nuevo. La salida de Nikto en sí será muy similar al escaneo anterior, pero debería notar una diferencia en el tiempo de ejecución informado por el comando time.

- Nikto v2.5.0
---------------------------------------------------------------------------
+ Target IP:          127.0.0.1
+ Target Hostname:    127.0.0.1
+ Target Port:        80
+ Start Time:         ...
---------------------------------------------------------------------------
+ Server: nginx/1.18.0 (Ubuntu)
+ The anti-clickjacking X-Frame-Options header is not present.
+ The X-XSS-Protection header is not defined. This header can hint to the user agent to protect against some forms of XSS
+ The X-Content-Type-Options header is not set. This could allow the user agent to render the content of the site in a different fashion to the MIME type
+ No CGI directories found (use '-C all' to force check all possible dirs)
+ Retrieved x-powered-by header: PHP/8.1.2
+ Allowed HTTP Methods: GET, HEAD
+ Public HTTP Methods: GET, HEAD
+ OSVDB-3233: /index.html: Server may leak inodes via ETags, header found with file /var/www/html/index.html inode 262204, size 612, mtime ...
+ 7554 requests: 0 error(s) and 7 item(s) reported on remote host
+ End Time:           ... (8 seconds)
---------------------------------------------------------------------------
+ 1 host(s) tested

real    0m8.123s
user    0m7.890s
sys     0m0.201s

Observe que el Target Hostname en la salida ahora es 127.0.0.1 en lugar de localhost. Esto se debe a que Nikto no realizó la búsqueda inversa para resolver la IP a un nombre de host. Además, tome nota del nuevo tiempo real.

Comparar el tiempo de ejecución de ambos escaneos

En este paso, analizará los resultados de los dos pasos anteriores para ver el impacto en el rendimiento de la bandera -nolookup.

Echemos un vistazo al tiempo real de ambos comandos.

Escaneo 1 (Referencia): real 0m15.543s (Su tiempo puede variar ligeramente)

Escaneo 2 (con -nolookup): real 0m8.123s (Su tiempo puede variar ligeramente)

Como puede ver, el escaneo con la bandera -nolookup se completó significativamente más rápido. En este ejemplo, fue casi el doble de rápido. La mejora del rendimiento puede ser aún más drástica al escanear varios hosts u objetivos en redes lentas o mal configuradas, donde las búsquedas de DNS podrían agotar el tiempo de espera.

Esta simple comparación demuestra el beneficio directo de rendimiento de deshabilitar las búsquedas de DNS en sus escaneos de Nikto.

Analizar cuándo usar esta optimización de rendimiento

En este paso final, discutiremos las compensaciones y determinaremos cuándo es apropiado usar la opción -nolookup.

Si bien -nolookup proporciona un claro aumento de rendimiento, tiene el costo de perder información potencial. Las búsquedas inversas de DNS pueden ayudarle a descubrir otros nombres de host y hosts virtuales asociados con una dirección IP, lo que puede ser crucial para una evaluación de seguridad integral.

Entonces, ¿cuándo debería usar -nolookup?

  • Escaneos iniciales y triaje: Cuando escanea una gran cantidad de hosts y desea obtener una visión general rápida de las posibles vulnerabilidades. La velocidad es más importante que el detalle exhaustivo en esta etapa.
  • Escaneo por dirección IP: Si su lista de objetivos consiste únicamente en direcciones IP y no le preocupa descubrir nombres de dominio asociados, usar -nolookup es una opción lógica.
  • Redes no confiables: Al escanear a través de una conexión de red lenta o no confiable donde las consultas de DNS podrían fallar o agotar el tiempo de espera, -nolookup puede evitar que el escaneo se detenga.
  • Cuando la velocidad es crítica: En situaciones sensibles al tiempo, como una competencia de pruebas de penetración o una respuesta rápida a incidentes, la velocidad obtenida con esta opción puede ser invaluable.

¿Cuándo debería evitar -nolookup?

  • Evaluación integral: Al realizar una auditoría de seguridad completa y en profundidad de un objetivo específico, desea la mayor cantidad de información posible. Los nombres de host descubiertos a través de búsquedas de DNS podrían revelar superficies de ataque adicionales.
  • Descubrimiento de hosts virtuales: Si sospecha que la IP de destino aloja varios sitios web (hosting virtual), debería permitir que Nikto realice búsquedas para ayudar a identificarlos.

Comprender esta compensación entre velocidad y exhaustividad le permite usar Nikto de manera más efectiva para diferentes escenarios.

Resumen

En este laboratorio, aprendió a optimizar sus escaneos de Nikto para la velocidad. Comenzó comprendiendo el propósito de la bandera -nolookup, que deshabilita las búsquedas inversas de DNS.

Luego realizó dos escaneos: un escaneo de referencia y un segundo escaneo utilizando la opción -nolookup. Al comparar los tiempos de ejecución con el comando time, observó una mejora significativa en el rendimiento.

Finalmente, analizó las compensaciones, concluyendo que -nolookup es ideal para escaneos rápidos y a gran escala o cuando la velocidad es una prioridad, mientras que los escaneos completos para evaluaciones exhaustivas deben omitir esta bandera para recopilar la mayor cantidad de información posible.