
Cobalt Strike की evasion सुविधाओं को पुनः निर्मित (recreate), एकीकृत (integrate) और बेहतर (enhance) बनाने के उद्देश्य से बनाया गया एक प्रूफ-ऑफ-कॉन्सेप्ट Cobalt Strike Reflective Loader!

एक proof-of-concept User-Defined Reflective Loader (UDRL) जिसका उद्देश्य Cobalt Strike की evasion सुविधाओं को फिर से बनाना, एकीकृत करना और बेहतर बनाना है!
| योगदानकर्ता | उल्लेखनीय योगदान | |
|---|---|---|
| Bobby Cooke | @0xBoku | परियोजना के मूल लेखक और अनुरक्षक |
| Santiago Pecin | @s4ntiago_p | Reflective Loader में प्रमुख संवर्द्धन |
| Chris Spehn | @ConsciousHacker | Aggressor scripting |
| Joshua Magri | @passthehashbrwn | IAT hooking |
| Dylan Tran | @d_tranman | Reflective Call Stack Spoofing |
| James Yeung | @5cript1diot | Indirect System Calls |
निर्मित Cobalt Strike reflective loader मजबूत है, जो Cobalt Strike द्वारा प्रदान की जाने वाली सभी Malleable PE evasion सुविधाओं को संभालता है। कस्टम UDRL उपयोग करने का प्रमुख नुकसान यह है कि Malleable PE evasion सुविधाएँ out-of-the-box समर्थित हो भी सकती हैं और नहीं भी।
सार्वजनिक BokuLoader परियोजना का उद्देश्य red teams को उनका अपना in-house Cobalt Strike UDRL बनाने में सहायता करना है। परियोजना का लक्ष्य सभी उपयोगी CS Malleable PE evasion सुविधाओं का समर्थन करना है। कुछ evasion सुविधाएँ CS एकीकरण का लाभ उठाती हैं, कुछ को पूरी तरह से फिर से बनाया गया है, और कुछ असमर्थित हैं।
किसी भी रूप में इस परियोजना का उपयोग करने से पहले, आपको यह उचित रूप से परीक्षण करना चाहिए कि evasion सुविधाएँ इच्छित रूप से कार्य कर रही हैं या नहीं। C कोड और Aggressor script के बीच, ऑपरेटिंग सिस्टम, कंपाइलर और Java के विभिन्न संस्करणों के साथ संकलन से अलग-अलग परिणाम मिल सकते हैं।
NtProtectVirtualMemory के लिए indirect syscall के माध्यम से किए जाते हैंobfuscate "true"।0x1000 बाइट्स null होंगे।XGetProcAddress
Kernel32.GetProcAddress का उपयोग नहीं करताxLoadLibrary
TEB->PEB->PEB_LDR_DATA->InMemoryOrderModuleList से प्राप्त करता हैKernel32.LoadLibraryA का उपयोग नहीं करताmake के साथ BokuLoader Object फ़ाइल संकलित करेंBokuLoader.cna Aggressor script आयात करेंScript Console का उपयोग करें कि BokuLoader beacon build में लागू किया गया थाRAW beacons उत्पन्न करना out of the box कार्य करता है। Artifact Kit का उपयोग beacon loader के लिए करते समय, stagesize चर डिफ़ॉल्ट से बड़ा होना चाहिए।
| मूल Cobalt Strike स्ट्रिंग | BokuLoader Cobalt Strike स्ट्रिंग |
|---|---|
| ReflectiveLoader | BokuLoader |
| Microsoft Base Cryptographic Provider v1.0 | 12367321236742382543232341241261363163151d |
| (admin) | (tomin) |
| beacon | bacons |
Kernel32.LoadLibraryExA को कॉल किया जाता हैKernel32.LoadLibraryExA का तीसरा तर्क DONT_RESOLVE_DLL_REFERENCES (0x00000001) है
RX या RWX मेमोरी मौजूद होगी।Kernel32.CreateFileMappingA और Kernel32.MapViewOfFile को कॉल किया जाता है।NtAllocateVirtualMemory, NtProtectVirtualMemoryntdll.dll में userland hooks सेट करने से ये systemcalls पहचान में नहीं आएंगे।mov eax, r11d; mov r11, r10; mov r10, rcx; jmp r11 असेंबली निर्देश रखेगा।0x1000 बाइट्स शून्य होते हैं।| कमांड | विकल्प | समर्थित |
|---|
allocator | HeapAlloc, MapViewOfFile, VirtualAlloc | सभी BokuLoader कार्यान्वयन के माध्यम से समर्थित |
module_x64 | string (DLL Name) | BokuLoader कार्यान्वयन के माध्यम से समर्थित। CS कार्यान्वयन के समान DLL stomping आवश्यकताएँ लागू होती हैं |
obfuscate | true/false | HTTP/S beacons BokuLoader कार्यान्वयन के माध्यम से समर्थित हैं। SMB/TCP वर्तमान में obfuscate true के लिए समर्थित नहीं है। विवरण issue में दिए गए हैं। यदि आप ठीक कर सकते हैं तो सहायता का स्वागत है :) |
entry_point | RVA as decimal number | 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 char string | CS एकीकरण के माध्यम से समर्थित |
magic_pe | 2 char string | CS एकीकरण के माध्यम से समर्थित |
transform-x64 prepend | escaped hex string | BokuLoader.cna Aggressor script संशोधन |
transform-x64 strrep | string string | BokuLoader.cna Aggressor script संशोधन |
stomppe | true/false | असमर्थित। BokuLoader beacon DLL headers को कॉपी नहीं करता। Virtual beacon DLL के पहले 0x1000 बाइट्स 0x00 होते हैं |
checksum | number | प्रायोगिक। BokuLoader.cna Aggressor script संशोधन |
compile_time | date-time string | प्रायोगिक। BokuLoader.cna Aggressor script संशोधन |
image_size_x64 | decimal value | असमर्थित |
name | string | प्रायोगिक। BokuLoader.cna Aggressor script संशोधन |
rich_header | escaped hex string | प्रायोगिक। BokuLoader.cna Aggressor script संशोधन |
stringw | string | असमर्थित |
string | string | असमर्थित |