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 cargador reflectante de Cobalt Strike como prueba de concepto que busca recrear, integrar y mejorar las características de evasión de Cobalt Strike! | Kitploit
Herramientas/GitHubGitHub/boku7/bokuloader
Frameworks de Pruebas de PenetraciónFrameworks de ExploitsShellcodeAnálisis de BinariosRed TeamingDesarrollo de Payloads
GitHubboku7/bokuloader

BokuLoader

¡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!

Ver Repositorio
1.4k27510hace 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 : Cargador Reflexivo 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!

Contribuidores:

ContribuidorTwitterContribuciones Notables
Bobby Cooke@0xBokuAutor original y mantenedor del proyecto
Santiago Pecin@s4ntiago_pMejoras importantes del Cargador Reflexivo
Chris Spehn@ConsciousHackerScripting del Aggressor
Joshua Magri@passthehashbrwnEnganche de IAT
Dylan Tran@d_tranmanSuplantación de pila de llamadas reflexiva
James Yeung@5cript1diotLlamadas al sistema indirectas

Consideraciones de uso del UDRL

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.

Funciones de Evasión

Funciones de Evasión Específicas de BokuLoader

  • Suplantación de pila de llamadas reflexiva mediante marcos sintéticos.
  • Código de cargador reflexivo personalizado en ASM/C
  • Llamadas al sistema NT indirectas mediante técnicas HellsGate y HalosGate
    • Todos los cambios de protección de memoria para todas las opciones de asignación se realizan mediante una llamada al sistema indirecta a NtProtectVirtualMemory
  • obfuscate "true" con implementación personalizada del script Aggressor UDRL.
  • NOHEADERCOPY
    • El cargador no copiará las cabeceras del beacon DLL sin procesar al beacon DLL 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 DLL y 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 UDRL de 100k
  • Los nombres de las DLL de importación y las cadenas de nombres de entrada de importación se sobrescriben en el beacon DLL virtual.

Funciones de evasión Malleable PE compatibles

ComandoOpción(es)Compatible
allocatorHeapAlloc, MapViewOfFile, VirtualAllocTodos compatibles mediante implementación BokuLoader
module_x64string (DLL Name)Compatible mediante implementación BokuLoader. Se aplican los mismos requisitos de pisoteo de DLL que en la implementación de CS
obfuscatetrue/falseBeacons 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_pointRVA as decimal numberCompatible mediante implementación BokuLoader
cleanuptrueCompatible mediante integración CS
userwxtrue/falseCompatible 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_x644 char stringCompatible mediante integración CS
magic_pe2 char stringCompatible mediante integración CS
transform-x64 prependescaped hex stringModificación del script Aggressor BokuLoader.cna
transform-x64 strrepstring stringModificación del script Aggressor BokuLoader.cna
stomppetrue/falseNo compatible. BokuLoader no copia las cabeceras del beacon DLL. Los primeros 0x1000 bytes del beacon DLL virtual son 0x00
checksumnumberExperimental. Modificación del script Aggressor

Prueba

  • (22/2/23) Todos 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 videos de Reflective DLL de Renz0h del Curso Intermedio de Desarrollo de Malware Sektor7 (MDI)

Uso

  1. Compile el archivo objeto de BokuLoader con make
  2. Inicie su Team Server de Cobalt Strike
  3. Dentro de Cobalt Strike, importe el script Aggressor BokuLoader.cna
  4. Genere el beacon x64 (Attacks -> Packages -> Windows Executable (S))
  5. Use la Script Console para asegurarse de que BokuLoader se implementó en la compilación del beacon
  • No soporta la opción x86. El binario x86 es el archivo objeto original de Reflective Loader.
  • Generar beacons RAW funciona de inmediato. Cuando se usa el Artifact Kit para el cargador de beacons, la variable stagesize debe ser mayor que la predeterminada.
  • Consulte la documentación del Cargador Reflexivo Definido por el Usuario de Cobalt Strike para obtener información adicional.

Guía de Detección

Cadenas Hardcodeadas

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

Asignadores de Memoria

Pisoteo de Módulo DLL

  • 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 se detalla aquí por MDSec
  • Detectable escaneando la memoria del proceso con la herramienta pe-sieve

Asignación de Heap

  • La memoria ejecutable RX o RWX existirá en el heap si no se utiliza el sleepmask kit.

Asignador Mapeado

  • Se llama a Kernel32.CreateFileMappingA y Kernel32.MapViewOfFile para asignar memoria para el beacon DLL 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 se detalla aquí por MDSec

Llamadas al Sistema Indirectas

  • BokuLoader llama a las siguientes llamadas al sistema NT para configurar la memoria del beacon ejecutable cargado: NtAllocateVirtualMemory, NtProtectVirtualMemory
  • Estas son llamadas indirectamente desde la memoria ejecutable de BokuLoader.
  • Establecer hooks en el espacio de usuario en ntdll.dll no detectará estas llamadas al sistema.
  • Puede ser posible registrar devoluciones de llamada del kernel usando un controlador del kernel para monitorear las llamadas al sistema anteriores y detectar su uso.
  • El propio BokuLoader contendrá las instrucciones de ensamblaje mov eax, r11d; mov r11, r10; mov r10, rcx; jmp r11 dentro de su memoria ejecutable.

Cabecera del Beacon DLL Virtual

  • Los primeros 0x1000 bytes del beacon DLL 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 tiene orientación adicional de detección, no dude en contribuir enviando un pull request.

Créditos / Referencias

Suplantación de Pila de Llamadas Reflexiva

  • LoudSunRun: Suplantador de marcos sintéticos de pila de llamadas con llamadas al sistema indirectas
  • SilentMoonwalk: Implementación PoC de un suplantador de pila de llamadas totalmente dinámico
  • Vulcan Raven: Implementación PoC para suplantar pilas de llamadas arbitrarias al realizar llamadas al sistema
  • CallStackMasker: Una implementación PoC para enmascarar dinámicamente pilas de llamadas con temporizadores
  • ThreadStackSpoofer: PoC de Suplantación de Pila de Hilos
  • Detrás de la Máscara: Suplantando Pila de Llamadas Dinámicamente con Temporizadores

Cargador Reflexivo

  • https://github.com/stephenfewer/ReflectiveDLLInjection
  • Echa un vistazo a estos videos si estás interesado en Reflective DLL:
    • Bailando con la Tabla de Direcciones de Importación (IAT) - Curso MDI Sektor 7
    • Recorriendo la Tabla de Direcciones de Exportación - Curso MDI Sektor 7
    • Inyección Reflexiva Explicada - Curso MDI Sektor 7
    • Revisión del código fuente de ReflectiveLoader - Curso MDI Sektor 7
  • TitanLdr
  • AceLdr
  • KaynLdr

HalosGate SysCaller

  • Reenz0h de @SEKTOR7net
    • ¡Echa un vistazo a 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.
    • Blog de Sektor7 sobre HalosGate

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 en este método, realmente disfruté trabajarlo yo mismo. ¡Gracias!
    • https://github.com/am0nsec/HellsGate
    • Enlace al artículo de Hell's Gate: https://vxug.fakedoma.in/papers/VXUG/Exclusive/HellsGate.pdf

Scripting del Aggressor

  • sinusoid @the_bit_diddler : returnIntegerFromArray

Cargador Reflexivo Definido por el Usuario de Cobalt Strike

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

Excelente recurso para aprender ASM Intel

  • Pentester Academy - SLAE64

Bypass de ETW y AMSI

  • @anthemtotheego inline-ExecuteAssembly
  • @mariuszbit - por la excelente idea de implementar bypasses en el cargador reflexivo
  • @XPN Ocultando tu .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
BokuLoader.cna
compile_timedate-time stringExperimental. Modificación del script Aggressor BokuLoader.cna
image_size_x64decimal valueNo compatible
namestringExperimental. Modificación del script Aggressor BokuLoader.cna
rich_headerescaped hex stringExperimental. Modificación del script Aggressor BokuLoader.cna
stringwstringNo compatible
stringstringNo compatible