THC-Hydra, Medusa y Ncrack son herramientas para realizar ataques de fuerza bruta a servicios activos cliente/servidor como: ssh, ftp, rdp, smb, mysql, telnet, http, imap, vnc, etc.
Para mostrar el uso de estas herramientas usaré el siguiente escenario de ejemplos. Escaneando con nmap los equipos remotos y puertos empleados para cada tipo de servicio.
nmap -p 21 10.0.0.16 # Windows 7 servicio FTP
nmap -p 3389 10.0.0.16 # Windows 7 servicio RDP
nmap -p 445 10.0.0.16 # Windows 7 servicio SMB/CIFS
nmap -p 22 10.0.0.40 # Linux servicio SSH
|
Figura 1: Escaneo de puertos a máquina en servicios SSH, RDP, FTP y SMB. |
THC-Hydra
Hydra es una de las herramientas más conocidas para este tipo de ataques a servicios online. Hay que tener en cuenta que
este tipo de ataques son activos y no pasivos, por lo que hay una interacción con el servicio que vamos comprometer mediante un intento de autenticación de credenciales.
Esto creará un evento en el log de la máquina remota servidora del servicio, en el caso de tener algún tipo de control de eventos en el endpoint se podrían detectar intentos de conexión con credenciales erróneas y disparar alertas.
Principalmente se pueden definir 3 tipos de ataques:
- Fuerza bruta por diccionario con múltiples usuarios y passwords
- Fuerza bruta en profundidad
- Fuerza bruta en anchura o Password spraying
Fuerza bruta por diccionario con múltiples usuarios y passwords
Este tipo de ataques se caracterizan por usar un wordlist tanto para un conjunto de usuarios y de contraseñas en plano previamente definidos. En el siguiente ejemplo hay nombres de usuarios y contraseñas definidos en los ficheros "users" y "wordlist" respectivamente a un intento de conexión a la máquina remota 10.0.0.16 que será un Windows 7 con un servicio FTP.
hydra -L users -P wordlist -vV 10.0.0.16 ftp
- -L: Fichero que contiene la lista de usuarios.
- -P: Fichero que contiene la lista de passwords.
- -v: Modo verbose
- -V: Muestra el intento por cada login+pass
- 10.0.0.16 ftp: Especificamos la IP de la máquina remota y el tipo de servicio.
El usuario "ventas" y la password "Pa$$w0rd123" serán las credenciales válidas para acceder al servicio FTP. Hydra probará intentos de conexión al servicio haciendo un barrido entre las distintas posibilidades combinatorias entre los distintos usuarios y contraseñas definidas.
|
Figura 2: Hydra - Fuerza bruta por diccionario con múltiples usuarios y passwords al servicio FTP. |
Como ya comenté anteriormente, estos ataques son reconocimiento activos por lo que dejan un rastro en el log del servidor remoto. En la siguiente captura se puede ver el intento de conexión fallida al intentar autenticarse con el usuario "luis" y su password en el servidor FTP remoto.
|
Figura 3: Log en el servidor FTP del intento de autenticación. |
Fuerza bruta en profundidad
Fuerza bruta en profundidad o fuerza bruta, a secas: Se trata utilizar muchas contraseñas para una sola cuenta de usuario.
Como ejemplo se realiza un ataque de fuerza bruta al servicio RDP a una cuenta concreta llamada "maria" y probar un wordlist con varias contraseñas posibles.
hydra -l maria -P wordlist -vV 10.0.0.16 rdp
- -l: Nombre de usuario único.
- -P: Fichero de lista de contraseñas.
Un detalle a tener en cuenta cuando realice los intentos de conexión es que si el user/pass son correctos cerrará la sesión del usuario actual que esté conectado a la máquina si lo hubiese.
|
Figura 4: Hydra - Fuerza bruta en profundidad al servicio RDP. |
Al igual que el servicio anterior RDP también dejará un evento registrado en equipo remoto. Pudiendo ver la IP y puerto del equipo que intentó realizar la conexión así como que usuario intentó autenticarse.
|
Figura 5: Log en el equipo remoto por un intento de autenticación al servicio RDP. |
Fuerza bruta en anchura o Password spraying
Fuerza bruta en anchura o Password spraying: Se trata de usar la misma contraseña para muchas cuentas de usuario.
Aprovechando el mismo escenario que en el ejemplo anterior, se muestra un ataque de password spraying en el servicio de recursos compartidos de Windows SMB.
hydra -L users -p M4ria.12 -vV 10.0.0.16 smb
- -L: Fichero de lista de usuarios.
- -p: Contraseña única.
Haciendo referencia a un fichero llamado "users" que contiene una lista de usuarios se le especifica una misma contraseña única.
|
Figura 6: Hydra - Fuerza bruta en anchura o password spraying al servicio SMB. |
Como cualquier servicio de Windows de un protocolo conocido, al igual que los casos anteriores, se creará un evento relacionado obteniendo el nombre de usuario y equipo desde donde se intentó realizar la conexión de autenticación.
|
Figura 7: Log en el equipo remoto por un intento de autenticación al servicio SMB. |
En cualquier caso cuando un usuario o password específico se usarán los argumentos -l o -p en minúscula y en el caso de hacer referencia a wordlists serán -L o -P en mayúscula.
Fuerza bruta en servicios web como Facebook o Instagram
Servicios que permitan una autenticación web, por ejemplo redes sociales como Facebook o Instagram también es posible realizar ataques de fuerza bruta, aunque el número de intentos es muy limitado y en el caso de fallar varias veces consecutivas es muy probable que la cuenta con la que estamos probando se desactive temporalmente como medida de seguridad, precisamente para evitar este tipo de ataques.
Lo primero sería conocer la IP que nos está respondiendo, no siempre será la misma, puede variar según la zona geográfica y el balanceador que nos responda. Con un simple "ping facebook.com" o "ping insgram.com" obtendremos la IP en ese momento.
Para protocolo HTTPS puerto 443 (https-get).
hydra -L users -P pass -vV <FACEBOOK_IP> -s 443 -f https-get /login
hydra -L users -P pass -vV <INSTAGRAM_IP> -s 443 -f https-get /accounts/login/
Para protocolo HTTP puerto 80 (http-get).
hydra -L users -P pass -vV <FACEBOOK_IP> -s 80 -f http-get /login
hydra -L users -P pass -vV <INSTAGRAM_IP> -s 80 -f http-get /accounts/login/
|
Figura 8: Ataque de fuerza bruta a servicios web como Facebook o Instagram. |
Medusa
Medusa utiliza módulos para referirse al protocolo del servicio, es posible implementar diversos módulos a parte de los que trae por defecto.
Estos módulos están disponibles en el path.
/usr/lib/x86_64-linux-gnu/medusa/modules
Para el siguiente ejemplo cambiaremos de escenario. Un servidor SSH expuesto en un sistema Linux se intentará un ataque de fuerza bruta con wordlists de un conjunto de usuarios y passwords.
medusa -U users -P wordlist -h 10.0.0.40 -M ssh
- -U: Fichero de lista de usuarios
- -P: Fichero de lista de contraseñas
- -h: Host remoto
- -M: Tipo de módulo.
En la siguiente captura se pueden ver los intentos de conexión con las distintas combinaciones posibles entre user/pass.
|
Figura 9: Medusa - Fuerza bruta en profundidad al servicio SSH. |
Al tratarse de un ataque de fuerza bruta, son ataques activos por lo que este tipo de conexiones también dejan un registro de log en el fichero /var/log/auth.log mostrando fecha, nombre de usuario, IP y puerto desde donde se intentó realizar la conexión de autenticación.
|
Figura 10: Log en la máquina remota del intento de autenticación al servicio SSH. |
Ncrack
Ncrack desarrollada por
nmap.org es otra herramienta alternativa a THC-Hydra y Medusa. Se caracteriza por su gran velocidad, su enfoque modular y la capacidad de escalar a múltiples hosts. Su sintaxis es similar a
nmap.
Continuando el ejemplo anterior, realizamos un ataque de fuerza bruta al servicio SSH con un mismo usuario usando una wordlist de contraseñas.
ncrack -p 22 --user pepe -P wordlist 10.0.0.40
- -p: Puerto estándar usando por el servicio.
- --user: Nombre de usuario único.
- -P: Fichero de lista de contraseñas.
Al igual que THC-Hydra y Medusa, Ncrack también deja su registro en el log. En la siguiente captura se observa como en un primer intento con el usuario juan no fue posible realizar la conexión con el usuario juan pero si con el usuario pepe, lo cual es correcto. Con una lista de 8 contraseñas posibles, en ambos el tiempo de comprobación fue de 3 segundos.
|
Figura 11: Ncrack - Fuerza bruta en profundidad al servicio SSH. |
Saludos!