Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
BokuLoader — Un proof-of-concept di Cobalt Strike Reflective Loader che mira a ricreare, integrare e potenziare le funzionalità di evasione di Cobalt Strike! | Kitploit
Strumenti/GitHubGitHub/xforcered/bokuloader
Frameworks per Penetration TestingEvasione IDS/IPSPost-ExploitCommand and ControlRed TeamingSviluppo PayloadAttacco Avversario
GitHubxforcered/bokuloader

BokuLoader

Un proof-of-concept di Cobalt Strike Reflective Loader che mira a ricreare, integrare e potenziare le funzionalità di evasione di Cobalt Strike!

Vedi Repository
335252 anni faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

BokuLoader : Cobalt Strike Reflective Loader

Una proof-of-concept di User-Defined Reflective Loader (UDRL) che mira a ricreare, integrare e potenziare le funzionalità di evasione di Cobalt Strike!

Contributori:

ContributoreTwitterContributi notevoli
Bobby Cooke@0xBokuAutore originale e maintainer del progetto
Santiago Pecin@s4ntiago_pMiglioramenti principali del Reflective Loader
Chris Spehn@ConsciousHackerScripting Aggressor
Joshua Magri@passthehashbrwnHooking dell'IAT
Dylan Tran@d_tranmanSpoofing del call stack riflessivo
James Yeung@5cript1diotChiamate di sistema indirette

Considerazioni sull'uso dell'UDRL

Il reflective loader integrato di Cobalt Strike è robusto e gestisce tutte le funzionalità di evasione Malleable PE che Cobalt Strike offre. Il principale svantaggio nell'usare un UDRL personalizzato è che le funzionalità di evasione Malleable PE potrebbero essere o meno supportate out-of-the-box.

L'obiettivo del progetto pubblico BokuLoader è assistere i red team nella creazione del proprio UDRL interno per Cobalt Strike. Il progetto mira a supportare tutte le funzionalità di evasione Malleable PE di CS che valga la pena. Alcune funzionalità di evasione sfruttano l'integrazione con CS, altre sono state ricreate completamente e alcune non sono supportate.

Prima di usare questo progetto, in qualsiasi forma, dovresti testare adeguatamente che le funzionalità di evasione funzionino come previsto. Tra il codice C e lo script Aggressor, la compilazione con diverse versioni di sistemi operativi, compilatori e Java può restituire risultati diversi.

Funzionalità di evasione

Funzionalità di evasione specifiche di BokuLoader

  • Spoofing del call stack riflessivo tramite frame sintetici.
  • Codice personalizzato del reflective loader in ASM/C
  • Chiamate di sistema NT indirette tramite le tecniche HellsGate & HalosGate
    • Tutte le modifiche alla protezione della memoria per tutte le opzioni di allocazione vengono eseguite tramite syscall indiretta a NtProtectVirtualMemory
  • obfuscate "true" con implementazione personalizzata dello script Aggressor UDRL.
  • NOHEADERCOPY
    • Il loader non copierà le intestazioni della beacon DLL grezza nella beacon DLL virtuale. I primi 0x1000 byte saranno nulli.
  • XGetProcAddress per la risoluzione dei simboli
    • Non usa Kernel32.GetProcAddress
  • xLoadLibrary per risolvere l'indirizzo di base delle DLL e caricare le DLL
    • Per le DLL caricate, ottiene l'indirizzo di base della DLL da TEB->PEB->PEB_LDR_DATA->InMemoryOrderModuleList
    • Non usa Kernel32.LoadLibraryA
  • Cifrario di Cesare per l'offuscamento delle stringhe
  • Dimensione UDRL di 100k
  • I nomi delle DLL importate e le stringhe dei nomi delle voci importate vengono sovrascritti nella beacon DLL virtuale.

Funzionalità di evasione Malleable PE supportate

Test

  • (22/2/23) Tutti e 4 i metodi di allocazione testati con threatexpress/malleable-c2/master/jquery-c2.4.7.profile

Origini del progetto

  • Basato sull'incredibile progetto Reflective Loader di Stephen Fewer:
    • https://github.com/stephenfewer/ReflectiveDLLInjection
  • Creato inizialmente mentre seguivo i video di Reflective DLL di Renz0h del Corso Sektor7 Malware Developer Intermediate (MDI)

Utilizzo

  1. Compila il file oggetto BokuLoader con make
  2. Avvia il tuo Cobalt Strike Team Server
  3. In Cobalt Strike, importa lo script Aggressor BokuLoader.cna
  4. Genera la beacon x64 (Attacks -> Packages -> Windows Executable (S))
  5. Usa la Script Console per assicurarti che BokuLoader sia stato implementato nella build della beacon
  • Non supporta l'opzione x86. Il bin x86 è il file oggetto originale del Reflective Loader.
  • La generazione di beacon RAW funziona out of the box. Quando usi l'Artifact Kit per il loader della beacon, la variabile stagesize deve essere più grande del valore predefinito.
    • Consulta la documentazione del Cobalt Strike User-Defined Reflective Loader per ulteriori informazioni

Indicazioni per il rilevamento

Stringhe hardcoded

  • BokuLoader modifica alcune stringhe comunemente rilevate in nuovi valori hardcoded. Queste stringhe possono essere usate per creare firme per BokuLoader:
Stringa originale di Cobalt StrikeStringa BokuLoader di Cobalt Strike
ReflectiveLoaderBokuLoader
Microsoft Base Cryptographic Provider v1.012367321236742382543232341241261363163151d
(admin)(tomin)
beaconbacons

Allocatori di memoria

DLL Module Stomping

  • Kernel32.LoadLibraryExA viene chiamata per mappare la DLL dal disco
  • Il 3° argomento di Kernel32.LoadLibraryExA è DONT_RESOLVE_DLL_REFERENCES (0x00000001)
    • il sistema non chiama DllMain
  • Non risolve gli indirizzi nella voce LDR del PEB, come descritto in dettaglio da MDSec qui
  • Rilevabile scansionando la memoria del processo con lo strumento pe-sieve

Allocazione Heap

  • La memoria eseguibile RX o RWX sarà presente nell'heap se non viene usato il sleepmask kit.

Allocatore mappato

  • Kernel32.CreateFileMappingA e Kernel32.MapViewOfFile vengono chiamate per allocare memoria per la beacon DLL virtuale.

Rilevamento di Sleepmask

  • Se viene usato il sleepmask kit, esistono metodi di rilevamento per questa allocazione di memoria indipendente, come descritto in dettaglio da MDSec qui

Syscall indirette

  • BokuLoader chiama le seguenti system call NT per configurare la memoria eseguibile della beacon caricata: NtAllocateVirtualMemory, NtProtectVirtualMemory
  • Queste vengono chiamate indirettamente dalla memoria eseguibile di BokuLoader.
  • Impostare hook userland in ntdll.dll non rileverà queste system call.
  • Potrebbe essere possibile registrare kernel callback tramite un kernel driver per monitorare le system call sopra indicate e rilevarne l'uso.
  • BokuLoader stesso conterrà le istruzioni assembly mov eax, r11d; mov r11, r10; mov r10, rcx; jmp r11 all'interno della sua memoria eseguibile.

Intestazione della beacon DLL virtuale

  • I primi 0x1000 byte della beacon DLL virtuale sono zeri.

Codice sorgente disponibile

  • Il codice sorgente di BokuLoader è fornito all'interno del repository e può essere usato per creare firme di memoria.
  • Se hai ulteriori indicazioni per il rilevamento, sentiti libero di contribuire inviando una pull request.

Crediti / Riferimenti

Spoofing riflessivo del call stack

  • LoudSunRun: Spoofer di frame sintetici del call stack con syscall indirette
  • SilentMoonwalk: Implementazione PoC di uno spoofer di call stack completamente dinamico
  • Vulcan Raven: Implementazione PoC per spoofare call stack arbitrari quando si effettuano syscall
  • CallStackMasker: Un'implementazione PoC per mascherare dinamicamente i call stack con i timer
  • ThreadStackSpoofer: PoC di Thread Stack Spoofing
  • Behind the Mask: Spoofare i Call Stack Dinamicamente con i Timer

Reflective Loader

  • https://github.com/stephenfewer/ReflectiveDLLInjection
  • Dai un'occhiata a questi video se sei interessato alle Reflective DLL:
    • Ballando con la Import Address Table (IAT) - Corso Sektor 7 MDI
    • Attraversando la Export Address Table - Corso Sektor 7 MDI
    • Reflective Injection spiegata - Corso Sektor 7 MDI
    • Revisione del sorgente di ReflectiveLoader - Corso Sektor 7 MDI
  • TitanLdr
  • AceLdr
  • KaynLdr

HalosGate SysCaller

  • Reenz0h da @SEKTOR7net
    • Dai un'occhiata ai corsi e ai blog fantastici di Reenz0h!
    • I migliori corsi sullo sviluppo di malware che abbia mai seguito.
    • Creatore della tecnica halos gate. Il suo lavoro è stato inizialmente la motivazione per questo lavoro.
    • Blog Sektor7 HalosGate

HellsGate Syscaller

  • @smelly__vx e @am0nsec (Creatori/Editori della tecnica Hells Gate)
    • Non avrei potuto realizzare la mia implementazione di HellsGate senza di loro :)
    • Ottimo lavoro su questo metodo, mi sono davvero divertito a implementarlo. Grazie!
    • https://github.com/am0nsec/HellsGate
    • Link al paper Hell's Gate: https://vxug.fakedoma.in/papers/VXUG/Exclusive/HellsGate.pdf

Scripting Aggressor

  • sinusoid @the_bit_diddler : returnIntegerFromArray

Cobalt Strike User Defined Reflective Loader

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

Ottima risorsa per imparare l'ASM Intel

  • Pentester Academy - SLAE64

Bypass di ETW e AMSI

  • @anthemtotheego inline-ExecuteAssembly
  • @mariuszbit - per l'ottima idea di implementare i bypass nel reflective loader!
  • @XPN Nascondere il tuo .NET – ETW
  • ajpc500/BOFs
  • Offensive Security OSEP

Implementare ASM in codice 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

Profili C2 di Cobalt Strike

  • L'epico progetto SourcePoint di Tylous
  • threatexpress/malleable-c2/jquery-c2.4.7.profile
Scarica lo strumento
ComandoOpzione/iSupportato
allocatorHeapAlloc, MapViewOfFile, VirtualAllocTutte supportate tramite l'implementazione di BokuLoader
module_x64stringa (nome DLL)Supportato tramite l'implementazione di BokuLoader. Valgono gli stessi requisiti di DLL stomping dell'implementazione CS
obfuscatetrue/falseBeacon HTTP/S supportati tramite l'implementazione di BokuLoader. SMB/TCP attualmente non supportato per obfuscate true. Dettagli nella issue. Accetto aiuto se puoi sistemarlo :)
entry_pointRVA come numero decimaleSupportato tramite l'implementazione di BokuLoader
cleanuptrueSupportato tramite l'integrazione con CS
userwxtrue/falseSupportato tramite l'implementazione di BokuLoader
sleep_mask(true/false) o (Sleepmask Kit+true)Supportato. Quando usi il "sleepmask true" predefinito (senza sleepmask kit) imposta "userwx true". Quando usi il sleepmask kit che supporta la memoria RX beacon.text (src47/Ekko) imposta "sleepmask true" && "userwx false".
magic_mz_x64stringa di 4 caratteriSupportato tramite l'integrazione con CS
magic_pestringa di 2 caratteriSupportato tramite l'integrazione con CS
transform-x64 prependstringa hex con escapeModifica dello script Aggressor BokuLoader.cna
transform-x64 strrepstringa stringaModifica dello script Aggressor BokuLoader.cna
stomppetrue/falseNon supportato. BokuLoader non copia le intestazioni della beacon DLL. I primi 0x1000 byte della beacon DLL virtuale sono 0x00
checksumnumeroSperimentale. Modifica dello script Aggressor BokuLoader.cna
compile_timestringa data-oraSperimentale. Modifica dello script Aggressor BokuLoader.cna
image_size_x64valore decimaleNon supportato
namestringaSperimentale. Modifica dello script Aggressor BokuLoader.cna
rich_headerstringa hex con escapeSperimentale. Modifica dello script Aggressor BokuLoader.cna
stringwstringaNon supportato
stringstringaNon supportato