DNS-Tunnel-Keylogger: su nombre lo dice todo...

DNS-Tunnel-Keylogger es una herramienta de código abierto que permite capturar las pulsaciones de teclas de un equipo objetivo de forma encubierta. Lo que la hace especial es que utiliza el protocolo DNS para exfiltrar las pulsaciones de teclas, dificultando su detección por parte de firewalls y software antivirus.

Componentes principales:

  • Servidor: Se encarga de recibir y almacenar las pulsaciones de teclas capturadas.
  • Cliente: Se instala en el equipo objetivo y captura las pulsaciones de teclas, enviándolas al servidor mediante el protocolo DNS.

Funcionamiento:

  1. El cliente captura las pulsaciones de teclas del usuario.
  2. Codifica las pulsaciones de teclas en nombres de dominio.
  3. Realiza consultas DNS al servidor utilizando los nombres de dominio codificados.
  4. El servidor recibe las consultas DNS y decodifica las pulsaciones de teclas.
  5. Las pulsaciones de teclas decodificadas se almacenan en un archivo en el servidor.

Instalación del servidor

El servidor se puede instalar en cualquier sistema operativo que tenga Python instalado. Para instalar el servidor, siga estos pasos:

1. Clona el repositorio de GitHub:
$ git clone https://github.com/Geeoon/DNS-Tunnel-Keylogger.git

2. Accede al directorio del servidor:
$ cd DNS-Tunnel-Keylogger/server

3. Instala las dependencias:
$ pip install -r requirements.txt

4. Inicia el servidor:
$ sudo python3 server/main.py 192.168.1.133 cabesha.com
Listening for traffic...

Uso del cliente:

Linux

El cliente en Linux consta de dos scripts en bash. Connection.sh es utilizado por el script logger.sh para enviar las pulsaciones de teclas al servidor. Si quieres enviar datos manualmente, como un archivo, puedes hacer un pipeal script Connection.sh. Automáticamente establecerá una conexión y enviará los datos.

logger.sh

# Usage: logger.sh [-options] domain
# Positional Arguments:
#   domain: the domain to send data to
# Options:
#   -p path: give path to log file to listen to
#   -l: run the logger with warnings and errors printed


connection.sh

Usage: command [-options] domain
Positional Arguments:
  domain: the domain to send data to
Options:
  -n: number of characters to store before sending a packet

Windows

Compilar: 

make production domain=example.com

o make debug domain=example.com

Protocolo:

Las solicitudes comienzan con "a" indicando el inicio de una "conexión". Cuando el servidor los reciba, responderá con una dirección IP falsa no reservada donde el último octeto contiene la identificación del cliente.
El siguiente es el formato a seguir para iniciar una conexión: a.1.1.1.[sld].[tld].
El servidor responderá con una dirección IP en el siguiente formato: 123.123.123.[id]
Las conexiones simultáneas no pueden exceder las 254 y los clientes nunca se consideran "desconectados".

Luego las conexiones de exfiltración de datos empiezan por "b" con el formato b.[packet #].[id].[data].[sld].[tld] y el servidor responderá con [code].123.123.123.
d es la identificación que se estableció en la conexión. Los datos se envían codificados en ASCII en hexadecimal.
Code es uno de los códigos que se describen a continuación.

Códigos de respuesta:

200: OK
Si el cliente envía una solicitud que se procesa normalmente, el servidor responderá con el código 200.

201: Malformed Record Requests
Si el cliente envía una solicitud con formato incorrecto, el servidor responderá con el código 201.

202: Non-Existant Connections
Si el cliente envía un paquete de datos con una identificación mayor que el número de conexiones, el servidor responderá con el código 202.

203: Out of Order Packets
Si el cliente envía un paquete con una identificación de paquete que no coincide con lo esperado, el servidor responderá con el código 203. Los clientes y servidores deben restablecer sus números de paquete a 0. Luego, el cliente puede reenviar el paquete con la nueva identificación de paquete. .

204 Reached Max Connection
Si el cliente intenta crear una conexión cuando se alcanza el máximo, el servidor responderá con el código 204.

Comentarios