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 — Um Reflective Loader de prova de conceito do Cobalt Strike que visa recriar, integrar e melhorar os recursos de evasão do Cobalt Strike! | Kitploit
Ferramentas/GitHubGitHub/boku7/bokuloader
Frameworks de Testes de PenetraçãoFrameworks de ExploraçãoShellcodeAnálise de BináriosRed TeamingDesenvolvimento de Payloads
GitHubboku7/bokuloader

BokuLoader

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

Ver Repositório
1.4k275há 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 : Carregador Reflexivo do Cobalt Strike

Uma prova de conceito de Carregador Reflexivo Definido pelo Usuário (UDRL) que visa 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 Carregador Reflexivo
Chris Spehn@ConsciousHackerScripts do Aggressor
Joshua Magri@passthehashbrwnHooking de IAT
Dylan Tran@d_tranmanSpoofing de Pilha de Chamadas Reflexivo
James Yeung@5cript1diotChamadas de Sistema Indiretas

Considerações de Uso do UDRL

O carregador reflexivo embutido do Cobalt Strike é robusto, lidando com todos os recursos de evasão de PE Malleable 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 imediatamente.

O objetivo do projeto público BokuLoader é auxiliar equipes vermelhas na criação de seu próprio UDRL interno do Cobalt Strike. O projeto visa suportar todos os recursos de evasão de PE Malleable do CS que valem a pena. Alguns recursos de evasão aproveitam a integração com o CS, outros foram recriados completamente 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 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 de pilha de chamadas reflexivo via frames sintéticos.
  • Código de carregador reflexivo personalizado ASM/C
  • Chamadas de sistema NT indiretas via técnicas HellsGate e HalosGate
    • Todas as alterações de proteção de memória para todas as opções de alocação são feitas via chamada de sistema indireta para NtProtectVirtualMemory
  • obfuscate "true" com implementação de script Aggressor UDRL personalizado.
  • NOHEADERCOPY
    • O carregador não copiará os cabeçalhos da DLL beacon bruta para a DLL beacon virtual. Os primeiros 0x1000 bytes serão nulos.
  • XGetProcAddress para resolução de símbolos
    • Não usa Kernel32.GetProcAddress
  • xLoadLibrary para resolver o endereço base da DLL e carregamento de DLL
    • Para DLLs carregadas, obtém o endereço base da DLL de TEB->PEB->PEB_LDR_DATA->InMemoryOrderModuleList
    • Não usa Kernel32.LoadLibraryA
  • Cifra de César para ofuscação de strings
  • Tamanho 100k do UDRL
  • Os nomes de DLL de importação e strings de nome de entrada de importação são sobrescritas na DLL beacon virtual.

Recursos de Evasão Malleable PE Suportados

Teste

  • (22/02/23) Todos os 4 métodos de alocador testados com threatexpress/malleable-c2/master/jquery-c2.4.7.profile

Origens do Projeto

  • Baseado no incrível projeto de Carregador Reflexivo de Stephen Fewer:
    • https://github.com/stephenfewer/ReflectiveDLLInjection
  • Inicialmente criado enquanto trabalhava nos vídeos de DLL Reflexiva de Renz0h do Curso Intermediário de Desenvolvimento de Malware Sektor7 (MDI)

Uso

  1. Compile o arquivo Objeto BokuLoader com make
  2. Inicie 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 Console de Scripts para garantir que o BokuLoader foi implementado na construção do beacon
  • Não suporta a opção x86. O bin x86 é o arquivo objeto do Carregador Reflexivo original.
  • Gerar beacons RAW funciona imediatamente. Ao usar o Artifact Kit para o carregador de beacon, a variável stagesize deve ser maior que o padrão.
  • Consulte a documentação do Carregador Reflexivo Definido pelo Usuário do Cobalt Strike para informações adicionais

Orientação de Detecção

Strings Codificadas

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

Alocadores de Memória

Sobrescrita de Módulo DLL

  • A função Kernel32.LoadLibraryExA é chamada 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 escaneando a memória do processo com a ferramenta pe-sieve

Alocação de Heap

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

Alocador Mapeado

  • As funções Kernel32.CreateFileMappingA e Kernel32.MapViewOfFile são chamadas para alocar memória para a DLL beacon virtual.

Detecção de Sleepmask

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

Chamadas de Sistema Indiretas

  • O BokuLoader chama as seguintes system calls NT para configurar a memória do beacon executável carregado: NtAllocateVirtualMemory, NtProtectVirtualMemory
  • Elas são chamadas indiretamente da memória executável do BokuLoader.
  • Definir hooks em modo de usuário em ntdll.dll não detectará essas system calls.
  • Pode ser possível registrar kernelcallbacks usando um driver de kernel para monitorar as system calls acima e detectar seu uso.
  • O próprio BokuLoader conterá as instruções de montagem mov eax, r11d; mov r11, r10; mov r10, rcx; jmp r11 dentro de sua memória executável.

Cabeçalho da DLL Beacon Virtual

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

Código Fonte Disponível

  • O código fonte do BokuLoader é fornecido dentro do 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 de Pilha de Chamadas Reflexivo

  • LoudSunRun: Spoofer de frame sintético de pilha de chamadas com chamadas de sistema indiretas
  • SilentMoonwalk: Implementação PoC de um spoofer de pilha de chamadas totalmente dinâmico
  • Vulcan Raven: Implementação PoC para spoofing de pilhas de chamadas arbitrárias ao fazer syscalls
  • CallStackMasker: Uma implementação PoC para mascaramento dinâmico de pilhas de chamadas com timers
  • ThreadStackSpoofer: PoC de Spoofing de Pilha de Threads
  • Behind the Mask: Spoofing de Pilhas de Chamadas Dinamicamente com Timers

Carregador Reflexivo

  • https://github.com/stephenfewer/ReflectiveDLLInjection
  • Confira estes vídeos se você estiver interessado em DLL Reflexiva:
    • Dançando com a Tabela de Endereços de Importação (IAT) - Curso MDI Sektor 7
    • Percorrendo a Tabela de Endereços de Exportação - Curso MDI Sektor 7
    • Injeção Reflexiva Explicada - Curso MDI Sektor 7
    • Revisão do código fonte do ReflectiveLoader - Curso MDI Sektor 7
  • TitanLdr
  • AceLdr
  • KaynLdr

SysCaller HalosGate

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

SysCaller HellsGate

  • @smelly__vx e @am0nsec (Criadores/Publicadores da técnica Hells Gate)
    • Não poderia ter feito minha implementação do HellsGate sem eles :)
    • Trabalho incrível neste método, realmente gostei de trabalhar nele. Obrigado!
    • https://github.com/am0nsec/HellsGate
    • Link para o artigo Hell's Gate: https://vxug.fakedoma.in/papers/VXUG/Exclusive/HellsGate.pdf

Scripts Aggressor

  • sinusoid @the_bit_diddler : returnIntegerFromArray

Carregador Reflexivo Definido pelo Usuário 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 carregador reflexivo!
  • @XPN Hiding Your .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

  • Projeto épico SourcePoint de 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 (Nome da DLL)Suportado via implementação do BokuLoader. Os mesmos requisitos de sobrescrita de DLL 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. Aceitando ajuda se puder consertar :)
entry_pointRVA como número decimalSuportado via implementação do BokuLoader
cleanuptrueSuportado via integraçã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 CS
magic_pestring de 2 caracteresSuportado via integraçã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 DLL beacon. Os primeiros 0x1000 bytes da DLL beacon virtual são 0x00
checksumnúmeroExperimental. Modificação do script Aggressor BokuLoader.cna
compile_timestring 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