Hydra: guía de fuerza bruta de contraseñas (cómo usarlo)
THC-Hydra es una herramienta de código abierto especializada en ataques de fuerza bruta y diccionario contra servicios de autenticación en red, capaz de probar miles de combinaciones de usuario y contraseña por segundo en protocolos como SSH, FTP, HTTP, RDP o SMB. Es una de las herramientas más usadas en pentesting para comprobar la robustez de las credenciales en sistemas reales o entornos de laboratorio.
Qué es Hydra y para qué sirve
Hydra (también conocida como THC-Hydra, por el grupo The Hacker’s Choice que la desarrolló) es un crackeador de contraseñas en línea: trabaja directamente contra servicios de red activos en lugar de contra hashes volcados de una base de datos. Su función principal es automatizar ataques de fuerza bruta (probando todas las combinaciones posibles) o de diccionario (probando palabras de una lista predefinida, como rockyou.txt) contra el formulario de login de un servicio.
A diferencia de herramientas como Hashcat o John the Ripper, que rompen hashes de forma offline, Hydra hace peticiones reales al servicio objetivo. Eso la hace especialmente útil para:
- Comprobar si un servidor SSH acepta contraseñas débiles o por defecto.
- Auditar formularios de login web (HTTP/HTTPS).
- Verificar la política de bloqueo de cuentas de un sistema.
- Realizar pruebas de penetración autorizadas sobre FTP, RDP, SMB, bases de datos, etc.
El repositorio oficial lo mantiene van Hauser en GitHub: github.com/vanhauser-thc/thc-hydra. Hydra soporta más de 50 protocolos, lo que la convierte en la navaja suiza de los ataques a credenciales.
Instalación de Hydra
Si usas Kali Linux, Hydra viene instalada por defecto. Puedes verificarlo y actualizarlo con:
sudo apt update && sudo apt install hydra -y
En Ubuntu/Debian también está en los repositorios oficiales:
sudo apt install hydra
Para compilar desde el código fuente (así tienes siempre la versión más reciente):
git clone https://github.com/vanhauser-thc/thc-hydra.git
cd thc-hydra
./configure
make
sudo make install
Una vez instalado, ejecuta hydra --help para ver todas las opciones disponibles, o hydra -U ssh para consultar la ayuda específica de un módulo.
Sintaxis básica y uso de Hydra
La estructura general de un comando Hydra es siempre la misma:
hydra [opciones] [objetivo] [módulo_servicio]
Ataque SSH con usuario fijo y lista de contraseñas
El caso más habitual: probar el usuario admin con el diccionario rockyou.txt contra un servidor SSH:
hydra -l admin -P /usr/share/wordlists/rockyou.txt ssh://10.0.0.5
-l admin: usuario único a probar (minúscula = valor fijo).-P rockyou.txt: lista de contraseñas (mayúscula = fichero).ssh://10.0.0.5: protocolo y dirección IP del objetivo.
Ataque FTP con lista de usuarios y lista de contraseñas
hydra -L usuarios.txt -P passwords.txt ftp://192.168.1.100
-L usuarios.txt: lista de usuarios (mayúscula = fichero).-P passwords.txt: lista de contraseñas.
Ataque a formulario web HTTP POST (DVWA / aplicaciones web)
Este es el caso más complejo. El módulo http-post-form requiere tres campos separados por ::
hydra -l admin -P /usr/share/wordlists/rockyou.txt
192.168.1.105 http-post-form
"/login.php:username=^USER^&password=^PASS^&Login=Login:F=Login failed"
Desglose del tercer campo (el «template» del formulario):
/login.php: ruta del endpoint de login.username=^USER^&password=^PASS^&Login=Login: parámetros POST;^USER^y^PASS^son los marcadores que Hydra sustituye en cada intento.F=Login failed: cadena de texto que aparece en la respuesta cuando el login falla (prefijoF=). Hydra asume éxito cuando esa cadena NO aparece. También puedes usarS=para indicar la cadena que aparece en caso de éxito.
Para obtener los parámetros correctos, abre las DevTools del navegador (F12 → Red/Network), intenta un login fallido y captura la petición POST para ver los nombres exactos de los campos y la URL.
Opciones más útiles
| Opción | Descripción | Ejemplo |
|---|---|---|
-t N |
Número de hilos paralelos (por defecto: 16). Aumentar acelera el ataque; reducir evita bloqueos. | -t 4 |
-f |
Para inmediatamente al encontrar el primer par válido (fuerza bruta de usuario único). | -f |
-F |
Igual que -f pero para en el primer acierto aunque se estén probando múltiples hosts. |
-F |
-V |
Modo verbose: muestra cada intento en pantalla (usuario:contraseña probada). | -V |
-v |
Verbose reducido: muestra solo errores de conexión y aciertos. | -v |
-s PUERTO |
Especifica un puerto no estándar. | -s 2222 |
-o fichero |
Guarda los resultados encontrados en un archivo. | -o resultados.txt |
-e nsr |
Prueba: contraseña vacía (n), contraseña igual al usuario (s), contraseña inversa del usuario (r). |
-e nsr |
-R |
Retoma un ataque interrumpido (usa el fichero hydra.restore). |
-R |
Servicios soportados: tabla de sintaxis
| Servicio | Ejemplo de comando Hydra |
|---|---|
| SSH | hydra -l root -P pass.txt ssh://10.0.0.5 |
| FTP | hydra -L users.txt -P pass.txt ftp://10.0.0.5 |
| HTTP POST form | hydra -l admin -P pass.txt 10.0.0.5 http-post-form "/login:user=^USER^&pass=^PASS^:F=incorrect" |
| HTTP GET form | hydra -l admin -P pass.txt 10.0.0.5 http-get-form "/login:user=^USER^&pass=^PASS^:F=incorrect" |
| RDP | hydra -l administrator -P pass.txt rdp://10.0.0.5 |
| SMB | hydra -L users.txt -P pass.txt smb://10.0.0.5 |
| MySQL | hydra -l root -P pass.txt mysql://10.0.0.5 |
| PostgreSQL | hydra -l postgres -P pass.txt postgres://10.0.0.5 |
| SMTP | hydra -l user@dominio.com -P pass.txt smtp://mail.dominio.com |
| VNC | hydra -P pass.txt vnc://10.0.0.5 (VNC no usa usuario) |
| Telnet | hydra -l admin -P pass.txt telnet://10.0.0.5 |
Puedes ver todos los módulos disponibles ejecutando hydra -U seguido del nombre del servicio para ver sus opciones específicas.
Ejemplo práctico en laboratorio (Metasploitable 2 / DVWA)
Para practicar Hydra de forma segura, lo más recomendable es usar una máquina virtual vulnerable como Metasploitable 2 o levantar DVWA (Damn Vulnerable Web Application). Puedes encontrar plataformas donde practicar esto en nuestra guía de mejores plataformas para practicar hacking.
Escenario: Kali Linux como atacante (192.168.56.101) y Metasploitable 2 como víctima (192.168.56.102). Ambas en una red host-only sin acceso a Internet.
Paso 1 — Reconocimiento del servicio SSH
nmap -sV -p 22 192.168.56.102
Paso 2 — Ataque SSH con diccionario reducido
hydra -l msfadmin -P /usr/share/wordlists/metasploit/unix_passwords.txt
-t 4 -V ssh://192.168.56.102
Con -t 4 evitamos saturar el servicio SSH; -V nos muestra cada intento. Metasploitable 2 usa por defecto msfadmin:msfadmin, así que la contraseña aparece en segundos.
Paso 3 — Ataque al formulario de DVWA (login HTTP)
Primero inspeccionamos el formulario (usuario/contraseña por defecto de DVWA: admin/password):
hydra -l admin -P /usr/share/wordlists/rockyou.txt
192.168.56.102 http-post-form
"/dvwa/login.php:username=^USER^&password=^PASS^&Login=Login:F=Login failed"
-t 4 -V
Hydra mostrará [80][http-post-form] host: 192.168.56.102 login: admin password: password cuando lo encuentre.
Cómo defenderse de ataques con Hydra
Entender cómo funciona Hydra es precisamente lo que permite montar defensas efectivas. Desde el punto de vista defensivo, estos son los controles más eficaces:
- Política de bloqueo de cuenta: bloquear o ralentizar la cuenta tras N intentos fallidos (5-10). Implementa bloqueo temporal con incremento progresivo (1 seg, 2 seg, 4 seg…).
- Rate limiting: limitar el número de peticiones de login por IP y por minuto a nivel de firewall o servidor web. En Nginx:
limit_req_zone; en Apache:mod_evasive. - Fail2ban: monitoriza los logs del sistema y bloquea automáticamente las IPs que superan el umbral de intentos fallidos. Disponible para SSH, FTP, HTTP y muchos más servicios.
- Autenticación multifactor (MFA): aunque Hydra encuentre la contraseña correcta, sin el segundo factor no puede completar el login. A mi juicio es la defensa con más impacto contra este tipo de ataques, con diferencia.
- Contraseñas fuertes y únicas: contraseñas largas (mínimo 16 caracteres), aleatorias y únicas por servicio hacen que los diccionarios resulten inútiles. Usa un gestor de contraseñas.
- No exponer servicios innecesariamente: SSH no debería ser accesible desde Internet salvo necesidad. Si lo necesitas, cambia el puerto por defecto (22) y usa autenticación por clave pública desactivando la autenticación por contraseña.
- CAPTCHA en formularios web: dificulta bastante la automatización de ataques contra formularios HTTP.
- Monitorización y alertas: configura alertas para detectar patrones anómalos de intentos de login fallidos en tus logs.
Errores comunes al usar Hydra
- El módulo http-post-form no funciona: es el error más frecuente. Asegúrate de capturar los nombres exactos de los campos del formulario con DevTools o Burp Suite. Un campo llamado
passwden lugar depasswordhará que todos los intentos fallen. - Demasiados hilos (
-t) y el servicio te bloquea: servicios como SSH suelen bloquear IPs con muchas conexiones simultáneas. Empieza con-t 4o incluso-t 1si el objetivo es sensible a la velocidad. - La cadena de fallo (
F=) es incorrecta: si no coincide exactamente con lo que devuelve el servidor, Hydra considerará que todos los intentos son un éxito. Verifica copiando literalmente el texto de error que ves en el navegador. - Usar
rockyou.txtcompleto sin descomprimirlo: en Kali,rockyou.txtestá comprimido en/usr/share/wordlists/rockyou.txt.gz. Descomprímelo primero:sudo gunzip /usr/share/wordlists/rockyou.txt.gz. - No tener en cuenta el SSL/TLS: para HTTPS usa
https://en lugar dehttp://como prefijo, o el módulohttps-post-form. - Confundir
-l(minúscula) con-L(mayúscula):-les para un único valor literal,-Lpara cargar desde un fichero. Lo mismo aplica a-pvs-P.
Vídeo recomendado
Si prefieres aprender con un tutorial en vídeo, este recurso en español cubre el uso de Hydra en Kali Linux paso a paso:
Recursos y siguiente paso
Hydra es solo una de las herramientas que estudiarás en un pentesting real. Si quieres ir más allá, consulta nuestra guía completa de hacking web o matricúlate en el curso de hacking web, donde se trabaja con estas herramientas en entornos de laboratorio seguros y estructurados.
Preguntas frecuentes
¿Es legal usar Hydra?
Usar Hydra sin autorización del propietario del sistema es ilegal en España (art. 197 bis CP) y en la mayoría de países. Es legal y recomendable usarla en tus propios sistemas, en máquinas virtuales de laboratorio (Metasploitable, DVWA, plataformas como Hack The Box o TryHackMe), o en sistemas de terceros si tienes un contrato de pentesting firmado. El conocimiento de la herramienta en sí no es ilegal; lo que determina la legalidad es el objetivo.
¿Cuál es la diferencia entre un ataque de fuerza bruta y un ataque de diccionario?
En un ataque de fuerza bruta puro se prueban todas las combinaciones posibles de caracteres (aaa, aab, aac…), lo que puede tardar años en contraseñas largas. En un ataque de diccionario se prueba una lista predefinida de contraseñas comunes o probables (como rockyou.txt, que contiene 14 millones de contraseñas reales filtradas). Hydra soporta ambos modos; en la práctica, el ataque de diccionario es mucho más eficiente porque la mayoría de usuarios usan contraseñas predecibles.
¿Por qué Hydra no encuentra la contraseña aunque sé que es correcta?
Las causas más frecuentes son: la cadena de fallo (F=) en formularios web está mal definida; los nombres de los campos del formulario son incorrectos; el servicio tiene rate limiting o bloqueo por IP; el número de hilos es demasiado alto y se están perdiendo conexiones; o la contraseña no está en el diccionario usado. Prueba con -V para ver exactamente qué intenta Hydra y revisa la respuesta del servidor con Burp Suite.
¿Hydra puede atacar servicios HTTPS?
Sí. Usa el módulo https-post-form o https-get-form en lugar de los equivalentes HTTP. También puedes usar el prefijo https:// en el objetivo. Para ignorar errores de certificado SSL autofirmado en laboratorios, algunos servicios requieren la opción -S (dependiendo del módulo).
¿Cuánto tiempo tarda un ataque con Hydra?
Depende de tres factores: el tamaño del diccionario, la velocidad de respuesta del servicio y el número de hilos. Con rockyou.txt (14M entradas) y un SSH que responde en 1 segundo por intento con 4 hilos, completar la lista entera tomaría semanas. Por eso los atacantes reales usan diccionarios optimizados con las contraseñas más probables primero, y se detienen en cuanto encuentran un acierto con -f. En entornos de laboratorio, las contraseñas débiles o por defecto suelen encontrarse en segundos o minutos.
