Generar Contraseñas con Hydra para Ataques de Fuerza Bruta

HydraBeginner
Practicar Ahora

Introducción

En este laboratorio, aprenderás a utilizar Hydra para generar contraseñas para ataques de fuerza bruta utilizando diversas técnicas de generación de contraseñas. Te centrarás en el uso de la opción -x de Hydra para crear contraseñas basadas en diferentes criterios, como la longitud, los conjuntos de caracteres y los patrones comunes de contraseñas.

El laboratorio te guiará a través de múltiples escenarios de generación de contraseñas, incluyendo conjuntos de caracteres básicos, combinaciones de caracteres mixtas, patrones numéricos y estructuras de contraseñas del mundo real. Utilizarás un servidor FTP ficticio en localhost para practicar estas técnicas y aprender a analizar eficazmente la salida de los ataques de fuerza bruta.

Generar Contraseñas con la Opción -x

En este paso, aprenderás a usar la opción -x en Hydra para generar contraseñas basadas en un formato especificado. Esto es útil cuando tienes alguna información sobre la posible estructura de la contraseña, como un rango de longitud conocido o un conjunto de caracteres.

La opción -x de Hydra te permite definir una longitud mínima y máxima para las contraseñas generadas, junto con un conjunto de caracteres a utilizar. La sintaxis es -x min:max:charset.

Comencemos con un ejemplo simple. Generarás contraseñas de entre 6 y 8 caracteres de longitud, utilizando solo letras minúsculas.

Primero, asegúrate de estar en el directorio ~/project. Este es el directorio predeterminado al iniciar el laboratorio.

cd ~/project

Ahora, usarás Hydra para generar contraseñas. Para fines demostrativos, atacarás el servicio SSH en localhost. Esto te permitirá ver la generación de contraseñas sin realizar un ataque real (ya que estamos usando un usuario inexistente).

Ejecuta el siguiente comando en la terminal:

hydra -l testuser -vV -x 3:5:a-z localhost ssh

Descompongamos este comando:

  • hydra: El comando para ejecutar la herramienta Hydra.
  • -l testuser: Especifica el nombre de usuario a utilizar. Aquí usas "testuser" como marcador (es probable que este usuario no exista).
  • -vV: Habilita la salida detallada, mostrando cada intento.
  • -x 3:5:a-z: Esta es la parte clave. Le indica a Hydra que genere contraseñas con:
    • 3: Longitud mínima de 3 caracteres.
    • 5: Longitud máxima de 5 caracteres.
    • a-z: Utiliza solo letras minúsculas (a-z). Otras opciones incluyen A-Z (mayúsculas), 0-9 (dígitos), y puedes combinarlas, por ejemplo, a-zA-Z0-9 para minúsculas, mayúsculas y dígitos.
  • localhost: El host de destino.
  • ssh: El servicio SSH a atacar.

Verás a Hydra intentando conexiones con contraseñas generadas como "aaa", "aaaa", "aaaaa", "aab", y así sucesivamente. Al usar la opción -x, Hydra genera automáticamente contraseñas basadas en los criterios especificados.

Nota: El conteo de combinaciones para contraseñas de 3 a 5 caracteres usando letras minúsculas es manejable: 26³ + 26⁴ + 26⁵ = 17,576 + 456,976 + 11,881,376 ≈ 12.4 millones de combinaciones, lo que está dentro de los límites de Hydra.

Importante: Usa Ctrl+C para detener el ataque, ya que tomará mucho tiempo completarlo.

La salida mostrará las contraseñas generadas mientras Hydra intenta conectarse al servicio SSH.

Hydra v[...] (c) 2023 by van Hauser / THCO
...
[INTENTO] objetivo 127.0.0.1 - inicio de sesión "testuser" - contraseña "aaa" - 1 de 1 [hijo 0] (0/0)
[INTENTO] objetivo 127.0.0.1 - inicio de sesión "testuser" - contraseña "aaaa" - 1 de 1 [hijo 0] (0/0)
[INTENTO] objetivo 127.0.0.1 - inicio de sesión "testuser" - contraseña "aaaaa" - 1 de 1 [hijo 0] (0/0)
[INTENTO] objetivo 127.0.0.1 - inicio de sesión "testuser" - contraseña "aab" - 1 de 1 [hijo 0] (0/0)
...

Importante: Límites de Combinaciones de Contraseñas

Al usar la opción -x de Hydra, es crucial considerar el número total de combinaciones de contraseñas que se generarán. Hydra tiene un límite incorporado de 4 mil millones de contraseñas para evitar intentos de fuerza bruta poco prácticos.

Aquí hay algunos ejemplos de conteos de combinaciones:

  • 3-5 caracteres, solo minúsculas (a-z): ~12.4 millones de combinaciones ✓
  • 4-6 caracteres, solo minúsculas (a-z): ~321 millones de combinaciones ✓
  • 6-8 caracteres, solo minúsculas (a-z): ~217 mil millones de combinaciones ✗ (excede el límite)
  • 4-6 caracteres, alfanuméricos (a-zA-Z0-9): ~57 mil millones de combinaciones ✗ (excede el límite)

Siempre calcula el conteo de combinaciones antes de ejecutar: charset_size^min_length + ... + charset_size^max_length

Atacar FTP con Contraseñas Generadas

En este paso, utilizarás las capacidades de generación de contraseñas de Hydra para atacar un servidor FTP ficticio. Utilizarás una lista de contraseñas generada "sobre la marcha" con la opción -x.

Primero, necesitas configurar un servidor FTP simple para pruebas. Utilizarás python3-pyftpdlib, que es una biblioteca de servidor FTP ligera para Python.

Instala python3-pyftpdlib si aún no está instalado:

sudo apt update
sudo apt install -y python3-pyftpdlib

Inicia el servidor FTP en segundo plano en el puerto 2121, sirviendo archivos desde el directorio ~/project. La opción -w permite acceso de escritura.

nohup python3 -m pyftpdlib -p 2121 -w -u testuser -P secret ~/project > /dev/null 2>&1 &

La parte nohup ... & ejecuta el comando en segundo plano y evita que se detenga si cierras la terminal. > /dev/null 2>&1 redirige la salida estándar y el error estándar a /dev/null, manteniendo tu terminal limpio. Las opciones -u testuser -P secret configuran un usuario con la contraseña "secret" que puede acceder al servidor.

Ahora, usarás Hydra para atacar este servidor FTP. Utilizarás la opción -x para generar contraseñas e intentar iniciar sesión como el usuario "testuser".

Ejecuta el siguiente comando en la terminal:

hydra -l testuser -vV -x 4:6:a-z 127.0.0.1 ftp -s 2121

Descompongamos este comando:

  • hydra: La herramienta de línea de comandos Hydra.
  • -l testuser: Especifica el nombre de usuario a usar: "testuser".
  • -vV: Habilita la salida detallada, mostrando cada intento de inicio de sesión.
  • -x 4:6:a-z: Le indica a Hydra que genere contraseñas con:
    • 4: Longitud mínima de 4 caracteres.
    • 6: Longitud máxima de 6 caracteres.
    • a-z: Utiliza solo letras minúsculas (a-z).
  • 127.0.0.1: El host de destino (localhost). Usas 127.0.0.1 en lugar de localhost para evitar posibles problemas de resolución de DNS dentro del contenedor.
  • ftp: El servicio a atacar (FTP).
  • -s 2121: Especifica el número de puerto. Estás atacando el servidor FTP que se ejecuta en el puerto 2121.

Deberías ver a Hydra intentando inicios de sesión con contraseñas generadas. Dado que el servidor FTP está configurado con credenciales específicas (nombre de usuario: testuser, contraseña: secret), Hydra encontrará la contraseña correcta cuando genere "secret" durante sus intentos de fuerza bruta.

Importante: Usa Ctrl+C para detener el ataque, ya que tomará mucho tiempo completarlo.

La salida mostrará los intentos de inicio de sesión y, finalmente, un mensaje de inicio de sesión exitoso.

Hydra v[...] (c) 2023 by van Hauser / THCO
...
[INTENTO]  target 127.0.0.1:2121 servicio ftp en dispositivo eth0 - inicio de sesión testuser contraseña aaaa
[INTENTO]  target 127.0.0.1:2121 servicio ftp en dispositivo eth0 - inicio de sesión testuser contraseña aaab
...
[2121][ftp] host: 127.0.0.1   login: testuser   password: secret

Ahora, probemos un ejemplo ligeramente más complejo, combinando letras minúsculas y dígitos:

hydra -l testuser -vV -x 3:5:a-z0-9 127.0.0.1 ftp -s 2121

Esto generará contraseñas como "aaa", "aab", "aac", y así sucesivamente, pasando sistemáticamente por todas las combinaciones de 3 caracteres primero, luego de 4 caracteres, y finalmente de 5 caracteres. Observa la salida para ver las contraseñas generadas y el inicio de sesión exitoso.

Hydra v[...] (c) 2023 by van Hauser / THCO
...
[INTENTO]  target 127.0.0.1:2121 servicio ftp en dispositivo eth0 - inicio de sesión testuser contraseña aaa
[INTENTO]  target 127.0.0.1:2121 servicio ftp en dispositivo eth0 - inicio de sesión testuser contraseña aab
...
[2121][ftp] host: 127.0.0.1   login: testuser   password: secret

Este paso demostró cómo usar Hydra con la opción -x para generar contraseñas y atacar un servidor FTP. Recuerda usar estas técnicas de forma responsable y ética.

Generación de Contraseñas con Mayúsculas y Minúsculas

En este paso, aprenderás a generar contraseñas utilizando letras mayúsculas y minúsculas. Este es un patrón común de contraseñas que muchos usuarios emplean, lo que lo convierte en una estrategia efectiva de fuerza bruta.

Muchos usuarios crean contraseñas con mayúsculas y minúsculas para cumplir con los requisitos de complejidad de las contraseñas. Comprender este patrón puede mejorar significativamente tu tasa de éxito en ataques de fuerza bruta.

Asegúrate de estar en el directorio ~/project y de que tu servidor FTP aún esté en funcionamiento:

cd ~/project

Generemos contraseñas con mayúsculas y minúsculas. Ejecuta el siguiente comando:

hydra -l testuser -vV -x 3:4:a-zA-Z 127.0.0.1 ftp -s 2121

Este comando genera contraseñas utilizando:

  • a-z: letras minúsculas (a-z)
  • A-Z: letras mayúsculas (A-Z)

Verás contraseñas como "aaa", "Aaa", "aAa", "AAa", "aaA", "AaA", "aAA", "AAA", "aab", "Aab", etc. Observa cómo Hydra combina sistemáticamente letras mayúsculas y minúsculas.

Probemos el rango de 3 a 4 caracteres para ver el patrón más claramente:

hydra -l testuser -vV -x 3:4:a-zA-Z 127.0.0.1 ftp -s 2121

Esto generará contraseñas de 3 a 4 caracteres con mayúsculas y minúsculas. Puedes observar cómo progresan las combinaciones:

  • 3 caracteres: "aaa", "Aaa", "aAa", "AAa", "aaA", "AaA", "aAA", "AAA", "aab", "Aab", etc.
  • 4 caracteres: "aaaa", "Aaaa", "aAaa", "AAaa", "aaaA", "AaaA", "aAaA", "AAaA", etc.

Entendiendo el Patrón:

La generación de contraseñas con mayúsculas y minúsculas sigue un enfoque sistemático donde Hydra prueba todas las combinaciones posibles de letras mayúsculas y minúsculas. Esto es particularmente efectivo porque:

  1. Muchas políticas de contraseñas requieren mayúsculas y minúsculas.
  2. Los usuarios a menudo escriben la primera letra o letras aleatorias en mayúscula.
  3. Los patrones comunes incluyen escribir la primera letra de las palabras en mayúscula.

Este paso demostró cómo usar la generación de letras con mayúsculas y minúsculas para ataques de fuerza bruta, lo cual es efectivo contra contraseñas que utilizan tanto mayúsculas como minúsculas.

Generación de Contraseñas Alfanuméricas

En este paso, aprenderás a generar contraseñas que combinan letras y números. Las contraseñas alfanuméricas son extremadamente comunes, ya que equilibran la seguridad con la memorización.

Las contraseñas alfanuméricas son uno de los tipos de contraseñas más comunes porque:

  • Cumplen con la mayoría de los requisitos de complejidad de las contraseñas.
  • Son más fáciles de recordar que las cadenas puramente aleatorias.
  • Se utilizan a menudo en entornos corporativos.

Generemos contraseñas alfanuméricas usando Hydra:

hydra -l testuser -vV -x 3:4:a-zA-Z0-9 127.0.0.1 ftp -s 2121

Esto genera contraseñas con:

  • a-z: letras minúsculas (a-z)
  • A-Z: letras mayúsculas (A-Z)
  • 0-9: dígitos (0-9)

Ejemplos de contraseñas generadas: "abc", "A2b", "123", "aB1", "Te1", etc.

Probemos un enfoque más específico con solo letras minúsculas y dígitos:

hydra -l testuser -vV -x 3:4:a-z0-9 127.0.0.1 ftp -s 2121

Esto generará contraseñas como "aaa", "aa1", "a12", "123", "test", etc.

Patrones Alfanuméricos Comunes:

Los usuarios a menudo siguen patrones predecibles al crear contraseñas alfanuméricas:

  1. Palabra + números (por ejemplo, "pass123")
  2. Números + palabra (por ejemplo, "123pass")
  3. Letras y números alternos (por ejemplo, "a1b2")

Simulemos un patrón donde los usuarios podrían usar combinaciones alfanuméricas cortas:

hydra -l testuser -vV -x 4:5:a-z0-9 127.0.0.1 ftp -s 2121

Este paso demostró cómo generar contraseñas alfanuméricas, que se encuentran entre los tipos de contraseñas más comunes en escenarios del mundo real.

Generación de Contraseñas Numéricas

En este paso, aprenderás a generar contraseñas puramente numéricas. Estas son comunes para códigos PIN, contraseñas simples y sistemas con requisitos numéricos exclusivos.

Las contraseñas numéricas se utilizan frecuentemente en:

  • Códigos PIN para dispositivos y cuentas.
  • Contraseñas simples para sistemas básicos.
  • Contraseñas temporales.
  • Sistemas heredados con requisitos numéricos exclusivos.

Generemos contraseñas numéricas:

hydra -l testuser -vV -x 3:6:0-9 127.0.0.1 ftp -s 2121

Esto genera contraseñas puramente numéricas como "123", "1234", "0000", "9999", "5678", etc.

Para contraseñas tipo PIN (típicamente de 4 a 6 dígitos), intenta:

hydra -l testuser -vV -x 4:4:0-9 127.0.0.1 ftp -s 2121

Esto genera combinaciones de exactamente 4 dígitos que podrían representar:

  • Años (1990, 2000, 2023, etc.)
  • Códigos PIN comunes (1234, 0000, 1111, etc.)
  • Años de nacimiento
  • Fechas significativas

Probemos un patrón de 6 dígitos común para PIN más largos:

hydra -l testuser -vV -x 6:6:0-9 127.0.0.1 ftp -s 2121

Patrones Numéricos Comunes:

Los usuarios a menudo eligen contraseñas numéricas predecibles:

  1. Números secuenciales: 123456, 654321
  2. Dígitos repetidos: 111111, 000000
  3. Fechas: años de nacimiento, año actual
  4. Patrones simples: 121212, 123123

Aplicación en el Mundo Real:

La generación de contraseñas numéricas es especialmente útil al atacar:

  • Códigos PIN de dispositivos móviles
  • Códigos PIN de cajeros automáticos
  • Contraseñas simples de sistemas
  • Códigos de acceso temporales

Este paso demostró cómo generar contraseñas numéricas, que se utilizan comúnmente en muchos sistemas.

Generación de Contraseñas con Conjuntos de Caracteres Personalizados e Incluyendo Símbolos

En este paso, aprenderás a crear conjuntos de caracteres personalizados que incluyan símbolos específicos. Esto es útil cuando sabes o sospechas que el objetivo utiliza ciertos caracteres especiales en sus contraseñas.

Muchas políticas de contraseñas requieren caracteres especiales, y los usuarios a menudo eligen símbolos comunes que son fáciles de escribir. Comprender qué símbolos incluir puede hacer que tus ataques de fuerza bruta sean más eficientes.

Generemos contraseñas con conjuntos de caracteres personalizados que incluyan símbolos específicos:

hydra -l testuser -vV -x '3:4:a-z0-9!@#' 127.0.0.1 ftp -s 2121

Esto genera contraseñas usando:

  • a-z: letras minúsculas (a-z)
  • 0-9: dígitos (0-9)
  • !@#: símbolos específicos

Ejemplos: "abc!", "a1@", "te#", "12!", etc.

Probemos un conjunto diferente de símbolos comunes:

hydra -l testuser -vV -x '3:4:a-z$%&' 127.0.0.1 ftp -s 2121

Esto usa letras minúsculas y los símbolos $, %, &.

Para contraseñas que podrían incluir símbolos más complejos:

hydra -l testuser -vV -x '3:4:a-zA-Z0-9!@#$%^&*' 127.0.0.1 ftp -s 2121

Esto crea un conjunto de caracteres completo con:

  • Letras minúsculas y mayúsculas
  • Dígitos
  • Símbolos comunes: !@#$%^&*

Símbolos de Contraseña Más Comunes:

Basado en el análisis de contraseñas, estos símbolos se utilizan con mayor frecuencia:

  1. ! - Signo de exclamación
  2. @ - Arroba
  3. # - Numeral/almohadilla
  4. $ - Signo de dólar
  5. % - Porcentaje
  6. ^ - Circumflejo
  7. & - Ampersand
  8. * - Asterisco

Selección Estratégica de Símbolos:

Al crear conjuntos de caracteres personalizados, considera:

  • Accesibilidad del teclado (los símbolos en la fila numérica son comunes)
  • Requisitos de la política de contraseñas
  • Preferencias culturales (algunos símbolos son más comunes en ciertas regiones)
  • Limitaciones del sistema (algunos sistemas no permiten ciertos símbolos)

Conjuntos de Símbolos Dirigidos:

Para escenarios específicos, podrías usar conjuntos de símbolos dirigidos:

## Signos de puntuación comunes
hydra -l testuser -vV -x '3:4:a-z0-9.,;:' 127.0.0.1 ftp -s 2121

## Símbolos de corchetes
hydra -l testuser -vV -x '3:4:a-z0-9()[]{}' 127.0.0.1 ftp -s 2121

## Símbolos matemáticos
hydra -l testuser -vV -x '3:4:a-z0-9+-=/' 127.0.0.1 ftp -s 2121

Este paso demostró cómo crear conjuntos de caracteres personalizados con símbolos específicos, permitiéndote adaptar tus ataques de fuerza bruta en función de patrones de contraseñas conocidos o sospechosos.

Resumen

En este laboratorio, aprendiste a utilizar Hydra para generar contraseñas en ataques de fuerza bruta mediante un enfoque paso a paso completo. Exploraste la opción -x de Hydra en múltiples escenarios específicos, cada uno centrado en técnicas de generación de contraseñas concretas.

Practicaste distintas estrategias de generación de contraseñas, incluyendo:

  • Generación básica de contraseñas: Comprender la sintaxis de la opción -x y los conceptos fundamentales.
  • Escenarios de ataque FTP: Aplicar la generación de contraseñas contra servicios reales.
  • Letras mayúsculas y minúsculas: Combinar letras mayúsculas y minúsculas para patrones de contraseñas comunes.
  • Contraseñas alfanuméricas: Utilizar letras y números, el tipo de contraseña más común en escenarios del mundo real.
  • Contraseñas numéricas: Dirigirse a códigos PIN y contraseñas numéricas simples con alta eficiencia de descifrado.
  • Conjuntos de caracteres personalizados con símbolos: Crear combinaciones de símbolos específicas basadas en patrones de uso comunes.