Detener Ataques Hydra Temprano

HydraBeginner
Practicar Ahora

Introducción

En este laboratorio, exploraremos cómo detener ataques Hydra temprano aprovechando sus opciones para limitar el número de intentos. Empezaremos configurando un servidor FTP usando vsftpd y configurándolo con múltiples cuentas de usuario, testuser1 y testuser2, cada una con su propia contraseña. Esta configuración nos permitirá simular un escenario donde Hydra intenta descifrar múltiples cuentas simultáneamente.

El laboratorio te guiará a través del uso de la opción -f para detener Hydra después del primer inicio de sesión exitoso y la opción -F con una lista de múltiples hosts. Finalmente, compararemos el comportamiento de -f y -F para comprender cómo se pueden utilizar para mitigar los ataques Hydra.

Este es un Guided Lab, que proporciona instrucciones paso a paso para ayudarte a aprender y practicar. Sigue las instrucciones cuidadosamente para completar cada paso y obtener experiencia práctica. Los datos históricos muestran que este es un laboratorio de nivel principiante con una tasa de finalización del 100%. Ha recibido una tasa de reseñas positivas del 100% por parte de los estudiantes.

Configurar FTP con Múltiples Credenciales

En este paso, configuraremos un servidor FTP y lo configuraremos con múltiples credenciales de usuario. Esto nos permitirá probar la capacidad de Hydra para descifrar múltiples cuentas simultáneamente. Usaremos vsftpd (Very Secure FTP Daemon) como nuestro servidor FTP.

Primero, instalemos vsftpd. Abre tu terminal y ejecuta el siguiente comando:

sudo apt update
sudo apt install vsftpd -y

A continuación, necesitamos configurar vsftpd. Empezaremos creando una copia de seguridad del archivo de configuración original. Esto es una buena práctica antes de realizar cualquier cambio en los archivos de configuración del sistema.

sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.bak

Ahora, editemos el archivo de configuración /etc/vsftpd.conf usando nano. Este archivo controla el comportamiento del servidor FTP.

sudo nano /etc/vsftpd.conf

Dentro del editor nano, agrega o modifica las siguientes líneas. Estas configuraciones deshabilitarán el acceso anónimo, habilitarán los inicios de sesión de usuario local, permitirán el acceso de escritura y colocarán a los usuarios locales en su directorio de inicio para mayor seguridad.

anonymous_enable=NO
local_enable=YES
write_enable=YES
chroot_local_user=YES
listen=YES
listen_ipv6=NO

Para guardar el archivo en nano:

  1. Presiona Ctrl + X para salir.
  2. Presiona Y para confirmar el guardado.
  3. Presiona Enter para confirmar el nombre del archivo.

Después de guardar el archivo, verifica el archivo de configuración para asegurarte de que los cambios se aplicaron correctamente, usando el siguiente comando:

sudo cat /etc/vsftpd.conf | grep -E "^(anonymous_enable|local_enable|write_enable|chroot_local_user|listen)"

Asegúrate de que la salida muestre la misma configuración que la que agregamos.

Ahora, creemos múltiples cuentas de usuario. Crearemos dos usuarios: testuser1 y testuser2, y estableceremos contraseñas para ellos. Estos usuarios serán utilizados por Hydra para intentar iniciar sesión.

Crea testuser1 con un directorio de inicio:

sudo useradd -m testuser1

Establece la contraseña para testuser1 usando un comando no interactivo:

echo 'testuser1:password123' | sudo chpasswd

Crea testuser2 con un directorio de inicio:

sudo useradd -m testuser2

Establece la contraseña para testuser2 usando un comando no interactivo:

echo 'testuser2:password456' | sudo chpasswd

Estos comandos son no interactivos y crearán los usuarios directamente sin solicitar entrada, lo que los hace más confiables en entornos automatizados.

Ahora, necesitamos corregir los permisos del directorio de inicio para la configuración de chroot. Cuando chroot_local_user=YES está habilitado, el directorio de inicio del usuario no debe ser escribible por el usuario por razones de seguridad:

sudo chmod 755 /home/testuser1
sudo chmod 755 /home/testuser2

Crea un subdirectorio escribible para cada usuario donde puedan cargar archivos:

sudo mkdir /home/testuser1/files
sudo mkdir /home/testuser2/files
sudo chown testuser1:testuser1 /home/testuser1/files
sudo chown testuser2:testuser2 /home/testuser2/files

A continuación, reinicia el servicio vsftpd para aplicar los cambios que hicimos al archivo de configuración y para reconocer a los nuevos usuarios.

sudo service vsftpd restart

Ahora, probemos el servidor FTP para asegurarnos de que funciona correctamente y que nuestros nuevos usuarios pueden iniciar sesión. Puedes usar el cliente de línea de comandos ftp para conectarte al servidor. Dado que estamos ejecutando el servidor localmente, podemos conectarnos a localhost.

ftp localhost

Se te pedirá un nombre de usuario. Introduce testuser1 y luego la contraseña password123. Si todo está configurado correctamente, deberías ver un mensaje que indica que has iniciado sesión.

Connected to localhost.
220 (vsFTPd 3.0.3)
Name (localhost:labex): testuser1
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>

Puedes escribir bye para salir del cliente FTP.

ftp> bye
221 Goodbye.

Ahora, preparemos los archivos que Hydra utilizará para su ataque. Navega a tu directorio ~/project, que es tu directorio de trabajo predeterminado.

cd ~/project

Crea un archivo llamado users.txt en el directorio ~/project. Este archivo contendrá los nombres de usuario que Hydra intentará usar.

nano users.txt

Agrega los siguientes nombres de usuario a users.txt:

testuser1
testuser2

Guarda el archivo y cierra nano.

A continuación, crea un archivo llamado passwords.txt en el directorio ~/project. Este archivo contendrá una lista de contraseñas, incluyendo las correctas para nuestros usuarios de prueba, junto con algunas contraseñas incorrectas comunes.

nano passwords.txt

Agrega las siguientes contraseñas a passwords.txt:

password123
password456
password
123456
qwerty

Guarda el archivo y cierra nano.

Ahora tenemos un servidor FTP configurado con múltiples cuentas de usuario y una lista de nombres de usuario y contraseñas que Hydra puede usar para intentar descifrar las cuentas.

Ejecutar con -f para Detener Después del Primer Par

En este paso, usaremos la opción -f con Hydra. La opción -f indica a Hydra que se detenga después de encontrar el primer par válido de nombre de usuario/contraseña para un único objetivo. Esto es útil cuando solo necesitas encontrar una cuenta válida en un servicio específico y no deseas que Hydra continúe probando otras combinaciones después de un inicio de sesión exitoso.

Asegúrate de estar en el directorio ~/project.

cd ~/project

Ahora, ejecutemos Hydra contra nuestro servidor FTP utilizando las listas de nombres de usuario y contraseñas que creamos en el paso anterior. Incluiremos la opción -f.

hydra -L users.txt -P passwords.txt localhost ftp -f

Analicemos este comando:

  • hydra: La herramienta de línea de comandos para fuerza bruta.
  • -L users.txt: Especifica el archivo que contiene la lista de nombres de usuario (users.txt en el directorio actual).
  • -P passwords.txt: Especifica el archivo que contiene la lista de contraseñas (passwords.txt en el directorio actual).
  • localhost: La dirección del servidor FTP objetivo.
  • ftp: El protocolo de servicio a atacar (FTP en este caso).
  • -f: Esta es la opción crucial que indica a Hydra que se detenga después de encontrar el primer par válido de nombre de usuario/contraseña.

Observa la salida en tu terminal. Hydra intentará iniciar sesión utilizando los nombres de usuario y contraseñas de las listas. Tan pronto como encuentre una combinación válida (por ejemplo, testuser1:password123), mostrará el inicio de sesión exitoso y luego detendrá su operación.

La salida debería ser similar a esta:

Hydra v9.6 (c) 2024 by van Hauser/THC & David Maciejak - ¡Ten cuidado!

Hydra (https://github.com/vanhauser-thc/thc-hydra) comenzando a las 2025-05-29 14:41:46
[DATOS] máximo 10 tareas por 1 servidor, en general 10 tareas, 10 intentos de inicio de sesión (l:2/p:5), ~1 intento por tarea
[DATOS] atacando ftp://localhost:21/
[21][ftp] host: localhost   login: testuser1   password: password123
1 de 1 objetivo completado con éxito, 1 contraseña válida encontrada
Hydra (https://github.com/vanhauser-thc/thc-hydra) finalizado a las 2025-05-29 14:41:47

Observa que Hydra se detuvo inmediatamente después de encontrar la primera combinación válida (testuser1:password123). Sin la opción -f, Hydra habría continuado probando todas las demás combinaciones en el archivo passwords.txt para testuser1, y luego habría pasado a testuser2 e intentado todas las contraseñas para ese usuario también.

Esta opción es particularmente útil cuando estás probando un servicio específico y solo necesitas verificar que al menos una cuenta es vulnerable, ahorrando tiempo y recursos significativos.

Probar -F con Lista de Múltiples Hosts

En este paso, exploraremos la opción -F en Hydra. A diferencia de -f, que se detiene después de encontrar el primer par de credenciales válido para un único host, -F se detiene después de encontrar el primer par de credenciales válido en todos los hosts de una lista. Esto es particularmente útil cuando se atacan múltiples sistemas y solo se necesita encontrar una entrada vulnerable entre ellos.

Para demostrar esto, simularemos un escenario de múltiples hosts. Dado que solo tenemos una máquina virtual, usaremos localhost varias veces en nuestra lista de hosts para simular diferentes objetivos.

Primero, asegúrate de estar en el directorio ~/project.

cd ~/project

Ahora, creemos un archivo llamado hosts.txt en tu directorio ~/project. Este archivo contendrá una lista de hosts objetivo.

nano hosts.txt

Agrega las siguientes líneas a hosts.txt:

localhost
localhost

Guarda el archivo y cierra nano. Al listar localhost dos veces, le indicamos a Hydra que lo trate como dos objetivos separados, aunque apunten a la misma máquina.

Ahora, ejecutaremos Hydra con la opción -F, apuntando a la lista de hosts especificada en hosts.txt.

hydra -L users.txt -P passwords.txt -M hosts.txt ftp -F

Analicemos este comando:

  • -L users.txt: Especifica el archivo que contiene la lista de nombres de usuario.
  • -P passwords.txt: Especifica el archivo que contiene la lista de contraseñas.
  • -M hosts.txt: Esta es la nueva opción. Especifica el archivo que contiene la lista de hosts objetivo (hosts.txt en el directorio actual).
  • ftp: El protocolo de servicio a atacar.
  • -F: Esta es la opción crucial que indica a Hydra que se detenga después de encontrar el primer inicio de sesión exitoso en todos los hosts de la lista.

Observa la salida en tu terminal. Hydra intentará iniciar sesión en cada host en el archivo hosts.txt utilizando los nombres de usuario y contraseñas de las listas. Tan pronto como encuentre una combinación válida en cualquier de los hosts, mostrará el inicio de sesión exitoso y luego dejará de atacar todos los hosts listados en hosts.txt.

La salida debería ser similar a esta:

Hydra v9.6 (c) 2024 by van Hauser/THC & David Maciejak - ¡Ten cuidado!

Hydra (https://github.com/vanhauser-thc/thc-hydra) comenzando a las 2025-05-29 14:42:10
[DATOS] máximo 10 tareas por 2 servidores, en general 20 tareas, 10 intentos de inicio de sesión (l:2/p:5), ~1 intento por tarea
[DATOS] atacando ftp://(2 objetivos):21/
[21][ftp] host: localhost   login: testuser1   password: password123
[ESTADO] ataque finalizado para localhost (se encontró par válido)
2 de 2 objetivos completados con éxito, 1 contraseña válida encontrada
Hydra (https://github.com/vanhauser-thc/thc-hydra) finalizado a las 2025-05-29 14:42:11

Aunque tenemos dos entradas de localhost en hosts.txt, Hydra se detiene después de encontrar el primer inicio de sesión exitoso en la primera instancia de localhost. No continúa intentando encontrar credenciales para la segunda entrada de localhost, lo que demuestra el efecto de la opción -F.

La opción -F es muy útil cuando se atacan múltiples sistemas y solo se necesita encontrar un sistema vulnerable para lograr el objetivo. Puede ahorrar significativamente tiempo y recursos computacionales al detener el ataque tan pronto como se encuentra una vulnerabilidad en cualquiera de los objetivos listados.

Comparar el Comportamiento de -f y -F

En este paso, compararemos directamente el comportamiento de las opciones -f y -F para consolidar tu comprensión de sus diferencias. Usaremos la misma configuración que en los pasos anteriores: un servidor FTP en localhost, los archivos users.txt y passwords.txt, y el archivo hosts.txt que contiene dos entradas para localhost.

Primero, volvamos a ejecutar el comando usando la opción -f. Este comando apunta a un único host (localhost) y se detiene después de encontrar las primeras credenciales válidas para ese host específico.

hydra -L users.txt -P passwords.txt localhost ftp -f

Como observamos en el Paso 2, Hydra encontrará testuser1:password123 y luego se detendrá. No intentará encontrar testuser2:password456 para localhost.

Ahora, volvamos a ejecutar el comando usando la opción -F. Este comando apunta a una lista de hosts (hosts.txt) y se detiene después de encontrar las primeras credenciales válidas en cualquier de los hosts de esa lista.

hydra -L users.txt -P passwords.txt -M hosts.txt ftp -F

Como observamos en el Paso 3, Hydra encontrará testuser1:password123 en la primera entrada de localhost en hosts.txt y luego se detendrá. No procederá a verificar la segunda entrada de localhost en el archivo hosts.txt.

La diferencia clave radica en cómo Hydra interpreta el objetivo y cuándo decide detenerse:

  • -f (objetivo único): Cuando especificas un objetivo único (por ejemplo, localhost), -f indica a Hydra que se detenga tan pronto como encuentre cualquier par de nombre de usuario/contraseña válido para ese objetivo específico. No continuará buscando otras credenciales válidas en el mismo objetivo.

  • -F (lista de múltiples hosts): Cuando especificas una lista de objetivos usando -M, -F indica a Hydra que se detenga tan pronto como encuentre cualquier par de nombre de usuario/contraseña válido en cualquier de los hosts de esa lista. No continuará buscando otras credenciales válidas en el mismo host, ni procederá a verificar los hosts subsiguientes en la lista.

Para ilustrar aún más la diferencia, considera un escenario hipotético en el que estás escaneando una red con múltiples servidores FTP: ftp1.example.com, ftp2.example.com y ftp3.example.com.

  • Si usas -f y apuntas a ftp1.example.com, Hydra encontrará las primeras credenciales válidas en ftp1.example.com y se detendrá. Si luego deseas verificar ftp2.example.com, necesitarás ejecutar un comando Hydra separado para ello.

  • Si colocas los tres servidores en un archivo hosts.txt y usas -F, Hydra comenzará a verificar ftp1.example.com. Si encuentra credenciales válidas allí, detendrá inmediatamente toda la operación, sin siquiera intentar conectarse a ftp2.example.com o ftp3.example.com.

En resumen:

  • Usa -f cuando te enfocas en un único objetivo y deseas encontrar al menos una credencial válida para él.
  • Usa -F cuando estés escaneando múltiples objetivos y deseas detener toda la operación tan pronto como se encuentre cualquier credencial válida en cualquier de los objetivos.

Esto concluye el laboratorio. Has configurado correctamente un servidor FTP, configurado varias cuentas de usuario y utilizado Hydra para descifrar las cuentas, explorando las opciones -f y -F para controlar el comportamiento de ataque de Hydra.

Resumen

In this lab, you have learned how to control Hydra's attack behavior using the -f and -F options. You began by setting up a local FTP server using vsftpd and configuring it with multiple user accounts (testuser1 and testuser2) to simulate a real-world scenario. You also prepared users.txt and passwords.txt files for Hydra to use.

You then used the -f option to instruct Hydra to stop after finding the first valid username/password pair for a single target, demonstrating how to efficiently find a single vulnerable account. Following this, you explored the -F option with a multi-host list (hosts.txt), learning how Hydra can stop an entire multi-target attack as soon as a single valid credential is found on any of the listed hosts.

Finally, you compared the distinct behaviors of -f and -F, understanding their respective use cases: -f for stopping after the first success on a single target, and -F for stopping after the first success across multiple targets. This knowledge is crucial for optimizing brute-force attacks and managing resources effectively.