En este laboratorio, aprenderemos cómo restaurar una sesión anterior de Hydra después de una interrupción. Esto se logra simulando un ataque de Hydra interrumpido contra el servicio ssh en localhost utilizando una lista de contraseñas sencilla. Luego, utilizaremos la opción -R para restaurar la sesión y verificar que el ataque se reanude desde el último punto.
El laboratorio implica crear una lista de contraseñas, construir un comando de Hydra para atacar el servicio ssh, interrumpir el ataque con Ctrl+C y, posteriormente, restaurar la sesión utilizando la opción -R. Finalmente, exploraremos cómo modificar la sesión restaurada con una nueva opción.
Skills Graph
%%%%{init: {'theme':'neutral'}}%%%%
flowchart RL
hydra(("Hydra")) -.-> hydra/HydraGroup(["Hydra"])
hydra/HydraGroup -.-> hydra/single_username("Single Username Attack")
hydra/HydraGroup -.-> hydra/single_password("Single Password Attack")
hydra/HydraGroup -.-> hydra/task_limit("Task Limit Configuration")
hydra/HydraGroup -.-> hydra/session_management("Session Save and Restore")
subgraph Lab Skills
hydra/single_username -.-> lab-550772{{"Restaurar una sesión anterior de Hydra"}}
hydra/single_password -.-> lab-550772{{"Restaurar una sesión anterior de Hydra"}}
hydra/task_limit -.-> lab-550772{{"Restaurar una sesión anterior de Hydra"}}
hydra/session_management -.-> lab-550772{{"Restaurar una sesión anterior de Hydra"}}
end
Simular un ataque interrumpido de Hydra
En este paso, simularemos un ataque interrumpido de Hydra. Este es un paso crucial para entender cómo usar la opción -R para restaurar una sesión. Iniciaremos un ataque de Hydra y luego lo interrumpiremos manualmente, imitando un escenario del mundo real en el que el ataque podría detenerse debido a problemas de red u otras circunstancias imprevistas.
Primero, echemos un vistazo previo a una lista de contraseñas sencilla. Esta lista contendrá algunas contraseñas comunes que Hydra intentará utilizar.
cd ~/project
head -n 5 passwords.txt
Agregue las siguientes contraseñas al archivo:
password
123456
qwerty
admin
1234567890
A continuación, necesitamos un objetivo para atacar. Con fines demostrativos, utilizaremos el servicio ssh en localhost. Asegúrese de que ssh esté en ejecución en su máquina virtual de LabEx. Si no está en ejecución, generalmente puede iniciarlo con sudo service ssh start. Sin embargo, dado que se trata de un contenedor Docker, es posible que no pueda usar systemctl o service. En este caso, puede omitir el ataque real y simplemente centrarse en crear el comando y en interrumpirlo. Asumiremos que ssh está en ejecución para el propósito de este ejercicio.
sudo service ssh start
sudo service ssh status
Ahora, construyamos el comando de Hydra. Utilizaremos el módulo ssh, especificaremos el nombre de usuario labex, usaremos nuestro archivo passwords.txt y apuntaremos a localhost. También agregaremos la opción -t 1 para limitar el número de tareas concurrentes a 1, lo que facilitará observar la interrupción.
Este comando iniciará un ataque de Hydra contra el servicio ssh en localhost, intentando iniciar sesión como el usuario labex utilizando las contraseñas en ~/project/passwords.txt.
Deje que el ataque se ejecute durante unos segundos (por ejemplo, 5 - 10 segundos). Mientras se está ejecutando, presione Ctrl+C para interrumpir el ataque.
Debería ver una salida similar a la siguiente (la salida exacta variará según la velocidad de su sistema y la cantidad de contraseñas que Hydra haya intentado):
Hydra v9.2 (c) 2021 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-02 13:56:44
[DATA] max 1 task per 1 server, overall 1 task, 55 login tries (l:1/p:55), ~55 tries per task
[DATA] attacking ssh://localhost:22/
[VERBOSE] Resolving addresses ... [VERBOSE] resolving done
[INFO] Testing if password authentication is supported by ssh://[email protected]:22
[INFO] Successful, password authentication is supported by ssh://127.0.0.1:22
[ATTEMPT] target localhost - login "labex" - pass "password" - 1 of 55 [child 0] (0/0)
[ATTEMPT] target localhost - login "labex" - pass "123456" - 2 of 55 [child 0] (0/0)
[ATTEMPT] target localhost - login "labex" - pass "qwerty" - 3 of 55 [child 0] (0/0)
^C[ERROR] Received signal 2, going down ...
The session file ./hydra.restore was written. Type "hydra -R" to resume session.
El ^C indica que presionó Ctrl+C para interrumpir el proceso. Hydra dejará de intentar contraseñas.
Esta interrupción simula un escenario en el que el ataque se detiene inesperadamente. En el siguiente paso, aprenderemos cómo usar la opción -R para reanudar esta sesión interrumpida.
Restaurar la sesión con la opción -R
En el paso anterior, simulamos un ataque interrumpido de Hydra. Ahora, usaremos la opción -R para restaurar la sesión desde donde se dejó. Hydra guarda automáticamente su progreso en un archivo .restore en el directorio actual. La opción -R le indica a Hydra que lea este archivo y continúe el ataque.
Para restaurar la sesión, simplemente ejecute el mismo comando de Hydra que antes, pero agregue la opción -R:
Hydra ahora leerá el archivo hydra.restore (que se crea automáticamente) y reanudará el ataque desde el último punto alcanzado antes de la interrupción. Debería ver que Hydra continúa intentando contraseñas del archivo ~/project/passwords.txt.
Hydra v9.2 (c) 2021 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).
[INFORMATION] reading restore file ./hydra.restore
[WARNING] options after -R are now honored (since v8.6)
Hydra (https://github.com/vanhauser-thc/thc-hydra) starting at 2025-04-02 13:57:58
[DATA] max 1 task per 1 server, overall 1 task, 55 login tries (l:1/p:55), ~55 tries per task
[DATA] attacking ssh://localhost:22/
[VERBOSE] Resolving addresses ... [VERBOSE] resolving done
[INFO] Testing if password authentication is supported by ssh://[email protected]:22
[INFO] Successful, password authentication is supported by ssh://127.0.0.1:22
[RE-ATTEMPT] target localhost - login "labex" - pass "qwerty" - 3 of 55 [child 0] (0/0)
[ATTEMPT] target localhost - login "labex" - pass "admin" - 4 of 55 [child 0] (0/0)
[ATTEMPT] target localhost - login "labex" - pass "1234567890" - 5 of 55 [child 0] (0/0)
^C[ERROR] Received signal 2, going down ...
The session file ./hydra.restore was written. Type "hydra -R" to resume session.
Deje que el ataque se ejecute durante unos segundos más. Es posible que vea que Hydra omite las contraseñas que ya intentó en el paso anterior.
La opción -R es extremadamente útil en situaciones en las que tiene una lista de contraseñas grande o una conexión de red lenta. Le permite reanudar el ataque sin tener que comenzar desde el principio, lo que le ahorra tiempo y recursos.
Es importante tener en cuenta que el archivo hydra.restore se actualiza automáticamente a medida que Hydra avanza. Si interrumpe el ataque nuevamente, puede usar el mismo comando -R para reanudar desde el nuevo punto de interrupción.
Resumen
En este laboratorio, simulamos un ataque interrumpido de Hydra contra el servicio SSH en localhost para entender cómo restaurar una sesión. Creamos una lista de contraseñas e iniciamos un ataque de Hydra dirigido al usuario 'labex', luego interrumpimos manualmente el proceso usando Ctrl+C.
Esta interrupción nos permitió prepararnos para los siguientes pasos, donde aprenderemos cómo usar la opción -R para restaurar la sesión interrumpida y continuar el ataque desde donde se dejó, así como cómo modificar la sesión restaurada con nuevas opciones.