Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
BokuLoader — 概念実証のCobalt Strikeリフレクティブローダー。Cobalt Strikeの回避機能を再現、統合、強化することを目的としています! | Kitploit
ツール/GitHubGitHub/boku7/bokuloader
ペネトレーションテストフレームワークエクスプロイトフレームワークシェルコードバイナリ解析レッドチーミングペイロード開発
GitHubboku7/bokuloader

BokuLoader

概念実証のCobalt Strikeリフレクティブローダー。Cobalt Strikeの回避機能を再現、統合、強化することを目的としています!

リポジトリを見る
1.4k2752年前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

BokuLoader : Cobalt Strike リフレクティブローダー

Cobalt Strikeの回避機能を再現、統合、強化することを目的とした、概念実証のユーザー定義リフレクティブローダー (UDRL)です!

貢献者:

貢献者Twitter主な貢献
Bobby Cooke@0xBokuプロジェクトの原作者兼メンテナー
Santiago Pecin@s4ntiago_pリフレクティブローダーの主要な拡張
Chris Spehn@ConsciousHackerアグレッサースクリプティング
Joshua Magri@passthehashbrwnIATフック
Dylan Tran@d_tranmanリフレクティブコールスタックスプーフィング
James Yeung@5cript1diot間接システムコール

UDRL使用上の注意

Cobalt Strikeに組み込まれているCobalt Strikeリフレクティブローダーは堅牢で、Cobalt Strikeが提供するすべてのMalleable PE回避機能を処理できます。カスタムUDRLを使用する最大の欠点は、Malleable PE回避機能が標準でサポートされる場合とされない場合があることです。

公開BokuLoaderプロジェクトの目的は、レッドチームが独自の社内Cobalt Strike UDRLを作成するのを支援することです。このプロジェクトは、価値のあるすべてのCS Malleable PE回避機能をサポートすることを目指しています。一部の回避機能はCS統合を活用し、他の機能は完全に再作成され、一部はサポートされていません。

このプロジェクトをいかなる形でも使用する前に、回避機能が意図したとおりに動作することを適切にテストする必要があります。Cコードとアグレッサースクリプトの間で、異なるバージョンのオペレーティングシステム、コンパイラ、Javaを使用したコンパイルにより、異なる結果が返される可能性があります。

回避機能

BokuLoader固有の回避機能

  • シンセティックフレームによるリフレクティブコールスタックスプーフィング。
  • カスタムASM/Cリフレクティブローダーコード
  • HellsGateおよびHalosGate技術による間接NTシステムコール
    • すべての割り当てオプションに対するメモリ保護の変更は、NtProtectVirtualMemoryへの間接システムコールを介して行われます。
  • カスタムUDRLアグレッサースクリプト実装によるobfuscate "true"
  • NOHEADERCOPY
    • ローダーはヘッダーをrawビーコンDLLから仮想ビーコンDLLにコピーしません。最初の0x1000バイトはヌルになります。
  • シンボル解決のためのXGetProcAddress
    • Kernel32.GetProcAddressを使用しません。
  • DLLのベースアドレス解決とDLLロードのためのxLoadLibrary
    • ロードされたDLLの場合、TEB->PEB->PEB_LDR_DATA->InMemoryOrderModuleListからDLLベースアドレスを取得します。
    • Kernel32.LoadLibraryAを使用しません。
  • 文字列難読化のためのシーザー暗号
  • 100k UDRLサイズ
  • インポートDLL名とインポートエントリ名文字列は、仮想ビーコンDLL内で上書きされます。

サポートされているMalleable PE回避機能

テスト

  • (2/22/23) 4つのアロケーター方式すべてをthreatexpress/malleable-c2/master/jquery-c2.4.7.profileでテスト済み

プロジェクトの起源

  • Stephen Fewerの素晴らしいReflective Loaderプロジェクトに基づく:
    • https://github.com/stephenfewer/ReflectiveDLLInjection
  • 当初は、Sektor7 Malware Developer Intermediate (MDI) CourseのRenz0hのReflective DLLビデオを学習中に作成されました。

使用方法

  1. makeでBokuLoaderオブジェクトファイルをコンパイル
  2. Cobalt Strike Team Serverを起動
  3. Cobalt Strike内でBokuLoader.cnaアグレッサースクリプトをインポート
  4. x64ビーコンを生成 (Attacks -> Packages -> Windows Executable (S))
  5. Script Consoleを使用して、ビーコンビルドにBokuLoaderが実装されていることを確認
  • x86オプションはサポートしていません。x86 binは元のReflective Loaderオブジェクトファイルです。
  • RAWビーコンの生成はそのまま動作します。ビーコンローダーにArtifact Kitを使用する場合、stagesize変数はデフォルトより大きくする必要があります。
    • 詳細については、Cobalt Strike User-Defined Reflective Loaderドキュメントを参照してください。

検出ガイダンス

ハードコードされた文字列

  • BokuLoaderは、一般的に検出される一部の文字列を新しいハードコードされた値に変更します。これらの文字列はBokuLoaderのシグネチャに使用できます。
元のCobalt Strike文字列BokuLoader Cobalt Strike文字列
ReflectiveLoaderBokuLoader
Microsoft Base Cryptographic Provider v1.012367321236742382543232341241261363163151d
(admin)(tomin)
beaconbacons

メモリアロケーター

DLLモジュール上書き

  • ディスクからDLLをマッピングするためにKernel32.LoadLibraryExAが呼び出されます。
  • Kernel32.LoadLibraryExAの第3引数はDONT_RESOLVE_DLL_REFERENCES (0x00000001)です。
    • システムはDllMainを呼び出しません。
  • MDSecのこちらで詳述されているように、LDR PEBエントリ内のアドレスを解決しません。
  • pe-sieveツールでプロセスメモリをスキャンすることで検出可能です。

ヒープ割り当て

  • sleepmask kitが使用されていない場合、実行可能なRXまたはRWXメモリがヒープに存在します。

マップドアロケーター

  • 仮想ビーコンDLLのメモリを割り当てるために、Kernel32.CreateFileMappingAとKernel32.MapViewOfFileが呼び出されます。

Sleepmask検出

  • sleepmask kitが使用されている場合、この独立したメモリ割り当ての検出方法が存在します(MDSecのこちらで詳述)。

間接システムコール

  • BokuLoaderは、ロードされた実行可能ビーコンメモリを設定するために、以下のNTシステムコールを呼び出します: NtAllocateVirtualMemory, NtProtectVirtualMemory
  • これらはBokuLoader実行可能メモリから間接的に呼び出されます。
  • ntdll.dllにユーザーランドフックを設定しても、これらのシステムコールは検出されません。
  • カーネルドライバを使用してカーネルコールバックを登録し、上記のシステムコールを監視してその使用を検出できる可能性があります。
  • BokuLoader自体は、その実行可能メモリ内にmov eax, r11d; mov r11, r10; mov r10, rcx; jmp r11アセンブリ命令を含みます。

仮想ビーコンDLLヘッダー

  • 仮想ビーコンDLLの最初の0x1000バイトはゼロです。

ソースコード利用可能

  • BokuLoaderのソースコードはリポジトリ内で提供されており、メモリシグネチャの作成に使用できます。
  • 追加の検出ガイダンスがあれば、プルリクエストを送信して自由に貢献してください。

クレジット / 参考文献

リフレクティブコールスタックスプーフィング

  • LoudSunRun: 間接システムコールによるコールスタックシンセティックフレームスプーファー
  • SilentMoonwalk: 完全動的コールスタックスプーファーのPoC実装
  • Vulcan Raven: システムコール時の任意のコールスタックスプーフィングのPoC実装
  • CallStackMasker: タイマーを使用した動的コールスタックマスキングのPoC実装
  • ThreadStackSpoofer: スレッドスタックスプーフィングPoC
  • Behind the Mask: タイマーによる動的コールスタックスプーフィング

リフレクティブローダー

  • https://github.com/stephenfewer/ReflectiveDLLInjection
  • リフレクティブDLLに興味がある場合は、これらのビデオをチェックしてください:
    • Import Address Table (IAT) との共演 - Sektor 7 MDIコース
    • Export Address Tableをウォークスルー - Sektor 7 MDIコース
    • リフレクティブインジェクションの解説 - Sektor 7 MDIコース
    • ReflectiveLoaderソースレビュー - Sektor 7 MDIコース
  • TitanLdr
  • AceLdr
  • KaynLdr

HalosGateシステムコーラー

  • Reenz0h from @SEKTOR7net
    • Reenz0hの素晴らしいコースとブログをチェックしてください!
    • 私が受講したマルウェア開発の最高のクラスです。
    • halos gateテクニックの作成者。彼の研究がこの作業の当初の動機でした。
    • Sektor7 HalosGateブログ

HellsGateシステムコーラー

  • @smelly__vx & @am0nsec ( Hells Gateテクニックの作成者/公開者 )
    • 彼らなしでは私のHellsGate実装はできませんでした :)
    • この方法に関する素晴らしい仕事、自分でも試してみて本当に楽しかったです。ありがとう!
    • https://github.com/am0nsec/HellsGate
    • Hell's Gate論文へのリンク: https://vxug.fakedoma.in/papers/VXUG/Exclusive/HellsGate.pdf

アグレッサースクリプティング

  • sinusoid @the_bit_diddler : returnIntegerFromArray

Cobalt Strike ユーザー定義リフレクティブローダー

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

Intel ASM学習のための優れたリソース

  • Pentester Academy - SLAE64

ETWおよびAMSIバイパス

  • @anthemtotheego inline-ExecuteAssembly
  • @mariuszbit - リフレクティブローダーにバイパスを実装する素晴らしいアイデアを提供してくれたことに感謝!
  • @XPN Hiding Your .NET – ETW
  • ajpc500/BOFs
  • Offensive Security OSEP

GCCを使用したCコードでのASM実装

  • 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

Cobalt Strike C2プロファイル

  • Tylousの壮大なSourcePointプロジェクト
  • threatexpress/malleable-c2/jquery-c2.4.7.profile
ツールをダウンロード
コマンドオプションサポート状況
allocatorHeapAlloc, MapViewOfFile, VirtualAllocすべてBokuLoader実装によりサポート
module_x64string (DLL Name)BokuLoader実装によりサポート。 CS実装と同じDLL上書き要件が適用されます
obfuscatetrue/falseHTTP/SビーコンはBokuLoader実装によりサポート。SMB/TCPはobfuscate true現在サポートされていません。詳細はissueをご覧ください。修正できる方はヘルプを受け付けています :)
entry_pointRVA as decimal numberBokuLoader実装によりサポート
cleanuptrueCS統合によりサポート
userwxtrue/falseBokuLoader実装によりサポート
sleep_mask(true/false) または (Sleepmask Kit+true)サポート。デフォルトの"sleepmask true"(sleepmask kitなし)を使用する場合は"userwx true"を設定。RXビーコン.textメモリ(src47/Ekko)をサポートするsleepmask kitを使用する場合は"sleepmask true" && "userwx false"を設定。
magic_mz_x644 char stringCS統合によりサポート
magic_pe2 char stringCS統合によりサポート
transform-x64 prependescaped hex stringBokuLoader.cna アグレッサースクリプト修正
transform-x64 strrepstring stringBokuLoader.cna アグレッサースクリプト修正
stomppetrue/false未サポート。BokuLoaderはビーコンDLLヘッダーをコピーしません。仮想ビーコンDLLの最初の0x1000バイトは0x00です。
checksumnumber実験的。BokuLoader.cna アグレッサースクリプト修正
compile_timedate-time string実験的。BokuLoader.cna アグレッサースクリプト修正
image_size_x64decimal value未サポート
namestring実験的。BokuLoader.cna アグレッサースクリプト修正
rich_headerescaped hex string実験的。BokuLoader.cna アグレッサースクリプト修正
stringwstring未サポート
stringstring未サポート