Aprenda los Comandos Básicos de Hydra

HydraBeginner
Practicar Ahora

Introducción

En este laboratorio, aprenderá los comandos y técnicas esenciales para usar Hydra, una herramienta versátil para descifrar contraseñas. Explorará las estructuras de comandos básicas con opciones clave como nombre de usuario (-l/-L), contraseña (-p/-P) y especificaciones de puerto (-s), mientras practica un ataque SSH simple contra un servidor de prueba.

Los ejercicios lo guiarán a través de la configuración del objetivo, la ejecución del ataque y la interpretación de la salida. Al completar este laboratorio, obtendrá experiencia práctica con la funcionalidad central de Hydra para intentos básicos de fuerza bruta contra servicios de red.

Importante: Este laboratorio está diseñado para la Interfaz de Escritorio (Desktop Interface). NO ejecute los comandos en la Interfaz de Terminal Única (Single-Terminal Interface).

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 83%. Ha recibido una tasa de reseñas positivas del 99% por parte de los estudiantes.

Comprender la Estructura de los Comandos de Hydra

En este paso, exploraremos la estructura de comandos fundamental de Hydra, que es una herramienta poderosa para probar la seguridad de contraseñas mediante ataques de fuerza bruta. Antes de comenzar, es importante comprender que Hydra intenta sistemáticamente diferentes combinaciones de nombre de usuario y contraseña contra servicios de red para identificar credenciales débiles.

El comando básico de Hydra sigue este patrón:

hydra [[[-l LOGIN | -L FILE] [-p PASS | -P FILE]] | [-C FILE]] [-e nsr] [-o FILE] [-t TASKS] [-M FILE [-T TASKS]] [-w TIME] [-W TIME] [-f] [-s PORT] [-x MIN:MAX:CHARSET] [-SuvV46] [service://server[:PORT][/OPT]]

Analicemos las opciones más utilizadas para comprender qué hace cada parte:

  • -l o -L: Estas le permiten especificar un solo nombre de usuario (-l) para la prueba o un archivo que contiene varios nombres de usuario (-L).
  • -p o -P: Similar a los nombres de usuario, estos le permiten probar una sola contraseña (-p) o varias contraseñas de un archivo (-P).
  • -t: Controla cuántos intentos realiza Hydra simultáneamente (hilos paralelos).
  • -s: Importante cuando el servicio que está probando no utiliza su número de puerto estándar.
  • -vV: Muestra información detallada del progreso durante el ataque.
  • -o: Guarda sus resultados en un archivo especificado para su posterior revisión.

Para verificar que Hydra esté funcionando correctamente y ver todas las opciones disponibles, comenzaremos con un comando simple que muestra el menú de ayuda:

hydra -h
hydra help menu

Después de ejecutar esto, debería ver la lista completa de opciones y comandos de Hydra. Esta salida confirma que la herramienta está instalada correctamente y lista para nuestros ejercicios de prueba de seguridad. El menú de ayuda también es una referencia útil cuando necesita verificar la sintaxis de un comando específico durante su trabajo.

Especificar el Host y Puerto de Destino

En este paso, aprenderá cómo especificar el host y el puerto de destino al usar Hydra. Esto es esencial para dirigir su ataque al servicio correcto. Piense en ello como dirigir un sobre: necesita el destino correcto (IP/nombre de host) y el buzón específico (puerto) para entregar su mensaje.

El formato básico para especificar la información del objetivo en Hydra es:

hydra [options] < service > :// < target > [:port]

Analicemos cada componente:

  • <service>: El protocolo o servicio que está atacando (por ejemplo, ssh, ftp, http). Esto le dice a Hydra qué tipo de autenticación intentar.
  • <target>: La dirección IP o el nombre de host del servidor de destino. Esto es como la dirección del edificio al que intenta acceder.
  • [:port]: Número de puerto opcional. Los servicios generalmente se ejecutan en puertos estándar (como el 22 para SSH), pero a veces se mueven a diferentes puertos por seguridad.

Para practicar, usaremos un servidor SSH de prueba que se ejecuta en localhost (127.0.0.1) en el puerto 22. Esto significa que estamos atacando nuestra propia máquina, lo cual es seguro para el aprendizaje. Pruebe este comando para verificar la especificación del objetivo:

hydra -vV -l testuser -p testpass ssh://127.0.0.1:22
hydra test command

Esto es lo que está sucediendo en este comando de prueba:

  • -vV hace que Hydra muestre una salida detallada para que pueda ver lo que está sucediendo
  • -l testuser especifica un nombre de usuario de prueba
  • -p testpass proporciona una contraseña de prueba
  • ssh://127.0.0.1:22 le dice a Hydra que intente la autenticación SSH en nuestra máquina local

Nota: Este es solo un comando de prueba para demostrar la sintaxis. Usaremos credenciales reales en pasos posteriores cuando comprenda cómo encajan las piezas.

Usar las Opciones de Nombre de Usuario y Contraseña

En este paso, exploraremos cómo Hydra maneja las credenciales de autenticación para ataques de fuerza bruta. Comprender estas opciones es crucial porque Hydra necesita saber qué combinaciones probar al intentar iniciar sesión en el sistema de destino.

Hydra proporciona tres métodos principales para especificar las credenciales, cada uno adecuado para diferentes escenarios:

  1. Prueba de Credenciales Únicas (útil para una verificación rápida):
hydra -l username -p password ssh://127.0.0.1

Este comando prueba exactamente una combinación de nombre de usuario/contraseña contra el servicio SSH.

  1. Prueba Basada en Listas (común para ataques de diccionario):
hydra -L usernames.txt -P passwords.txt ssh://127.0.0.1

Aquí, Hydra intentará cada combinación posible entre los nombres de usuario en usernames.txt y las contraseñas en passwords.txt.

  1. Archivo de Credenciales Emparejadas (cuando los nombres de usuario y las contraseñas están directamente vinculados):
hydra -C creds.txt ssh://127.0.0.1

Esto usa un archivo donde cada línea contiene un nombre de usuario y una contraseña separados por dos puntos (username:password).

Creemos archivos de prueba para practicar con estas opciones. Primero, haremos una lista de nombres de usuario simple que contenga cuentas administrativas comunes:

echo -e "admin\nroot\ntestuser" > usernames.txt

A continuación, crearemos una lista de contraseñas con algunas contraseñas débiles que a menudo se encuentran en sistemas del mundo real:

echo -e "password\n123456\nadmin123" > passwords.txt

Ahora podemos ejecutar un comando de prueba con salida detallada (-vV) para ver cómo Hydra procesa estos archivos:

hydra -vV -L usernames.txt -P passwords.txt ssh://127.0.0.1
hydra test command

Los flags -vV hacen que Hydra muestre una salida detallada para que pueda observar el progreso del ataque y comprender lo que está sucediendo en cada paso.

Ejecutar un Comando de Ataque SSH Simple

En este paso, combinará todos los aprendizajes previos para ejecutar un ataque de fuerza bruta SSH completo usando Hydra. Usaremos el servidor SSH de prueba que se ejecuta en localhost (127.0.0.1) con las credenciales que preparamos anteriormente. Este ejercicio práctico le ayudará a comprender cómo Hydra prueba sistemáticamente diferentes combinaciones de nombre de usuario y contraseña contra un servicio SSH.

Antes de lanzar el ataque, verifiquemos que nuestra configuración de destino esté funcionando correctamente. Intentaremos una conexión SSH manual para confirmar que el servicio se está ejecutando:

ssh testuser@127.0.0.1

(Escriba "Ctrl+C" cuando se le solicite la contraseña para volver a su sesión)

Esta prueba manual nos ayuda a confirmar que el servicio SSH está activo y responde a los intentos de conexión. Cuando se ejecuta Hydra, realizará intentos de conexión similares, pero automatizará el proceso con múltiples intentos.

LabEx VM proporciona la contraseña para labex en la variable de entorno PASSWORD. Agreguémosla al archivo de contraseñas para probar:

Importante: Ejecute los siguientes comandos en la Interfaz de Escritorio (Desktop Interface), de lo contrario no obtendrá la variable de entorno PASSWORD.

echo "labex" > usernames.txt
echo -e "$PASSWORD" >> passwords.txt
environment variable

Ahora ejecutemos el comando de ataque Hydra real. Aquí es donde reunimos todos los componentes que hemos preparado: la lista de nombres de usuario, la lista de contraseñas y la información del objetivo:

hydra -vV -L usernames.txt -P passwords.txt -t 4 ssh://127.0.0.1
hydra test command

Analicemos lo que hace cada parámetro:

  • -vV: Habilita la salida detallada para que pueda ver el progreso de Hydra en tiempo real
  • -L usernames.txt: Especifica el archivo que contiene los posibles nombres de usuario para probar
  • -P passwords.txt: Especifica el archivo que contiene las posibles contraseñas para probar
  • -t 4: Establece el número de conexiones paralelas (hilos) a utilizar
  • ssh://127.0.0.1: Identifica nuestro objetivo como un servicio SSH en localhost

El comando probará sistemáticamente todas las combinaciones de nuestras listas de nombres de usuario y contraseñas. En nuestro entorno de prueba controlado, esto fallará intencionalmente en encontrar credenciales válidas, pero verá exactamente cómo Hydra trabaja a través de las combinaciones. La salida detallada le mostrará cada intento que realiza Hydra, lo que le ayudará a comprender el proceso de fuerza bruta.

Observe cómo Hydra maneja automáticamente los intentos fallidos y continúa con la siguiente combinación. Esto demuestra el poder de las herramientas automatizadas en comparación con las pruebas manuales. El proceso puede tardar unos momentos mientras Hydra trabaja con todas las combinaciones posibles en nuestros archivos de prueba.

Verificar la Salida del Comando

En este paso, examinaremos cómo leer y comprender la salida de Hydra después de ejecutar un ataque SSH. Esto es importante porque la salida nos dice si el ataque tuvo éxito y proporciona información valiosa para la depuración. Como principiante, aprenderá a identificar los indicadores clave de éxito en los resultados.

Cuando ejecutó el comando de ataque SSH en el Paso 4, Hydra generó una salida similar a esta:

[DATA] attacking ssh://127.0.0.1:22/
[VERBOSE] Resolving addresses ... done
[STATUS] 80.00 tries/min, 80 tries in 00:01h, 19 to do in 00:01h
[22][ssh] host: 127.0.0.1   login: testuser   password: testpass
1 of 1 target successfully completed, 1 valid password found

Analicemos lo que significa cada parte:

  1. La línea [DATA] muestra el servicio de destino y la dirección que se está atacando
  2. [STATUS] proporciona estadísticas en tiempo real sobre el progreso del ataque
  3. La línea más importante muestra cualquier credencial encontrada en el formato: [port][service] host: IP login: username password: password
  4. La línea final resume los resultados del ataque

Para la documentación y el análisis posterior, puede guardar la salida de Hydra en un archivo utilizando la opción -o. Esto crea un registro permanente de los resultados de su prueba:

hydra -vV -L usernames.txt -P passwords.txt -t 4 -o results.txt ssh://127.0.0.1

Una vez que se complete el comando, puede ver los resultados guardados con:

cat results.txt
hydra test command

Este archivo contendrá la misma salida que vio en la terminal, lo que le permitirá revisar los hallazgos más tarde o compartirlos con los miembros del equipo.

Resumen

En este laboratorio, ha aprendido los comandos y técnicas esenciales para llevar a cabo ataques de descifrado de contraseñas (password-cracking attacks) utilizando Hydra. Los ejercicios cubrieron la sintaxis básica de los comandos, incluyendo la especificación de nombre de usuario/contraseña con los flags -l/-L y -p/-P, la configuración del puerto con -s y la verificación básica de la instalación de Hydra.

También ha practicado la especificación del objetivo utilizando el formato <service>://<target>[:port] a través de ejemplos prácticos de ataques SSH. Estas habilidades fundamentales le permiten ejecutar operaciones básicas de Hydra mientras comprende la estructura adecuada de los comandos y la definición del objetivo.