Depurar ataques de 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, aprenderás cómo depurar ataques de Hydra configurando un servidor Telnet y analizando la salida de depuración de Hydra. El laboratorio se centra en comprender el comportamiento de Hydra durante un ataque a través de información detallada de depuración.

Primero, configurarás un servidor Telnet en la máquina virtual (VM) de LabEx utilizando xinetd para gestionar el servicio Telnet. Esto implica instalar telnetd y xinetd, configurar xinetd para gestionar las conexiones Telnet y reiniciar el servicio xinetd. Luego, ejecutarás Hydra en modo de depuración utilizando la bandera -d para generar una salida detallada. Finalmente, analizarás esta salida de depuración para entender el proceso de ataque e identificar posibles problemas.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL hydra(("Hydra")) -.-> hydra/HydraGroup(["Hydra"]) hydra/HydraGroup -.-> hydra/installation("Installation and Setup") hydra/HydraGroup -.-> hydra/verbose_mode("Verbose Mode Usage") hydra/HydraGroup -.-> hydra/troubleshooting("Basic Troubleshooting") subgraph Lab Skills hydra/installation -.-> lab-550766{{"Depurar ataques de Hydra"}} hydra/verbose_mode -.-> lab-550766{{"Depurar ataques de Hydra"}} hydra/troubleshooting -.-> lab-550766{{"Depurar ataques de Hydra"}} end

Configuración del servidor Telnet

En este paso, configuraremos un servidor 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, puede ser útil para fines de prueba y demostración en un entorno controlado como nuestra VM de LabEx.

Dado que la VM de LabEx utiliza contenedores Docker, no podemos utilizar directamente systemctl para gestionar los servicios. En su lugar, utilizaremos xinetd para gestionar el servicio Telnet. xinetd (extended Internet daemon) es un super-servidor demonio que escucha las conexiones de red entrantes y inicia el servicio adecuado.

Primero, instalemos los paquetes telnetd y xinetd. Abra su terminal en la VM de LabEx y ejecute el siguiente comando:

sudo apt update
sudo apt install telnetd xinetd -y

Este comando actualiza las listas de paquetes e instala los paquetes telnetd (daemon del servidor Telnet) y xinetd. La bandera -y responde automáticamente "sí" a cualquier solicitud durante la instalación.

A continuación, necesitamos configurar xinetd para gestionar el servicio Telnet. Cree un archivo de configuración para Telnet en el directorio /etc/xinetd.d/. Utilice nano para crear y editar el archivo:

sudo nano /etc/xinetd.d/telnet

Pegue la siguiente configuración en el editor nano:

service telnet
{
        flags           = REUSE
        socket_type     = stream
        wait            = no
        user            = root
        server          = /usr/sbin/in.telnetd
        log_on_failure  += USERID
        disable         = no
}

Esta configuración le dice a xinetd que escuche las conexiones Telnet, ejecute el servidor /usr/sbin/in.telnetd como root y registre los fallos de conexión. disable = no asegura que el servicio esté habilitado.

Presione Ctrl+X, luego Y, luego Enter para guardar el archivo y salir de nano.

Ahora, reinicie el servicio xinetd para aplicar los cambios. Dado que no podemos utilizar systemctl, utilizaremos un truco enviando una señal HUP al proceso xinetd. Primero, encuentre el ID de proceso de xinetd:

ps -ef | grep xinetd

Debería ver una salida similar a:

root       1234  1     0 10:00 ?        00:00:00 /usr/sbin/xinetd -stayalive -pidfile /run/xinetd.pid
labex      5678  5600  0 10:01 pts/0    00:00:00 grep --color=auto xinetd

Tome nota del ID de proceso de xinetd (en este ejemplo, es 1234). Reemplace 1234 con el ID de proceso real de su salida en el siguiente comando:

sudo kill -HUP 1234

Este comando envía una señal HUP al proceso xinetd, lo que hace que vuelva a cargar su configuración.

Finalmente, verifiquemos que el servidor Telnet esté en funcionamiento. Puede intentar conectarse a él desde la misma máquina utilizando el comando telnet. Dado que el cliente telnet puede no estar instalado por defecto, utilizaremos netcat para probar la conexión.

nc localhost 23

Si el servidor Telnet está en funcionamiento, debería ver una pantalla en blanco o un aviso de Telnet. Luego puede cerrar la conexión escribiendo Ctrl+] seguido de quit. Si recibe "Conexión rechazada", revise nuevamente los pasos anteriores.

Ejecución con -d para el modo de depuración

En este paso, configuraremos xinetd para ejecutar el servidor Telnet en modo de depuración. Ejecutar en modo de depuración puede proporcionar información valiosa sobre el funcionamiento del servidor, lo cual puede ser útil para solucionar problemas y entender cómo funciona.

Para habilitar el modo de depuración, necesitamos modificar el archivo de configuración de xinetd para Telnet que creamos en el paso anterior. Abra el archivo /etc/xinetd.d/telnet utilizando nano:

sudo nano /etc/xinetd.d/telnet

Modifique la línea server para incluir la opción -d para el modo de depuración. La línea ahora debería verse así:

        server          = /usr/sbin/in.telnetd -d

La opción -d le dice a in.telnetd que se ejecute en modo de depuración, proporcionando una salida más detallada.

Presione Ctrl+X, luego Y, luego Enter para guardar el archivo y salir de nano.

Ahora, reinicie el servicio xinetd para aplicar los cambios. Como antes, utilizaremos el comando kill -HUP. Primero, encuentre el ID de proceso de xinetd:

ps -ef | grep xinetd

Tome nota del ID de proceso de xinetd (por ejemplo, 1234). Reemplace 1234 con el ID de proceso real de su salida en el siguiente comando:

sudo kill -HUP 1234

Este comando envía una señal HUP al proceso xinetd, lo que hace que vuelva a cargar su configuración, ahora con el servidor Telnet ejecutándose en modo de depuración.

Para observar la salida de depuración, necesitamos redirigir la salida estándar de xinetd a un archivo. Sin embargo, xinetd en sí mismo no envía directamente la salida a un archivo. La salida de depuración de in.telnetd -d se enviará a los registros del sistema. Podemos monitorear estos registros utilizando tail -f.

Abra una nueva ventana o pestaña de terminal. En esta nueva terminal, ejecute el siguiente comando para monitorear los registros del sistema:

sudo tail -f /var/log/syslog

Ahora, regrese a su terminal original e intente conectarse al servidor Telnet utilizando netcat:

nc localhost 23

Después de conectarse (y desconectarse con Ctrl+] seguido de quit), regrese a la terminal donde está ejecutando tail -f /var/log/syslog. Debería ver la salida de depuración de in.telnetd relacionada con la conexión. Esta salida proporcionará información sobre las actividades del servidor Telnet, como el establecimiento y finalización de la conexión.

Análisis de la salida de depuración

En este paso, analizaremos la salida de depuración generada por el servidor Telnet cuando se ejecuta en modo de depuración. Comprender esta salida puede ayudarlo a diagnosticar problemas, entender el protocolo Telnet y, potencialmente, identificar vulnerabilidades.

Como vio en el paso anterior, la salida de depuración se escribe en el registro del sistema (/var/log/syslog). Analicemos alguna salida de depuración típica y lo que significa.

Primero, asegúrese de que todavía está monitoreando el registro del sistema en una ventana de terminal separada:

sudo tail -f /var/log/syslog

Luego, conéctese al servidor Telnet utilizando netcat en su terminal original:

nc localhost 23

Escriba algunos caracteres y luego desconéctese escribiendo Ctrl+] seguido de quit.

Ahora, examine la salida en la terminal del syslog. Debería ver líneas similares a las siguientes (la salida exacta puede variar):

Oct 26 14:30:00 labex in.telnetd[1234]: connect from ::1
Oct 26 14:30:00 labex in.telnetd[1234]: telnetd: sock_host_addr: ::1
Oct 26 14:30:05 labex in.telnetd[1234]: ttloop: client wrote 5 bytes
Oct 26 14:30:05 labex in.telnetd[1234]: recv: got IAC
Oct 26 14:30:05 labex in.telnetd[1234]: recv: IAC SB
Oct 26 14:30:05 labex in.telnetd[1234]: recv: got IAC SE
Oct 26 14:30:10 labex in.telnetd[1234]: ttloop: client wrote 6 bytes
Oct 26 14:30:10 labex in.telnetd[1234]: recv: got IAC
Oct 26 14:30:10 labex in.telnetd[1234]: recv: IAC SB
Oct 26 14:30:10 labex in.telnetd[1234]: recv: got IAC SE
Oct 26 14:30:15 labex in.telnetd[1234]: Exit on signal 15

Desglosemos algunas de estas líneas:

  • connect from ::1: Esto indica que se estableció una conexión desde la dirección de bucle invertido IPv6 (::1), que es el equivalente de 127.0.0.1 para IPv4.
  • telnetd: sock_host_addr: ::1: Esto confirma la dirección de origen de la conexión.
  • ttloop: client wrote 5 bytes: Esto muestra que el cliente (su sesión de netcat) envió 5 bytes de datos al servidor.
  • recv: got IAC: IAC significa "Interpret As Command" (Interpretar como Comando). Telnet utiliza códigos de control especiales, y IAC es el prefijo para estos códigos.
  • recv: IAC SB y recv: got IAC SE: SB significa "Subnegotiation Begin" (Inicio de Subnegociación) y SE significa "Subnegotiation End" (Fin de Subnegociación). Estas líneas indican que el cliente y el servidor están negociando opciones.
  • Exit on signal 15: Esto indica que el proceso telnetd se cerró al recibir la señal 15, que es la señal predeterminada enviada por kill sin especificar un número de señal. Esto ocurrió cuando cerró la conexión de netcat.

Al analizar esta salida de depuración, puede obtener información sobre el protocolo Telnet y cómo el servidor maneja conexiones y datos. Esta información puede ser valiosa para el análisis de seguridad, la resolución de problemas y la comprensión de la comunicación de red.

Por ejemplo, si estuviera intentando explotar una vulnerabilidad en el servidor Telnet, podría utilizar esta salida de depuración para entender cómo se está procesando su explotación e identificar posibles debilidades.

Resumen

En este laboratorio, comenzamos configurando un servidor Telnet en la máquina virtual (VM) de LabEx utilizando xinetd para gestionar el servicio telnetd. Esto implicó instalar los paquetes necesarios (telnetd y xinetd) y configurar xinetd para escuchar conexiones Telnet y ejecutar el demonio del servidor Telnet.

Se creó el archivo de configuración /etc/xinetd.d/telnet y se llenó con ajustes para habilitar el servicio Telnet, especificar el ejecutable del servidor y manejar el registro de conexiones. Finalmente, se reinició el servicio xinetd para aplicar los cambios de configuración y preparar el servidor Telnet para las pruebas.