
إطار تهرب من برامج مكافحة الفيروسات والكشف والاستجابة للنقاط الطرفية (AV/EDR) مُوجه بالقوالب
🚩 هذا هو المستودع العام لـ Inceptor، للحصول على أحدث إصدار وتحديثات، يُرجى دعمنا من خلال https://porchetta.industries/
إذا كنت ترغب في رعاية هذا المشروع والحصول على أحدث التحديثات لـ Inceptor، وأحدث الإصلاحات للمشكلات، وأحدث الميزات، فيُرجى دعمنا على https://porchetta.industries/
تعال وانضم إلينا على ديسكورد!
NW: نحن نعمل حالياً على تحسين محرك القوالب! بمجرد إصدار النسخة التالية، ستكون تعليمات استخدام الأداة وتخصيصها وتوسيعها متاحة في الويكي.
غالباً ما يتطلب اختبار الاختراق الحديث وفرق الاختراق الأحمر تجاوز أجهزة مكافحة الفيروسات/كشف الاستجابة الشائعة (AV/EDR) لتنفيذ التعليمات البرمجية على الهدف. مع الوقت، أصبحت الدفاعات أكثر تعقيداً وبطبيعتها أكثر صعوبة في التجاوز بشكل مستمر.
Inceptor هي أداة يمكن أن تساعد في أتمتة جزء كبير من هذه العملية، نأمل دون الحاجة إلى جهد إضافي.
Inceptor هي أداة تعبئة (Packer) للملفات التنفيذية المحمولة (PE) تعتمد على القوالب لأنظمة ويندوز، مصممة لمساعدة مختبرِي الاختراق وفِرق الاختراق الأحمر على تجاوز حلول مكافحة الفيروسات وكشف الاستجابة الشائعة. تم تصميم Inceptor مع التركيز على سهولة الاستخدام، والسماح بتخصيص واسع من قبل المستخدم.
للحصول على نظرة عامة جيدة حول ما تم تنفيذه ولماذا، قد يكون من المفيد إلقاء نظرة على المصادر التالية:
يستطيع Inceptor تحويل الملفات التنفيذية/مكتبات DLL الموجودة إلى شيل كود باستخدام محولات مفتوحة المصدر مختلفة:
يمكن لـ Inceptor ترميز أو ضغط أو تشفير شيل كود باستخدام وسائل مختلفة. أثناء تطوير الأداة، بدأت التمييز بين ما أسميه الترميز المستقل عن المحمل (LI) والترميز المعتمد على المحمل (LD).
الترميز المستقل عن المحمل هو نوع من الترميز لا يديره القالب الذي يختاره المستخدم (المحمل). هذا يعني عادةً أن وحدة فك الترميز ليست جزءاً من القالب، بل مدمجة في شيل كود نفسه. يقدم Inceptor هذا النوع من الميزات باستخدام الأداة مفتوحة المصدر sgn ، والتي تُستخدم لجعل الحمولة متعددة الأشكال وغير قابلة للكشف باستخدام كشف التوقيع الشائع.
على الرغم من قوته، إلا أن Shikata-Ga-Nai ليس مناسباً حقاً لبعض القوالب. لهذا السبب، يطبق Inceptor أيضاً مشفرات معتمدة على المحمل، وهي مصممة للسماح للمحمل بالعناية بعملية فك الترميز. على هذا النحو، تقوم مشفرات LD بتثبيت وحدة فك الترميز مباشرة في القالب. هذا النوع من المشفرات، كما تم تنفيذه داخل Inceptor، هو أيضاً "قابل للتسلسل"، مما يعني أنه يمكن تسلسلها معاً لترميز حمولة.
بينما يمكن أن يؤدي استخدام سلسلة من المشفرات في بعض الأحيان إلى تحسين تشويش حمولة معينة، يمكن لهذه التقنية أيضاً كشف عدة إجراءات لفك الترميز، مما يمكن أن يساعد المدافعين في تصميم التوقيعات ضدها. لهذا السبب، يقدم Inceptor طرقاً متعددة لتشويش المنتجات النهائية، مما يقوي عملية الهندسة العكسية.
في وقت كتابة هذا التقرير، تم تزويد الإصدار العام من Inceptor بالمشفرات/الضاغطات/المشفِّرات التالية:
يمكن لـ Inceptor التحقق من صحة سلسلة الترميز إحصائياً وديناميكياً، والتحقق إحصائياً من أنواع المدخلات/المخرجات لوحدات فك الترميز، والتحقق ديناميكياً من التنفيذ باستخدام تطبيق مستقل.
في أي وقت، يمكن للمستخدم التحقق بسهولة من سلسلة باستخدام أداة chain-validate.py .
يطبق Inceptor أيضاً آليات تجاوز مكافحة الفيروسات بشكل أصلي، وعلى هذا النحو، يقدم إمكانية تضمين ميزات تجاوز مكافحة الفيروسات في الحمولة على شكل "وحدات" (إضافات).
الوحدات التي يمكن تضمينها هي:
يطبق Inceptor أيضاً آليات تجاوز EDR، مثل إلغاء الربط الكامل، واستدعاء النواة المباشر، ورسم خرائط DLL يدوي. يتم تنفيذ الاستدعاءات المباشرة للنواة (Syscalls) في C# باستخدام مشروع "DInvoke" الرائع، مرة أخرى من TheWover. في C/C++، يتم تنفيذ الاستدعاءات المباشرة باستخدام مشاريع SysWhispers و SysWhispers2، بواسطة Jackson_T. بالإضافة إلى ذلك، لدى Inceptor دعم مدمج لاستدعاءات النواة x86.
كما هو الحال مع ميزات تجاوز مكافحة الفيروسات، يمكن تمكين هذه الميزات كوحدات، مع الاختلاف الوحيد أنها تتطلب العمل على قالب يدعمها. التقنيات المنفذة حتى الآن هي:
يدعم Inceptor تشويش الحمولة باستخدام أدوات خارجية، مثل ConfuserEx و Chameleon، ويوفر دعماً لتشويش C/C++ باستخدام LLVM-Obfuscator، وهو مشوش قائم على IR باستخدام منصة الترجمة LLVM.
ميزة أخرى لـ Inceptor هي أنه يمكنه توقيع الملف الثنائي/مكتبة DLL الناتجة باستخدام أداة CarbonCopy عادةً، يتم تحليل الملفات الموقعة بشهادات توقيع الكود بشكل أقل صرامة. العديد من منتجات مكافحة البرامج الضارة لا تتحقق من هذه الشهادات.
يمكن تلخيص سير العمل الكامل في المخطط التالي عالي المستوى والمبسط:

تم تصميم Inceptor للعمل على ويندوز. يمكن لأداة update-config.py تحديد موقع ملفات Microsoft الثنائية المطلوبة وتحديث التكوين وفقًا لذلك. قد يلزم تثبيت Microsoft Build Tools و Windows SDK و Visual Studio، وسيقوم update-config.py بتوجيه المستخدم حول كيفية تثبيت التبعيات المطلوبة.
git clone --recursive https://github.com/klezVirus/inceptor.git
cd inceptor
virtualenv venv
venv\Scripts\activate.bat
pip install -r requirements.txt
cd inceptor
python update-config.py
يحدد الإصدار الحالي من Inceptor قالباً معيناً باستخدام اصطلاح تسمية بسيط (لا تقم بتغيير أسماء القوالب)، ومجموعة الوسائط التي يقدمها المستخدم. من بين الوسائط، يوجد أيضاً المحمل (-t). إذا لم يتم تحديده، سيتم اختيار المحمل كدالة للملف المطلوب تعبئته، وفقاً لهذا المخطط البسيط:
$ python inceptor.py -hh
[*] Default Loaders
Input File Extension SpecialCondition Guessed Filetype Default Loader Default Template
0 .raw NaN Shellcode Simple Loader Classic
1 .exe .NET Dotnet Executable Donut Classic
2 .exe NaN Native Executable Pe2Shellcode PE Load
3 .dll NaN Native Library sRDI Classic
من المهم جداً فهم اصطلاح تسمية القوالب أيضاً، لتجنب سوء تفسير سلوك المنتج.
$ usage: inceptor.py [-h] [-hh] [-Z] {native,dotnet,powershell} ...
inceptor: A Windows-based PE Packing framework designed to help
Red Team Operators to bypass common AV and EDR solutions
positional arguments:
{native,dotnet,powershell}
native Native Binaries Generator
dotnet .NET Binaries Generator
powershell PowerShell Wrapper Scripts Generator
optional arguments:
-h, --help show this help message and exit
-hh Show functional table
-Z, --check Check file against ThreatCheck