Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
BokuLoader — Un proof-of-concept de Reflective Loader para Cobalt Strike que tiene como objetivo recrear, integrar y mejorar las funciones de evasión de Cobalt Strike. | Kitploit
Herramientas/GitHubGitHub/xforcered/bokuloader
Frameworks de Pruebas de PenetraciónEvasión de IDS/IPSPost-ExplotaciónComando y ControlRed TeamingDesarrollo de PayloadsAtaque Adversario
GitHubxforcered/bokuloader

BokuLoader

Un proof-of-concept de Reflective Loader para Cobalt Strike que tiene como objetivo recrear, integrar y mejorar las funciones de evasión de Cobalt Strike.

Ver Repositorio
335251hace 2 añosRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

BokuLoader: Cobalt Strike Reflective Loader

Una prueba de concepto de User-Defined Reflective Loader (UDRL) que tiene como objetivo recrear, integrar y mejorar las funciones de evasión de Cobalt Strike.

Contribuidores:

ContribuidorTwitterContribuciones notables
Bobby Cooke@0xBokuAutor original y mantenedor del proyecto
Santiago Pecin@s4ntiago_pMejoras importantes del Reflective Loader
Chris Spehn@ConsciousHackerScripting de Aggressor
Joshua Magri@passthehashbrwnHooking de IAT
Dylan Tran@d_tranmanReflective Call Stack Spoofing
James Yeung@5cript1diotIndirect System Calls

Consideraciones de uso del UDRL

El Cobalt Strike reflective loader integrado es robusto y maneja todas las funciones de evasión de Malleable PE que Cobalt Strike ofrece. La principal desventaja de usar un UDRL personalizado es que las funciones de evasión de Malleable PE pueden o no ser compatibles de fábrica.

El objetivo del proyecto público BokuLoader es ayudar a los equipos rojos a crear su propio UDRL interno para Cobalt Strike. El proyecto pretende ser compatible con todas las funciones de evasión de Malleable PE de CS que valgan la pena. Algunas funciones de evasión aprovechan la integración con CS, otras han sido recreadas por completo y algunas no son compatibles.

Antes de usar este proyecto, en cualquier forma, debes probar adecuadamente que las funciones de evasión funcionan como se espera. Entre el código C y el script de Aggressor, la compilación con diferentes versiones de sistemas operativos, compiladores y Java puede devolver resultados diferentes.

Funciones de evasión

Funciones de evasión específicas de BokuLoader

  • Reflective callstack spoofing mediante marcos sintéticos.
  • Código de reflective loader personalizado en ASM/C.
  • Indirect NT syscalls mediante las técnicas HellsGate y HalosGate.
    • Todos los cambios de protección de memoria para todas las opciones de asignación se realizan mediante indirect syscall a NtProtectVirtualMemory.
  • obfuscate "true" con implementación personalizada del script de Aggressor del UDRL.
  • NOHEADERCOPY
    • El loader no copiará las cabeceras de la DLL beacon cruda a la DLL beacon virtual. Los primeros 0x1000 bytes serán nulos.
  • XGetProcAddress para resolver símbolos.
    • No usa Kernel32.GetProcAddress.
  • xLoadLibrary para resolver la dirección base de las DLL y la carga de DLL.
    • Para las DLL cargadas, obtiene la dirección base de la DLL desde TEB->PEB->PEB_LDR_DATA->InMemoryOrderModuleList.
    • No usa Kernel32.LoadLibraryA.
  • Cifrado César para ofuscación de cadenas.
  • Tamaño de UDRL de 100k.
  • Los nombres de las DLL importadas y las cadenas de nombres de las entradas importadas se sobrescriben (stomped) en la DLL beacon virtual.

Funciones de evasión de Malleable PE compatibles

Pruebas

  • (22/02/23) Los 4 métodos de asignación probados con threatexpress/malleable-c2/master/jquery-c2.4.7.profile

Orígenes del proyecto

  • Basado en el increíble proyecto Reflective Loader de Stephen Fewer:
    • https://github.com/stephenfewer/ReflectiveDLLInjection
  • Creado inicialmente mientras se trabajaba con los vídeos de Reflective DLL de Renz0h del Curso Sektor7 Malware Developer Intermediate (MDI)

Uso

  1. Compila el archivo objeto de BokuLoader con make
  2. Inicia tu Cobalt Strike Team Server
  3. Dentro de Cobalt Strike, importa el script de Aggressor BokuLoader.cna
  4. Genera el beacon x64 (Attacks -> Packages -> Windows Executable (S))
  5. Usa la Script Console para asegurarte de que BokuLoader se implementó en la compilación del beacon
  • No es compatible con la opción x86. El binario x86 es el archivo objeto del Reflective Loader original.
  • La generación de beacons RAW funciona de fábrica. Cuando se usa Artifact Kit para el loader del beacon, la variable stagesize debe ser mayor que la predeterminada.
    • Consulta la documentación de Cobalt Strike sobre User-Defined Reflective Loader para obtener información adicional

Guía de detección

Cadenas hardcodeadas

  • BokuLoader cambia algunas cadenas comúnmente detectadas por nuevos valores hardcodeados. Estas cadenas se pueden usar para crear firmas de BokuLoader:
Cadena original de Cobalt StrikeCadena de BokuLoader en Cobalt Strike
ReflectiveLoaderBokuLoader
Microsoft Base Cryptographic Provider v1.012367321236742382543232341241261363163151d
(admin)(tomin)
beaconbacons

Asignadores de memoria

DLL Module Stomping

  • Se llama a Kernel32.LoadLibraryExA para mapear la DLL desde el disco.
  • El tercer argumento de Kernel32.LoadLibraryExA es DONT_RESOLVE_DLL_REFERENCES (0x00000001)
    • el sistema no llama a DllMain
  • No resuelve direcciones en la entrada LDR del PEB, como detalla MDSec aquí
  • Detectable escaneando la memoria del proceso con la herramienta pe-sieve

Asignación en Heap

  • Existirá memoria ejecutable RX o RWX en el heap si no se usa el sleepmask kit.

Asignador Mapeado

  • Se llama a Kernel32.CreateFileMappingA y Kernel32.MapViewOfFile para asignar memoria para la DLL beacon virtual.

Detección de Sleepmask

  • Si se usa el sleepmask kit, existen métodos de detección para esta asignación de memoria independiente, como detalla MDSec aquí

Indirect Syscalls

  • BokuLoader llama a los siguientes systemcalls de NT para preparar la memoria ejecutable del beacon cargado: NtAllocateVirtualMemory, NtProtectVirtualMemory
  • Se llaman indirectamente desde la memoria ejecutable de BokuLoader.
  • Establecer hooks en modo usuario en ntdll.dll no detectará estos systemcalls.
  • Es posible registrar kernelcallbacks mediante un driver de kernel para monitorear los system calls anteriores y detectar su uso.
  • El propio BokuLoader contendrá las instrucciones ensamblador mov eax, r11d; mov r11, r10; mov r10, rcx; jmp r11 dentro de su memoria ejecutable.

Cabecera de la DLL beacon virtual

  • Los primeros 0x1000 bytes de la DLL beacon virtual son ceros.

Código fuente disponible

  • El código fuente de BokuLoader se proporciona dentro del repositorio y se puede usar para crear firmas de memoria.
  • Si tienes guía de detección adicional, no dudes en contribuir enviando un pull request.

Créditos / Referencias

Reflective Call Stack Spoofing

  • LoudSunRun: Call stack synthetic frame spoofer with indirect syscalls
  • SilentMoonwalk: PoC Implementation of a fully dynamic call stack spoofer
  • Vulcan Raven: PoC implementation for spoofing arbitrary call stacks when making syscalls
  • CallStackMasker: A PoC implementation for dynamically masking call stacks with timers
  • ThreadStackSpoofer: Thread Stack Spoofing PoC
  • Behind the Mask: Spoofing Call Stacks Dynamically with Timers

Reflective Loader

  • https://github.com/stephenfewer/ReflectiveDLLInjection
  • Mira estos vídeos si te interesan las DLL reflectivas:
    • Dancing with Import Address Table (IAT) - Sektor 7 MDI Course
    • Walking through Export Address Table - Sektor 7 MDI Course
    • Reflective Injection Explained - Sektor 7 MDI Course
    • ReflectiveLoader source review - Sektor 7 MDI Course
  • TitanLdr
  • AceLdr
  • KaynLdr

HalosGate SysCaller

  • Reenz0h de @SEKTOR7net
    • ¡Mira los increíbles cursos y blogs de Reenz0h!
    • Las mejores clases de desarrollo de malware que he tomado.
    • Creador de la técnica halos gate. Su trabajo fue inicialmente la motivación para este trabajo.
    • Sektor7 HalosGate Blog

HellsGate Syscaller

  • @smelly__vx y @am0nsec (Creadores/Publicadores de la técnica Hells Gate)
    • No podría haber hecho mi implementación de HellsGate sin ellos :)
    • Excelente trabajo con este método, realmente disfruté trabajando en ello. ¡Gracias!
    • https://github.com/am0nsec/HellsGate
    • Enlace al artículo de Hell's Gate: https://vxug.fakedoma.in/papers/VXUG/Exclusive/HellsGate.pdf

Scripting de Aggressor

  • sinusoid @the_bit_diddler : returnIntegerFromArray

Cobalt Strike User Defined Reflective Loader

  • https://www.cobaltstrike.com/help-user-defined-reflective-loader

Gran recurso para aprender ASM de Intel

  • Pentester Academy - SLAE64

Bypass de ETW y AMSI

  • @anthemtotheego inline-ExecuteAssembly
  • @mariuszbit - por la increíble idea de implementar bypasses en el reflective loader
  • @XPN Hiding Your .NET – ETW
  • ajpc500/BOFs
  • Offensive Security OSEP

Implementando ASM en código C con GCC

  • https://outflank.nl/blog/2020/12/26/direct-syscalls-in-beacon-object-files/
  • https://www.cs.uaf.edu/2011/fall/cs301/lecture/10_12_asm_c.html
  • http://gcc.gnu.org/onlinedocs/gcc-4.0.2/gcc/Extended-Asm.html#Extended-Asm

Perfiles C2 de Cobalt Strike

  • El épico proyecto SourcePoint de Tylous
  • threatexpress/malleable-c2/jquery-c2.4.7.profile
Descargar herramienta
ComandoOpción(es)Compatible
allocatorHeapAlloc, MapViewOfFile, VirtualAllocTodas compatibles mediante la implementación de BokuLoader
module_x64string (Nombre de DLL)Compatible mediante la implementación de BokuLoader. Se aplican los mismos requisitos de sobrescritura de DLL que en la implementación de CS
obfuscatetrue/falseLos beacons HTTP/S son compatibles mediante la implementación de BokuLoader. SMB/TCP actualmente no es compatible con obfuscate true. Detalles en el issue. Se acepta ayuda si puedes corregirlo :)
entry_pointRVA como número decimalCompatible mediante la implementación de BokuLoader
cleanuptrueCompatible mediante la integración con CS
userwxtrue/falseCompatible mediante la implementación de BokuLoader
sleep_mask(true/false) o (Sleepmask Kit+true)Compatible. Cuando se usa el "sleepmask true" por defecto (sin sleepmask kit) establece "userwx true". Cuando se usa el sleepmask kit que soporta memoria RX de beacon.text (src47/Ekko) establece "sleepmask true" y "userwx false".
magic_mz_x64cadena de 4 caracteresCompatible mediante la integración con CS
magic_pecadena de 2 caracteresCompatible mediante la integración con CS
transform-x64 prependcadena hexadecimal escapadaModificación del script de Aggressor BokuLoader.cna
transform-x64 strrepcadena cadenaModificación del script de Aggressor BokuLoader.cna
stomppetrue/falseNo compatible. BokuLoader no copia las cabeceras de la DLL beacon. Los primeros 0x1000 bytes de la DLL beacon virtual son 0x00
checksumnúmeroExperimental. Modificación del script de Aggressor BokuLoader.cna
compile_timecadena de fecha-horaExperimental. Modificación del script de Aggressor BokuLoader.cna
image_size_x64valor decimalNo compatible
namecadenaExperimental. Modificación del script de Aggressor BokuLoader.cna
rich_headercadena hexadecimal escapadaExperimental. Modificación del script de Aggressor BokuLoader.cna
stringwcadenaNo compatible
stringcadenaNo compatible