Establecer un User-Agent Personalizado para Escaneos en Gobuster

Beginner
Practicar Ahora

Introducción

En la seguridad web, el reconocimiento es un primer paso crucial. Herramientas como Gobuster se utilizan ampliamente para la enumeración de directorios y archivos. Sin embargo, muchos servidores web y Web Application Firewalls (WAFs) emplean mecanismos de detección sencillos, como el bloqueo de solicitudes con cadenas de User-Agent sospechosas. Por defecto, Gobuster utiliza una cadena de User-Agent que puede ser fácilmente identificada.

En este laboratorio, aprenderá a establecer una cadena de User-Agent personalizada para sus escaneos de Gobuster. Esta técnica puede ayudarle a evadir mecanismos de detección sencillos y hacer que sus esfuerzos de reconocimiento sean más sigilosos, permitiéndole potencialmente descubrir más directorios y archivos ocultos.

Comprender el Propósito de una Cadena User-Agent

En este paso, aprenderá qué es una cadena User-Agent y por qué es importante en las solicitudes web.

La cadena User-Agent es una cabecera enviada por un cliente (como un navegador web o una herramienta como Gobuster) a un servidor web. Típicamente contiene información sobre el tipo de aplicación del cliente, el sistema operativo, el proveedor del software y la versión del software. Los servidores web utilizan esta información para entregar contenido optimizado para el cliente o para registrar estadísticas del cliente.

Para herramientas de seguridad como Gobuster, la cadena User-Agent por defecto a menudo revela la identidad de la herramienta, lo que puede activar WAFs o sistemas de detección de intrusos (IDS). Por ejemplo, el User-Agent por defecto de Gobuster podría parecer algo como gobuster/3.1.0.

Realicemos un escaneo básico de Gobuster sin ningún User-Agent personalizado para ver su comportamiento por defecto. Escanearemos un servidor web local que se configuró en segundo plano.

Primero, asegúrese de que el servidor web esté en ejecución comprobando su proceso:

ps aux | grep "python3 -m http.server 8080" | grep -v grep

Debería ver una salida similar a esta, indicando que el servidor está en ejecución:

labex      1234  0.0  0.1  12345  6789 ?        Sl   HH:MM   0:00 python3 -m http.server 8080 --directory /tmp/web_root

Ahora, ejecute un escaneo simple de Gobuster contra el servidor local en el puerto 8080. Usaremos una lista de palabras pequeña para la demostración.

gobuster dir -u http://127.0.0.1:8080 -w /usr/share/wordlists/dirb/common.txt -q -x html,txt -t 10
  • -u http://127.0.0.1:8080: Especifica la URL de destino.
  • -w /usr/share/wordlists/dirb/common.txt: Especifica la lista de palabras a utilizar.
  • -q: Modo silencioso, solo imprime resultados.
  • -x html,txt: Especifica las extensiones a buscar.
  • -t 10: Establece el número de hilos concurrentes en 10.

Verá una salida similar a esta, mostrando los directorios y archivos descubiertos:

/admin                (Status: 200)
/secret               (Status: 200)
/backup               (Status: 200)

Si bien este escaneo funciona, el User-Agent utilizado por Gobuster es el predeterminado, que podría ser fácilmente bloqueado por un WAF.

En este paso, aprenderá a encontrar una cadena User-Agent común de navegador que puede utilizar para disfrazar sus escaneos de Gobuster.

Para que sus escaneos de Gobuster parezcan provenir de un navegador web legítimo, necesita utilizar una cadena User-Agent que un navegador típico enviaría. Puede encontrar estas cadenas mediante:

  1. Inspeccionando las solicitudes de red en las herramientas de desarrollador de su navegador: Cuando navega por un sitio web, abra las herramientas de desarrollador de su navegador (generalmente F12), vaya a la pestaña "Network" (Red) e inspeccione las cabeceras de cualquier solicitud.
  2. Buscando en línea: Muchos sitios web compilan listas de cadenas User-Agent comunes.

Para este laboratorio, usemos una cadena User-Agent común para una versión reciente de Chrome en Windows. Una cadena User-Agent típica para Chrome podría verse así:

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36

Esta cadena indica:

  • Mozilla/5.0: Un token general que muchos navegadores incluyen por razones históricas.
  • (Windows NT 10.0; Win64; x64): Información del sistema operativo (Windows 10, 64 bits).
  • AppleWebKit/537.36 (KHTML, like Gecko): Información del motor de renderizado (WebKit, con compatibilidad KHTML).
  • Chrome/120.0.0.0: Nombre y versión del navegador.
  • Safari/537.36: Otro token histórico, a menudo incluido por navegadores basados en WebKit.

Puede copiar esta cadena directamente para el siguiente paso. Es importante encerrar la cadena User-Agent entre comillas cuando la utilice en la línea de comandos, especialmente si contiene espacios o caracteres especiales.

Usar la Opción -a para Establecer un User-Agent Personalizado

En este paso, aprenderá a utilizar la opción -a en Gobuster para establecer una cadena User-Agent personalizada para sus escaneos.

Gobuster proporciona la opción -a (o --agent) específicamente para este propósito. Simplemente pasa la cadena User-Agent deseada como argumento a esta opción.

Preparemos el comando de Gobuster con la cadena User-Agent personalizada que identificamos en el paso anterior. Utilizaremos el mismo objetivo y lista de palabras.

CUSTOM_USER_AGENT="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
echo "Using custom User-Agent: $CUSTOM_USER_AGENT"

Ahora, construya el comando de Gobuster. Observe cómo se utiliza la opción -a:

gobuster dir -u http://127.0.0.1:8080 -w /usr/share/wordlists/dirb/common.txt -a "$CUSTOM_USER_AGENT" -q -x html,txt -t 10
  • -a "$CUSTOM_USER_AGENT": Esta es la parte nueva, donde pasamos nuestra cadena User-Agent personalizada. Las comillas alrededor de $CUSTOM_USER_AGENT son cruciales porque la cadena contiene espacios.

Antes de ejecutar, considere la diferencia que esto hace. Sin la opción -a, el servidor web vería una solicitud de "gobuster". Con la opción -a, verá una solicitud de "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36", que parece un navegador legítimo.

Ejecutar el Escaneo con el Nuevo User-Agent

En este paso, ejecutará el escaneo de Gobuster utilizando la cadena User-Agent personalizada y observará los resultados.

Ahora, ejecute el comando de Gobuster con el User-Agent personalizado. La salida del escaneo en sí se verá similar a la anterior, ya que el User-Agent solo afecta cómo el servidor percibe la solicitud, no los resultados del escaneo en sí (a menos que el servidor bloquee el User-Agent predeterminado).

Ejecute el comando:

CUSTOM_USER_AGENT="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
gobuster dir -u http://127.0.0.1:8080 -w /usr/share/wordlists/dirb/common.txt -a "$CUSTOM_USER_AGENT" -q -x html,txt -t 10

Debería ver los mismos directorios y archivos descubiertos:

/admin                (Status: 200)
/secret               (Status: 200)
/backup               (Status: 200)

Aunque la salida es la misma, la diferencia crucial es que si esto fuera un escenario del mundo real con un WAF (Web Application Firewall) o IDS (Intrusion Detection System), este escaneo tendría menos probabilidades de ser marcado como sospechoso en comparación con un escaneo que utiliza el User-Agent predeterminado de Gobuster. Esta es una técnica fundamental en el hacking ético y las pruebas de penetración para evitar la detección.

Discutir Por Qué Esto Puede Ayudar a Evadir Filtros Simples

En este paso, discutiremos por qué establecer un User-Agent personalizado puede ser una técnica efectiva para evadir filtros simples y mecanismos de detección.

Muchos firewalls de aplicaciones web (WAFs), sistemas de detección de intrusiones (IDS) y configuraciones básicas de servidores emplean reglas para identificar y bloquear tráfico sospechoso. Una de las reglas más simples y comunes es examinar la cadena User-Agent.

He aquí por qué establecer un User-Agent personalizado ayuda:

  • Evadir Bloqueos Basados en User-Agent: Si un WAF tiene una regla para bloquear solicitudes con User-Agents como "gobuster", "nmap", "sqlmap" u otras herramientas de seguridad conocidas, el uso de un User-Agent de navegador común permitirá que sus solicitudes pasen desapercibidas por esta regla específica.
  • Reducir la Sospecha: Un administrador de servidor que revise los registros podría notar un alto volumen de solicitudes de un User-Agent inusual (como gobuster/3.1.0). Al imitar un navegador común, sus solicitudes se mezclan con el tráfico de usuarios legítimos, lo que hace menos probable que sean investigadas manualmente o marcadas automáticamente.
  • Evadir Límites de Tasa (en algunos casos): Aunque no está directamente relacionado con el User-Agent, algunos sistemas pueden aplicar límites de tasa más estrictos a User-Agents que no son de navegador. Al aparecer como un navegador, podría evitar estos límites más estrictos, permitiendo que su escaneo proceda más rápido o de manera más completa.

Es importante tener en cuenta que esta técnica es efectiva contra filtros simples. Los WAFs e IDS más sofisticados utilizan una combinación de factores (por ejemplo, patrones de solicitud, reputación de IP, análisis de comportamiento) para detectar actividades maliciosas, por lo que un User-Agent personalizado por sí solo podría no ser suficiente para eludir defensas avanzadas. Sin embargo, es un primer paso fundamental y a menudo necesario en el reconocimiento sigiloso.

Para limpiar el entorno, puede detener el servidor web de Python:

pkill -f "python3 -m http.server 8080"

Este comando busca y termina el proceso que ejecuta el servidor web de Python.

Resumen

En este laboratorio, aprendió la importancia de la cadena User-Agent en las solicitudes web y cómo puede ser utilizada por herramientas de seguridad como Gobuster. Identificó con éxito una cadena User-Agent de navegador común y, lo que es más importante, utilizó la bandera -a en Gobuster para establecer un User-Agent personalizado para sus escaneos. Esta habilidad práctica es crucial para hacer que sus esfuerzos de reconocimiento sean más sigilosos y efectivos, ayudándole a evadir mecanismos de detección simples y a mezclarse con el tráfico web legítimo.