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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
BokuLoader — Cobalt Strike の回避機能を再現・統合・強化することを目的とした、概念実証用の Cobalt Strike Reflective Loader です! | Kitploit
ツール/GitHubGitHub/xforcered/bokuloader
ペネトレーションテストフレームワークIDS/IPS回避ポストエクスプロイトコマンド&コントロールレッドチーミングペイロード開発敵対的攻撃
GitHubxforcered/bokuloader

BokuLoader

Cobalt Strike の回避機能を再現・統合・強化することを目的とした、概念実証用の Cobalt Strike Reflective Loader です!

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

人気

すべて見る →

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

すべてのツールを探索

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

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

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

Cobalt Strikeのエイベージョン機能を再現、統合、強化することを目的とした、概念実証(PoC)のユーザー定義リフレクティブローダー(UDRL)です。

貢献者:

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

UDRL使用上の考慮事項

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

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

このプロジェクトをいかなる形であれ使用する前に、エイベージョン機能が意図どおりに動作するか適切にテストしてください。CコードとAggressorスクリプトの間では、オペレーティングシステム、コンパイラ、Javaのバージョンが異なると、コンパイル結果が異なる場合があります。

エイベージョン機能

BokuLoader固有のエイベージョン機能

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

サポートされているMalleable PEエイベージョン機能

テスト

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

プロジェクトの起源

  • Stephen Fewer氏の素晴らしいリフレクティブローダープロジェクトに基づく:
    • https://github.com/stephenfewer/ReflectiveDLLInjection
  • 当初はSektor7 Malware Developer Intermediate (MDI)コースのRenz0h氏によるReflective DLLビデオに取り組みながら作成されました。

使用方法

  1. makeを使用してBokuLoaderオブジェクトファイルをコンパイルします。
  2. Cobalt Strike Team Serverを起動します。
  3. Cobalt Strike内でBokuLoader.cna Aggressorスクリプトをインポートします。
  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キットを使用しない場合、実行可能なRXまたはRWXメモリがヒープ内に存在します。

マップドアロケータ

  • 仮想beacon DLL用のメモリを割り当てるために、Kernel32.CreateFileMappingAおよびKernel32.MapViewOfFileが呼び出されます。

Sleepmaskの検知

  • sleepmaskキットを使用する場合、この独立したメモリ割り当てに対する検知方法が存在します(MDSecによるこちらの詳細を参照)。

間接システムコール

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

仮想ビーコンDLLヘッダー

  • 仮想beacon DLLの最初の0x1000バイトはゼロです。

ソースコードの入手

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

クレジット / 参考文献

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

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

リフレクティブローダー

  • https://github.com/stephenfewer/ReflectiveDLLInjection
  • Reflective DLLに興味がある場合は、これらのビデオをチェックしてください:
    • Import Address Table(IAT)と踊る - Sektor 7 MDIコース
    • Export Address Tableを巡る - Sektor 7 MDIコース
    • Reflective Injectionの解説 - Sektor 7 MDIコース
    • ReflectiveLoaderソースレビュー - Sektor 7 MDIコース
  • TitanLdr
  • AceLdr
  • KaynLdr

HalosGateシステムコーラー

  • @SEKTOR7netのReenz0h氏
    • Reenz0h氏の素晴らしいコースとブログをチェックしてください!
    • 私が受講したマルウェア開発コースの中で最高のものです。
    • Halos Gateテクニックの考案者です。彼の研究が当初このプロジェクトの動機となりました。
    • Sektor7 HalosGate Blog

HellsGateシステムコーラー

  • @smelly__vx & @am0nsec(Hells Gateテクニックの作者/公開者)
    • 彼らなしでは私のHellsGate実装は作れませんでした :)
    • この手法に関する素晴らしい研究です。私自身も実際に試してとても楽しめました。ありがとうございます!
    • https://github.com/am0nsec/HellsGate
    • Hell's Gateペーパー: https://vxug.fakedoma.in/papers/VXUG/Exclusive/HellsGate.pdfへのリンク

Aggressorスクリプティング

  • 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) or (Sleepmask Kit+true)サポート。デフォルトの"sleepmask true"(sleepmaskキットなし)を使用する場合は"userwx true"を設定してください。RX beacon.textメモリ(src47/Ekko)をサポートするsleepmaskキットを使用する場合は、"sleepmask true" && "userwx false"を設定してください。
magic_mz_x644 char stringCS統合でサポート
magic_pe2 char stringCS統合でサポート
transform-x64 prependescaped hex stringBokuLoader.cna Aggressorスクリプトの変更
transform-x64 strrepstring stringBokuLoader.cna Aggressorスクリプトの変更
stomppetrue/false非サポート。BokuLoaderはbeacon DLLのヘッダーをコピーしません。仮想beacon DLLの最初の0x1000バイトは0x00です。
checksumnumber実験的。BokuLoader.cna Aggressorスクリプトの変更
compile_timedate-time string実験的。BokuLoader.cna Aggressorスクリプトの変更
image_size_x64decimal value非サポート
namestring実験的。BokuLoader.cna Aggressorスクリプトの変更
rich_headerescaped hex string実験的。BokuLoader.cna Aggressorスクリプトの変更
stringwstring非サポート
stringstring非サポート