Guardar los resultados de ataques de Hydra

HydraHydraBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este laboratorio, exploraremos cómo guardar los resultados de un ataque de Hydra. Hydra, una poderosa herramienta de cracking de contraseñas, se utilizará para probar la seguridad de un formulario de inicio de sesión HTTP simulado. Comenzaremos ejecutando un ataque HTTP básico contra un servidor web objetivo, utilizando listas de nombres de usuario y contraseñas creadas en el directorio ~/project.

A continuación, el laboratorio te guiará en el proceso de guardar los resultados del ataque utilizando la opción -o y de mostrarlos en formato JSON con la opción -b. Finalmente, compararemos las salidas de texto y JSON para entender las diferentes formas en que Hydra puede presentar sus hallazgos.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL hydra(("Hydra")) -.-> hydra/HydraGroup(["Hydra"]) hydra/HydraGroup -.-> hydra/single_username("Single Username Attack") hydra/HydraGroup -.-> hydra/single_password("Single Password Attack") hydra/HydraGroup -.-> hydra/http_form("HTTP Form Attack") hydra/HydraGroup -.-> hydra/output_saving("Output File Saving") hydra/HydraGroup -.-> hydra/success_detection("Login Success Detection") subgraph Lab Skills hydra/single_username -.-> lab-550773{{"Guardar los resultados de ataques de Hydra"}} hydra/single_password -.-> lab-550773{{"Guardar los resultados de ataques de Hydra"}} hydra/http_form -.-> lab-550773{{"Guardar los resultados de ataques de Hydra"}} hydra/output_saving -.-> lab-550773{{"Guardar los resultados de ataques de Hydra"}} hydra/success_detection -.-> lab-550773{{"Guardar los resultados de ataques de Hydra"}} end

Ejecutar un ataque HTTP básico

En este paso, realizaremos un ataque HTTP básico utilizando Hydra. Hydra es una poderosa herramienta de cracking de contraseñas y se puede utilizar para probar la seguridad de varios servicios, incluyendo HTTP. Vamos a apuntar a un simple formulario de inicio de sesión HTTP para demostrar las capacidades de Hydra.

Antes de comenzar, entendamos algunos conceptos básicos:

  • HTTP (Protocolo de Transferencia de Hipertexto): La base de la comunicación de datos en la World Wide Web.
  • Hydra: Un cracker de inicio de sesión paralelizado que admite numerosos protocolos para atacar.
  • Objetivo (Target): En nuestro caso, un servidor web con un formulario de inicio de sesión.
  • Lista de nombres de usuario (Username List): Un archivo que contiene una lista de posibles nombres de usuario.
  • Lista de contraseñas (Password List): Un archivo que contiene una lista de posibles contraseñas.

Primero, creemos una simple lista de nombres de usuario y una lista de contraseñas. Usaremos nano para crear estos archivos en el directorio ~/project.

Crea un archivo llamado users.txt con el siguiente contenido:

nano ~/project/users.txt

Agrega los siguientes nombres de usuario al archivo:

admin
user
test

Guarda el archivo presionando Ctrl+X, luego Y y luego Enter.

A continuación, crea un archivo llamado passwords.txt con el siguiente contenido:

nano ~/project/passwords.txt

Agrega las siguientes contraseñas al archivo:

password
123456
test

Guarda el archivo presionando Ctrl+X, luego Y y luego Enter.

Ahora, supongamos que tenemos un servidor web en funcionamiento en 127.0.0.1 en el puerto 80 con un formulario de inicio de sesión. El formulario requiere un nombre de usuario y una contraseña, y la página de inicio de sesión se encuentra en /login.php. Usaremos Hydra para intentar crackear el inicio de sesión.

Nota: Para este laboratorio, simularemos el servicio HTTP. En un escenario del mundo real, reemplazarías 127.0.0.1 con la dirección IP real o el nombre de dominio del servidor objetivo.

Para realizar el ataque HTTP básico, utiliza el siguiente comando:

hydra -L ~/project/users.txt -P ~/project/passwords.txt 127.0.0.1 http-post-form "/login.php:username=^USER^&password=^PASS^:Invalid username or password"

Desglosemos este comando:

  • hydra: El comando de Hydra.
  • -L ~/project/users.txt: Especifica el archivo de la lista de nombres de usuario.
  • -P ~/project/passwords.txt: Especifica el archivo de la lista de contraseñas.
  • 127.0.0.1: La dirección IP del objetivo.
  • http-post-form: Especifica el módulo de ataque de formulario HTTP POST.
  • "/login.php:username=^USER^&password=^PASS^:Invalid username or password": Especifica la página de inicio de sesión, los campos de nombre de usuario y contraseña, y el mensaje de error que se muestra cuando el inicio de sesión falla. ^USER^ y ^PASS^ son marcadores de posición que Hydra reemplaza con nombres de usuario y contraseñas de las listas.

Después de ejecutar el comando, Hydra intentará iniciar sesión utilizando cada combinación de nombre de usuario y contraseña. Si se encuentra un inicio de sesión exitoso, Hydra mostrará el nombre de usuario y la contraseña.

Ejemplo de salida (si tiene éxito):

Hydra v9.6 (c) 2024 by van Hauser/THC - Use freely but only for legal purposes.

Hydra is starting...

[DATA] 1 task, 3 servers, 3 login tries (l:3/p:3), ~1 try per server
[DATA] attacking service http-post-form on port 80
[ATTACK] attacking 127.0.0.1:80/login.php
[80][http-post-form] host: 127.0.0.1   login: admin   password: password

Esta salida indica que Hydra encontró con éxito la combinación de nombre de usuario admin y contraseña password.

Si no se encuentra ningún inicio de sesión exitoso, Hydra terminará sin mostrar ninguna credencial de inicio de sesión exitosa.

Guardar resultados con la opción -o

En este paso, aprenderemos cómo guardar los resultados de un ataque de Hydra en un archivo utilizando la opción -o. Esto es útil para analizar los resultados más tarde o con fines de generación de informes.

La opción -o te permite especificar un archivo de salida donde Hydra almacenará las credenciales crackeadas. Si Hydra encuentra una combinación válida de nombre de usuario y contraseña, se escribirá en el archivo especificado.

Continuemos con el mismo escenario que en el paso anterior. Tenemos un servidor web en funcionamiento en 127.0.0.1 en el puerto 80 con un formulario de inicio de sesión ubicado en /login.php. Usaremos los mismos archivos users.txt y passwords.txt.

Para guardar los resultados en un archivo llamado hydra.log en el directorio ~/project, utiliza el siguiente comando:

hydra -L ~/project/users.txt -P ~/project/passwords.txt -o ~/project/hydra.log 127.0.0.1 http-post-form "/login.php:username=^USER^&password=^PASS^:Invalid username or password"

La única diferencia con el comando anterior es la adición de la opción -o ~/project/hydra.log. Esto le indica a Hydra que guarde los resultados en el archivo hydra.log.

Después de ejecutar el comando, Hydra intentará iniciar sesión utilizando cada combinación de nombre de usuario y contraseña. Si se encuentra un inicio de sesión exitoso, el nombre de usuario y la contraseña se escribirán en el archivo hydra.log.

Para ver el contenido del archivo hydra.log, puedes usar el comando cat:

cat ~/project/hydra.log

Ejemplo de salida (si tiene éxito):

Si Hydra encuentra la combinación admin:password, el archivo hydra.log contendrá una línea similar a esta:

127.0.0.1 http-post-form: admin:password

Si no se encuentra ningún inicio de sesión exitoso, el archivo hydra.log estará vacío.

Es importante tener en cuenta que la opción -o sobrescribirá el archivo de salida si ya existe. Si quieres anexar los resultados a un archivo existente, puedes usar la opción -O (O mayúscula) en su lugar. Sin embargo, para este laboratorio, nos centraremos en la opción -o.

Salida en formato JSON con la opción -b

En este paso, exploraremos cómo obtener los resultados de un ataque de Hydra en formato JSON utilizando la opción -b. JSON (Notación de Objetos de JavaScript) es un formato ligero de intercambio de datos que es fácil de leer y escribir para los humanos, y fácil de analizar y generar para las máquinas. Este formato es especialmente útil cuando necesitas procesar los resultados de forma programática.

La opción -b, en combinación con la opción -o, le indica a Hydra que guarde la salida en formato JSON en el archivo especificado.

Continuemos con el mismo escenario que antes. Tenemos un servidor web en funcionamiento en 127.0.0.1 en el puerto 80 con un formulario de inicio de sesión ubicado en /login.php. Usaremos los mismos archivos users.txt y passwords.txt.

Para guardar los resultados en formato JSON en un archivo llamado hydra.json en el directorio ~/project, utiliza el siguiente comando:

hydra -L ~/project/users.txt -P ~/project/passwords.txt -o ~/project/hydra.json -b 127.0.0.1 http-post-form "/login.php:username=^USER^&password=^PASS^:Invalid username or password"

En este comando, hemos agregado la opción -b junto con la opción -o ~/project/hydra.json. Esto instruye a Hydra a guardar la salida en formato JSON en el archivo hydra.json.

Después de ejecutar el comando, Hydra intentará iniciar sesión utilizando cada combinación de nombre de usuario y contraseña. Si se encuentra un inicio de sesión exitoso, el nombre de usuario y la contraseña se escribirán en el archivo hydra.json en formato JSON.

Para ver el contenido del archivo hydra.json, puedes usar el comando cat:

cat ~/project/hydra.json

Ejemplo de salida (si tiene éxito):

Si Hydra encuentra la combinación admin:password, el archivo hydra.json contendrá un objeto JSON similar a este:

[
  {
    "host": "127.0.0.1",
    "port": 80,
    "service": "http-post-form",
    "login": "admin",
    "password": "password"
  }
]

Si no se encuentra ningún inicio de sesión exitoso, el archivo hydra.json contendrá una matriz JSON vacía:

[]

Este formato JSON te permite analizar fácilmente los resultados utilizando lenguajes de scripting como Python o JavaScript para un análisis posterior o automatización.

Comparar salidas de texto y JSON

En este paso, compararemos las salidas de texto y JSON generadas por Hydra. Esto te ayudará a entender las diferencias entre los dos formatos y cuándo usar cada uno.

Seguiremos utilizando el mismo escenario: un servidor web en funcionamiento en 127.0.0.1 en el puerto 80 con un formulario de inicio de sesión ubicado en /login.php, y los archivos users.txt y passwords.txt.

Primero, ejecutemos Hydra para generar tanto el archivo de salida de texto como el de JSON.

Ejecuta el siguiente comando para generar el archivo de salida de texto (hydra.log):

hydra -L ~/project/users.txt -P ~/project/passwords.txt -o ~/project/hydra.log 127.0.0.1 http-post-form "/login.php:username=^USER^&password=^PASS^:Invalid username or password"

A continuación, ejecuta el siguiente comando para generar el archivo de salida de JSON (hydra.json):

hydra -L ~/project/users.txt -P ~/project/passwords.txt -o ~/project/hydra.json -b 127.0.0.1 http-post-form "/login.php:username=^USER^&password=^PASS^:Invalid username or password"

Ahora, comparemos el contenido de los dos archivos.

Visualiza el contenido del archivo de salida de texto (hydra.log) utilizando el comando cat:

cat ~/project/hydra.log

Ejemplo de salida (si tiene éxito):

127.0.0.1 http-post-form: admin:password

Visualiza el contenido del archivo de salida de JSON (hydra.json) utilizando el comando cat:

cat ~/project/hydra.json

Ejemplo de salida (si tiene éxito):

[
  {
    "host": "127.0.0.1",
    "port": 80,
    "service": "http-post-form",
    "login": "admin",
    "password": "password"
  }
]

Comparación:

  • Salida de texto: La salida de texto es un formato simple y legible por humanos. Es fácil ver rápidamente el nombre de usuario y la contraseña crackeadas. Sin embargo, no es fácil de analizar por las máquinas.
  • Salida de JSON: La salida de JSON es un formato estructurado que es fácil de analizar por las máquinas. Contiene más información que la salida de texto, como el host, el puerto y el servicio. Sin embargo, no es tan legible por humanos como la salida de texto.

Cuándo usar cada formato:

  • Utiliza la salida de texto cuando necesites ver rápidamente el nombre de usuario y la contraseña crackeadas y no necesites procesar los resultados de forma programática.
  • Utiliza la salida de JSON cuando necesites procesar los resultados de forma programática, como para generar informes o automatizar tareas.

En resumen, la elección entre la salida de texto y la de JSON depende de tus necesidades específicas. Si necesitas un formato legible por humanos, utiliza la salida de texto. Si necesitas un formato legible por máquinas, utiliza la salida de JSON.

Resumen

En este laboratorio, aprendimos cómo realizar un ataque HTTP básico utilizando Hydra, una poderosa herramienta de cracking de contraseñas. Creamos listas de nombres de usuario y contraseñas utilizando nano y luego usamos Hydra para intentar crackear un formulario de inicio de sesión HTTP simulado en 127.0.0.1. El comando hydra -L ~/project/users.txt -P ~/project/passwords.txt 127.0.0.1 http-post-form "/login.php:username=^USER^&password=^PASS^:Invalid username or password" se utilizó para ejecutar el ataque, apuntando al endpoint /login.php con parámetros de nombre de usuario y contraseña especificados.