# Hydra una gran herramienta

**Hydra** es una herramienta de seguridad muy utilizada para realizar ataques de fuerza bruta contra múltiples protocolos y servicios. Hydra permite a los usuarios identificar credenciales válidas mediante la prueba de combinaciones de nombres de usuario y contraseñas hasta encontrar una coincidencia. Esta herramienta está diseñada para ser rápida y efectiva, y soporta muchos protocolos, incluyendo HTTP, FTP, IMAP, SMB, entre otros.

## <mark style="color:yellow;">¿Cómo funciona Hydra?</mark>

Hydra realiza ataques de fuerza bruta utilizando un enfoque de múltiples hilos. Esto significa que puede probar múltiples combinaciones de nombres de usuario y contraseñas en paralelo, lo que acelera significativamente el proceso de prueba. La herramienta utiliza listas de nombres de usuario y contraseñas (a menudo denominadas "wordlists" o "diccionarios") que el usuario debe proporcionar. La eficacia del ataque depende en gran medida de la calidad y relevancia de estas listas.

El proceso básico que Hydra sigue es el siguiente:

1. <mark style="color:yellow;">**Inicialización**</mark><mark style="color:yellow;">:</mark> Hydra comienza leyendo la configuración del usuario, incluyendo el host objetivo, el protocolo y las listas de nombres de usuario y contraseñas.
2. <mark style="color:yellow;">**Conexión**</mark><mark style="color:yellow;">:</mark> Establece conexiones con el servidor o servicio objetivo utilizando el protocolo especificado.
3. <mark style="color:yellow;">**Autenticación**</mark><mark style="color:yellow;">:</mark> Prueba combinaciones de nombres de usuario y contraseña en el servicio objetivo.
4. <mark style="color:yellow;">**Verificación**</mark><mark style="color:yellow;">:</mark> Verifica las respuestas del servidor para determinar si la combinación de credenciales es exitosa.
5. <mark style="color:yellow;">**Registro**</mark><mark style="color:yellow;">:</mark> Si se encuentra una combinación válida, Hydra registra el resultado y, opcionalmente, puede detenerse o continuar probando otras combinaciones.

## <mark style="color:yellow;">Comandos típicos para realizar fuerza bruta en una aplicación web con Hydra</mark>

Para realizar un ataque de fuerza bruta en una aplicación web utilizando el protocolo HTTP o HTTPS, puedes utilizar comandos como el siguiente, ajustando los parámetros según sea necesario:

```bash
hydra -l usuario -P /ruta/a/lista/de/contrasenas.txt -s 80 -f -vV -t 4 www.ejemplo.com http-get /ruta/login
```

Aquí, los parámetros significan:

* `-l usuario`: especifica un solo nombre de usuario para probar.
* `-P /ruta/a/lista/de/contrasenas.txt`: especifica la ruta al archivo que contiene las contraseñas.
* `-s 80`: especifica el puerto del servidor (80 es el predeterminado para HTTP).
* `-f`: le dice a Hydra que se detenga cuando encuentre la primera combinación de credenciales válidas.
* `-vV`: aumenta el nivel de verbosidad, mostrando más detalles durante la ejecución.
* `-t 4`: configura el número de hilos paralelos.
* `www.ejemplo.com`: es el dominio de la aplicación web.
* `http-get /ruta/login`: especifica que el método de acceso es HTTP GET y la ruta donde se encuentra el formulario de login.

## <mark style="color:yellow;">Ejemplo de peticiones de Login:</mark>

```bash
GET /ruta/login?username=usuario&password=contraseña_prueba HTTP/1.1
Host: www.ejemplo.com
Connection: keep-alive
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Encoding: gzip, deflate, sdch
Accept-Language: en-US,en;q=0.8
```

```bash
POST /ruta/login HTTP/1.1
Host: www.ejemplo.com
Content-Type: application/json
Content-Length: 55
Connection: keep-alive
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Encoding: gzip, deflate, sdch
Accept-Language: en-US,en;q=0.8

{"username":"usuario","password":"contraseña_prueba"}
```
