Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
BokuLoader — Uma prova de conceito de Reflective Loader do Cobalt Strike que visa recriar, integrar e aprimorar os recursos de evasão do Cobalt Strike! | Kitploit
Ferramentas/GitHubGitHub/xforcered/bokuloader
Frameworks de Testes de PenetraçãoEvasão de IDS/IPSPós-ExploraçãoComando e ControleRed TeamingDesenvolvimento de PayloadsAtaque Adversário
GitHubxforcered/bokuloader

BokuLoader

Uma prova de conceito de Reflective Loader do Cobalt Strike que visa recriar, integrar e aprimorar os recursos de evasão do Cobalt Strike!

Ver Repositório
335251há 2 anosRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

BokuLoader : Reflective Loader para Cobalt Strike

Uma prova de conceito Reflective Loader Definido pelo Usuário (UDRL) que tem como objetivo recriar, integrar e aprimorar os recursos de evasão do Cobalt Strike!

Contribuidores:

ContribuidorTwitterContribuições Notáveis
Bobby Cooke@0xBokuAutor original e mantenedor do projeto
Santiago Pecin@s4ntiago_pPrincipais aprimoramentos do Reflective Loader
Chris Spehn@ConsciousHackerScripts Aggressor
Joshua Magri@passthehashbrwnHooking da IAT
Dylan Tran@d_tranmanSpoofing reflexivo de pilha de chamadas
James Yeung@5cript1diotSyscalls indiretos

Considerações de Uso do UDRL

O reflective loader nativo do Cobalt Strike é robusto e lida com todos os recursos de evasão Malleable PE que o Cobalt Strike oferece. A principal desvantagem de usar um UDRL personalizado é que os recursos de evasão Malleable PE podem ou não ser suportados nativamente.

O objetivo do projeto público BokuLoader é auxiliar red teams na criação de seus próprios UDRLs internos para Cobalt Strike. O projeto visa suportar todos os recursos de evasão Malleable PE do CS que valem a pena. Alguns recursos de evasão aproveitam a integração com o CS, outros foram recriados por completo, e alguns não são suportados.

Antes de usar este projeto, de qualquer forma, você deve testar adequadamente se os recursos de evasão estão funcionando conforme o esperado. Entre o código C e o script Aggressor, a compilação com diferentes versões de sistemas operacionais, compiladores e Java pode retornar resultados diferentes.

Recursos de Evasão

Recursos de Evasão Específicos do BokuLoader

  • Spoofing reflexivo de pilha de chamadas via quadros sintéticos.
  • Código de reflective loader personalizado em ASM/C
  • Syscalls NT indiretos via técnicas HellsGate & HalosGate
    • Todas as alterações de proteção de memória para todas as opções de alocação são feitas via syscall indireto para NtProtectVirtualMemory
  • obfuscate "true" com implementação personalizada do script Aggressor para UDRL.
  • NOHEADERCOPY
    • O loader não copiará os cabeçalhos da beacon DLL bruta para a beacon DLL virtual. Os primeiros 0x1000 bytes serão nulos.
  • XGetProcAddress para resolver símbolos
    • Não usa Kernel32.GetProcAddress
  • xLoadLibrary para resolver o endereço base da DLL e o carregamento da DLL
    • Para DLLs carregadas, obtém o endereço base da DLL a partir de TEB->PEB->PEB_LDR_DATA->InMemoryOrderModuleList
    • Não usa Kernel32.LoadLibraryA
  • Cifra de César para ofuscação de strings
  • Tamanho do UDRL de 100k
  • Os nomes das DLLs de importação e as strings dos nomes das entradas de importação são sobrescritos na beacon DLL virtual.

Recursos de Evasão Malleable PE Suportados

Teste

  • (2/22/23) Todos os 4 métodos de alocação testados com threatexpress/malleable-c2/master/jquery-c2.4.7.profile

Origens do Projeto

  • Baseado no incrível projeto Reflective Loader de Stephen Fewer:
    • https://github.com/stephenfewer/ReflectiveDLLInjection
  • Criado inicialmente enquanto eu percorria os vídeos de Reflective DLL do Renz0h do curso Malware Developer Intermediate (MDI) da Sektor7

Uso

  1. Compile o arquivo de objeto BokuLoader com make
  2. Inicie o seu Team Server do Cobalt Strike
  3. No Cobalt Strike, importe o script Aggressor BokuLoader.cna
  4. Gere o beacon x64 (Attacks -> Packages -> Windows Executable (S))
  5. Use o Script Console para garantir que o BokuLoader foi implementado na compilação do beacon
  • Não suporta a opção x86. O binário x86 é o arquivo de objeto original do Reflective Loader.
  • Gerar beacons RAW funciona nativamente. Ao usar o Artifact Kit para o loader do beacon, a variável stagesize deve ser maior que o padrão.
    • Consulte a documentação do User-Defined Reflective Loader do Cobalt Strike para obter informações adicionais

Orientação de Detecção

Strings Hardcoded

  • O BokuLoader altera algumas strings comumente detectadas para novos valores hardcoded. Essas strings podem ser usadas para criar assinaturas do BokuLoader:
String Original do Cobalt StrikeString do Cobalt Strike com BokuLoader
ReflectiveLoaderBokuLoader
Microsoft Base Cryptographic Provider v1.012367321236742382543232341241261363163151d
(admin)(tomin)
beaconbacons

Alocadores de Memória

DLL Module Stomping

  • O Kernel32.LoadLibraryExA é chamado para mapear a DLL do disco
  • O 3º argumento de Kernel32.LoadLibraryExA é DONT_RESOLVE_DLL_REFERENCES (0x00000001)
    • o sistema não chama DllMain
  • Não resolve endereços na entrada LDR do PEB, conforme detalhado por MDSec aqui
  • Detectável ao escanear a memória do processo com a ferramenta pe-sieve

Alocação em Heap

  • Memória executável RX ou RWX existirá no heap se o sleepmask kit não for usado.

Alocador Mapeado

  • O Kernel32.CreateFileMappingA e o Kernel32.MapViewOfFile são chamados para alocar memória para a beacon DLL virtual.

Detecção do Sleepmask

  • Se o sleepmask kit for usado, existem métodos de detecção para essa alocação de memória independente, conforme detalhado por MDSec aqui

Syscalls Indiretos

  • O BokuLoader chama os seguintes syscalls do NT para configurar a memória executável do beacon carregado: NtAllocateVirtualMemory, NtProtectVirtualMemory
  • Eles são chamados indiretamente a partir da memória executável do BokuLoader.
  • Definir hooks no userland em ntdll.dll não detectará esses syscalls.
  • Pode ser possível registrar kernelcallbacks usando um driver de kernel para monitorar as chamadas de sistema acima e detectar seu uso.
  • O próprio BokuLoader conterá as instruções de assembly mov eax, r11d; mov r11, r10; mov r10, rcx; jmp r11 dentro de sua memória executável.

Cabeçalho da Beacon DLL Virtual

  • Os primeiros 0x1000 bytes da beacon DLL virtual são zeros.

Código-Fonte Disponível

  • O código-fonte do BokuLoader é fornecido no repositório e pode ser usado para criar assinaturas de memória.
  • Se você tiver orientações adicionais de detecção, sinta-se à vontade para contribuir enviando um pull request.

Créditos / Referências

Spoofing Reflexivo de Pilha de Chamadas

  • LoudSunRun: spoofer de quadros sintéticos de pilha de chamadas com syscalls indiretos
  • SilentMoonwalk: implementação de PoC de um spoofer de pilha de chamadas totalmente dinâmico
  • Vulcan Raven: implementação de PoC para falsificar pilhas de chamadas arbitrárias ao fazer syscalls
  • CallStackMasker: uma implementação de PoC para mascarar dinamicamente pilhas de chamadas com timers
  • ThreadStackSpoofer: PoC de Spoofing de Pilha de Threads
  • Behind the Mask: falsificando pilhas de chamadas dinamicamente com timers

Reflective Loader

  • https://github.com/stephenfewer/ReflectiveDLLInjection
  • Confira estes vídeos se você tiver interesse em Reflective DLL:
    • Dançando com a Import Address Table (IAT) - Curso Sektor 7 MDI
    • Percorrendo a Export Address Table - Curso Sektor 7 MDI
    • Injeção Reflexiva Explicada - Curso Sektor 7 MDI
    • Revisão do código-fonte do ReflectiveLoader - Curso Sektor 7 MDI
  • TitanLdr
  • AceLdr
  • KaynLdr

HalosGate SysCaller

  • Reenz0h do @SEKTOR7net
    • Confira os incríveis cursos e blogs do Reenz0h!
    • As melhores aulas de desenvolvimento de malware que já fiz.
    • Criador da técnica halos gate. O trabalho dele foi inicialmente a motivação para este trabalho.
    • Blog HalosGate da Sektor7

HellsGate Syscaller

  • @smelly__vx & @am0nsec ( Criadores/Publicadores da técnica Hells Gate )
    • Não teria conseguido fazer minha implementação do HellsGate sem eles :)
    • Trabalho incrível nesse método, gostei muito de estudá-lo por conta própria. Obrigado!
    • https://github.com/am0nsec/HellsGate
    • Link para o paper do Hell's Gate: https://vxug.fakedoma.in/papers/VXUG/Exclusive/HellsGate.pdf

Scripts Aggressor

  • sinusoid @the_bit_diddler : returnIntegerFromArray

User Defined Reflective Loader do Cobalt Strike

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

Ótimo Recurso para Aprender ASM Intel

  • Pentester Academy - SLAE64

Bypass de ETW e AMSI

  • @anthemtotheego inline-ExecuteAssembly
  • @mariuszbit - pela ideia incrível de implementar bypasses no reflective loader!
  • @XPN Ocultando Seu .NET – ETW
  • ajpc500/BOFs
  • Offensive Security OSEP

Implementando ASM em Código C com 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

Perfis C2 do Cobalt Strike

  • O épico projeto SourcePoint do Tylous
  • threatexpress/malleable-c2/jquery-c2.4.7.profile
Baixar ferramenta
ComandoOpção(ões)Suportado
allocatorHeapAlloc, MapViewOfFile, VirtualAllocTodos suportados via implementação do BokuLoader
module_x64string (DLL Name)Suportado via implementação do BokuLoader. Os mesmos requisitos de DLL stomping da implementação do CS se aplicam
obfuscatetrue/falseBeacons HTTP/S suportados via implementação do BokuLoader. SMB/TCP atualmente não é suportado para obfuscate true. Detalhes na issue. Aceito ajuda se você puder corrigir :)
entry_pointRVA como número decimalSuportado via implementação do BokuLoader
cleanuptrueSuportado via integração com o CS
userwxtrue/falseSuportado via implementação do BokuLoader
sleep_mask(true/false) ou (Sleepmask Kit+true)Suportado. Ao usar o padrão "sleepmask true" (sem sleepmask kit), defina "userwx true". Ao usar o sleepmask kit que suporta memória RX beacon.text (src47/Ekko), defina "sleepmask true" && "userwx false".
magic_mz_x64string de 4 caracteresSuportado via integração com o CS
magic_pestring de 2 caracteresSuportado via integração com o CS
transform-x64 prependstring hex escapadaModificação do script Aggressor BokuLoader.cna
transform-x64 strrepstring stringModificação do script Aggressor BokuLoader.cna
stomppetrue/falseNão suportado. O BokuLoader não copia os cabeçalhos da beacon DLL. Os primeiros 0x1000 bytes da beacon DLL virtual são 0x00
checksumnumberExperimental. Modificação do script Aggressor BokuLoader.cna
compile_timestring de data-horaExperimental. Modificação do script Aggressor BokuLoader.cna
image_size_x64valor decimalNão suportado
namestringExperimental. Modificação do script Aggressor BokuLoader.cna
rich_headerstring hex escapadaExperimental. Modificação do script Aggressor BokuLoader.cna
stringwstringNão suportado
stringstringNão suportado