Ataque por Fuerza Bruta contra un Formulario HTML de Autenticación utilizando Hydra

  • Posted on: 9 April 2015
  • By: ReYDeS

Una gran cantidad de aplicaciones web emplean controles mínimos o inexistentes sobre la calidad de las contraseñas utilizadas por los usuarios, por lo cual es común encontrar aplicaciones permitiendo contraseñas de longitud pequeña o en blanco, palabras comúnmente encontradas en diccionarios o nombres, el mismo nombre de usuario como contraseña o contraseñas por defecto.

Si una aplicación permite a un atacante realizar repetidos intentos para autenticarse con diferentes usuarios y contraseñas, es altamente vulnerable a un ataque manual para intentar adivinar una combinación acertada. Un atacante con mayor experiencia utilizará técnicas automáticas para intentar adivinar usuarios y contraseñas válidas, mediante la utilización de listas de palabras o valores de gran longitud.

Para la siguiente demostración se utilizará Google Gruyere como la aplicación web objetivo de la evaluación y la herramienta THC-Hydra en Samurai.

Se inicia ZAP y se configura Firefox para utilizarlo como proxy, luego se ingresa en el formulario HTML de autenticación de Gruyere un usuario y contraseña aleatorio.

Se analiza el mensaje de respuesta obtenido, dado el hecho de haber ingresado un usuario y contraseña incorrectas.

El hecho de realizar estas acciones es para entender el comportamiento de la aplicación web, y el mensaje devuelto por la aplicación ante este intento infructuoso.

En ZAP se procede a analizar la petición realizada al enviar el formulario de “Login” para conocer el método utilizado, la URL y los parámetros enviados hacia la aplicación web.

En la pestaña de Respuesta de ZAP es factible analizar la fuente HTML devuelta por la aplicación web, en la cual se observa el mensaje de error obtenido.

Esta información es de utilidad para definir las opciones a utilizar con THC Hydra. La opción “-l” define el nombre de usuario del cual se intentará adivinar su contraseña. La opción “-P” define un archivo conteniendo una lista de palabras la cual se utilizará como posibles contraseñas. “http-get-form” define el método GET utilizado para enviar el formulario HTML hacia el servidor. Los valores “uid”, “pw” y “submit” son obtenidos del formulario HTML. En “^USER^” Hydra asignará el nombre de usuario utilizado y en ”^PASS^” Hydra asignará cada una de las posibles contraseñas. Luego de los “:” se define el mensaje de error devuelto cuando no se han ingresado las credenciales correctas. Esto es muy importante, pues de otra manera Hdyra no tiene manera de conocer cuando las credenciales en evaluación son correctas o no. La opción “-V” mostrará la combinación de usuario y contraseña en evaluación. Y la opción “-t” define el número de tareas en paralelo.

$ sudo hydra -l admin -P Wordlists/500-worst-passwords.txt 192.168.0.XX http-get-form "/1042115123/login:uid=^USER^&pw=^PASS^&submit=Login:Invalid user name or password." -V -t 1

Para la presente demostración Hydra ha sido capaz de obtener la contraseña correcta para el usuario definido.

En caso se hubiese definido un archivo conteniendo un listado de posibles usuarios, hydra continuaría el proceso con el siguiente nombre de usuario de la lista, hasta finalizar con todos los intentos posibles.

Fuentes:

https://code.google.com/p/zaproxy/
https://www.thc.org/thc-hydra/
https://google-gruyere.appspot.com/
https://www.thc.org/thc-hydra/README

Sobre el Autor


Alonso Eduardo Caballero Quezada - ReYDeS
Instructor y Consultor Independiente en Ciberseguridad
Correo Electrónico: ReYDeS@gmail.com
Twitter: https://twitter.com/Alonso_ReYDeS
LinkedIn: https://pe.linkedin.com/in/alonsocaballeroquezada/
Facebook: https://www.facebook.com/alonsoreydes
Youtube: https://www.youtube.com/c/AlonsoCaballero


Curso de Informática Forense