
¡Un cargador reflectante de Cobalt Strike como prueba de concepto que busca recrear, integrar y mejorar las características de evasión de Cobalt Strike!

Una prueba de concepto de Cargador Reflexivo Definido por el Usuario (UDRL) que tiene como objetivo recrear, integrar y mejorar las funciones de evasión de Cobalt Strike!
| Contribuidor | Contribuciones Notables | |
|---|---|---|
| Bobby Cooke | @0xBoku | Autor original y mantenedor del proyecto |
| Santiago Pecin | @s4ntiago_p | Mejoras importantes del Cargador Reflexivo |
| Chris Spehn | @ConsciousHacker | Scripting del Aggressor |
| Joshua Magri | @passthehashbrwn | Enganche de IAT |
| Dylan Tran | @d_tranman | Suplantación de pila de llamadas reflexiva |
| James Yeung | @5cript1diot | Llamadas al sistema indirectas |
El cargador reflexivo integrado de Cobalt Strike es robusto, manejando todas las características de evasión Malleable PE que Cobalt Strike tiene para ofrecer. La principal desventaja de usar un UDRL personalizado es que las características de evasión Malleable PE pueden o no ser compatibles de manera predeterminada.
El objetivo del proyecto público BokuLoader es ayudar a los equipos rojos a crear su propio UDRL de Cobalt Strike interno. El proyecto tiene como objetivo apoyar todas las características de evasión Malleable PE que valen la pena de CS. Algunas características de evasión aprovechan la integración con CS, otras han sido recreadas completamente, y algunas no son compatibles.
Antes de usar este proyecto, en cualquier forma, debe probar adecuadamente que las funciones de evasión funcionan como se espera. Entre el código C y el script Aggressor, la compilación con diferentes versiones de sistemas operativos, compiladores y Java puede dar resultados diferentes.
NtProtectVirtualMemoryobfuscate "true" con implementación personalizada del script Aggressor UDRL.0x1000 bytes serán nulos.XGetProcAddress para resolver símbolos
Kernel32.GetProcAddressxLoadLibrary para resolver la dirección base de DLL y carga de DLL
TEB->PEB->PEB_LDR_DATA->InMemoryOrderModuleListKernel32.LoadLibraryA| Comando | Opción(es) | Compatible |
|---|---|---|
allocator | HeapAlloc, MapViewOfFile, VirtualAlloc | Todos compatibles mediante implementación BokuLoader |
module_x64 | string (DLL Name) | Compatible mediante implementación BokuLoader. Se aplican los mismos requisitos de pisoteo de DLL que en la implementación de CS |
obfuscate | true/false | Beacons HTTP/S compatibles mediante implementación BokuLoader. SMB/TCP actualmente no es compatible para obfuscate true. Detalles en el issue. Se acepta ayuda si puedes corregirlo :) |
entry_point | RVA as decimal number | Compatible mediante implementación BokuLoader |
cleanup | true | Compatible mediante integración CS |
userwx | true/false | Compatible mediante implementación BokuLoader |
sleep_mask | (true/false) or (Sleepmask Kit+true) | Compatible. Cuando se usa "sleepmask true" predeterminado (sin sleepmask kit) establezca "userwx true". Cuando se usa sleepmask kit que soporta memoria RX beacon.text (src47/Ekko) establezca "sleepmask true" && "userwx false". |
magic_mz_x64 | 4 char string | Compatible mediante integración CS |
magic_pe | 2 char string | Compatible mediante integración CS |
transform-x64 prepend | escaped hex string | Modificación del script Aggressor BokuLoader.cna |
transform-x64 strrep | string string | Modificación del script Aggressor BokuLoader.cna |
stomppe | true/false | No compatible. BokuLoader no copia las cabeceras del beacon DLL. Los primeros 0x1000 bytes del beacon DLL virtual son 0x00 |
checksum | number | Experimental. Modificación del script Aggressor BokuLoader.cna |
compile_time | date-time string | Experimental. Modificación del script Aggressor BokuLoader.cna |
image_size_x64 | decimal value | No compatible |
name | string | Experimental. Modificación del script Aggressor BokuLoader.cna |
rich_header | escaped hex string | Experimental. Modificación del script Aggressor BokuLoader.cna |
stringw | string | No compatible |
string | string | No compatible |
makeBokuLoader.cnaScript Console para asegurarse de que BokuLoader se implementó en la compilación del beaconRAW funciona de inmediato. Cuando se usa el Artifact Kit para el cargador de beacons, la variable stagesize debe ser mayor que la predeterminada.| Cadena Original de Cobalt Strike | Cadena de BokuLoader de Cobalt Strike |
|---|---|
| ReflectiveLoader | BokuLoader |
| Microsoft Base Cryptographic Provider v1.0 | 12367321236742382543232341241261363163151d |
| (admin) | (tomin) |
| beacon | bacons |