Ajustar el Número de Hilos de Hydra

HydraBeginner
Practicar Ahora

Introducción

En este laboratorio, aprenderás a ajustar el número de hilos en Hydra, una potente herramienta para descifrar inicios de sesión en redes, con el fin de optimizar su rendimiento. Configuraremos un servidor SSH básico en la máquina virtual LabEx y luego usaremos Hydra para realizar intentos de descifrado de contraseñas con diferentes cantidades de hilos (16, 32 y 4). Comparando la velocidad y observando los efectos de estas diferentes configuraciones, comprenderás cómo optimizar los ataques con Hydra ajustando el número de hilos en función de los recursos disponibles y las características del servicio objetivo.

Configurar el Servidor SSH

En este paso, configuraremos un servidor SSH básico en la máquina virtual LabEx. SSH (Secure Shell) es un protocolo de red criptográfico para operar servicios de red de forma segura a través de una red insegura. Se utiliza comúnmente para inicio de sesión remoto por línea de comandos y ejecución remota de comandos.

Primero, necesitamos instalar el servidor OpenSSH. OpenSSH es un conjunto de herramientas de red relacionadas con la seguridad basadas en el protocolo Secure Shell, y es la implementación SSH más común.

Abre una terminal en la máquina virtual LabEx. Puedes usar la terminal predeterminada Xfce.

Ejecuta el siguiente comando para actualizar las listas de paquetes:

sudo apt update

Este comando sincroniza los archivos de índice de paquetes desde sus fuentes. Es una buena práctica ejecutar esto antes de instalar cualquier software nuevo. Es posible que se te solicite tu contraseña, pero recuerda que el usuario labex tiene privilegios sudo sin contraseña.

A continuación, instala el servidor OpenSSH:

sudo apt install openssh-server -y

La opción -y responde automáticamente "sí" a cualquier solicitud durante la instalación, haciendo el proceso no interactivo.

Una vez completada la instalación, el servidor SSH debería iniciarse automáticamente. Puedes verificar su estado usando el siguiente comando:

sudo service ssh status

Para confirmar que el servidor SSH está en funcionamiento, puedes comprobar si el puerto SSH (puerto 22) está escuchando. Usa el comando netstat:

netstat -tulnp | grep 22

Deberías ver una salida similar a esta:

tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      -
tcp6       0      0 :::22                   :::*                    LISTEN      -

Esto indica que el servidor SSH está escuchando en el puerto 22 para conexiones IPv4 e IPv6.

Ahora que el servidor SSH está configurado, puedes conectarte a él desde otra máquina usando un cliente SSH. Sin embargo, para este laboratorio, nos centraremos en usar Hydra para descifrar la contraseña SSH con diferentes configuraciones de hilos.

Ejecutar Hydra con 16 Hilos por Defecto

En este paso, usarás Hydra para intentar descifrar la contraseña del usuario labex en tu servidor SSH. Empezarás utilizando el número de hilos predeterminado de Hydra, que es 16.

La lista de contraseñas ya se ha descargado durante el proceso de configuración. El archivo ~/project/password.txt contiene la lista de palabras unix_passwords.txt del framework Metasploit, que incluye cientos de contraseñas comunes de Unix. Esta lista de palabras más extensa proporcionará una mejor demostración de las diferencias de rendimiento de los hilos en comparación con una lista manual pequeña.

Puedes verificar que la lista de contraseñas esté disponible y comprobar su tamaño:

ls -la ~/project/password.txt
wc -l ~/project/password.txt

Esto te mostrará los detalles del archivo y el número de contraseñas en la lista de palabras (deberían ser varios cientos de entradas).

Ahora, ejecuta el comando Hydra. La opción -l especifica el nombre de usuario a atacar (labex), -P especifica la ruta a tu lista de contraseñas (~/project/password.txt), y -V habilita el modo detallado para mostrar cada intento. ssh://localhost indica que estás atacando al servicio SSH en la máquina local.

hydra -V -l labex -P ~/project/password.txt ssh://localhost

Hydra comenzará a intentar iniciar sesión en el servidor SSH utilizando cada contraseña del archivo password.txt. Dado que no especificaste la opción -t, Hydra utilizará su valor predeterminado de 16 hilos, lo que significa que intentará 16 intentos de contraseña simultáneamente. La bandera -V te mostrará cada intento en tiempo real.

Nota importante sobre la bandera -V:

El parámetro -V (detallado) es crucial para observar el proceso de ataque. Sin él, Hydra solo muestra información resumida y el resultado final, pero no verás las líneas individuales [ATTEMPT] que muestran cada contraseña que se está probando. Esta salida detallada te ayuda a comprender cómo la cantidad de hilos afecta la velocidad y el patrón del ataque.

Verás una salida similar a esta a medida que Hydra avanza:

Hydra vX.Y (c) YYYY by van Hauser/THC - Use libremente pero solo para fines legales.

Hydra comenzando en YYYY-MM-DD HH:MM:SS
[DATA] max 16 tareas por 1 servidor, en general 16 tareas, XXX intentos de inicio de sesión (l:1/p:XXX), ~XX intentos por tarea
[DATA] atacando ssh://localhost:22/
[ATTEMPT] target: localhost - login: labex - pass: !@#$%
[ATTEMPT] target: localhost - login: labex - pass: !@#$%^
[ATTEMPT] target: localhost - login: labex - pass: 000000
...
[22][ssh] host: localhost   login: labex   password: labex
1 de 1 objetivo completado con éxito, 1 contraseña válida encontrada
Hydra finalizado en YYYY-MM-DD HH:MM:SS

Con la lista de palabras más extensa, notarás que Hydra tarda más tiempo en encontrar la contraseña correcta, lo que hace que las diferencias en la cantidad de hilos sean más evidentes. Observa la información de tiempo que Hydra proporciona cuando finaliza.

Aumentar a 32 Hilos y Comparar la Velocidad

En este paso, aumentarás el número de hilos que utiliza Hydra a 32 y observarás el impacto en la velocidad de descifrado. Aumentar el número de hilos puede acelerar potencialmente el proceso al permitir más intentos simultáneos, pero su efectividad depende de los recursos de tu sistema y las limitaciones del servicio de destino.

Ejecuta el siguiente comando en tu terminal para ejecutar Hydra con 32 hilos:

hydra -V -t 32 -l labex -P ~/project/password.txt ssh://localhost

Este comando es idéntico al anterior, excepto por la adición de -t 32, que indica explícitamente a Hydra que utilice 32 hilos. La bandera -V asegura que puedas ver cada intento de contraseña.

Observa la salida. Deberías notar que Hydra informa de la creación de 32 tareas/hilos:

Hydra vX.Y (c) YYYY by van Hauser/THC - Use libremente pero solo para fines legales.

Hydra comenzando en YYYY-MM-DD HH:MM:SS
[DATA] max 32 tareas por 1 servidor, en general 32 tareas, XXX intentos de inicio de sesión (l:1/p:XXX), ~XX intentos por tarea
[DATA] atacando ssh://localhost:22/
[ATTEMPT] target: localhost - login: labex - pass: !@#$%
[ATTEMPT] target: localhost - login: labex - pass: !@#$%^
[ATTEMPT] target: localhost - login: labex - pass: 000000
...
[22][ssh] host: localhost   login: labex   password: labex
1 de 1 objetivo completado con éxito, 1 contraseña válida encontrada
Hydra finalizado en YYYY-MM-DD HH:MM:SS

Comparando la Velocidad:

Con la lista de palabras más extensa, deberías poder observar diferencias de tiempo más notables entre las ejecuciones con 16 hilos y 32 hilos. Presta atención a:

  • Las horas de inicio y finalización reportadas por Hydra.
  • El cálculo de "intentos por tarea", que muestra cómo se distribuye la carga de trabajo.
  • El tiempo total que tarda en completarse el ataque.

Con 32 hilos, podrías observar tiempos de finalización más rápidos, especialmente si la contraseña de destino se encuentra más adelante en la lista de palabras. Sin embargo, también podrías notar un mayor uso de los recursos del sistema y potencialmente más intentos de conexión simultáneos.

Reducir a 4 Hilos y Observar

En este paso, reducirás el número de hilos que utiliza Hydra a 4 y observarás el impacto en el rendimiento. Este escenario es útil cuando tienes recursos del sistema limitados o cuando el servicio de destino podría tener un control de velocidad agresivo que podría bloquear demasiados intentos de conexión simultáneos.

Ejecuta el siguiente comando en tu terminal para ejecutar Hydra con 4 hilos:

hydra -V -t 4 -l labex -P ~/project/password.txt ssh://localhost

Este comando es similar a los anteriores, pero ahora estás estableciendo explícitamente el número de hilos en 4 usando -t 4. La bandera -V mostrará cada intento de contraseña con detalle.

Observa la salida. Deberías ver que Hydra inicia solo 4 tareas/hilos:

Hydra vX.Y (c) YYYY by van Hauser/THC - Use libremente pero solo para fines legales.

Hydra comenzando en YYYY-MM-DD HH:MM:SS
[DATA] max 4 tasks per 1 server, overall 4 tasks, XXX login tries (l:1/p:XXX), ~XX tries per task
[DATA] attacking ssh://localhost:22/
[ATTEMPT] target: localhost - login: labex - pass: !@#$%
[ATTEMPT] target: localhost - login: labex - pass: !@#$%^
[ATTEMPT] target: localhost - login: labex - pass: 000000
...
[22][ssh] host: localhost   login: labex   password: labex
1 of 1 target successfully completed, 1 valid password found
Hydra finished at YYYY-MM-DD HH:MM:SS

Observando el Impacto:

Con solo 4 hilos y la lista de palabras más extensa, deberías notar una diferencia significativa en el rendimiento:

  • El número de "intentos por tarea" será mucho mayor, ya que cada hilo tiene que manejar más contraseñas.
  • El tiempo total de finalización debería ser notablemente más largo en comparación con las ejecuciones con 16 y 32 hilos.
  • Verás menos mensajes [ATTEMPT] simultáneos, ya que solo 4 intentos se ejecutan simultáneamente.

Este experimento demuestra que un número de hilos menor generalmente resultará en un rendimiento más lento, pero puede ser un ajuste necesario en ciertas situaciones, como cuando se intenta evitar la detección por las medidas de seguridad del sistema de destino o cuando se opera en una máquina con recursos limitados.

Analizar el Impacto de los Hilos en el Rendimiento

En este paso, analizarás el impacto del número de hilos en el rendimiento de Hydra basándote en tus observaciones de los pasos anteriores. Has experimentado con 4, 16 (predeterminado) y 32 hilos utilizando una lista de palabras extensa del framework Metasploit.

Consideraciones Clave para el Número de Hilos:

  • Recursos del Sistema: El número óptimo de hilos depende en gran medida de los recursos disponibles de tu sistema, incluyendo núcleos de CPU, memoria y ancho de banda de red. Si estableces un número de hilos demasiado alto, tu sistema podría sobrecargarse, lo que lleva a una degradación del rendimiento debido a la sobrecarga de cambio de contexto y la competencia por los recursos.
  • Limitaciones del Servicio de Destino: El servicio de destino (en este caso, SSH) puede tener limitaciones de velocidad o mecanismos de seguridad implementados. Si el servicio limita el número de intentos de inicio de sesión por unidad de tiempo, aumentar los hilos más allá de cierto punto no mejorará el rendimiento y podría incluso desencadenar alertas de seguridad o bloqueos temporales.
  • Latencia de la Red: Una alta latencia de red entre Hydra y el servicio de destino también puede limitar la efectividad de aumentar el número de hilos. Cada hilo necesita establecer y mantener una conexión, y una alta latencia puede hacer que estas operaciones sean lentas, anulando los beneficios del paralelismo.
  • Tamaño de la Lista de Palabras: Con listas de palabras más grandes, como la utilizada en este laboratorio, las diferencias en el número de hilos se hacen más evidentes. La lista de palabras unix_passwords.txt contiene cientos de entradas, lo que hace que el impacto del rendimiento de diferentes números de hilos sea más observable.

Observaciones y Directrices Generales:

  • 4 Hilos: Este ajuste generalmente es más lento pero es adecuado para sistemas con recursos limitados o cuando se ataca a servicios con limitaciones de velocidad estrictas. Es menos probable que cause sobrecarga del sistema o desencadene alertas de seguridad inmediatas. Con la lista de palabras extensa, deberías haber observado tiempos de finalización significativamente más largos.
  • 16 Hilos (Predeterminado): Los 16 hilos predeterminados de Hydra suelen ser un buen equilibrio entre rendimiento y uso de recursos para muchos sistemas y servicios de destino. Proporciona un nivel razonable de paralelismo sin sobrecargar típicamente la máquina atacante o el objetivo.
  • 32 Hilos: Aumentar el número de hilos a 32 puede mejorar potencialmente el rendimiento, especialmente si tu sistema tiene suficientes recursos (por ejemplo, múltiples núcleos de CPU) y el servicio de destino no tiene limitaciones de velocidad agresivas. Sin embargo, es crucial monitorear el uso de recursos de tu sistema para asegurarte de que no se convierte en un cuello de botella.

Métricas de Rendimiento a Considerar:

Al evaluar el rendimiento de los hilos, considera estos factores:

  • Tiempo total de ejecución: El tiempo que tarda desde el inicio hasta el final.
  • Intentos por segundo: La velocidad a la que se realizan los intentos de contraseña.
  • Uso de recursos del sistema: Uso de CPU, memoria y red.
  • Respuesta del servicio de destino: Si el servicio se vuelve no receptivo o implementa bloqueos.

Conclusión:

No existe un número de hilos "óptimo" único para Hydra; la configuración óptima depende de una variedad de factores específicos de tu máquina atacante y del servicio de destino. Es importante experimentar con diferentes configuraciones y monitorear tanto el rendimiento de tu sistema como la respuesta del objetivo para encontrar el equilibrio más eficiente entre velocidad y uso de recursos. Comprender estas dinámicas te permite optimizar tus ataques con Hydra para diferentes escenarios.

Resumen

En este laboratorio, has aprendido a ajustar el número de hilos de Hydra y su impacto en el rendimiento utilizando una lista de palabras de contraseñas considerable. Empezaste configurando un servidor SSH básico en tu máquina virtual LabEx. Luego, utilizaste Hydra para realizar intentos de craqueo de contraseñas contra este servidor SSH con diferentes números de hilos: el valor predeterminado de 16, un aumento a 32 y una reducción a 4, utilizando la lista de palabras unix_passwords.txt del framework Metasploit. Al observar la velocidad y el tiempo de finalización de cada escenario con una lista de palabras de tamaño realista, obtuviste una comprensión práctica de cómo el número de hilos afecta la eficiencia de Hydra. Este laboratorio demostró la importancia de optimizar el número de hilos en función de los recursos del sistema disponibles y las características del servicio de destino para lograr el mejor rendimiento en las operaciones de craqueo de contraseñas.