Iterar contraseñas en ataques de Hydra

HydraHydraBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este laboratorio, exploraremos cómo Hydra itera a través de nombres de usuario y contraseñas durante un ataque SSH. Crearemos listas de nombres de usuario y contraseñas, y luego ejecutaremos un ataque SSH predeterminado para observar el comportamiento predeterminado de Hydra.

El laboratorio implica preparar los archivos usernames.txt y passwords.txt que contengan listas de nombres de usuario y contraseñas, respectivamente. Luego, ejecutaremos un ataque SSH básico de Hydra utilizando estas listas para demostrar cómo Hydra intenta diferentes combinaciones. Finalmente, exploraremos el impacto de la opción -u en el orden en el que Hydra intenta las combinaciones de nombres de usuario y contraseñas.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL hydra(("Hydra")) -.-> hydra/HydraGroup(["Hydra"]) hydra/HydraGroup -.-> hydra/password_creation("Password List Creation") hydra/HydraGroup -.-> hydra/username_creation("Username List Creation") hydra/HydraGroup -.-> hydra/single_username("Single Username Attack") hydra/HydraGroup -.-> hydra/single_password("Single Password Attack") hydra/HydraGroup -.-> hydra/target_ip("Target IP Specification") hydra/HydraGroup -.-> hydra/target_service("Target Service Selection") hydra/HydraGroup -.-> hydra/ssh_attack("SSH Brute Force") subgraph Lab Skills hydra/password_creation -.-> lab-550771{{"Iterar contraseñas en ataques de Hydra"}} hydra/username_creation -.-> lab-550771{{"Iterar contraseñas en ataques de Hydra"}} hydra/single_username -.-> lab-550771{{"Iterar contraseñas en ataques de Hydra"}} hydra/single_password -.-> lab-550771{{"Iterar contraseñas en ataques de Hydra"}} hydra/target_ip -.-> lab-550771{{"Iterar contraseñas en ataques de Hydra"}} hydra/target_service -.-> lab-550771{{"Iterar contraseñas en ataques de Hydra"}} hydra/ssh_attack -.-> lab-550771{{"Iterar contraseñas en ataques de Hydra"}} end

Preparar listas de nombres de usuario y contraseñas

En este paso, crearemos dos archivos esenciales: una lista de nombres de usuario y una lista de contraseñas. Estas listas serán utilizadas por Hydra para intentar iniciar sesión por SSH. Crear estas listas nos permite probar sistemáticamente diversas combinaciones de nombres de usuario y contraseñas en nuestro objetivo.

Primero, creemos la lista de nombres de usuario. Utilizaremos el editor de texto nano para crear un archivo llamado usernames.txt en el directorio ~/project.

nano ~/project/usernames.txt

Ahora, agreguemos los siguientes nombres de usuario al archivo. Estos son solo ejemplos; puedes personalizarlos según sea necesario.

root
admin
test
user
ubuntu

Presiona Ctrl+O para guardar el archivo, luego presiona Enter para confirmar el nombre del archivo y, finalmente, presiona Ctrl+X para salir de nano.

A continuación, crearemos la lista de contraseñas. Nuevamente, utilizaremos nano para crear un archivo llamado passwords.txt en el directorio ~/project.

nano ~/project/passwords.txt

Agrega las siguientes contraseñas al archivo. Recuerda, estos son solo ejemplos.

password
123456
qwerty
secret
ubuntu

Presiona Ctrl+O para guardar el archivo, luego presiona Enter para confirmar el nombre del archivo y, finalmente, presiona Ctrl+X para salir de nano.

Para verificar que los archivos se hayan creado correctamente, puedes utilizar el comando cat para mostrar su contenido.

cat ~/project/usernames.txt

Deberías ver la lista de nombres de usuario que ingresaste.

root
admin
test
user
ubuntu

Del mismo modo, verifica la lista de contraseñas:

cat ~/project/passwords.txt

Deberías ver la lista de contraseñas que ingresaste.

password
123456
qwerty
secret
ubuntu

Estos archivos, usernames.txt y passwords.txt, ahora están listos para ser utilizados con Hydra en los pasos siguientes.

Ejecutar un ataque SSH predeterminado

En este paso, ejecutaremos un ataque SSH básico utilizando Hydra con las listas de nombres de usuario y contraseñas que creamos en el paso anterior. Esto demostrará el comportamiento predeterminado de Hydra al iterar a través de nombres de usuario y contraseñas.

Antes de ejecutar el ataque, es importante entender la sintaxis básica del comando Hydra:

hydra [options] <target> <service> [additional options]
  • hydra: El comando para invocar la herramienta Hydra.
  • [options]: Varias opciones para personalizar el ataque, como especificar listas de nombres de usuario y contraseñas.
  • <target>: La dirección IP o el nombre de host del servidor SSH objetivo. Para este laboratorio, usaremos 127.0.0.1 (localhost) como objetivo. Nota: En un escenario del mundo real, reemplazarías esto con la dirección IP real del servidor que estás probando. Atacar sistemas sin autorización es ilegal.
  • <service>: El servicio a atacar (por ejemplo, ssh, ftp, http). En nuestro caso, es ssh.
  • [additional options]: Opciones específicas del servicio.

Ahora, ejecutemos el ataque SSH predeterminado. Usaremos la opción -L para especificar la lista de nombres de usuario y la opción -P para especificar la lista de contraseñas.

hydra -L ~/project/usernames.txt -P ~/project/passwords.txt 127.0.0.1 ssh

Este comando le dice a Hydra que:

  • -L ~/project/usernames.txt: Utilice el archivo usernames.txt en el directorio ~/project como lista de nombres de usuario.
  • -P ~/project/passwords.txt: Utilice el archivo passwords.txt en el directorio ~/project como lista de contraseñas.
  • 127.0.0.1: Diríjase al servicio SSH que se ejecuta en localhost.
  • ssh: Especifique que estamos atacando el servicio SSH.

Ejecute el comando. Hydra intentará ahora iniciar sesión en el servicio SSH en 127.0.0.1 utilizando cada nombre de usuario en usernames.txt y cada contraseña en passwords.txt. Por defecto, Hydra itera primero a través de los nombres de usuario, probando cada contraseña para un solo nombre de usuario antes de pasar al siguiente nombre de usuario.

La salida mostrará los intentos que se están realizando. Probablemente mostrará muchos mensajes de "login failed" (inicio de sesión fallido). Si se encuentra un inicio de sesión exitoso, mostrará la combinación de nombre de usuario y contraseña. Dado que estamos utilizando contraseñas débiles y apuntando a localhost, es posible que un inicio de sesión tenga éxito.

Importante: Este comando puede tardar algún tiempo en completarse, dependiendo del tamaño de sus listas de nombres de usuario y contraseñas. Además, tenga en cuenta que los intentos repetidos de inicio de sesión fallidos pueden activar medidas de seguridad en el sistema objetivo, como bloqueos de cuentas o bloqueos de direcciones IP.

Ejecutar con -u para probar primero las contraseñas en bucle

En este paso, utilizaremos la opción -u con Hydra para cambiar el orden en el que intenta iniciar sesión. Por defecto, Hydra itera primero a través de los nombres de usuario, probando todas las contraseñas para cada nombre de usuario antes de pasar al siguiente. La opción -u invierte este comportamiento, lo que hace que Hydra itere primero a través de las contraseñas, probando cada contraseña para todos los nombres de usuario antes de pasar a la siguiente contraseña.

Esto puede ser útil en situaciones en las que sospechas que se está utilizando una contraseña común en múltiples cuentas.

Para utilizar la opción -u, simplemente la agregamos a nuestro comando de Hydra.

hydra -u -L ~/project/usernames.txt -P ~/project/passwords.txt 127.0.0.1 ssh

Este comando le dice a Hydra que:

  • -u: Probar primero las contraseñas en bucle.
  • -L ~/project/usernames.txt: Utilizar el archivo usernames.txt en el directorio ~/project como lista de nombres de usuario.
  • -P ~/project/passwords.txt: Utilizar el archivo passwords.txt en el directorio ~/project como lista de contraseñas.
  • 127.0.0.1: Dirigirse al servicio SSH que se ejecuta en localhost.
  • ssh: Especificar que estamos atacando el servicio SSH.

Ejecuta el comando. Hydra intentará ahora iniciar sesión en el servicio SSH en 127.0.0.1. Esta vez, probará la primera contraseña en passwords.txt con todos los nombres de usuario en usernames.txt antes de pasar a la siguiente contraseña.

Observa la salida. Deberías notar que el orden de los intentos es diferente al del paso anterior. Ahora, Hydra estará probando la misma contraseña con múltiples nombres de usuario en secuencia.

Como antes, la salida mostrará los intentos que se están realizando. Probablemente mostrará muchos mensajes de "login failed" (inicio de sesión fallido). Si se encuentra un inicio de sesión exitoso, mostrará la combinación de nombre de usuario y contraseña.

Al comparar la salida de este comando con la salida del comando del paso anterior, puedes ver la diferencia en el orden de los intentos de inicio de sesión. Esto puede ser útil para entender cómo funciona Hydra y para elegir la estrategia de ataque más efectiva para una situación determinada.

Comparar el orden de los intentos

En este paso, analizaremos y compararemos el orden de los intentos de inicio de sesión realizados por Hydra en los dos pasos anteriores. Esto nos ayudará a entender el impacto de la opción -u en la estrategia de ataque.

Para comparar efectivamente el orden de los intentos, podemos utilizar el comando script para capturar la salida de ambos comandos de Hydra y luego analizar la salida capturada.

Primero, capturaremos la salida del comando de Hydra predeterminado (sin la opción -u) en un archivo llamado default_attack.log en el directorio ~/project.

script -c "hydra -L ~/project/usernames.txt -P ~/project/passwords.txt 127.0.0.1 ssh" ~/project/default_attack.log

Este comando iniciará una nueva sesión de shell utilizando script, ejecutará el comando de Hydra dentro de esa sesión y guardará toda la salida en el archivo de registro especificado. Escribe exit para finalizar la sesión de script después de que Hydra termine.

A continuación, capturaremos la salida del comando de Hydra con la opción -u en un archivo llamado u_attack.log en el directorio ~/project.

script -c "hydra -u -L ~/project/usernames.txt -P ~/project/passwords.txt 127.0.0.1 ssh" ~/project/u_attack.log

De manera similar, este comando capturará la salida del comando de Hydra con la opción -u en el archivo u_attack.log. Escribe exit para finalizar la sesión de script después de que Hydra termine.

Ahora que hemos capturado la salida de ambos comandos, podemos utilizar el comando head para ver las primeras líneas de cada archivo de registro y comparar el orden de los intentos.

head ~/project/default_attack.log

Examina la salida. Deberías ver que se itera a través de los nombres de usuario, probando cada contraseña para un solo nombre de usuario antes de pasar al siguiente nombre de usuario.

A continuación, ve las primeras líneas del archivo u_attack.log:

head ~/project/u_attack.log

Examina esta salida. Deberías ver que se itera a través de las contraseñas, probando cada contraseña para todos los nombres de usuario antes de pasar a la siguiente contraseña.

Al comparar los dos archivos de registro, puedes ver claramente la diferencia en el orden de los intentos de inicio de sesión. La estrategia de ataque predeterminada itera a través de los nombres de usuario, mientras que el ataque con la opción -u itera a través de las contraseñas.

Esta comparación destaca la importancia de entender las diferentes opciones disponibles en Hydra y cómo se pueden utilizar para adaptar la estrategia de ataque a una situación específica.

Resumen

En este laboratorio, comenzamos preparando los archivos necesarios para un ataque SSH con Hydra. En concreto, creamos los archivos usernames.txt y passwords.txt en el directorio ~/project utilizando el editor de texto nano. Estos archivos contienen listas de posibles nombres de usuario y contraseñas que Hydra utilizará para intentar iniciar sesión por SSH. Luego, se utilizó el comando cat para verificar el contenido de ambos archivos, asegurando que se crearan correctamente y que contuvieran las listas deseadas.

El siguiente paso consistió en ejecutar un ataque SSH predeterminado utilizando Hydra con las listas de nombres de usuario y contraseñas creadas. Esto demostró el comportamiento de iteración predeterminado de Hydra al intentar descifrar los inicios de sesión SSH.