Utilizar técnicas de evasión 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, verifica versiones desactualizadas de más de 1250 servidores y problemas específicos de versión en más de 270 servidores.

Al realizar escaneos de seguridad, a menudo es deseable evitar la detección por parte de sistemas de seguridad como Sistemas de Detección de Intrusiones (IDS), Sistemas de Prevención de Intrusiones (IPS) o Firewalls de Aplicaciones Web (WAF). Estos sistemas monitorean el tráfico de red en busca de patrones maliciosos. Nikto incluye técnicas de evasión integradas para ayudar a disfrazar sus escaneos y hacerlos menos obvios para dichos sistemas.

En este laboratorio, aprenderá a utilizar la opción -evasion de Nikto para realizar escaneos más sigilosos.

Comprender las técnicas de evasión disponibles con -evasion

En este paso, aprenderá a listar y comprender las diferentes técnicas de evasión disponibles en Nikto. La opción -evasion (o -e) se utiliza para especificar una técnica de evasión. Para ver todas las técnicas disponibles, puede ejecutar Nikto solo con la opción -evasion y sin un número de técnica específico.

Listemos las técnicas disponibles. Abra su terminal y ejecute el siguiente comando:

nikto -evasion

Verá una lista de las técnicas disponibles con un número y una breve descripción para cada una.

- Evasion options:
      1   Random URI encoding (non-UTF8)
      2   Directory self-reference (/./)
      3   Premature URL ending
      4   Prepend long random string to request
      5   Fake parameter
      6   GET instead of HEAD
      7   Use a random User-Agent
      8   Random case sensitivity
      A   Use a random IP for the Source-IP
      B   Obfuscate with TABs
      C   Use a carriage return (CR) as a line-ending
      D   Use a binary value as a line-ending
      E   Use a long false request to mis-direct an IDS
      F   Use Windows-style directory separators (\)

Esta salida muestra los diversos métodos que Nikto puede utilizar para alterar sus solicitudes y evitar la detección. En los siguientes pasos, practicaremos el uso de algunas de estas técnicas.

Ejecutar un escaneo usando -evasion 1 para codificación URI aleatoria

En este paso, utilizará la primera técnica de evasión, "Codificación URI aleatoria" (Random URI encoding). Esta técnica codifica partes de la URI de la solicitud de una manera no estándar. Si bien los servidores web suelen entender estas codificaciones, los IDS basados en firmas simples pueden no coincidir con los patrones, permitiendo que la solicitud pase sin ser detectada.

Ejecutaremos un escaneo contra el servidor web simple que se inició para usted en la configuración del laboratorio. Se está ejecutando en http://127.0.0.1:8000.

Para usar la técnica 1, agregue el número a la opción -evasion. Ejecute el siguiente comando en su terminal:

nikto -h http://127.0.0.1:8000 -evasion 1

Nikto ahora comenzará a escanear el objetivo. El escaneo procederá como de costumbre, pero las solicitudes enviadas al servidor tendrán sus URIs codificadas aleatoriamente.

Aquí hay una muestra de la salida que podría ver:

- Nikto v2.5.0
---------------------------------------------------------------------------
+ Target IP:          127.0.0.1
+ Target Hostname:    127.0.0.1
+ Target Port:        8000
+ Start Time:         ...
---------------------------------------------------------------------------
+ Server: SimpleHTTP/0.6 Python/3.10.12
+ The anti-clickjacking X-Frame-Options header is not present.
+ 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)
+ Server leaks a possible file system path: /home/labex/project/test-site/. This may suggest the server is running on a Unix-like system.
+ Allowed HTTP Methods: GET, HEAD, OPTIONS
+ Public HTTP Methods: GET, HEAD, OPTIONS
+ OSVDB-3233: /: HTTP TRACE method is active, suggesting the host is vulnerable to XST
...
+ 15 requests: 0 error(s) and 7 item(s) reported on remote host
+ End Time:           ... (15 seconds)
---------------------------------------------------------------------------
+ 1 host(s) tested

Observe que el escaneo se completa y proporciona hallazgos, pero las solicitudes subyacentes se modificaron para ser más evasivas.

Intentar un escaneo usando -evasion 2 para auto-referencia de directorio

Ahora, intentemos otra técnica. La técnica de evasión 2 utiliza la "auto-referencia de directorio" (Directory self-reference). Este método inserta /./ en las URLs de las solicitudes (por ejemplo, /cgi-bin/ se convierte en /./cgi-bin/). La mayoría de los servidores web normalizarán esta ruta y la tratarán como una solicitud regular, pero puede confundir a algunos filtros de seguridad que buscan coincidencias exactas de ruta.

Ejecute un escaneo de Nikto utilizando la técnica de evasión 2 contra el mismo objetivo:

nikto -h http://127.0.0.1:8000 -evasion 2

El escaneo se ejecutará de nuevo, pero esta vez utilizando el truco de auto-referencia de directorio. La salida será muy similar a la del escaneo anterior, ya que el servidor responde correctamente a las solicitudes modificadas.

- Nikto v2.5.0
---------------------------------------------------------------------------
+ Target IP:          127.0.0.1
+ Target Hostname:    127.0.0.1
+ Target Port:        8000
+ Start Time:         ...
---------------------------------------------------------------------------
+ Server: SimpleHTTP/0.6 Python/3.10.12
+ The anti-clickjacking X-Frame-Options header is not present.
+ 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.
...
+ 15 requests: 0 error(s) and 7 item(s) reported on remote host
+ End Time:           ...
---------------------------------------------------------------------------
+ 1 host(s) tested

La conclusión clave es que todavía está obteniendo resultados de escaneo válidos mientras utiliza técnicas que pueden ayudar a eludir la monitorización de seguridad.

Usar -evasion 4 para anteponer cadenas aleatorias largas

En este paso, exploraremos la técnica de evasión 4, que antepone una cadena aleatoria larga a la solicitud. La idea detrás de esta técnica es empujar la parte maliciosa o interesante real de la solicitud más allá del límite del búfer de algunos dispositivos IDS/IPS simples. Si el IDS solo inspecciona la primera parte de una solicitud, podría pasar por alto la carga útil real.

Ejecutemos un escaneo utilizando esta técnica.

nikto -h http://127.0.0.1:8000 -evasion 4

Una vez más, Nikto realizará su escaneo, pero cada solicitud se antepondrá con una cadena larga y aleatoria. El servidor web ignorará estos datos basura, pero puede ser una forma eficaz de engañar a los sistemas de seguridad que utilizan coincidencia de patrones.

La salida será similar a los escaneos anteriores, lo que demuestra que la técnica no interfiere con la efectividad del escaneo contra el servidor de destino.

- Nikto v2.5.0
---------------------------------------------------------------------------
+ Target IP:          127.0.0.1
+ Target Hostname:    127.0.0.1
+ Target Port:        8000
+ Start Time:         ...
---------------------------------------------------------------------------
+ Server: SimpleHTTP/0.6 Python/3.10.12
...
+ 15 requests: 0 error(s) and 7 item(s) reported on remote host
+ End Time:           ...
---------------------------------------------------------------------------
+ 1 host(s) tested

Combinar múltiples técnicas de evasión en un solo escaneo

Una de las características más potentes de las capacidades de evasión de Nikto es la capacidad de combinar múltiples técnicas en un solo escaneo. Esto crea solicitudes más complejas y variadas, lo que hace aún más difícil que un IDS detecte el escaneo.

Para combinar técnicas, simplemente enumere los números de las técnicas que desea usar una tras otra. Por ejemplo, para combinar la codificación de URI aleatoria (1), la auto-referencia de directorio (2) y la anteposición de cadenas aleatorias largas (4), usaría -evasion 124.

Ejecutemos un escaneo combinando estas tres técnicas:

nikto -h http://127.0.0.1:8000 -evasion 124

Nikto aplicará ahora las tres técnicas a sus solicitudes, creando un escaneo altamente ofuscado. Este enfoque en capas aumenta significativamente las posibilidades de eludir la detección.

La salida mostrará nuevamente los mismos hallazgos, confirmando que la combinación de técnicas de evasión no rompió la funcionalidad del escaneo.

- Nikto v2.5.0
---------------------------------------------------------------------------
+ Target IP:          127.0.0.1
+ Target Hostname:    127.0.0.1
+ Target Port:        8000
+ Start Time:         ...
---------------------------------------------------------------------------
+ Server: SimpleHTTP/0.6 Python/3.10.12
+ The anti-clickjacking X-Frame-Options header is not present.
...
+ 15 requests: 0 error(s) and 7 item(s) reported on remote host
+ End Time:           ...
---------------------------------------------------------------------------
+ 1 host(s) tested

Al combinar técnicas, puede crear una estrategia de escaneo mucho más robusta y sigilosa adaptada a las defensas específicas que anticipa.

Resumen

En este laboratorio, ha aprendido a utilizar las potentes funciones de evasión de Nikto para realizar escaneos de vulnerabilidades web más sigilosos. Comenzó listando las técnicas disponibles con la opción -evasion. Luego practicó la aplicación de técnicas individuales, incluida la codificación de URI aleatoria (1), la auto-referencia de directorio (2) y la anteposición de cadenas aleatorias largas (4).

Finalmente, aprendió a combinar estas técnicas para crear una estrategia de evasión de múltiples capas, lo que aumenta significativamente la dificultad para que los Sistemas de Detección de Intrusiones identifiquen su actividad de escaneo. Estas habilidades son esenciales para realizar evaluaciones de seguridad efectivas y discretas en entornos con monitoreo activo.