En este laboratorio, aprenderá cómo realizar ataques de fuerza bruta contra servicios FTP utilizando Hydra, una herramienta versátil para descifrar contraseñas (password-cracking tool). Configurará un servidor FTP local con vsftpd y creará cuentas de prueba con contraseñas débiles para demostrar las vulnerabilidades de seguridad.
El laboratorio lo guiará a través de la ejecución de ataques Hydra, el análisis de los resultados y la comprensión de cómo una autenticación débil puede comprometer los servicios FTP. Este ejercicio práctico cubre la configuración del servidor, la simulación de ataques y la evaluación de la seguridad en un entorno controlado.
Skills Graph
%%%%{init: {'theme':'neutral'}}%%%%
flowchart RL
hydra(("Hydra")) -.-> hydra/HydraGroup(["Hydra"])
hydra/HydraGroup -.-> hydra/installation("Installation and Setup")
hydra/HydraGroup -.-> hydra/password_creation("Password List Creation")
hydra/HydraGroup -.-> hydra/username_creation("Username List Creation")
hydra/HydraGroup -.-> hydra/single_username("Single Username Attack")
hydra/HydraGroup -.-> hydra/single_password("Single Password Attack")
hydra/HydraGroup -.-> hydra/ftp_attack("FTP Brute Force")
hydra/HydraGroup -.-> hydra/output_saving("Output File Saving")
hydra/HydraGroup -.-> hydra/verbose_mode("Verbose Mode Usage")
subgraph Lab Skills
hydra/installation -.-> lab-549914{{"Atacar Servicios FTP con Hydra"}}
hydra/password_creation -.-> lab-549914{{"Atacar Servicios FTP con Hydra"}}
hydra/username_creation -.-> lab-549914{{"Atacar Servicios FTP con Hydra"}}
hydra/single_username -.-> lab-549914{{"Atacar Servicios FTP con Hydra"}}
hydra/single_password -.-> lab-549914{{"Atacar Servicios FTP con Hydra"}}
hydra/ftp_attack -.-> lab-549914{{"Atacar Servicios FTP con Hydra"}}
hydra/output_saving -.-> lab-549914{{"Atacar Servicios FTP con Hydra"}}
hydra/verbose_mode -.-> lab-549914{{"Atacar Servicios FTP con Hydra"}}
end
Configurar un Servidor FTP Local
En este paso, configurará un servidor FTP local utilizando vsftpd (Very Secure FTP Daemon) en el entorno de la VM LabEx. FTP (File Transfer Protocol) es un protocolo de red estándar utilizado para transferir archivos entre un cliente y un servidor a través de una red. Piense en ello como una oficina de correos digital que gestiona las entregas de archivos entre ordenadores.
Primero, necesitamos instalar el paquete vsftpd. Este comando actualiza su lista de paquetes e instala el software del servidor FTP:
Después de la instalación, es una buena práctica crear una copia de seguridad del archivo de configuración predeterminado. De esta manera, siempre puede restaurar la configuración original si es necesario:
sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.bak
Ahora editaremos el archivo de configuración usando nano, un editor de texto simple en Linux. Este archivo controla cómo se comporta su servidor FTP:
sudo nano /etc/vsftpd.conf
Dentro del archivo de configuración, necesitamos modificar estas configuraciones importantes. Estos cambios:
Deshabilitarán el acceso anónimo (por seguridad)
Permitirán que los usuarios locales inicien sesión
Permitirán la carga de archivos
Restringirán a los usuarios a sus directorios de inicio (por seguridad)
Después de realizar estos cambios, guarde el archivo presionando Ctrl+O (Write Out) y luego salga de nano con Ctrl+X.
Ahora necesitamos reiniciar el servicio vsftpd para aplicar nuestros cambios de configuración. Esto es como actualizar el servidor con nuestra nueva configuración:
sudo service vsftpd restart
A continuación, crearemos una cuenta de usuario de prueba específicamente para el acceso FTP. El flag -m crea un directorio de inicio, y -s establece el shell predeterminado:
Cuando se le solicite, establezca la contraseña en password123. Estamos utilizando esta contraseña simple solo con fines de prueba; en situaciones reales, siempre debe usar contraseñas seguras (strong passwords).
Creemos un directorio especial para las pruebas de FTP y establezcamos los permisos adecuados. Esto asegura que nuestro usuario de prueba pueda acceder y modificar archivos en esta carpeta:
Finalmente, debemos verificar que nuestro servidor FTP se esté ejecutando correctamente. Este comando verifica el estado del servicio vsftpd:
sudo service vsftpd status
Debería ver un resultado que indica que el servicio está activo (en ejecución). Si ve algún error, es posible que deba revisar sus pasos de configuración.
Configurar el Servidor FTP con Usuarios de Prueba
En este paso, prepararemos nuestro servidor FTP para las pruebas de seguridad creando cuentas de prueba con contraseñas intencionalmente débiles. Esta configuración imita las vulnerabilidades de seguridad comunes que se encuentran en los sistemas del mundo real, donde los usuarios a menudo eligen contraseñas simples. Crearemos tres usuarios de prueba, configuraremos sus directorios de inicio y generaremos listas de contraseñas que Hydra usará más adelante.
Primero, creemos tres usuarios de prueba con contraseñas débiles (solo con fines de demostración). Estos comandos crean nuevos usuarios del sistema con directorios de inicio y establecen sus contraseñas:
Ahora crearemos directorios FTP dedicados para cada usuario y estableceremos la propiedad adecuada. Esto asegura que cada usuario solo pueda acceder a sus propios archivos a través de FTP:
Llenemos el directorio de cada usuario con un archivo de prueba. Estos archivos ayudarán a verificar el acceso FTP exitoso más adelante:
echo "This is ftpuser1's test file" | sudo tee /home/ftpuser1/ftp_files/test1.txt
echo "This is ftpuser2's test file" | sudo tee /home/ftpuser2/ftp_files/test2.txt
echo "This is ftpuser3's test file" | sudo tee /home/ftpuser3/ftp_files/test3.txt
Antes de continuar, verifiquemos que el acceso FTP funcione para uno de nuestros usuarios de prueba. Este comando curl intenta descargar un archivo utilizando las credenciales FTP:
Si está configurado correctamente, debería ver el contenido de test1.txt mostrado en su terminal.
This is ftpuser1's test file
Preparar Listas de Ataque para FTP
En este paso, preparará las listas de palabras (wordlists) que Hydra usará para intentar iniciar sesión en el servidor FTP. Estas listas contienen nombres de usuario y contraseñas potenciales que Hydra intentará sistemáticamente durante el ataque de fuerza bruta (brute-force attack). Comprender cómo crear listas de palabras efectivas es crucial para las pruebas de penetración (penetration testing).
Primero, crearemos una lista de nombres de usuario básica que contenga nombres de usuario FTP comunes. Estos son nombres de cuenta predeterminados o de uso frecuente que los administradores a veces olvidan cambiar:
A continuación, crearemos una lista de contraseñas con contraseñas débiles comunes. Muchos usuarios establecen contraseñas simples que son fáciles de recordar pero también fáciles de adivinar:
Verifiquemos que ambos archivos se crearon correctamente mostrando su contenido. Esto asegura que nuestras listas contengan exactamente lo que pretendíamos:
Para generar combinaciones de contraseñas más complejas, instalaremos la herramienta crunch. Esto ayuda a crear patrones de contraseñas sistemáticos que podrían usarse en sistemas reales:
sudo apt-get install -y crunch
Ahora usaremos crunch para generar contraseñas numéricas de exactamente 6 dígitos. Esto simula contraseñas comunes solo numéricas como fechas de nacimiento o PINs simples:
Combine todas las listas de contraseñas en un archivo completo. Esta lista combinada le dará a Hydra más opciones de contraseñas para probar durante el ataque:
Verifique cuántas entradas de contraseñas hemos creado. Esto ayuda a estimar cuánto tiempo podría tomar el ataque de fuerza bruta:
wc -l ~/project/combined_passwords.txt
Finalmente, cree un archivo de contraseña de prueba más pequeño para fines de demostración. Usar un subconjunto ayuda a verificar que nuestra configuración funcione antes de ejecutar el ataque completo:
head -n 50 ~/project/combined_passwords.txt > ~/project/test_passwords.txt
Ejecutar un Ataque Hydra en el Servicio FTP
En este paso, utilizará Hydra para realizar un ataque de fuerza bruta contra el servidor FTP local que configuramos anteriormente. Hydra es una herramienta popular para descifrar contraseñas (password-cracking tool) que admite muchos protocolos, incluido FTP. Un ataque de fuerza bruta intenta sistemáticamente todas las combinaciones de contraseñas posibles hasta que se encuentra la correcta. Esto demuestra por qué las contraseñas débiles son vulnerables a tales ataques.
Primero, verifique que Hydra esté instalado comprobando su menú de ayuda. Esto confirma que la herramienta está lista para usar y muestra las opciones disponibles:
hydra -h
Ejecute un ataque Hydra básico utilizando las listas de nombres de usuario y contraseñas que creamos. El parámetro -L especifica la lista de nombres de usuario y -P especifica la lista de contraseñas. Hydra probará cada combinación contra el servicio FTP que se ejecuta en localhost:
Para ver una salida más detallada del progreso del ataque, agregue el indicador -vV. Este modo detallado ayuda a comprender lo que Hydra está haciendo durante el ataque:
Ejecute un ataque más completo con la lista de contraseñas completa (esto tomará más tiempo). La opción -t 4 limita a 4 conexiones paralelas para evitar sobrecargar el servidor sin dejar de mantener una buena velocidad:
Cuando Hydra encuentre credenciales válidas, se mostrarán en la salida. Esto muestra qué combinación de nombre de usuario/contraseña se autenticó correctamente en el servidor FTP. Ejemplo de salida exitosa:
Guarde los resultados en un archivo para su análisis posterior. La opción -o escribe la salida en un archivo en lugar de simplemente mostrarla en la pantalla:
Verifique el archivo de resultados para ver si se descubrieron credenciales. Esto le permite revisar los hallazgos después de que se complete el ataque:
cat ~/project/hydra_results.txt
Resumen
En este laboratorio, ha aprendido cómo configurar un servidor FTP local utilizando vsftpd, incluyendo la instalación del paquete, los ajustes de configuración para el acceso de usuarios locales y la creación de cuentas de prueba con contraseñas débiles. El proceso implicó la modificación de la configuración de vsftpd.conf, la configuración de los permisos de directorio adecuados y la verificación de la funcionalidad del servicio.
Además, ha preparado un entorno de prueba para los ataques de Hydra mediante la creación de varias cuentas con credenciales predecibles. Esta configuración proporciona un escenario controlado para practicar técnicas de fuerza bruta (brute-force techniques) manteniendo al mismo tiempo condiciones realistas de pruebas de seguridad (security testing).