ACTUALIZADO A DÍA 28/01/2021

En este post se explica el uso de una herramienta muy popular a la hora de ejecutar ataques de fuerza bruta contra diferentes servicios de red, tales como FTP, SSH, SMB, SMTP, HTTP, entre muchos otros.

Instalación de THC Hydra

En primer lugar, para instalar THC Hydra es necesario descargar la ultima versión disponible desde su repositorio de GitHub: https://github.com/vanhauser-thc/thc-hydra/releases/tag/v9.1
A la fecha de redactar este post la última versión/release disponible es la 9.1, se recomienda verificar si existe una más reciente.
Descargar e instalar.

>wget https://github.com/vanhauser-thc/thc-hydra/archive/v9.1.tar.gz
>tar -xvf v9.1.tar.gz
>cd thc-hydra-9.1
>./configure
>make

Con las instrucciones anteriores, ahora se podrá ejecutar el comando “hydra” directamente desde el directorio de instalación. Si se ejecuta el comando “make install” dicho comando será incluido en directorio “/usr/sbin” el cual normalmente se encuentra incluido en la variable PATH y en tal caso, se podría ejecutar el comando “hydra” desde cualquier ubicación en la terminal, sin embargo esto es opcional.

Uso de XHYDRA:

XHydra es una aplicación gráfica de usuario (GUI) que permite hacer uso de todas las características que dispone Hydra, es una herramienta que permite entender mucho mejor las opciones disponibles. Se instala desde línea de comandos en el directorio <HYDRA_ROOT>/hydra-gtk tal como se indica tras ejecutar el comando make anteriormente listado. Se trata de una herramienta que entre otras cosas, enseña en la parte de abajo el comando que se llevará a cabo partiendo de las opciones indicadas.

 

En cada una de las pestañas de la aplicación se configura el ataque de forma visual, tal como se explica a continuación.

TARGET

Se declaran los objetivos del ataque, pueden ser de uno a muchos, definiendo las opciones Single Target o Target List. En el caso de target list se define un fichero con los objetivos del ataque, también se permite establecer que el ataque se debe ejecutar preferiblemente sobre IPV6 en lugar de IPV4. La opción port define el puerto en el cual se encuentra escuchando el servicio que se desea atacar, por ultimo se define el protocolo a atacar, entre los que se destacan: SSH, cisco, cvs, http-head, http-get, http-proxy, https-head, https-form-get, https-form-post, mysql, pop3, smb, svn, etc.

En esta pestaña también se pueden declarar las opciones de salida del comando, permitiendo un nivel mucho más fino de logs. Las opciones disponibles en esta sección son: Use SSL, Be Verbose, Show Attempts y Debug.

PASSWORDS

Esta pestaña es la mas importante dado que aquí se definen los atributos obligatorios para la ejecución del comando hydra, a saber, un nombre de usuario único/listado de usuarios y un password único/listado de passwords. En el caso que se trate de usuario o password simple, solamente basta con indicarlo en los campos de texto, en el caso de que se cuente con un diccionario para usuarios o passwords debe indicarse la ruta absoluta donde se encuentran ubicados dichos ficheros. Puede darse el caso en el que se cuente con un usuario valido y sobre este, se ejecutará el ataque de fuerza bruta con un diccionario de contraseñas. Por otro lado se puede definir la estructura de dichos diccionarios/wordlists, por ejemplo, en el caso de que cada línea se encuentre separada por comas se usa la opción “Use colon separated file” de lo contrario,  cada línea del fichero contendrá una contraseña a probar.

TUNING

Son opciones para mejorar el desempeño del ataque, sin embargo no deben de ser tomadas a la ligera en especial con el establecimiento de valores muy elevados, esto debido a que muchos protocolos detectan este tipo de ataques cuando se hacen de forma muy repetitiva o en otros casos se podría provocar una denegación del servicio. Algunos protocolos habilitan listas negras donde se registra la dirección del atacante y ante los posteriores intentos de conexión  por parte de dicha IP la conexión es automáticamente rechazada.

Dentro de las opciones de performance se encuentra la opción de numero de tareas, que indica el número de hilos en ejecución de hydra. Por otro lado la opción de TimeOut define el tiempo de espera de cada una de las peticiones en segundos, en el caso de que este tiempo se alcance, automáticamente el proceso de hydra finalizará su ejecución para la iteración correspondiente al ataque que ha alcanzado el tiempo máximo, es decir, este tiempo en segundos será el tiempo que el proceso de Hydra esperará antes de probar la siguiente entrada de usuario/clave del ataque, este valor también puede afectar negativamente el desempeño del sistema, especialmente si se utiliza junto con un valor muy alto para el numero de tareas.

Finalmente es posible establecer valores de autenticación sobre un proxy HTTP o SOCKS, donde se debe especificar la dirección del proxy y si éste requiere autenticación.

En el caso de utilizar un proxy, este puede definirse de manera persistente en las variables de entorno: HYDRA_PROXY_HTTP/HYDRA_PROXY_CONNECT y HYDRA_PROXY_AUTH. Algunos valores validos para estas variables:

HYDRA_PROXY_HTTP=”http://192.168.67.89:8080/

HYDRA_PROXY_CONNECT=proxy.anonimo.com:8000

HYDRA_PROXY_AUTH=”login:password”

 

SPECIFIC

Aquí se definen algunas opciones adicionales especificas para algunos de los protocolos soportados, estas opciones definen características obligatorias para la correcta ejecución del ataque contra un objetivo. Estas opciones especificas son:

http-proxy-module

Indica la ruta donde se encuentra en ejecución el servidor proxy que se utilizará para establecer las conexiones.

http /https url

Permite especificar la página de login sobre la que se ejecutará el ataque, en el caso de que se quiera ejecutar un ataque de fuerza bruta sobre un servicio web, ya sea por HTTP o HTTPS.

Cisco enable, Login for Cisco Device

Valor de clave para un router cisco.

LDAP DN

Indica la raíz del directorio de LDAP donde se intenta ejecutar un ataque de fuerza bruta, esta opción es valida para protocolos ldap2 y ldap3

SMB

Diferentes tipos de ataques contra servidores Samba, los valores posibles son: cuentas locales, cuentas de dominio, Interpretación de passwords como NTLM hashes.

CVS/SVN

Indicar la raíz del directorio CVS o SVN, por defecto es trunk.

Telnet

El el caso de un login exitoso, el mensaje que se debe de enseñar en la consola.

Start

Finalmente en la pestaña de Start se puede iniciar el ataque con todas las opciones establecidas, teniendo la posibilidad de detener el ataque, almacenar la salida en un fichero de texto y visualizarla en una área de texto habilitada para dicho fin.

USO DE HYDRA

Aunque con XHYDRA se definen la mayoría de las opciones disponibles en la herramienta, existen otra serie de opciones adiciones que no se contemplan y que pueden ser utilizadas directamente desde la consola de comandos, el listado total de las opciones actualmente disponibles (versión 6.1 a la hora de escribir este documento)

En ocasiones, los ataques son cancelados por multitud de razones, hydra genera un fichero llamado “hydra.restore” que contiene la última sesión ejecutada por THC Hydra, de este modo es posible continuar con ataques inconclusos partiendo del último estado del ataque, para esto se emplea la opción -R

Ataques de fuerza bruta contra SSH

Para realizar un ataque contra SSH es obligatorio tener instaladas las librerías libssl-dev y libgtk2.0-dev, ya que son dependencias que utiliza hydra para la ejecución de ataques contra ssh, entre otros protocolos seguros.

Ataques de fuerza bruta contra HTTPS

Algunos sitios web requieren autenticación por formulario, certificado o HTTP-Basic/HTTP-Digest. Hydra también permite ejecutar ataques de fuerza bruta contra servicios de este tipo. Lo único que hay que tener en cuenta es que se debe indicar el tipo de ataque. Si es por ejemplo, una página basada en formulario utilizando método POST, se debe especificar la ruta de la página y todos los párametros, así como los comodines “^USER^” y  “^PASS^” para que Hydra sepa cuáles son los parámetros que se utilizan para el usuario y la contraseña. Finalmente, se debe indicar el mensaje que devuelve la página en caso de autenticación fallida. En la siguiente imagen, por ejemplo, se ejecuta el comando:

hydra 192.168.0.125 -l admin -P /home/adastra/Escritorio/passes.txt -vV http-form-post “/dvwa/login.php:username=admin&password=^PASS^&Login=Login:Login failed”

Para ejecutar un ataque de fuerza bruta contra el formulario web de la aplicación Damn Vulnerable Web Application

Ataques de fuerza bruta contra TELNET

Del mismo modo que con cualquier servicio que requiera autenticación, si la maquina objetivo tiene el telnet activo es susceptible de ataques de fuerza bruta con el fin de obtener acceso.

Como nota final, para realizar un ataque de fuerza bruta no se necesitan habilidades especiales ni conocimientos profundos sobre el sistema que se intenta atacar. El exito de este tipo de ataques es directamente proporcional a la calidad del diccionario a utilizar, ya que entre más completo sea, las probabilidades de exito son mucho mayores.

Un saludo y Happy Hack!
Adastra