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.
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
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
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
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
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.
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
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.
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
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
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:
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
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
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.
Pruebe la conexión SSH localmente. Esta verificación final confirma que todo está funcionando antes de que procedamos a la fase de ataque:
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.
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.
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
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
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
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.
(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:
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.
Primero, navegue al directorio del proyecto que contiene sus listas de palabras. Esto asegura que Hydra pueda encontrar los archivos que creamos:
cd ~/project
Ahora ejecutaremos Hydra con parámetros específicos. La estructura del comando le dice a Hydra qué atacar y cómo. Vamos a desglosarlo:
-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
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:
(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:
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).