Utilizar comprobaciones adicionales de contraseñas en 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 el uso de comprobaciones adicionales de contraseñas en Hydra, una popular herramienta de cracking de contraseñas. El laboratorio se centra en demostrar cómo configurar un servicio Telnet en la máquina virtual (VM) de LabEx y luego utilizar Hydra con la opción -e nsr para realizar intentos de cracking de contraseñas, aprovechando contraseñas nulas, el nombre de usuario y el nombre de usuario invertido como posibles contraseñas.

El laboratorio implica instalar y configurar el servicio Telnet, modificar el archivo /etc/inetd.conf para deshabilitar la autenticación con fines demostrativos y luego ejecutar Hydra con la bandera -e nsr. Finalmente, revisaremos la salida para observar las comprobaciones exitosas y compararemos los resultados con la opción -e ns, destacando la eficacia de incorporar comprobaciones adicionales de contraseñas en los intentos de cracking.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL hydra(("Hydra")) -.-> hydra/HydraGroup(["Hydra"]) hydra/HydraGroup -.-> hydra/installation("Installation and Setup") hydra/HydraGroup -.-> hydra/single_username("Single Username Attack") hydra/HydraGroup -.-> hydra/single_password("Single Password Attack") hydra/HydraGroup -.-> hydra/verbose_mode("Verbose Mode Usage") hydra/HydraGroup -.-> hydra/success_detection("Login Success Detection") hydra/HydraGroup -.-> hydra/service_options("Service-Specific Options") subgraph Lab Skills hydra/installation -.-> lab-550776{{"Utilizar comprobaciones adicionales de contraseñas en Hydra"}} hydra/single_username -.-> lab-550776{{"Utilizar comprobaciones adicionales de contraseñas en Hydra"}} hydra/single_password -.-> lab-550776{{"Utilizar comprobaciones adicionales de contraseñas en Hydra"}} hydra/verbose_mode -.-> lab-550776{{"Utilizar comprobaciones adicionales de contraseñas en Hydra"}} hydra/success_detection -.-> lab-550776{{"Utilizar comprobaciones adicionales de contraseñas en Hydra"}} hydra/service_options -.-> lab-550776{{"Utilizar comprobaciones adicionales de contraseñas en Hydra"}} end

Configuración del servicio Telnet

En este paso, configuraremos el servicio Telnet en la máquina virtual (VM) de LabEx. Telnet es un protocolo de red utilizado para proporcionar una facilidad de comunicación interactiva bidireccional orientada a texto mediante una conexión de terminal virtual. Si bien Telnet generalmente se considera inseguro debido a la falta de cifrado, es útil para fines de demostración y pruebas en un entorno controlado como nuestra VM de LabEx.

Primero, necesitamos instalar el servidor Telnet. Dado que la VM de LabEx utiliza un contenedor Docker, no podemos usar systemctl para administrar los servicios directamente. En su lugar, usaremos un truco para iniciar el servicio Telnet dentro del contenedor.

  1. Instalar el servidor Telnet:

    Abra su terminal en el directorio ~/project y ejecute el siguiente comando:

    sudo apt update
    sudo apt install -y telnetd

    Este comando actualiza la lista de paquetes e instala el paquete telnetd, que proporciona la funcionalidad del servidor Telnet. Debería ver una salida que indique el proceso de instalación.

    ...
    Setting up openbsd-inetd (0.20180617-1) ...
    ...
    Processing triggers for systemd (247.3-7ubuntu3.9) ...
    Processing triggers for man-db (2.9.1-1) ...
  2. Configurar Telnet para que se ejecute sin autenticación (solo con fines de demostración - NUNCA haga esto en un entorno de producción):

    Edite el archivo /etc/inetd.conf para deshabilitar la autenticación. Use nano para editar el archivo:

    sudo nano /etc/inetd.conf

    Busque la línea que comienza con telnet y coméntela agregando un # al principio de la línea. Luego, agregue una nueva línea debajo que deshabilite la autenticación.

    #telnet  stream  tcp nowait telnetd /usr/sbin/tcpd  /usr/sbin/telnetd
    telnet  stream  tcp nowait telnetd /usr/sbin/in.telnetd -i

    Presione Ctrl+S para guardar los cambios y Ctrl+X para salir de nano.

  3. Reiniciar el servicio inetd:

    Dado que no podemos usar systemctl, usaremos el script /etc/init.d para reiniciar el servicio inetd, que gestiona Telnet.

    sudo /etc/init.d/openbsd-inetd restart

    Debería ver una salida similar a esta:

     * Restarting internet superserver inetd

Ejecutar Hydra con comprobaciones -e nsr

En este paso, usaremos Hydra para realizar un ataque de fuerza bruta contra el servicio Telnet que configuramos en el paso anterior. Utilizaremos la opción -e nsr, que le indica a Hydra que intente contraseñas nulas, el nombre de usuario como contraseña y nombres de usuario invertidos como contraseñas. Esta es una técnica común para identificar rápidamente credenciales débiles o predeterminadas.

  1. Ejecutar Hydra con la opción -e nsr:

    Abra su terminal en el directorio ~/project y ejecute el siguiente comando:

    hydra -l labex -P /usr/share/wordlists/metasploit/unix_passwords.txt -vV -e nsr telnet://localhost

    Desglosemos este comando:

    • hydra: El comando para ejecutar la herramienta Hydra.
    • -l labex: Especifica el nombre de usuario a probar. Estamos usando labex, el usuario predeterminado en la VM de LabEx.
    • -P /usr/share/wordlists/metasploit/unix_passwords.txt: Especifica un archivo de lista de contraseñas. Este archivo contiene una lista de contraseñas comunes.
    • -vV: Habilita el modo detallado, mostrando cada intento de inicio de sesión.
    • -e nsr: Esta es la opción clave para este paso. Le dice a Hydra que intente:
      • n: Contraseña nula (cadena vacía).
      • s: Nombre de usuario como contraseña.
      • r: Nombre de usuario invertido 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.

    Hydra intentará ahora iniciar sesión en el servicio Telnet utilizando el nombre de usuario y la lista de contraseñas especificados, así como la contraseña nula, el nombre de usuario y el nombre de usuario invertido. La salida mostrará cada intento de inicio de sesión y si fue exitoso.

    Ejemplo de salida (puede variar según la lista de contraseñas):

    Hydra v9.1 (c) 2020 by van Hauser/THC - use allowed only for legal purposes.
    
    Hydra is starting...
    
    [DATA] 1 task, 1 server, 1337 service(s)
    [DATA] attacking service telnet on port 23
    [DATA] attacking target localhost
    [ATTEMPT] target localhost - login: 'labex' - pass: ''
    [23][telnet] host: localhost   login: labex   password:
    [ATTEMPT] target localhost - login: 'labex' - pass: 'labex'
    [23][telnet] host: localhost   login: labex   password: labex
    [ATTEMPT] target localhost - login: 'labex' - pass: 'xebal'
    [23][telnet] host: localhost   login: labex   password: xebal
    ...

    Debido a que configuramos Telnet para permitir el inicio de sesión sin autenticación, es probable que Hydra encuentre un inicio de sesión exitoso con una contraseña nula.

Revisar la salida para comprobaciones exitosas

En este paso, analizaremos la salida del comando Hydra que ejecutamos en el paso anterior para identificar cualquier intento de inicio de sesión exitoso.

  1. Examinar la salida de Hydra:

    Desplácese hacia atrás en la salida del terminal del paso anterior. Busque líneas que indiquen un inicio de sesión exitoso. Estas líneas generalmente contendrán la frase [23][telnet] host: localhost login: labex password: seguida de la contraseña exitosa.

    Debido a que deshabilitamos la autenticación para Telnet, debería ver una línea similar a esta:

    [23][telnet] host: localhost   login: labex   password:

    Esto indica que Hydra pudo iniciar sesión en el servicio Telnet en localhost como el usuario labex con una contraseña nula (una contraseña vacía).

  2. Comprender la salida:

    La salida de Hydra proporciona información valiosa sobre la seguridad del servicio objetivo. En este caso, el inicio de sesión exitoso con una contraseña nula destaca una vulnerabilidad significativa. Un atacante podría potencialmente acceder al sistema sin proporcionar ninguna credencial.

    Si ve otros inicios de sesión exitosos con contraseñas de la lista de palabras, indica que el usuario está utilizando una contraseña débil que es fácil de adivinar.

    La opción -vV en el comando Hydra proporciona una salida detallada, mostrando cada intento de inicio de sesión. Esto puede ser útil para entender el progreso del ataque e identificar cualquier patrón o problema.

Comparar con comprobaciones -e ns

En este paso, ejecutaremos Hydra nuevamente, pero esta vez utilizando la opción -e ns. Esta opción le indica a Hydra que intente contraseñas nulas y el nombre de usuario como contraseña. Luego compararemos los resultados con la ejecución anterior que utilizó -e nsr para entender la diferencia.

  1. Ejecutar Hydra con la opción -e ns:

    Abra su terminal en el directorio ~/project y ejecute el siguiente comando:

    hydra -l labex -P /usr/share/wordlists/metasploit/unix_passwords.txt -vV -e ns telnet://localhost

    Como antes, desglosemos este comando:

    • hydra: El comando para ejecutar la herramienta Hydra.
    • -l labex: Especifica el nombre de usuario a probar. Estamos usando labex, el usuario predeterminado en la VM de LabEx.
    • -P /usr/share/wordlists/metasploit/unix_passwords.txt: Especifica un archivo de lista de contraseñas. Este archivo contiene una lista de contraseñas comunes.
    • -vV: Habilita el modo detallado, mostrando cada intento de inicio de sesión.
    • -e ns: Esta opción le dice a Hydra que intente:
      • n: Contraseña nula (cadena vacía).
      • s: Nombre de usuario 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.

    Hydra intentará ahora iniciar sesión en el servicio Telnet utilizando el nombre de usuario y la lista de contraseñas especificados, así como la contraseña nula y el nombre de usuario. La salida mostrará cada intento de inicio de sesión y si fue exitoso.

    Ejemplo de salida (puede variar según la lista de contraseñas):

    Hydra v9.1 (c) 2020 by van Hauser/THC - use allowed only for legal purposes.
    
    Hydra is starting...
    
    [DATA] 1 task, 1 server, 1337 service(s)
    [DATA] attacking service telnet on port 23
    [DATA] attacking target localhost
    [ATTEMPT] target localhost - login: 'labex' - pass: ''
    [23][telnet] host: localhost   login: labex   password:
    [ATTEMPT] target localhost - login: 'labex' - pass: 'labex'
    [23][telnet] host: localhost   login: labex   password: labex
    ...
  2. Comparar los resultados:

    Compare la salida de este comando con la salida del paso anterior (utilizando -e nsr). Debería observar lo siguiente:

    • Es probable que ambos comandos encuentren un inicio de sesión exitoso con una contraseña nula porque configuramos Telnet para permitir esto.
    • Ambos comandos intentarán el nombre de usuario como contraseña.
    • El comando -e nsr también intentó el nombre de usuario invertido como contraseña, lo que -e ns no hizo.

    Esta comparación demuestra cómo diferentes opciones en Hydra pueden afectar el alcance y la efectividad del ataque. En este caso, -e nsr incluye una comprobación adicional (nombre de usuario invertido), que podría ser útil en ciertos escenarios.

Resumen

En este laboratorio, configuramos un servicio Telnet en la máquina virtual (VM) de LabEx con fines de demostración y prueba. Esto implicó instalar el paquete telnetd utilizando apt y configurar el archivo /etc/inetd.conf para deshabilitar la autenticación, lo cual es crucial para mostrar las capacidades de cracking de contraseñas de Hydra en un entorno controlado.

Debido a que la VM de LabEx utiliza un contenedor Docker, omitimos los comandos estándar de systemctl y, en su lugar, modificamos el archivo inetd.conf y utilizamos el script /etc/init.d para reiniciar el servicio inetd. Esta configuración, aunque insegura para entornos de producción, nos permite continuar con la demostración de las capacidades de cracking de contraseñas de Hydra en los pasos siguientes.