sábado, 29 de septiembre de 2018

Ataques de contraseña con Hydra





Hydra es una herramienta para realizar ataques de fuerza bruta contra las credenciales de inicio de sesión. Es capaz de lanzar ataques a diferentes protocolos desde SSH a un formulario de login de un a página web.

En esta entrada vamos a ver un par de ejemplos ademas del uso básico de CRUNCH para generar nuestros propios diccionarios.


Sintaxis básica

Hydra viene instalado por defecto en Kali Linux si no es así se puede instalar facilmente con apt-get install hydra ; existe una versión gráfica de la herramienta , pero vamos a utilizar la versión CLI.

$ hydra -l root -p admin 192.168.3.105 -t 4 ssh

Significado de los flags:

-l = toma solo un parámetro para el usuario

-p = toma solo una contraseña

-t = especifica el número de hilos utilizados, es recomendable ajustar el número al equipo que estamos utilizando ya que puede consumir todos los recursos de la máquina.

Hydra sugiere -t 4 para SSH. La ultima parte simplemente le dice a Hydra que atacará a SSH.


Utilizando una lista de palabras

Como imaginas no es muy práctico probar manualmente todas las contraseñas posibles. Por ese motivo podemos utilizar una lista de palabras o diccionario para realizar el ataque. Se puede especificar una lista de palabras utilizando -P en lugar de -p. Lo mismo ocurre con el usuario, utilizaríamos -L en lugar de -l.

En Kali tenemos una buena lista de palabras en /usr/share/wordlists/rockyou.txt.gz. Solo hay que descomprimirlo y listo.

$ hydra -l root -P  /usr/share/wordlists/rockyou.txt 192.168.3.105 -t 4 -f ssh

El flag -f parará el ataque cuando se encuentra un resultado positivo.

Este tipo de ataque llevará mucho tiempo debido a que existen millones de palabras en esa lista por lo que podemos generar uno con menos palabras para hacer pruebas.

$ crunch 4 4 0123abcd -o pass.txt
$ hydra -l root -P pass.txt 192.168.3.105 -t 4 -f ssh

Esto se debería completar rápidamente ya que son menos palabras.

Como he dicho antes Hydra también acepta listas para usuarios y para objetivos. Se debe especificar con -L para los usuarios y con -M para indicar la lista de IPs objetivo.

$ hydra -L /usr/share/wordlists/rockyou.txt -P /usr/share/wordlists/rockyou.txt -M Documentos/ip.txt -t 4 -f ssh


Otros flags

Existen flags en la herramienta para modificar el comportamiento de la misma, vamos a ver un par de ejemplos.

-S

Es posible que el administrador cambié el puerto por defecto de SSH para evitar algunos ataques, por lo que podemos utilizar este flag para decirle a Hydra a que puerto debe atacar. 
Seria tan fácil como ejecutar Nmap para descubrir en que puerto se esta ejecutando SSH.

Con -s seguido del puerto especificamos el puerto a atacar:

$ hydra -s 22 -l root -P /usr/share/wordlists/rockyou.txt 192.168.3.105 -t 4 -f ssh

-V

Con -V podemos poner la herramienta en modo verboso; es decir que nos mostrará en pantalla la ejecución a tiempo real de lo que esta haciendo.


$ hydra -l root -P /usr/share/wordlists/rockyou.txt 192.168.3.105 -t 4 -f -V ssh


-e nsr

Algunos usuarios ponen contraseñas tan increíblemente malas que quedan fuera de nuestros diccionarios por lo que es recomendable utilizar esta opción. Las letras nsr detras del flag -e corresponden a lo siguiente:


n = significa nulo, por lo que Hydra probará que no tenga contraseña.

s = significa igual, por si al usuario le da por poner su nombre de usuario como contraseña

r = significa inverso, por si el usuario pone su contraseña pero a la inversa.


$ hydra - root -P /usr/share/wordlists/rockyou.txt 192.168.3.105 -t 4 -e nsr -f -V ssh


-C

Este flag es importante si se utiliza un diccionario con formato "login:pass".


$ hydra - C Documentos/login.txt 192.168.3.105 -t 4 -f -V ssh


-R

Para restaurar una sesión anterior abortada o fallada. Genera un fichero hydra.restore que contiene la última sesión de Hydra.

$ hydra -R


Como evitar los baneos de los protocolos

En las opciones de "tunning" encontramos varios métodos para evitar las listas negras de ciertos protocolos y que nos bloqueen ante posteriores intentos de conexión.

Entre ellas esta el número de hilos o de tareas mencionado anteriormente o la opción de timeout que define el tiempo de espera entre cada intento.

Para el número de hilos utilizaremos el flag -t y para el timeout el flag -w seguido del número de segundos.

También podemos utilizar un proxy para realizar conexiones aleatorias con distintas IPs, para ello podemos definir de manera persistente las variables de entorno:

HYDRA_PROXY_HTTP="http://192.168.100.95:8080/"

HYDRA_PROXY_CONNECT=anonim.proxy.com:8000

HYDRA_PROXY_AUTH="login:passwd"


Ejemplo de uso:

$ HYDRA_PROXY=http://127.0.0:8080

o

$ HYDRA_PROXY=socks4://127.0.01:8118

y luego hay que exportarlo con:


$ export HYDRA_PROXY 


Para visualizar las variables de entorno definidas:

$ printenv | grep HYDRA



Ataque a formulario web

Para  de realizar un ataque al login de un formulario web, vamos a realizar el ejemplo con DVWA. Accedemos a DVWA y elegimos Brute force:



Para ello necesitamos una herramienta en nuestro navegador llamada Cookie Manager, que nos servirá para capturar la cookie de sesión. Yo estoy utilizando FireFox para hacer las pruebas tan solo hay que ir a las opciones y buscarlo en los addons.

Una vez instalado lo ejecutamos para esta sesión, estará abierto en una nueva pestaña.



Introducimos cualquier usuario y contraseña para que nos de un error de login, esto importante para indicarle a  Hydra que método utiliza el formulario y la cadena que indicará que el login es correcto o incorrecto.



Visualizamos el código fuente de la página:



Vemos el método GET  además del mensaje de "Username and/or apssword incorrect." visto anteriormente.

Ahora iremos a la pestaña de  Cookie Manager a ver cual es la cookie capturada:



Con estos datos ya podemos realizar el ataque sobre el formulario, utilizaré un diccionario con seis palabras para que el proceso sea rápido. En la terminal escribimos:

$ hydra -l admin -P passwd.txt 192.168.1.106 http-get-form "/DVWA/vulnerabilities/brute/:username=^USER^&password=^PASS^&Login=Login:F=incorrect:H=Cookie: security=low; PHPSESSID=836f1f4k9vnq3hak159qu922of2" -V


Como vemos en la imagen la contraseña es password


REFERENCIAS


$ man hydra




No hay comentarios:

Publicar un comentario