Hydra y SSH: prueba de diccionario contra tu propia máquina virtual

En esta práctica Hydra y el servidor SSH están en la misma máquina virtual. La dirección 127.0.0.1 significa «este mismo equipo»: los intentos no se dirigen a otra máquina. Utilizaremos un servidor de prueba que escucha únicamente en esa dirección, una cuenta local y cinco contraseñas ficticias.

El objetivo es entender un ataque de diccionario: Hydra automatiza los intentos con una lista ya preparada. No genera todas las combinaciones posibles. Esta entrada explica el laboratorio; no presenta resultados de una prueba ejecutada durante la preparación del artículo.

1. Preparar una máquina de laboratorio

Utiliza una VM desechable de Kali o Debian/Ubuntu, con permisos de administración, y guarda una instantánea. Instala las herramientas desde los repositorios antes de desconectar o aislar su red:

sudo apt update
sudo apt install hydra openssh-server
hydra -h

El tutorial usa Hydra directamente, no una herramienta externa llamada AutoHydra. No hace falta descargar automatizadores de terceros. La ayuda debe mostrar que tu instalación dispone del módulo SSH.

2. Crear una cuenta solo para la prueba

Crea una cuenta nueva llamada alumno_lab. Si ya existe una cuenta con ese nombre, detente y usa una VM limpia para no cambiar una cuenta anterior:

sudo adduser alumno_lab

Para que la demostración sea reproducible, introduce LabSSH2026! como contraseña de esta cuenta de laboratorio. No se verá mientras la escribes. No uses una contraseña real ni una cuenta con documentos personales.

3. Abrir un SSH separado que solo escuche en localhost

No modificaremos el archivo principal de SSH. Prepararemos una configuración temporal con el puerto 2222, para distinguir el servidor de laboratorio de otros servicios que pueda tener la VM. Crea una carpeta nueva; si ya existe, revisa la práctica anterior antes de continuar:

mkdir -m 700 /tmp/whiteforums-ssh
ssh-keygen -q -t ed25519 -N "" -f /tmp/whiteforums-ssh/host_key
sudo install -d -m 0755 /run/sshd
nano /tmp/whiteforums-ssh/sshd_config

Pega esta configuración y guarda el archivo. La clave host identifica al servidor; no es la contraseña de alumno_lab.

Port 2222
ListenAddress 127.0.0.1
HostKey /tmp/whiteforums-ssh/host_key
PidFile /tmp/whiteforums-ssh/sshd.pid
PasswordAuthentication yes
KbdInteractiveAuthentication no
PubkeyAuthentication no
PermitRootLogin no
AllowUsers alumno_lab
UsePAM yes

La contraseña se habilita únicamente en este servidor temporal. Solo se admite la cuenta de la prueba y no se permite entrar como root. Valida el archivo e inicia el servidor en primer plano:

sudo /usr/sbin/sshd -t -f /tmp/whiteforums-ssh/sshd_config
sudo /usr/sbin/sshd -D -e -f /tmp/whiteforums-ssh/sshd_config

Deja esa terminal abierta. En otra terminal comprueba la escucha:

ss -ltn | grep 2222

Debe aparecer 127.0.0.1:2222. Si aparece una dirección distinta, no continúes: revisa el comando y la configuración. Esta práctica no requiere abrir puertos del router ni cambiar el cortafuegos para permitir conexiones externas.

4. Comprobar un acceso manual

Antes de automatizar nada, comprueba que el servicio y la cuenta funcionan:

ssh -p 2222 -o PreferredAuthentications=password -o PubkeyAuthentication=no alumno_lab@127.0.0.1

En la primera conexión verifica la huella del servidor de tu VM. Puedes consultarla desde la otra terminal con ssh-keygen -lf /tmp/whiteforums-ssh/host_key.pub. Entra con la contraseña de laboratorio y escribe exit para salir. Si el acceso manual falla, corrige ese problema antes de probar Hydra.

5. Crear una lista pequeña de candidatos

En tu carpeta de trabajo crea un archivo llamado candidatos-lab.txt, con una contraseña por línea:

nano candidatos-lab.txt
PruebaIncorrecta1!
PruebaIncorrecta2!
PruebaIncorrecta3!
LabSSH2026!
PruebaIncorrecta5!

La contraseña correcta está incluida a propósito. Eso permite observar el resultado sin utilizar listas grandes ni datos de otras personas. Puedes comprobar el archivo con wc -l candidatos-lab.txt; debe contener cinco líneas.

6. Automatizar los intentos con Hydra

Con el servidor temporal abierto, ejecuta desde otra terminal de la misma VM:

hydra -l alumno_lab -P candidatos-lab.txt -t 1 -W 2 -f -o resultado-lab.txt ssh://127.0.0.1:2222

Las opciones significan: -l fija un usuario; -P lee los candidatos del archivo; -t 1 limita la prueba a una tarea; -W 2 deja espera entre conexiones de esa tarea; -f detiene la búsqueda al encontrar una combinación válida y -o guarda resultados. El destino sigue siendo el SSH local del puerto 2222.

La lista limita la prueba a cinco candidatos para una cuenta. Si aparece un bloqueo o un error, para y anótalo: no añadas reintentos ilimitados ni intentes eludir las protecciones. La sintaxis y las opciones pueden consultarse en la documentación de Hydra en Kali.

7. Interpretar lo que ocurre

Si encuentra la contraseña, Hydra informa de una combinación válida. Confírmala mediante un único inicio de sesión manual y sal de nuevo. Si no encuentra ninguna, no significa que SSH sea invulnerable: puede faltar el candidato correcto, fallar la configuración o haberse aplicado una protección.

En la terminal del servidor se pueden observar los intentos porque se inició con -e. Guarda capturas del comando, la escucha local y los mensajes relevantes. Oculta la contraseña en las capturas que vayas a entregar. Aquí no se incluyen capturas de resultados porque la prueba todavía no se ha realizado.

8. Cerrar el laboratorio y explicar la defensa

En la terminal donde iniciaste el servidor, pulsa Ctrl+C. Comprueba con ss -ltn que ya no está el servidor de laboratorio escuchando en 2222. Vuelve a la instantánea inicial de la VM cuando hayas terminado; el archivo de resultados contiene una contraseña ficticia y no debe confundirse con una evidencia real de otro equipo.

En un servidor real, una lista corta no debería dar acceso a una cuenta con una contraseña robusta. Las claves SSH, la restricción de usuarios y redes, el seguimiento de registros y las políticas de bloqueo o límites ayudan a reducir este riesgo. El laboratorio habilita contraseña para observar el mecanismo; no es una configuración recomendada para un servidor expuesto.

Qué debes poder explicar

Hydra no rompe el cifrado de SSH. Automatiza pruebas de autenticación y depende de que la contraseña acertada esté entre los candidatos. En este montaje no hay una víctima externa: cliente y servidor comparten VM y la escucha está limitada a localhost. Un ataque de diccionario es una forma de probar candidatos; una fuerza bruta exhaustiva intentaría todas las combinaciones de un espacio definido.

Fuentes y estado de la práctica

Referencias: Hydra en Kali, proyecto THC Hydra y OpenSSH en Ubuntu. La portada es un esquema propio. El tutorial queda pendiente de revisión y de una ejecución documentada en la VM del alumno.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Scroll al inicio