In this lab, you will learn how to use additional password checks in Hydra, a powerful network login cracker. Specifically, you will set up a Telnet service on the LabEx VM and then use Hydra with the -e nsr option to perform password cracking attempts. This option allows Hydra to automatically try null passwords, the username itself as the password, and the reversed username as the password. This is a common technique used in penetration testing to quickly identify weak or default credentials.
The lab will guide you through installing and configuring the Telnet service on the LabEx VM. You will then use Hydra with the -e nsr flag to demonstrate how these additional checks can be used to find simple passwords. Finally, you will compare the results with using only the -e ns option to understand the impact of including the reversed username check.
Configurar el Servicio Telnet
En este paso, configuraremos el servicio Telnet en la máquina virtual LabEx. Telnet es un protocolo de red que proporciona una interfaz de línea de comandos a un servidor remoto. Si bien Telnet generalmente se considera inseguro para entornos de producción porque transmite datos en texto plano, es adecuado para demostrar técnicas de craqueo de contraseñas en un entorno de laboratorio controlado.
Primero, necesitamos crear una cuenta de usuario de prueba que tenga una contraseña nula:
sudo useradd -m testuser
sudo passwd -d testuser
El comando passwd -d elimina la contraseña del usuario, creando efectivamente una contraseña nula.
Necesitamos editar el archivo de configuración de Telnet, que se encuentra en /etc/inetd.conf. Usa el editor nano para abrir este archivo:
sudo nano /etc/inetd.conf
Dentro del editor nano, busca la línea que comienza con telnet. Debería verse similar a esto:
Ahora, agrega la siguiente línea debajo de la línea comentada. Esta nueva línea configura Telnet para usar la opción -i, que deshabilita la autenticación.
Si la línea no contiene nullok, necesitas agregarlo. Edita el archivo:
sudo nano /etc/pam.d/common-auth
Busca la línea que contiene pam_unix.so y agrega nullok al final si no está presente. Guarda y cierra el archivo si hiciste algún cambio.
Finalmente, necesitamos reiniciar el servicio inetd para que los cambios surtan efecto. Dado que estamos en un entorno de contenedor Docker, usaremos el script /etc/init.d para reiniciar el servicio:
sudo /etc/init.d/openbsd-inetd restart
Deberías ver una salida que indique que el servicio se está reiniciando:
* Restarting internet superserver inetd
El servicio Telnet ahora está configurado y configurado para permitir inicios de sesión sin contraseña para este laboratorio.
Ejecutar Hydra con Comprobaciones -e nsr
En este paso, usaremos Hydra para realizar un ataque de fuerza bruta contra el servicio Telnet. Específicamente, usaremos la opción -e nsr para indicar a Hydra que pruebe contraseñas nulas, el nombre de usuario en sí y el nombre de usuario invertido como posibles contraseñas.
Abre tu terminal en el directorio ~/project y ejecuta el siguiente comando:
hydra: Este es el comando para ejecutar la herramienta Hydra.
-l testuser: Especifica el nombre de usuario a usar para el ataque. Estamos atacando al usuario de prueba que creamos, que tiene una contraseña nula.
-P ~/project/unix_passwords.txt: Especifica un archivo de lista de contraseñas para usar además de las comprobaciones especificadas por -e. Este archivo contiene una lista de contraseñas comunes de Unix que descargamos en el paso de configuración.
-vV: Esta opción habilita la salida detallada, mostrando cada intento de inicio de sesión y su resultado.
-e nsr: Esta es la opción clave para este paso. Le indica a Hydra que realice comprobaciones adicionales:
n: Probar una contraseña nula (una cadena vacía).
s: Probar el nombre de usuario (testuser) como contraseña.
r: Probar el nombre de usuario invertido (resutest) como contraseña.
telnet://localhost: Especifica el servicio y la dirección de destino. telnet indica el protocolo Telnet, y localhost se refiere a la máquina local (la propia máquina virtual LabEx).
Ejecuta el comando. Hydra comenzará a intentar iniciar sesión en el servicio Telnet en el puerto 23 (el puerto Telnet predeterminado) utilizando el nombre de usuario especificado y las contraseñas de la lista, así como la contraseña nula, el nombre de usuario y el nombre de usuario invertido.
Verás una salida similar a esta mientras Hydra realiza sus intentos:
Hydra vX.Y (c) 2020 by van Hauser/THC - use allowed only for legal purposes.
Hydra is starting...
[DATA] 1 task, 1 server, XXXX service(s)
[DATA] attacking service telnet on port 23
[DATA] attacking target localhost
[ATTEMPT] target localhost - login: 'testuser' - pass: ''
[23][telnet] host: localhost login: testuser password:
[ATTEMPT] target localhost - login: 'testuser' - pass: 'testuser'
[ATTEMPT] target localhost - login: 'testuser' - pass: 'resutest'
...
Debido a que configuramos al usuario de prueba para que tenga una contraseña nula, Hydra debería encontrar rápidamente un inicio de sesión exitoso utilizando la contraseña nula (el primer intento con una contraseña vacía).
Revisar la Salida para Comprobaciones Exitosa
En este paso, examinaremos la salida del comando Hydra que acabas de ejecutar para identificar los intentos de inicio de sesión exitosos.
Desplázate hacia atrás en la salida de tu terminal. Busca las líneas que indiquen un inicio de sesión exitoso. Estas líneas suelen estar marcadas con el número de puerto y el servicio, seguidas del host, el nombre de usuario y la contraseña.
Dado que configuramos el servicio Telnet para permitir inicios de sesión sin contraseña, deberías ver una línea similar a esta en la salida:
Esta línea confirma que Hydra inició sesión correctamente en el servicio Telnet en localhost utilizando el nombre de usuario testuser y una contraseña nula (indicada por el espacio vacío después de password:).
También podrías ver otros inicios de sesión exitosos si alguna de las contraseñas en el archivo ~/project/unix_passwords.txt coincide con la contraseña real del usuario testuser (aunque en esta configuración de laboratorio, la contraseña nula es la comprobación exitosa prevista).
La opción -vV proporciona una salida detallada para cada intento, lo que es útil para comprender cómo progresa Hydra y qué contraseñas está probando. La línea de inicio de sesión exitoso muestra claramente las credenciales que funcionaron.
Este paso demuestra cómo la opción -e nsr ayuda a identificar rápidamente escenarios comunes de contraseñas débiles, como las contraseñas nulas, que a menudo se pasan por alto en las listas de contraseñas estándar.
Comparar con Comprobaciones -e ns
En este paso, ejecutaremos Hydra de nuevo, pero esta vez usaremos la opción -e ns en lugar de -e nsr. Esto le indicará a Hydra que pruebe las contraseñas nulas y el nombre de usuario como contraseña, pero no probará el nombre de usuario invertido. Al comparar la salida de este comando con la anterior, puedes ver la diferencia en las comprobaciones realizadas.
Abre tu terminal en el directorio ~/project y ejecuta el siguiente comando:
Este comando es casi idéntico al anterior, con la única diferencia de la opción -e ns.
-e ns: Esta opción le indica a Hydra que realice las siguientes comprobaciones adicionales:
n: Probar una contraseña nula.
s: Probar el nombre de usuario (testuser) como contraseña.
Ejecuta el comando. Hydra intentará iniciar sesión en el servicio Telnet, probando las contraseñas de la lista, la contraseña nula y el nombre de usuario como contraseña.
Observa la salida. Verás intentos para la contraseña nula y el nombre de usuario como contraseña, similar a la ejecución anterior. Sin embargo, no verás un intento para el nombre de usuario invertido (resutest).
Hydra vX.Y (c) 2020 by van Hauser/THC - use allowed only for legal purposes.
Hydra is starting...
[DATA] 1 task, 1 server, XXXX service(s)
[DATA] attacking service telnet on port 23
[DATA] attacking target localhost
[ATTEMPT] target localhost - login: 'testuser' - pass: ''
[23][telnet] host: localhost login: testuser password:
[ATTEMPT] target localhost - login: 'testuser' - pass: 'testuser'
...
Al comparar la salida de este comando con la salida del Paso 2, puedes ver claramente que la opción -e nsr incluye la comprobación del nombre de usuario invertido, mientras que la opción -e ns no lo hace. Esto destaca cómo las diferentes opciones en Hydra te permiten personalizar el proceso de descifrado de contraseñas e incluir tipos específicos de comprobaciones que pueden ser relevantes en ciertos escenarios.
Resumen
En este laboratorio, aprendiste a utilizar comprobaciones de contraseñas adicionales en Hydra configurando un servicio Telnet en la máquina virtual LabEx y utilizando la opción -e nsr. Instalaste el paquete telnetd, configuraste el servicio Telnet para permitir contraseñas nulas con fines demostrativos creando un usuario de prueba con una contraseña nula, modificando el archivo /etc/inetd.conf y configurando PAM para permitir contraseñas nulas.
Luego, utilizaste Hydra con la opción -e nsr para realizar intentos de descifrado de contraseñas, que incluyeron probar contraseñas nulas, el nombre de usuario como contraseña y el nombre de usuario invertido como contraseña. Observaste la salida e identificaste el inicio de sesión exitoso utilizando la contraseña nula. Finalmente, comparaste los resultados con el uso de la opción -e ns para comprender la diferencia en las comprobaciones realizadas. Este laboratorio demostró cómo las comprobaciones de contraseñas adicionales de Hydra se pueden utilizar para identificar rápidamente credenciales débiles comunes.