
نموذج إثبات مفهوم لمحمّل انعكاسي (Reflective Loader) خاص بـ Cobalt Strike، يهدف إلى إعادة إنشاء ميزات التهرب في Cobalt Strike ودمجها وتعزيزها!

أداة إثبات مفهوم User-Defined Reflective Loader (UDRL) تهدف إلى إعادة إنشاء ميزات التهرب الخاصة بـ Cobalt Strike ودمجها وتعزيزها!
| المساهم | تويتر | أبرز المساهمات |
|---|---|---|
| Bobby Cooke | @0xBoku | المؤلف الأصلي للمشروع والمشرف عليه |
| Santiago Pecin | @s4ntiago_p | تحسينات رئيسية على المُحمّل الانعكاسي |
| Chris Spehn | @ConsciousHacker | كتابة سكربتات Aggressor |
| Joshua Magri | @passthehashbrwn | ربط IAT |
| Dylan Tran | @d_tranman | انتحال مكدس الاستدعاءات الانعكاسي |
| James Yeung | @5cript1diot | استدعاءات النظام غير المباشرة |
المُحمّل الانعكاسي المدمج في Cobalt Strike قوي، ويتعامل مع جميع ميزات التهرب الخاصة بـ Malleable PE التي تقدّمها Cobalt Strike. العيب الرئيسي لاستخدام UDRL مخصص هو أن ميزات التهرب الخاصة بـ Malleable PE قد تكون مدعومة أو غير مدعومة افتراضيًا.
الهدف من مشروع BokuLoader العام هو مساعدة فرق الاختراق (red teams) في إنشاء UDRL خاص بهم لـ Cobalt Strike. يهدف المشروع إلى دعم جميع ميزات التهرب المفيدة لـ Malleable PE الخاصة بـ CS. بعض ميزات التهرب تستفيد من التكامل مع CS، وبعضها الآخر أُعيد إنشاؤه بالكامل، وبعضها غير مدعوم.
قبل استخدام هذا المشروع بأي شكل من الأشكال، يجب عليك اختبار ميزات التهرب بشكل صحيح للتأكد من أنها تعمل كما هو مقصود. بين كود C وسكربت Aggressor، قد تؤدي عملية الترجمة باستخدام إصدارات مختلفة من أنظمة التشغيل والمترجمات وJava إلى نتائج مختلفة.
NtProtectVirtualMemoryobfuscate "true" مع تنفيذ مخصص لسكربت Aggressor الخاص بـ UDRL.0x1000 بايت أصفارًا.XGetProcAddress لحل الرموز (symbols)
Kernel32.GetProcAddressxLoadLibrary لتحديد العنوان الأساسي لـ DLL وتحميلها
TEB->PEB->PEB_LDR_DATA->InMemoryOrderModuleListKernel32.LoadLibraryAmakeBokuLoader.cnaScript Console للتأكد من تطبيق BokuLoader في بناء beaconRAW يعمل مباشرة دون إعدادات إضافية. عند استخدام Artifact Kit لتحميل beacon، يجب أن يكون متغير stagesize أكبر من القيمة الافتراضية.
| السلسلة الأصلية في Cobalt Strike | سلسلة BokuLoader في Cobalt Strike |
|---|---|
| ReflectiveLoader | BokuLoader |
| Microsoft Base Cryptographic Provider v1.0 | 12367321236742382543232341241261363163151d |
| (admin) | (tomin) |
| beacon | bacons |
Kernel32.LoadLibraryExA لتعيين DLL من القرصKernel32.LoadLibraryExA هي DONT_RESOLVE_DLL_REFERENCES (0x00000001)
RX أو RWX في heap إذا لم يتم استخدام sleepmask kit.Kernel32.CreateFileMappingA وKernel32.MapViewOfFile لتخصيص ذاكرة لـ beacon DLL الافتراضية.NtAllocateVirtualMemory, NtProtectVirtualMemoryntdll.dll إلى كشف استدعاءات النظام هذه.mov eax, r11d; mov r11, r10; mov r10, rcx; jmp r11 داخل ذاكرته القابلة للتنفيذ.0x1000 بايت من beacon DLL الافتراضية هي أصفار.| الأمر | الخيارات | الحالة |
|---|
allocator | HeapAlloc, MapViewOfFile, VirtualAlloc | جميعها مدعومة عبر تنفيذ BokuLoader |
module_x64 | string (DLL Name) | مدعومة عبر تنفيذ BokuLoader. تنطبق نفس متطلبات DLL stomping كما في تنفيذ CS |
obfuscate | true/false | beacons عبر HTTP/S مدعومة من خلال تنفيذ BokuLoader. SMB/TCP غير مدعوم حاليًا مع obfuscate true. التفاصيل في issue. نرحب بالمساعدة إذا استطعت الإصلاح :) |
entry_point | RVA كرقم عشري | مدعومة عبر تنفيذ BokuLoader |
cleanup | true | مدعومة عبر تكامل CS |
userwx | true/false | مدعومة عبر تنفيذ BokuLoader |
sleep_mask | (true/false) أو (Sleepmask Kit+true) | مدعومة. عند استخدام "sleepmask true" الافتراضي (بدون sleepmask kit) عيّن "userwx true". عند استخدام sleepmask kit الذي يدعم ذاكرة RX beacon.text (src47/Ekko) عيّن "sleepmask true" && "userwx false". |
magic_mz_x64 | سلسلة من 4 أحرف | مدعومة عبر تكامل CS |
magic_pe | سلسلة من حرفين | مدعومة عبر تكامل CS |
transform-x64 prepend | سلسلة hex مهرّبة (escaped) | تعديل في سكربت Aggressor BokuLoader.cna |
transform-x64 strrep | سلسلة سلسلة | تعديل في سكربت Aggressor BokuLoader.cna |
stomppe | true/false | غير مدعومة. لا ينسخ BokuLoader ترويسات beacon DLL. أول 0x1000 بايت من beacon DLL الافتراضية هي 0x00 |
checksum | رقم | تجريبية. تعديل في سكربت Aggressor BokuLoader.cna |
compile_time | سلسلة تاريخ ووقت | تجريبية. تعديل في سكربت Aggressor BokuLoader.cna |
image_size_x64 | قيمة عشرية | غير مدعومة |
name | سلسلة | تجريبية. تعديل في سكربت Aggressor BokuLoader.cna |
rich_header | سلسلة hex مهرّبة | تجريبية. تعديل في سكربت Aggressor BokuLoader.cna |
stringw | سلسلة | غير مدعومة |
string | سلسلة | غير مدعومة |