Ataque de Fuerza Bruta a SSH con Hydra

HydraHydraIntermediate
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, aprenderá cómo realizar ataques de fuerza bruta contra servicios SSH utilizando Hydra, una herramienta popular de descifrado de contraseñas en ciberseguridad. El ejercicio cubre la instalación de Hydra, la configuración del servidor objetivo con credenciales débiles y la ejecución de ataques utilizando listas de palabras (wordlists) preparadas.

Obtendrá experiencia práctica configurando un entorno de prueba SSH y analizando las capacidades de fuerza bruta de Hydra. Este laboratorio demuestra escenarios de ataque del mundo real al tiempo que refuerza los principios de hacking ético en un entorno controlado.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL hydra(("Hydra")) -.-> hydra/HydraGroup(["Hydra"]) hydra/HydraGroup -.-> hydra/installation("Installation and Setup") hydra/HydraGroup -.-> hydra/password_creation("Password List Creation") hydra/HydraGroup -.-> hydra/username_creation("Username List Creation") hydra/HydraGroup -.-> hydra/ssh_attack("SSH Brute Force") hydra/HydraGroup -.-> hydra/output_saving("Output File Saving") hydra/HydraGroup -.-> hydra/verbose_mode("Verbose Mode Usage") hydra/HydraGroup -.-> hydra/troubleshooting("Basic Troubleshooting") subgraph Lab Skills hydra/installation -.-> lab-549926{{"Ataque de Fuerza Bruta a SSH con Hydra"}} hydra/password_creation -.-> lab-549926{{"Ataque de Fuerza Bruta a SSH con Hydra"}} hydra/username_creation -.-> lab-549926{{"Ataque de Fuerza Bruta a SSH con Hydra"}} hydra/ssh_attack -.-> lab-549926{{"Ataque de Fuerza Bruta a SSH con Hydra"}} hydra/output_saving -.-> lab-549926{{"Ataque de Fuerza Bruta a SSH con Hydra"}} hydra/verbose_mode -.-> lab-549926{{"Ataque de Fuerza Bruta a SSH con Hydra"}} hydra/troubleshooting -.-> lab-549926{{"Ataque de Fuerza Bruta a SSH con Hydra"}} end

Instalar Hydra

En este paso, instalaremos Hydra, una poderosa herramienta de descifrado de contraseñas utilizada para ataques de fuerza bruta contra varios servicios de red. Hydra es particularmente útil para las pruebas de penetración (penetration testing), ya que puede probar sistemáticamente diferentes combinaciones de nombre de usuario y contraseña para obtener acceso a sistemas seguros. Soporta múltiples protocolos, incluyendo SSH (que usaremos en este laboratorio), FTP, HTTP y más.

  1. Primero, abra la terminal en su entorno de VM LabEx. La terminal es su interfaz principal para ejecutar comandos en Linux. Asegúrese de estar en el directorio de trabajo predeterminado donde realizaremos todo nuestro trabajo de laboratorio:

    cd ~/project
  2. Antes de instalar cualquier software nuevo, es una buena práctica actualizar su lista de paquetes. Esto asegura que obtendrá la última versión disponible de Hydra y todas sus dependencias:

    sudo apt update
  3. Ahora instalaremos Hydra utilizando el administrador de paquetes apt, que gestiona la instalación de software en sistemas basados en Debian como Ubuntu. El indicador -y confirma automáticamente la instalación:

    sudo apt install -y hydra
  4. Después de la instalación, verifiquemos que Hydra esté instalado correctamente comprobando su versión. El comando head -n 1 muestra solo la primera línea de salida, que contiene la información de la versión:

    hydra -h | head -n 1
    Output showing Hydra version

    Debería ver una salida similar a:

    Hydra v9.2 (c) 2022 by van Hauser/THC & David Maciejak - Please do not use in military or secret service organizations, or for illegal purposes.
  5. Hydra también ofrece una versión de interfaz gráfica para aquellos que prefieren las herramientas GUI (Graphical User Interface). Si bien utilizaremos la versión de línea de comandos en este laboratorio, opcionalmente puede instalar la versión GUI de GTK+ con:

    sudo apt install -y hydra-gtk
    Output showing Hydra version

Configurar un Servidor SSH Objetivo

En este paso, configuraremos un servidor SSH local que servirá como nuestro objetivo para el descifrado de contraseñas en los pasos siguientes. Esto nos permite practicar técnicas de pruebas de penetración (penetration testing) en un entorno controlado. SSH (Secure Shell) es un protocolo utilizado para el inicio de sesión remoto seguro entre computadoras, y configuraremos una versión vulnerable con fines de aprendizaje.

  1. Primero, asegúrese de estar en el directorio de trabajo predeterminado. Esto es importante porque queremos que todos nuestros archivos de laboratorio estén organizados en un solo lugar:

    cd ~/project
  2. Instale el paquete del servidor OpenSSH. Este software convertirá su máquina en un servidor SSH que puede aceptar conexiones remotas:

    sudo apt install -y openssh-server
  3. Cree una cuenta de usuario de prueba dedicada con una contraseña débil (solo con fines de demostración). En escenarios del mundo real, las contraseñas débiles como esta son exactamente lo que buscan los atacantes:

    sudo useradd -m testuser
    echo "testuser:password123" | sudo chpasswd
  4. Configure SSH para permitir la autenticación por contraseña (temporalmente para este laboratorio). De forma predeterminada, muchos sistemas deshabilitan la autenticación por contraseña por razones de seguridad, pero la habilitaremos aquí para demostrar cómo funcionan los ataques de fuerza bruta:

    sudo sed -i 's/PasswordAuthentication no/PasswordAuthentication yes/' /etc/ssh/sshd_config
  5. Reinicie el servicio SSH para aplicar los cambios. Los servicios a menudo necesitan ser reiniciados después de que los cambios de configuración surtan efecto:

    sudo service ssh restart
  6. Verifique que el servidor SSH se esté ejecutando. Este comando comprueba si nuestro servidor SSH está correctamente activo y escuchando conexiones:

    sudo service ssh status

    Debería ver una salida que indica que el servicio está activo (en ejecución). Si no, puede haber habido un error en los pasos anteriores que necesita solución de problemas.

  7. Pruebe la conexión SSH localmente. Esta verificación final confirma que todo está funcionando antes de que procedamos a la fase de ataque:

    ssh testuser@localhost -o StrictHostKeyChecking=no

    Cuando se le solicite, ingrese la contraseña password123. Después de iniciar sesión correctamente, escriba exit para volver a su sesión principal. La opción -o StrictHostKeyChecking=no evita que SSH le pida que verifique la huella digital (fingerprint) del servidor, lo cual es aceptable para este entorno de laboratorio.

    Local SSH connection test result

Preparar una Lista de Nombres de Usuario y Contraseñas

En este paso, crearemos archivos de texto que contengan posibles nombres de usuario y contraseñas que Hydra utilizará para intentar la autenticación SSH. Estos archivos son esenciales para los ataques de fuerza bruta basados en diccionario (dictionary-based brute-force attacks). Un ataque de diccionario funciona probando sistemáticamente todas las combinaciones posibles de nombres de usuario y contraseñas de listas predefinidas, por lo que preparar buenas listas es crucial.

  1. Primero, asegúrese de estar en el directorio de trabajo predeterminado. Esto ayuda a mantener sus archivos de proyecto organizados y facilita la referencia a ellos más adelante:

    cd ~/project
  2. Cree un archivo de lista de nombres de usuario utilizando el editor de texto nano. Los nombres de usuario comunes a menudo se prueban primero en los ataques de fuerza bruta porque muchos sistemas usan nombres de usuario predeterminados o predecibles:

    nano usernames.txt

    Agregue estos nombres de usuario comunes (presione Ctrl+O para guardar, luego Ctrl+X para salir):

    admin
    root
    testuser
    user
    guest
  3. Cree un archivo de lista de contraseñas. Las contraseñas débiles como estas se utilizan con frecuencia y a menudo son los primeros objetivos en las pruebas de seguridad:

    nano passwords.txt

    Agregue estas contraseñas comunes:

    password
    password123
    123456
    qwerty
    letmein
  4. Verifique que los archivos se hayan creado correctamente mostrando su contenido. Este paso de confirmación asegura que no haya errores tipográficos o problemas de formato en sus listas:

    cat usernames.txt
    cat passwords.txt

    Debería ver las listas que creó mostradas en la terminal.

  5. (Opcional) Genere variaciones de contraseñas adicionales utilizando crunch. Esta herramienta ayuda a crear listas de contraseñas más completas generando automáticamente combinaciones basadas en patrones especificados:

    sudo apt install -y crunch
    crunch 4 6 0123456789 -o num_passwords.txt

    Esto crea contraseñas numéricas entre 4 y 6 caracteres de longitud. El comando especifica la longitud mínima (4), la longitud máxima (6) y el conjunto de caracteres (dígitos 0-9).

Ejecutar Hydra Contra SSH

En este paso, utilizaremos Hydra para realizar un ataque de fuerza bruta contra nuestro servidor SSH local. La fuerza bruta (brute-forcing) es un método para probar muchas combinaciones de nombre de usuario/contraseña hasta encontrar la correcta. Utilizaremos las listas de palabras (wordlists) que preparamos anteriormente para automatizar este proceso.

  1. Primero, navegue al directorio del proyecto que contiene sus listas de palabras. Esto asegura que Hydra pueda encontrar los archivos que creamos:

    cd ~/project
  2. Ahora ejecutaremos Hydra con parámetros específicos. La estructura del comando le dice a Hydra qué atacar y cómo. Vamos a desglosarlo:

    hydra -L usernames.txt -P passwords.txt ssh://localhost -t 4 -vV

    Explicación de los parámetros:

    • -L usernames.txt: Apunta a nuestra lista de posibles nombres de usuario
    • -P passwords.txt: Especifica nuestro archivo de diccionario de contraseñas
    • ssh://localhost: Se dirige al servicio SSH en esta máquina
    • -t 4: Controla la velocidad limitando a 4 intentos simultáneos
    • -vV: Muestra el progreso detallado en la terminal
  3. A medida que Hydra se ejecuta, mostrará cada intento en tiempo real. Cuando encuentre credenciales válidas, aparecerán claramente en la salida como esta:

    [22][ssh] host: localhost   login: testuser   password: password123
    Hydra run results display
  4. (Opcional) Para mantener un registro permanente de los resultados, podemos guardarlos en un archivo. Esto es útil para la documentación o para un análisis posterior:

    hydra -L usernames.txt -P passwords.txt ssh://localhost -t 4 -o results.txt
  5. Después de que se complete el escaneo, puede ver los resultados guardados con:

    cat results.txt

Resumen

En este laboratorio, ha aprendido cómo llevar a cabo un ataque de fuerza bruta (brute force attack) en SSH utilizando Hydra, una poderosa herramienta de descifrado de contraseñas (password-cracking tool). El ejercicio cubrió la instalación de Hydra, la configuración de un servidor SSH para pruebas y la creación de listas de nombres de usuario/contraseñas específicas.

Practicó la ejecución de ataques basados en diccionario (dictionary-based attacks) y el análisis de resultados, demostrando cómo las credenciales débiles pueden ser explotadas. Esta experiencia práctica destaca la necesidad crítica de contraseñas seguras y métodos de autenticación seguros en la ciberseguridad (cybersecurity).