BokuLoader — نموذج إثبات مفهوم لمحمّل انعكاسي (Reflective Loader) خاص بـ Cobalt Strike، يهدف إلى إعادة إنشاء ميزات التهرب في Cobalt Strike ودمجها وتعزيزها! | Kitploit
المُحمّل الانعكاسي المدمج في Cobalt Strike قوي، ويتعامل مع جميع ميزات التهرب الخاصة بـ Malleable PE التي تقدّمها Cobalt Strike. العيب الرئيسي لاستخدام UDRL مخصص هو أن ميزات التهرب الخاصة بـ Malleable PE قد تكون مدعومة أو غير مدعومة افتراضيًا.
الهدف من مشروع BokuLoader العام هو مساعدة فرق الاختراق (red teams) في إنشاء UDRL خاص بهم لـ Cobalt Strike. يهدف المشروع إلى دعم جميع ميزات التهرب المفيدة لـ Malleable PE الخاصة بـ CS. بعض ميزات التهرب تستفيد من التكامل مع CS، وبعضها الآخر أُعيد إنشاؤه بالكامل، وبعضها غير مدعوم.
قبل استخدام هذا المشروع بأي شكل من الأشكال، يجب عليك اختبار ميزات التهرب بشكل صحيح للتأكد من أنها تعمل كما هو مقصود. بين كود C وسكربت Aggressor، قد تؤدي عملية الترجمة باستخدام إصدارات مختلفة من أنظمة التشغيل والمترجمات وJava إلى نتائج مختلفة.
ميزات التهرب
ميزات التهرب الخاصة بـ BokuLoader
انتحال مكدس الاستدعاءات الانعكاسي عبر الإطارات الاصطناعية.
كود مُحمّل انعكاسي مخصص بلغة ASM/C
استدعاءات NT syscalls غير مباشرة عبر تقنيتي HellsGate وHalosGate
جميع تغييرات حماية الذاكرة لجميع خيارات التخصيص تتم عبر استدعاء نظام غير مباشر لـ NtProtectVirtualMemory
obfuscate "true" مع تنفيذ مخصص لسكربت Aggressor الخاص بـ UDRL.
NOHEADERCOPY
لن ينسخ المُحمّل ترويسات beacon DLL الخام إلى beacon DLL الافتراضية. ستكون أول 0x1000 بايت أصفارًا.
XGetProcAddress لحل الرموز (symbols)
لا يستخدم Kernel32.GetProcAddress
xLoadLibrary لتحديد العنوان الأساسي لـ DLL وتحميلها
بالنسبة لملفات DLL المُحمّلة، يحصل على العنوان الأساسي لـ DLL من TEB->PEB->PEB_LDR_DATA->InMemoryOrderModuleList
لا يستخدم Kernel32.LoadLibraryA
تشفير قيصر (Caesar Cipher) لتعتيم السلاسل النصية
حجم UDRL يبلغ 100k
أسماء DLL المستوردة وسلاسل أسماء نقاط الدخول المستوردة يتم طمسها في beacon DLL الافتراضية.
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