Breve introducción a Hydra
en Hacking
Tiempo de lectura 4 minutos
Hoy vamos a introducirnos en el campo de la fuerza bruta para formularios de logins, a través de una de mejores aplicaciones para esto: Hydra THC.
Hydra (sitio web) es “la” herramienta para romper formularios de login. Es realmente rápida (ya que soporta múltiples hilos), flexible y soporta una cantidad enorme de protocolos como:
- FTP
- HTTP(S)-FORM-GET
- HTTP(S)-FORM-POST
- HTTP(S)-GET
- HTTP(S)-HEAD
- HTTP-Proxy
- ICQ
- IMAP
- IRC
- LDAP
- MS-SQL
- MySQL
- POP3
- PostgreSQL
- RDP
- SMB(NT)
- SMTP
- SOCKS5
- SSH
- Subversion
- Teamspeak (TS2)
- Telnet
- VMware-Auth
- VNC
entre muchos más!
Como siempre; veamos su manual
Parece sencillo… Las claves están en establecer correctamente el servidor, el protocolo y el mensaje devuelto por el servidor.
Vamos a probarlo
Como vemos en su manual, Hydra no solo nos permite romper logins a partir de diccionarios (opción -P para usuarios y opción -L para contraseñas); sino que también si tenemos uno de estos, usuario o contraseña, nos permite obtener su par correspondiente.
A este tipo de procedimiento se le llama horizontal y vertical brute force attack.
“Horizontal” es cuando se quiere obtener una lista de nombres de usuario válida teniendo una sola contraseña. Por ejemplo jrodiguez/password, agonzalez/password, mperez/password. No nos importa realmente la contraseña ya que se espera que el servidor responda con un mensaje de “contraseña invalida” (o similar), o que el tiempo de respuesta sea diferente a uno ya establecido de error de usuario.
Y “Vertical” es cuando, teniendo un nombre de usuario o lista nombres de usuarios válida se quiere obtener sus contraseñas. Es el típico caso de brute force a un formulario de login.
Veamos como romper un formulario POST de login web. Para otro protocolo solo debemos cambiar HTTPS-POST-FORM por el protocolo correspondiente, por ejemplo SSH.
Suponagmos que tenemos un sitio www.ejemplo.com con una página de login en login.php
hydra -L userList.txt -P passwordList.txt -vV www.ejemplo.com http-post-form "/login.php=user^USER^&pass=^PASS^:F=Contraseña incorrecta"
-L indica que vamos a utilizar un archivo con una lista de usuarios, si ya tenemos el nombre de usuario podemos utilizar en su lugar la opción -l seguida por el nombre de usuario.
Lo mismo para la contraseña, -P cuando tenemos una lista de contraseñas y -p cuando ya tenemos la contraseña.
-v y -V se utilizan para mostrar las parejas usuario/constraseña que esta probando Hydra en cada momento
Luego ponemos la url (www.ejemplo.com), el metodo que vamos a utilizar, en este caso HTTP-POST-FROM y por último el request de login contodos sus parametros. En este ejemplo solo usuario y constraseña, pero el POST puede tener más parametros. ^USER^ y ^PASS^ serán sustituidos por el usuario y contraseña indicados antes.
Al final del request debemos inidcarle a Hydra el mensaje de error o exito con la opción F y S respectivamente. El mensaje debe de ser exactamente como es mostrado en el response del login, ya que Hydra checkeará ese mensaje para determinar las credenciales correctas.
Trabajar con listas de usuarios y contraseñas puede llegar a tomar mucho tiempo, por ejemplo teniendo en cuenta listas como las de Seclist. Podemos realizar el ataque de una forma más óptima si tenemos en cuenta algunas opciones que nos brinda Hydra.
Para terminar el escaneo cuando se encuentran credenciales válidas podemos usar la opción -f.
Siempre podemos agregar más hilos con la opción -t, aunque el valor por defecto ya es bastante grande: 16.
Y con -w podemos decirle a Hydra el tiempo máximo de espera para una respuesta, por defecto son 30 segundos.
Con esto termina la introducción a Hydra, una herramienta muy poderosa.
Hasta la próxima y happy hacking.