
مُغلف متعدد (Multi-Packer) يتيح لنا الربط المتسلسل بين مختلف المغلفات وأدوات التمويه وغيرها من أدوات الفرق الحمراء (Red Team). يتميز بوضع علامات مائية على الأرتيفاكتات، جمع مؤشرات الاختراق (IOCs)، وإضافة أبواب خلفية (Backdooring) للملفات القابلة للتنفيذ (PE). تقوم بتزويده بحمولتك (implant)، فيقوم بالكثير من الأمور الخفية ويخرج لك ملفًا تنفيذيًا مشوشًا (obfuscated executable).

تم توضيح الأساس المنطقي وراء إصدار هذا البرنامج في منشور مدونة مصاحب:
نص برمجي يلتف حول العديد من أدوات التعبئة والتشفير والإخفاء ومحملات كود الصدفة والمشفّرات والمولدات لإنتاج أدوات حماية معقدة للفريق الأحمر. رفيقك المثالي في خط أنابيب CI/CD لتطوير البرمجيات الخبيثة، يساعد في وضع العلامات المائية على القطع الأثرية الخاصة بك، وجمع مؤشرات الاختراق (IOCs)، وإضافة الباب الخلفي والمزيد.
ProtectMyToolingGUI.py

مع ProtectMyTooling يمكنك إخفاء ملفاتك الثنائية بسرعة دون القلق من التنقل عبر جميع الحوارات والواجهات والقوائم وإنشاء المشاريع لإخفاء ملف ثنائي واحد والنقر عبر جميع الخيارات المتاحة وإضاعة الوقت في كل هذا الهراء. فهو يأخذك مباشرة إلى الهدف - وهو إخفاء أداتك.
الهدف هو تقديم أكثر واجهة ملائمة ممكنة والسماح بالاستفادة من سلسلة متصلة من أدوات التعبئة المتعددة مجتمعة على ملف ثنائي واحد.
هذا صحيح - يمكننا تشغيل ProtectMyTooling مع عدة أدوات تعبئة في آن واحد:```
C:> py ProtectMyTooling.py hyperion,upx mimikatz.exe mimikatz-obf.exe
المثال أعلاه سيمرر `mimikatz.exe` أولاً إلى Hyperion للتعتيم، ثم سيتم توفير النتيجة إلى UPX للضغط. وينتج عنه `UPX(Hyperion(file))`
## الميزات
- يدعم العديد من أدوات تغليف PE المختلفة، وأدوات تعتيم .NET، ومحملات/بناة الشيلكود
- يسمح بتسلسل الأدوات حيث يتم تمرير مخرجات أداة إلى التالية: `callobf,hyperion,upx` سينتج القطعة `UPX(Hyperion(CallObf(file)))`
- يجمع مؤشرات الاختراق (IOCs) في كل خطوة تعتيم بحيث يمكن تلبية متطلبات التدقيق و الفريق الأزرق
- يوفر وظيفة لحقن علامات مائية مخصصة في القطع الأثرية PE الناتجة - في DOS Stub، Checksum، كقسم PE مستقل، في Overlay الملف
- يأتي مع سكريبت Cobalt Strike aggressor مفيد يوفر الأوامر `protected-upload` و `protected-execute-assembly`
- استخدام سطر أوامر مباشر
## التثبيت
**تم تصميم هذه الأداة للعمل على Windows، حيث أن معظم أدوات التغليف تستهدف هذه المنصة بشكل أصلي.**
قد تعمل بعض الميزات على Linux بشكل جيد، ومع ذلك فإن هذا الدعم لم يتم اختباره بالكامل، يرجى الإبلاغ عن الأخطاء والمشكلات.
1. أولاً، **قم بتعطيل مضاد الفيروسات** وأضف مجلد `contrib` إلى الاستثناءات. يحتوي هذا المجلد على أدوات تعتيم وحماية سيتم الكشف عنها بواسطة مضاد الفيروسات وإزالتها.
2. ثم قم باستنساخ هذا المستودع```
PS C:\> git clone --recurse https://github.com/Binary-Offensive/ProtectMyTooling
Windows``` PS C:\ProtectMyTooling> .\install.ps1
**Linux**```
bash# ./install.sh
لتشغيل أداة التعبئة ScareCrow على ويندوز 10، يجب تثبيت WSL وتوفر bash.exe (في %PATH%).
بعد ذلك، في WSL يجب تثبيت golang بإصدار لا يقل عن 1.16:```
cmd> bash
bash$ sudo apt update ; sudo apt upgrade -y ; sudo apt install golang=2:1.18~3 -y
## Configuration
لتوصيل أدوات التعتيم المدعومة، أو تغيير الخيارات الافتراضية، أو توجيه **ProtectMyTooling** إلى مسار ملف التنفيذ الخاص بأداة التعتيم، ستحتاج إلى ضبط ملف الإعدادات `config\ProtectMyTooling.yaml`.
يوجد أيضًا ملف `config\sample-full-config.yaml` يحتوي على جميع الخيارات المتاحة لجميع أدوات التغليف المدعومة، ليكون بمثابة نقطة مرجعية.
## Friendly reminder
- إذا تعطل البرنامج الثنائي المنتج أو لم يعمل كما هو متوقع - حاول استخدام سلسلة مختلفة من أدوات التغليف.
- لا تضمن أدوات التغليف استقرار البرامج الثنائية المنتجة، وبالتالي لا يمكن لـ ProtectMyTooling ضمان ذلك أيضًا.
- عند الربط المتسلسل، تأكد من مطابقة تنسيقات الحمولة الناتجة->المدخلة بعناية وفقًا لما تتوقعه أداة التغليف التالية.
---
## Usage
قبل أول استخدام لـ `ProtectMyTooling`، من الضروري ضبط ملف إعدادات YAML الخاص بالبرنامج `ProtectMyTooling.yaml`. ترتيب معالجة المعاملات هو كالتالي:
- أولاً، تُستخدم المعاملات الافتراضية
- ثم يتم استبدالها بالقيم القادمة من YAML
- أخيرًا، أي شيء يُقدم في سطر الأوامر سيحل محل القيم المقابلة
هناك، يجب تعيين مسارات وخيارات أدوات التغليف المدعومة لتفعيلها.
### السيناريو 1: تعتيم ConfuserEx البسيط
الاستخدام بسيط جدًا، كل ما يلزم هو تمرير اسم أداة التعتيم المراد اختيارها، ومسارات ملفات الإدخال والإخراج:```
C:\> py ProtectMyTooling.py confuserex Rubeus.exe Rubeus-obf.exe
::::::::::.:::::::.. ... :::::::::::.,:::::: .,-::::::::::::::::
`;;;```.;;;;;;``;;;; .;;;;;;;;;;;;;;;\''';;;;\'\''',;;;'````;;;;;;;;\'\'''
`]]nnn]]' [[[,/[[[' ,[[ \[[, [[ [[cccc [[[ [[
$$$"" $$$$$$c $$$, $$$ $$ $$"""" $$$ $$
888o 888b "88bo"888,_ _,88P 88, 888oo,_`88bo,__,o, 88,
. YMMMb :.-:.MM ::-. "YMMMMMP" MMM """"YUMMM"YUMMMMMP" MMM
;;,. ;;;';;. ;;;;'
[[[[, ,[[[[, '[[,[[['
$$$$$$$$"$$$ c$$"
888 Y88" 888o,8P"`
::::::::::::mM... ... ::: :::::. :::. .,-:::::/
;;;;;;;;\'''.;;;;;;;. .;;;;;;;. ;;; ;;`;;;;, `;;,;;-'````'
[[ ,[[ \[[,[[ \[[,[[[ [[[ [[[[[. '[[[[ [[[[[[/
$$ $$$, $$$$$, $$$$$' $$$ $$$ "Y$c$"$$c. "$$
88, "888,_ _,88"888,_ _,88o88oo,._888 888 Y88`Y8bo,,,o88o
MMM "YMMMMMP" "YMMMMMP"""""YUMMMMM MMM YM `'YMUP"YMM
Red Team implants protection swiss knife.
Multi-Packer wrapping around multitude of packers, protectors, shellcode loaders, encoders.
Mariusz Banach / mgeeky '20-'22, <[email protected]>
v0.16
[.] Processing x86 file: "\Rubeus.exe"
[.] Generating output of ConfuserEx(<file>)...
[+] SUCCEEDED. Original file size: 417280 bytes, new file size ConfuserEx(<file>): 756224, ratio: 181.23%
يمكن أيضًا إخفاء الملف ومحاولة تشغيله فورًا (مع معلمات اختيارية مزودة أيضًا) للتأكد من أنه يعمل بشكل جيد مع الخيارات -r --cmdline CMDLINE:```
C:> py ProtectMyTooling.py confuserex Rubeus.exe Rubeus-obf.exe -r --cmdline "hash /password:foobar"
[...]
[.] Processing x86 file: "\Rubeus.exe" [.] Generating output of ConfuserEx()...
[+] SUCCEEDED. Original file size: 417280 bytes, new file size ConfuserEx(): 758272, ratio: 181.72%
Running application to test it...
(_____ \ | | ) ) | | _____ _ _ ___ | __ /| | | | _ | ___ | | | |/) | | \ | || | |) ) | || | | || ||/|/|_____)__/(_/
v2.0.0
[*] Action: Calculate Password Hash(es)
[] Input password : foobar [] rc4_hmac : BAAC3929FABC9E6DCD32421BA94A84D4
[!] /user:X and /domain:Y need to be supplied to calculate AES and DES hash types!
### السيناريو 3: تعقيد إخفاء البرامج الضارة مع العلامات المائية وجمع IOCs
حالة الاستخدام التالية تأخذ `beacon.exe` كمدخل وتغذيه تباعاً في أدوات التعبئة `CallObf` -> `UPX` -> `Hyperion`.
ثم ستقوم بحقن العلامة المائية المحددة `fooobar` في DOS Stub للأثر النهائي المُنشأ، بالإضافة إلى تعديل المجموع الاختباري (checksum) لذلك الأثر بالقيمة `0xAABBCCDD`.
أخيراً، سيقوم ProtectMyTooling بجمع جميع IOCs (md5, sha1, sha256, imphash، وبيانات وصفية أخرى) وحفظها في ملف CSV مساعد. يمكن استخدام هذا الملف لمطابقة IOCs مع تقدم التفاعل.```
PS> py .\ProtectMyTooling.py callobf,upx,hyperion beacon.exe beacon-obf.exe -i -I operation_chimera -w dos-stub=fooobar -w checksum=0xaabbccdd
[...]
[.] Processing x64 file: "beacon.exe"
[>] Generating output of CallObf(<file>)...
[.] Before obfuscation file's PE IMPHASH: 17b461a082950fc6332228572138b80c
[.] After obfuscation file's PE IMPHASH: 378d9692fe91eb54206e98c224a25f43
[>] Generating output of UPX(CallObf(<file>))...
[>] Generating output of Hyperion(UPX(CallObf(<file>)))...
[+] Setting PE checksum to 2864434397 (0xaabbccdd)
[+] Successfully watermarked resulting artifact file.
[+] IOCs written to: beacon-obf-ioc.csv
[+] SUCCEEDED. Original file size: 288256 bytes, new file size Hyperion(UPX(CallObf(<file>))): 175616, ratio: 60.92%
ملف CSV الخاص بأدلة IOCs المنتجة سيبدو كما يلي:```csv timestamp,filename,author,context,comment,md5,sha1,sha256,imphash 2022-06-10 03:15:52,beacon.exe,mgeeky@commandoVM,Input File,test,dcd6e13754ee753928744e27e98abd16,298de19d4a987d87ac83f5d2d78338121ddb3cb7,0a64768c46831d98c5667d26dc731408a5871accefd38806b2709c66cd9d21e4,17b461a082950fc6332228572138b80c 2022-06-10 03:15:52,y49981l3.bin,mgeeky@commandoVM,Obfuscation artifact: CallObf(),test,50bbce4c3cc928e274ba15bff0795a8c,15bde0d7fbba1841f7433510fa9aa829f8441aeb,e216cd8205f13a5e3c5320ba7fb88a3dbb6f53ee8490aa8b4e1baf2c6684d27b,378d9692fe91eb54206e98c224a25f43 2022-06-10 03:15:53,nyu2rbyx.bin,mgeeky@commandoVM,Obfuscation artifact: UPX(CallObf()),test,4d3584f10084cded5c6da7a63d42f758,e4966576bdb67e389ab1562e24079ba9bd565d32,97ba4b17c9bd9c12c06c7ac2dc17428d509b64fc8ca9e88ee2de02c36532be10,9aebf3da4677af9275c461261e5abde3 2022-06-10 03:15:53,beacon-obf.exe,mgeeky@commandoVM,Obfuscation artifact: Hyperion(UPX(CallObf())),test,8b706ff39dd4c8f2b031c8fa6e3c25f5,c64aad468b1ecadada3557cb3f6371e899d59790,087c6353279eb5cf04715ef096a18f83ef8184aa52bc1d5884e33980028bc365,a46ea633057f9600559d5c6b328bf83d 2022-06-10 03:15:53,beacon-obf.exe,mgeeky@commandoVM,Output obfuscated artifact,test,043318125c60d36e0b745fd38582c0b8,a7717d1c47cbcdf872101bd488e53b8482202f7f,b3cf4311d249d4a981eb17a33c9b89eff656fff239e0d7bb044074018ec00e20,a46ea633057f9600559d5c6b328bf83d
## أدوات التغليف المدعومة
تم تصميم `ProtectMyTooling` لدعم ليس فقط أدوات التعمية/التغليف ولكن أيضًا جميع أنواع أدوات البناء/التوليد/محملات كود الشيل (shellcode loaders) القابلة للاستخدام من سطر الأوامر.
في الوقت الحالي، يدعم البرنامج العديد من أدوات التغليف/التعمية التجارية ومفتوحة المصدر. تلك مفتوحة المصدر مرفقة ضمن المشروع. أما التجارية فتتطلب من المستخدم شراء المنتج وتكوين موقعه في ملف `ProtectMyTooling.yaml` لتوجيه البرنامج النصي إلى مكان وجودها.
1. [`Amber`](https://github.com/EgeBalci/amber) - حزمة PE انعكاسية تأخذ EXE/DLL كمدخل وتنتج كود شيل EXE/PIC
2. [`AtomPePacker`](https://github.com/ORCx41/AtomPePacker) - حزمة PE عالية الإمكانيات
3. [`AsStrongAsFuck`](https://github.com/Charterino/AsStrongAsFuck) - أداة تعمية لوحدات .NET (assemblies) تعمل من سطر الأوامر من إنشاء Charterino
4. [`CallObfuscator`](https://github.com/d35ha/CallObfuscator) - يقوم بتعمية واجهات برمجة تطبيقات ويندوز معينة باستخدام واجهات مختلفة.
5. [`ConfuserEx`](https://github.com/mkaring/ConfuserEx) - أداة تعمية .NET شائعة، مشتقة من [Martin Karing](https://github.com/mkaring)
6. [`Donut`](https://github.com/TheWover/donut) - محمل PE شائع يأخذ EXE/DLL/.NET كمدخل وينتج كود شيل PIC
7. [`Enigma`](https://enigmaprotector.com/) - نظام قوي مصمم لحماية شاملة لملفات التنفيذ
8. [`Freeze`](https://github.com/optiv/Freeze) - يأخذ ملف EXE/DLL كمدخل وينتج ملفًا بشهادة مستنسخة ومؤشرات IoC الخاصة بـ Golang محذوفة وحجم مضخم. بواسطة Matt Eidelberg (@Tyl0us).
9. [`Hyperion`](https://nullsecurity.net/tools/binary.html) - مشفر زمن تشغيل للملفات التنفيذية المحمولة 32-bit و64-bit. إنه تطبيق مرجعي ويستند إلى الورقة "Hyperion: Implementation of a PE-Crypter"
10. [`IntelliLock`](https://www.eziriz.com/intellilock.htm) - يجمع بين أمان ترخيص قوي ووظيفة/مخطط ترخيص عالي التكيف مع حماية موثوقة للتجميعات
11. [`InvObf`](https://github.com/danielbohannon/Invoke-Obfuscation) - يقوم بتعمية نصوص PowerShell باستخدام `Invoke-Obfuscation` (بواسطة Daniell Bohannon)
12. [`LoGiC.NET`](https://github.com/AnErrupTion/LoGiC.NET) - أداة تعمية .NET مجانية ومفتوحة المصدر أكثر تقدمًا تستخدم dnlib بواسطة AnErrupTion
13. [`Mangle`](https://github.com/optiv/Mangle) - يأخذ ملف EXE/DLL كمدخل وينتج ملفًا بشهادة مستنسخة ومؤشرات IoC الخاصة بـ Golang محذوفة وحجم مضخم. بواسطة Matt Eidelberg (@Tyl0us).
14. [`MPRESS`](https://www.autohotkey.com/mpress/mpress_web.htm) - ضاغط MPRESS بواسطة Vitaly Evseenko. يأخذ EXE/DLL/.NET/MAC-DARWIN (x86/x64) كمدخل ويضغطه.
15. [`NetReactor`](https://www.eziriz.com/dotnet_reactor.htm) - نظام حماية كود .NET لا يضاهى والذي يمنع أي شخص تمامًا من فك ترجمة الكود الخاص بك
16. [`NetShrink`](https://www.pelock.com/pl/produkty/netshrink) - حزمة exe تُعرف أيضًا بضاغط الملفات التنفيذية، وحامي كلمة مرور التطبيق، ورابط DLL افتراضي لتطبيقات .NET على ويندوز ولينكس.
17. [`Nimcrypt2`](https://github.com/icyguider/Nimcrypt2) - ينشئ محمل Nim يقوم بتشغيل .NET أو PE أو كود شيل خام كمدخل. من تأليف [(@icyguider)](https://twitter.com/icyguider)
18. [`NimPackt-v1`](https://github.com/chvancooten/NimPackt-v1) - يأخذ كود شيل أو ملف تنفيذي .NET كمدخل، وينتج محمل EXE أو DLL. مقدم لك من Cas van Cooten [(@chvancooten)](https://twitter.com/chvancooten)
19. [`NimSyscallPacker`](https://github.com/S3cur3Th1sSh1t-Sponsors/NimSyscallPacker) - يأخذ PE/كود شيل/ملف تنفيذي .NET وينشئ محمل EXE/DLL قوي باستخدام Nim+Syscalls. برنامج رعاية من تأليف [(@S3cur3Th1sSh1t)](https://twitter.com/ShitSecure)
20. [`Packer64`](https://github.com/jadams/Packer64) - غلاف حول `Packer64` لجون آدامز
21. [`pe2shc`](https://github.com/hasherezade/pe_to_shellcode) - يحول PE إلى كود شيل. بواسطة كاتب هذه السطور [@hasherezade](https://twitter.com/hasherezade)
22. [`peCloak`](https://github.com/v-p-b/peCloakCapstone/blob/master/peCloak.py) - أداة تشفير متعددة الممرات وتجاوز الصندوق الرملي الإرشادي لتجنب مكافحة الفيروسات
23. [`peresed`](https://github.com/avast/pe_tools) - يستخدم `peresed` من **avast/pe_tools** لإزالة جميع موارد PE والتوقيعات الحالية _(فكر في أيقونة Mimikatz)._
24. [`peunion`](https://bytecode77.com/pe-union) - يقوم بتشفير الملفات التنفيذية (x86 أو .NET x86/x64)، والتي يتم فك تشفيرها في وقت التشغيل وتنفيذها في الذاكرة
25. [`ScareCrow`](https://github.com/optiv/ScareCrow) - محمل كود شيل x64 متجنب لـ EDR ينتج محمل آثار DLL/CPL/XLL/JScript/HTA
26. [`sgn`](https://github.com/EgeBalci/sgn) - مشفر Shikata ga nai (仕方がない) منقول إلى Go مع عدة تحسينات. يأخذ كود شيل وينتج كود شيل مشفر
27. [`SmartAssembly`](https://www.red-gate.com/products/dotnet-development/smartassembly/) - أداة تعمية تساعد في حماية تطبيقك من الهندسة العكسية أو التعديل، من خلال جعل الوصول إلى الكود المصدري صعبًا على طرف ثالث
28. [`sRDI`](https://github.com/monoxgas/sRDI) - يحول DLLs إلى كود شيل مستقل عن الموقع. من تأليف: [Nick Landers, @monoxgas](https://twitter.com/monoxgas)
29. [`Themida`](https://www.oreans.com/Themida.php) - نظام حماية برامج ويندوز متقدم
30. [`UPX`](https://upx.github.io/) - أداة تغليف ملفات تنفيذية مجانية، محمولة، قابلة للتوسيع، وعالية الأداء للعديد من تنسيقات الملفات التنفيذية.
31. [`VMProtect`](https://vmpsoft.com/) - يحمي الكود عن طريق تنفيذه على آلة افتراضية ببنية غير قياسية تجعل تحليل البرنامج واختراقه صعبًا للغاية
يمكنك سرد أدوات التغليف المدعومة بسرعة باستخدام الخيار `-L` (يتم اختيار أعمدة الجدول حسب عرض الطرفية، فكلما كان العرض أوسع، زادت المعلومات المكشوفة):```
C:\> py ProtectMyTooling.py -L
[...]
Red Team implants protection swiss knife.
Multi-Packer wrapping around multitude of packers, protectors, shellcode loaders, encoders.
Mariusz Banach / mgeeky '20-'22, <[email protected]>
v0.16
+----+----------------+-------------+-----------------------+-----------------------------+------------------------+--------------------------------------------------------+
| # | Name | Type | Licensing | Input | Output | Author |
+----+----------------+-------------+-----------------------+-----------------------------+------------------------+--------------------------------------------------------+
| 1 | amber | open-source | Shellcode Loader | PE | EXE, Shellcode | Ege Balci |
| 2 | asstrongasfuck | open-source | .NET Obfuscator | .NET | .NET | Charterino, klezVirus |
| 3 | atompepacker | open-source | PE EXE/DLL Protector | PE | EXE, DLL | ORCA (@ORCx41, [email protected]) |
| 4 | backdoor | open-source | Shellcode Loader | Shellcode | PE | Mariusz Banach, @mariuszbit |
| 5 | callobf | open-source | PE EXE/DLL Protector | PE | PE | Mustafa Mahmoud, @d35ha |
| 6 | confuserex | open-source | .NET Obfuscator | .NET | .NET | mkaring |
| 7 | donut-packer | open-source | Shellcode Converter | PE, .NET, VBScript, JScript | Shellcode | TheWover |
| 8 | enigma | commercial | PE EXE/DLL Protector | PE | PE | The Enigma Protector Developers Team |
| 9 | freeze | open-source | Shellcode Loader | Shellcode | PE | Matt Eidelberg (@Tyl0us) |
| 10 | hyperion | open-source | PE EXE/DLL Protector | PE | PE | nullsecurity team |
| 11 | intellilock | commercial | .NET Obfuscator | PE | PE | Eziriz |
| 12 | invobf | open-source | Powershell Obfuscator | Powershell | Powershell | Daniel Bohannon |
| 13 | logicnet | open-source | .NET Obfuscator | .NET | .NET | AnErrupTion, klezVirus |
| 14 | mangle | open-source | Executable Signing | PE | PE | Matt Eidelberg (@Tyl0us) |
| 15 | mpress | freeware | PE EXE/DLL Compressor | PE | PE | Vitaly Evseenko |
| 16 | netreactor | commercial | .NET Obfuscator | .NET | .NET | Eziriz |
| 17 | netshrink | open-source | .NET Obfuscator | .NET | .NET | Bartosz Wójcik |
| 18 | nimcrypt2 | open-source | Shellcode Loader | PE, .NET, Shellcode | PE | @icyguider |
| 19 | nimpackt | open-source | Shellcode Loader | .NET, Shellcode | PE | Cas van Cooten (@chvancooten) |
| 20 | nimsyscall | sponsorware | Shellcode Loader | PE, .NET, Shellcode | PE | @S3cur3Th1sSh1t |
| 21 | packer64 | open-source | PE EXE/DLL Compressor | PE | PE | John Adams, @jadams |
| 22 | pe2shc | open-source | Shellcode Converter | PE | Shellcode | @hasherezade |
| 23 | pecloak | open-source | PE EXE/DLL Protector | PE | PE | Mike Czumak, @SecuritySift, buherator / v-p-b |
| 24 | peresed | open-source | PE EXE/DLL Protector | PE | PE | Martin Vejnár, Avast |
| 25 | peunion | freeware | PE EXE/DLL Compressor | PE, .NET | PE | Martin Fischer / bytecode77 <[email protected]> |
| 26 | scarecrow | open-source | Shellcode Loader | Shellcode | DLL, JScript, CPL, XLL | Matt Eidelberg (@Tyl0us) |
| 27 | sgn | open-source | Shellcode Encoder | Shellcode | Shellcode | Ege Balci |
| 28 | smartassembly | commercial | .NET Obfuscator | .NET | .NET | Red-Gate |
| 29 | srdi | open-source | Shellcode Encoder | DLL | Shellcode | Nick Landers, @monoxgas |
| 30 | themida | commercial | PE EXE/DLL Protector | PE | PE | Oreans |
| 31 | upx | open-source | PE EXE/DLL Compressor | PE | PE | Markus F.X.J. Oberhumer, László Molnár, John F. Reiser |
| 32 | vmprotect | commercial | PE EXE/DLL Protector | PE | PE | vmpsoft |
+----+----------------+-------------+-----------------------+-----------------------------+------------------------+--------------------------------------------------------+
ما ورد أعلاه هو برامج التعبئة المدعومة، لكن هذا لا يعني أنك قمت بتكوينها وجاهزيتها للاستخدام.
لتحضير استخدامها، يجب عليك أولاً توفير الثنائيات اللازمة إلى دليل contrib ثم تكوين ملف YAML الخاص بك وفقًا لذلك.
هذا البرنامج مخصص لفرق الاختراق الاحترافية وهو مثالي للاستخدام في خط أنابيب CI/CD الخاص بتطوير الأدوات الضارة. كعضو في فريق الاختراق، يُتوقع مني دائمًا تقديم قائمة ذات جودة لائقة من مؤشرات الاختراق (IOCs) التي تطابق جميع أدواتي الضارة، كما أجد أنه من الضروري وضع علامات مائية على جميع أدواتي الضارة لأغراض التوثيق، والإسناد، والتتبع.
لتلبية هذه المتطلبات، يوفر ProtectMyTooling دعمًا أساسيًا لها.
يمكن لـ ProtectMyTooling تطبيق علامات مائية بعد جولات التعتيم ببساطة باستخدام الخيار --watermark.```
py ProtectMyTooling [...] -w dos-stub=fooooobar -w checksum=0xaabbccdd -w section=.coco,ALLYOURBASEAREBELONG
هناك أيضًا نهج مستقل، مضمن في سكريبت `RedWatermarker.py`.
يأخذ الملف القابل للتنفيذ كمدخل ويقبل بعض المعلمات التي تشير إلى مكان حقن العلامة المائية وما القيمة التي سيتم إدراجها.
سيقوم مثال للتشغيل بتعيين مجموع PE الاختباري إلى `0xAABBCCDD`، وإدراج `foooobar` في DOS Stub لملف PE (بايتات تحتوي على _This program cannot be run..._)، وإلحاق `bazbazbaz` بتراكب الملف ثم إنشاء قسم PE جديد يُسمى `.coco` يُلحق بنهاية الملف ويتم تعبئة هذا القسم بعلامة محددة مسبقًا.```
py RedWatermarker.py beacon-obf.exe -c 0xaabbccdd -t fooooobar -e bazbazbaz -s .coco,ALLYOURBASEAREBELONG
الاستخدام الكامل للعلامة المائية:``` cmd> py RedWatermarker.py --help
;
ED.
,E#Wi
j. f#iE###G. EW, .E#t E#fD#W; E##j i#W, E#t t##L E###D. L#D. E#t .E#K, E#jG#W; :K#Wfff; E#t j##f E#t t##f i##WLLLLtE#t :E#K: E#t :K#E: .E#L E#t t##L E#KDDDD###i f#E: E#t .D#W; ,; G: ,; E#f,t#Wi,,, ,WW; E#tiW#G. f#i j. j. E#, : f#i j. E#t ;#W: ; .D#;E#K##i .. GEEEEEEEL .E#t EW, .. : .. EW, E#t .GE .E#t EW, DWi ,K.DL ttE##D. ;W, ,;;L#K;;. i#W, E##j ,W, .Et ;W, E##j E#t j#K; i#W, E##j f. :K#L LWL E#t j##, t#E L#D. E###D. t##, ,W#t j##, E###D. E#GK#f L#D. E###D. EW: ;W##L .E#f L: G###, t#E :K#Wfff; E#jG#W; L###, j###t G###, E#jG#W; E##D. :K#Wfff; E#jG#W; E#t t#KE#L ,W#; :E####, t#E i##WLLLLt E#t t##f .E#j##, G#fE#t :E####, E#t t##f E##Wi i##WLLLLt E#t t##f E#t f#D.L#L t#K: ;W#DG##, t#E .E#L E#t :K#E: ;WW; ##,:K#i E#t ;W#DG##, E#t :K#E:E#jL#D: .E#L E#t :K#E: E#jG#f L#LL#G j###DW##, t#E f#E: E#KDDDD###i j#E. ##f#W, E#t j###DW##, E#KDDDD###E#t ,K#j f#E: E#KDDDD###i E###; L###j G##i,,G##, t#E ,WW; E#f,t#Wi,,,.D#L ###K: E#t G##i,,G##, E#f,t#Wi,,E#t jD ,WW; E#f,t#Wi,,, E#K: L#W; :K#K: L##, t#E .D#; E#t ;#W: :K#t ##D. E#t :K#K: L##, E#t ;#W: j#t .D#; E#t ;#W: EG LE. ;##D. L##, fE tt DWi ,KK:... #G .. ;##D. L##, DWi ,KK: ,; tt DWi ,KK: ; ;@ ,,, .,, : j ,,, .,,
Watermark thy implants, track them in VirusTotal
Mariusz Banach / mgeeky '22, (@mariuszbit)
<[email protected]>
usage: RedWatermarker.py [options]
options: -h, --help show this help message and exit
Required arguments: infile Input implant file
Optional arguments: -C, --check Do not actually inject watermark. Check input file if it contains specified watermarks. -v, --verbose Verbose mode. -d, --debug Debug mode. -o PATH, --outfile PATH Path where to save output file with watermark injected. If not given, will modify infile.
PE Executables Watermarking: -t STR, --dos-stub STR Insert watermark into PE DOS Stub (This program cannot be run...). -c NUM, --checksum NUM Preset PE checksum with this value (4 bytes). Must be number. Can start with 0x for hex value. -e STR, --overlay STR Append watermark to the file's Overlay (at the end of the file). -s NAME,STR, --section NAME,STR Append a new PE section named NAME and insert watermark there. Section name must be shorter than 8 characters. Section will be marked Read-Only, non-executable.
حاليًا يتم دعم وضع العلامات المائية لملفات PE فقط، ولكن في المستقبل سيتم إضافة مستندات Office وتنسيقات أخرى أيضًا.
### جمع مؤشرات الاختراق (IOCs)
يمكن جمع مؤشرات الاختراق ببساطة عن طريق استخدام الخيار `-i` في تشغيل `ProtectMyTooling`.
يتم جمعها في المراحل التالية:
- على ملف الإدخال
- بعد كل جولة تشويش على ملف وسيط
- على ملف الإخراج النهائي
ستحتوي على الحقول التالية المحفوظة في ملف CSV:
- `timestamp`
- `filename`
- `author` - مكون كـ `username@hostname`
- `context` - ما إذا كان السجل يشير إلى ملف إدخال أو إخراج أو وسيط
- `comment` - القيمة التي يعدلها المستخدم عبر الخيار `-I value`
- `md5`
- `sha1`
- `sha256`
- `imphash` - تجزئة واردات PE (إذا كانت متوفرة)
- (TODO) `typeref_hash` - تجزئة مرجع النوع في .NET (إذا كانت متوفرة)
سيكون الناتج ملف CSV باسم `outfile-ioc.csv` مخزنًا بجانب القطعة (artifact) الناتجة المُنشأة. يُكتب هذا الملف في وضع APPEND، مما يعني أنه سيستقبل جميع مؤشرات الاختراق اللاحقة.
# RedBackdoorer - إدراج باب خلفي مدمج في PE
يستخدم `ProtectMyTooling` نص `RedBackdoorer.py` الخاص بي والذي يوفر طرقًا قليلة لإدراج أبواب خلفية في ملفات PE القابلة للتنفيذ.
يأتي الدعم كأداة تغليف مخصصة باسم `backdoor`. مثال على الاستخدام:
**يأخذ كود شيل Cobalt Strike كمدخل ويشفره بـ SGN (Shikata Ga-Nai) ثم يدرج بابًا خلفيًا في SysInternals DbgView64.exe ثم ينتج أداة تحميل انعكاسي Amber EXE**```
PS> py ProtectMyTooling.py sgn,backdoor,amber beacon64.bin dbgview64-infected.exe -B dbgview64.exe
::::::::::.:::::::.. ... :::::::::::.,:::::: .,-::::::::::::::::
`;;;```.;;;;;;``;;;; .;;;;;;;;;;;;;;;;;;;,;;;'````;;;;;;;;
`]]nnn]]' [[[,/[[[' ,[[ \[[, [[ [[cccc [[[ [[
$$$"" $$$$$$c $$$, $$$ $$ $$"""" $$$ $$
888o 888b "88bo"888,_ _,88P 88, 888oo,_`88bo,__,o, 88,
. YMMMb :.-:.MM ::-. "YMMMMMP" MMM """"YUMMM"YUMMMMMP" MMM
;;,. ;;;';;. ;;;;'
[[[[, ,[[[[, '[[,[[['
$$$$$$$$"$$$ c$$"
888 Y88" 888o,8P"`
::::::::::::mM... ... ::: :::::. :::. .,-:::::/
;;;;;;;;.;;;;;;;. .;;;;;;;. ;;; ;;`;;;;, `;;,;;-'````'
[[ ,[[ \[[,[[ \[[,[[[ [[[ [[[[[. '[[[[ [[[[[[/
$$ $$$, $$$$$, $$$$$' $$$ $$$ "Y$c$"$$c. "$$
88, "888,_ _,88"888,_ _,88o88oo,._888 888 Y88`Y8bo,,,o88o
MMM "YMMMMMP" "YMMMMMP"""""YUMMMMM MMM YM `'YMUP"YMM
Red Team implants protection swiss knife.
Multi-Packer wrapping around multitude of packers, protectors, shellcode loaders, encoders.
Mariusz Banach / mgeeky '20-'22, <[email protected]>
v0.16
[.] Processing x64 file : beacon64.bin
[>] Generating output of sgn(<file>)...
[>] Generating output of backdoor(sgn(<file>))...
[>] Generating output of Amber(backdoor(sgn(<file>)))...
[+] SUCCEEDED. Original file size: 265959 bytes, new file size Amber(backdoor(sgn(<file>))): 1372672, ratio: 516.12%
استخدام RedBackdoorer الكامل:``` cmd> py RedBackdoorer.py --help
██▀███ ▓█████▓█████▄
▓██ ▒ ██▓█ ▀▒██▀ ██▌
▓██ ░▄█ ▒███ ░██ █▌
▒██▀▀█▄ ▒▓█ ▄░▓█▄ ▌
░██▓ ▒██░▒████░▒████▓
░ ▒▓ ░▒▓░░ ▒░ ░▒▒▓ ▒
░▒ ░ ▒░░ ░ ░░ ▒ ▒
░░ ░ ░ ░ ░ ░
▄▄▄▄ ▄▄▄░ ░ ▄████▄ ██ ▄█▓█████▄ ▒█████ ▒█████ ██▀███ ▓█████ ██▀███
▓█████▄▒████▄ ░▒██▀ ▀█ ██▄█▒▒██▀ ██▒██▒ ██▒██▒ ██▓██ ▒ ██▓█ ▀▓██ ▒ ██▒
▒██▒ ▄█▒██ ▀█▄ ▒▓█ ▄▓███▄░░██ █▒██░ ██▒██░ ██▓██ ░▄█ ▒███ ▓██ ░▄█ ▒
▒██░█▀ ░██▄▄▄▄██▒▓▓▄ ▄██▓██ █▄░▓█▄ ▒██ ██▒██ ██▒██▀▀█▄ ▒▓█ ▄▒██▀▀█▄
░▓█ ▀█▓▓█ ▓██▒ ▓███▀ ▒██▒ █░▒████▓░ ████▓▒░ ████▓▒░██▓ ▒██░▒████░██▓ ▒██▒
░▒▓███▀▒▒▒ ▓▒█░ ░▒ ▒ ▒ ▒▒ ▓▒▒▒▓ ▒░ ▒░▒░▒░░ ▒░▒░▒░░ ▒▓ ░▒▓░░ ▒░ ░ ▒▓ ░▒▓░
▒░▒ ░ ▒ ▒▒ ░ ░ ▒ ░ ░▒ ▒░░ ▒ ▒ ░ ▒ ▒░ ░ ▒ ▒░ ░▒ ░ ▒░░ ░ ░ ░▒ ░ ▒░
░ ░ ░ ▒ ░ ░ ░░ ░ ░ ░ ░░ ░ ░ ▒ ░ ░ ░ ▒ ░░ ░ ░ ░░ ░
░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░
░ ░ ░
Your finest PE backdooring companion.
Mariusz Banach / mgeeky '22, (@mariuszbit)
<[email protected]>
usage: RedBackdoorer.py [options]
options: -h, --help show this help message and exit
Required arguments: mode PE Injection mode, see help epilog for more details. shellcode Input shellcode file infile PE file to backdoor
Optional arguments: -o PATH, --outfile PATH Path where to save output file with watermark injected. If not given, will modify infile. -v, --verbose Verbose mode.
Backdooring options: -n NAME, --section-name NAME If shellcode is to be injected into a new PE section, define that section name. Section name must not be longer than 7 characters. Default: .qcsw -i IOC, --ioc IOC Append IOC watermark to injected shellcode to facilitate implant tracking.
Authenticode signature options: -r, --remove-signature Remove PE Authenticode digital signature since its going to be invalidated anyway.
PE Backdooring consists of two comma-separated options. First one denotes where to store shellcode, second how to run it:
save,run
| |
| +---------- 1 - change AddressOfEntryPoint
| 2 - hijack branching instruction at Original Entry Point (jmp, call, ...)
| 3 - setup TLS callback
|
+-------------- 1 - store shellcode in the middle of a code section
2 - append shellcode to the PE file in a new PE section
Example:
py RedBackdoorer.py 1,2 beacon.bin putty.exe putty-infected.exe
# تكامل Cobalt Strike
يوجد أيضًا سكريبت يدمج `ProtectMyTooling.py` يُستخدم كغلاف حول أدوات التغليف/الحماية المُهيأة لملفات PE/.NET من أجل تحويل الملفات التنفيذية المُدخلة بسهولة إلى أشكالها المُخرجة المحمية والمضغوطة، ثم رفعها أو استخدامها من داخل CobaltStrike.
الفكرة هي الحصول على عملية آلية لحماية جميع الملفات الثنائية المُرفوعة أو تجمعات .NET المستخدمة بواسطة execute-assembly، والتخلص من الحاجة إلى حمايتها أو تغيير شكلها يدويًا في كل مرة. الميزة الإضافية للنهج الآلي لتحويل الملفات التنفيذية هي القدرة على حماية نفس الملف التنفيذي في كل مرة يُستخدم، مما يُنتج عينات فريدة تُطلق على الأجهزة المستهدفة. يجب أن يخدع ذلك ببراعة مسوحات EDR/AV على مستوى المؤسسة التي تبحث عن نفس الأثر الفني على أجهزة مختلفة.
بالإضافة إلى ذلك، يتمتع أمر protected-execute-assembly بالقدرة على البحث عن تجمعات (assemblies) تم إعطاء اسمها فقط في دليل تجمعات مُهيأ مسبقًا (مُحدد في إعداد dotnet_assemblies_directory).
لاستخدامه:
1. قم بتحميل `CobaltStrike/ProtectMyTooling.cna` في Cobalt Strike الخاص بك.
2. اذهب إلى القائمة وقم بإعداد جميع الخيارات

3. بعد ذلك، في وحدة تحكم Beacon الخاصة بك، ستكون الأوامر التالية متاحة:
* `protected-execute-assembly` - ينفذ برنامج .NET محليًا ومحميًا ومضغوطًا مسبقًا في الذاكرة على الهدف.
* `protected-upload` - يأخذ ملف إدخال، يحميه إذا كان ملف PE تنفيذيًا، ثم يرفع ذلك الملف إلى موقع بعيد محدد.
* `bofnet_load_protected` - يأخذ ملف تجميع .NET مُدخل، يمرره عبر سلسلة أدوات تغليف .NET المُهيأة، ويحمل المخرجات المُولدة باستخدام `bofnet_load`. يجب تحميل [BOFNET](https://github.com/CCob/BOF.NET/) بشكل منفصل لكي يعمل هذا.
بشكل أساسي، ستقوم هذه الأوامر بفتح ملفات الإدخال، وتمريرها أولاً إلى سكريبت `CobaltStrike/cobaltProtectMyTooling.py`، والذي بدوره يستدعي `ProtectMyTooling.py`. بمجرد تغيير شكل الثنائي (obfuscated)، سيتم تمريره إلى beacon الخاص بك للتنفيذ/الرفع.
## خيارات متعلقة بـ Cobalt Strike
فيما يلي قائمة بالخيارات المطلوبة بواسطة مدمج Cobalt Strike:
* `python3_interpreter_path` - حدد مسارًا إلى الملف التنفيذي لمفسر Python3
* `protect_my_tooling_dir` - حدد مسارًا إلى الدليل الرئيسي لـ ProtectMyTooling
* `protect_my_tooling_config` - حدد مسارًا إلى ملف تكوين ProtectMyTooling مع خيارات أدوات التغليف المختلفة
* `dotnet_assemblies_directory` - حدد مسارًا محليًا يجب البحث فيه عن تجمعات .NET إذا لم يتم العثور عليها بواسطة execute-assembly
* `cache_protected_executables` - قم بالتمكين للتخزين المؤقت للملفات التنفيذية المحمية مسبقًا وإعادة استخدامها عند الحاجة
* `protected_executables_cache_dir` - حدد مسارًا إلى دليل لتخزين الملفات التنفيذية المحمية المخزنة مؤقتًا
* `default_exe_x86_packers_chain` - سلسلة حماية/تغليف الملفات التنفيذية الأصلية x86 EXE
* `default_exe_x64_packers_chain` - سلسلة حماية/تغليف الملفات التنفيذية الأصلية x64 EXE
* `default_dll_x86_packers_chain` - سلسلة حماية/تغليف الملفات التنفيذية الأصلية x86 DLL
* `default_dll_x64_packers_chain` - سلسلة حماية/تغليف الملفات التنفيذية الأصلية x64 DLL
* `default_dotnet_packers_chain` - سلسلة حماية/تغليف الملفات التنفيذية .NET
---
## المشاكل المعروفة
- `ScareCrow` من الصعب جدًا تشغيله من Windows. ما نجح معي هو التالي:
1. التشغيل على Windows 10 وتثبيت WSL (أمر `bash.exe` متاح في Windows)
2. تثبيت `golang` في WSL بالإصدار `1.16+` (تم الاختبار على `1.18`)
3. تأكد من ضبط `PackerScareCrow.Run_ScareCrow_On_Windows_As_WSL = True`
---
## الإسنادات والتقنيات المستخدمة
- جميع الإسنادات لأدوات التغليف، التعتيم، التحويل، وأدوات التحميل تعود لمؤلفيها. هذه الأداة هي مجرد غلاف حول تقنياتهم!
- آمل ألا يمانع أي منهم إضافة مثل هذه الأغلفة. إذا كانت هناك مخاوف - يُرجى التواصل معي.
- تستخدم _ProtectMyTooling_ أيضًا [`denim.exe`](https://github.com/moloch--/denim) من **moloch--** في بعض أدوات التغليف القائمة على Nim.
---
## المهام المستقبلية
- كتابة محقن PE مخصص وتقديمه كـ "حامي"
- إضافة علامات مائية لتنسيقات ملفات أخرى مثل مستندات Office، وسكربتات WSH (VBS, JS, HTA) والحاويات
- إضافة دعم لعدد قليل من أدوات التغليف/التحميل/التوليد الأخرى في المستقبل القريب:
- [`GadgetToJScript`](https://github.com/med0x2e/GadgetToJScript)
- [`Limelighter`](https://github.com/Tylous/Limelighter)
- [`PEZor`](https://github.com/phra/PEzor)
- [`msfevenom`](https://github.com/rapid7/metasploit-framework) - نوعان، واحد لشيفرة الإدخال (shellcode) والآخر للملفات التنفيذية
---
## إخلاء مسؤولية
استخدام هذه الأداة وكذلك أي مشاريع أخرى أنا مؤلفها لأغراض غير قانونية، أو اختراق غير مرغوب فيه، أو تجسس إلكتروني محظور تمامًا.
تساعد هذه الأدوات والأدوات الأخرى التي أوزعها مختبري الاختراق المحترفين، ومستشاري الأمن، ومهندسي الأمن، وغيرهم من العاملين في مجال الأمن في تحسين قدرات الدفاع السيبراني لشبكات عملائهم.
لا يتحمل المؤلفون أو مالكو حقوق النشر بأي حال من الأحوال أي مطالبة أو أضرار أو مسؤولية أخرى ناشئة عن الاستخدام غير القانوني لهذا البرنامج.
إذا كانت هناك مخاوف، أو قضايا حقوق نشر، أو تهديدات تشكلها هذه البرامج، أو استفسارات أخرى - أنا منفتح للتعاون في معالجتها بمسؤولية.
تكشف الأداة عن واجهة مريحة لاستخدام برامج التغليف/الحماية/التعتيم مفتوحة المصدر أو المتاحة تجاريًا في الغالب، وبالتالي لا تقدم أي تهديدات جديدة فورية لمشهد الأمن السيبراني كما هو.
---
### ☕ أظهر الدعم ☕
هذا المشروع وغيره هو نتاج ليالٍ بلا نوم والكثير من العمل الشاق. إذا أعجبك ما أفعله وتقدر أني دائمًا أعود للمجتمع،
[فكر في شراء فنجان قهوة لي](https://github.com/sponsors/mgeeky) _(أو الأفضل بيرة)_ فقط لقول شكرًا! 💪
---
## المؤلف```
Mariusz Banach / mgeeky, '20-'22
<mb [at] binary-offensive.com>
(https://github.com/mgeeky)