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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
BOF_RunPe — コンソールを作成せずに Cobalt Strike Beacon 上で PE を実行する BOF | Kitploit
ツール/GitHubGitHub/ntdallas/bof_runpe
メモリフォレンジックシェルコードポストエクスプロイトレッドチーミング
GitHubntdallas/bof_runpe

BOF_RunPe

コンソールを作成せずに Cobalt Strike Beacon 上で PE を実行する BOF

リポジトリを見る
2002529ヶ月前Kitploit レビュー済み

人気

すべて見る →

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

すべてのツールを探索

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

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

BOF_RunPE

BOF RunPE は、beacon プロセス内で PE ファイルを完全にメモリ上で実行する Cobalt Strike 用の Beacon Object File です。従来の fork&run とは異なり、子プロセスは生成されず、コンソールも作成されず、パイプも使用されません。すべての出力は IAT フッキングを介して取得され、beacon コンソールにリダイレクトされます。

アーキテクチャ: x64 のみ

概要

root@kitploit:~
┌──────────────────────────────────────────────────────────────┐
│                   Cobalt Strike Beacon                       │
│                    (Current Process)                         │
└────────────────────────┬─────────────────────────────────────┘
                         │
                         │  beacon_inline_execute()
                         │
                         ▼
┌──────────────────────────────────────────────────────────────┐
│                    BOF RunPE                                 │
│  ┌────────────────────────────────────────────────────────┐  │
│  │  VxTable + Draugr Initialization                       │  │
│  │  (Syscall Resolution + Stack Spoofing)                 │  │
│  └──────────────────────┬─────────────────────────────────┘  │
│                         │                                    │
│  ┌──────────────────────▼─────────────────────────────────┐  │
│  │  PE Mapping                                            │  │
│  │  - Section Copy    - IAT Patching (with hooks)         │  │
│  │  - Relocations     - Memory Protection                 │  │
│  └──────────────────────┬─────────────────────────────────┘  │
│                         │                                    │
│  ┌──────────────────────▼─────────────────────────────────┐  │
│  │  Thread Execution                                      │  │
│  │  - Spoofed Start Address                               │  │
│  │  - RIP Hijacking to Entry Point                        │  │
│  │  - Output Redirection via Hooks                        │  │
│  └────────────────────────────────────────────────────────┘  │
└──────────────────────────────────────────────────────────────┘

主な機能

  • プロセス生成なし: PE は beacon プロセス内で実行されます
  • コンソール/パイプなし: 出力は printf/WriteConsole フックを介して取得されます
  • 複数の割り当て方法: Heap、VirtualAlloc、Module Stomping
  • プロキシ読み込み: Timer Queue、RegisterWait、または直接呼び出し
  • Ntdll アンフッキング: ディスクからの新しいコピーをオプションで使用
  • RWX: メモリを RWX で割り当てるオプション
  • スレッド開始アドレスのスプーフィング: RIP ハイジャックによる正規の開始アドレス

設定オプション

BOF の動作は、Additionals postex -> RunPe Config で編集できます。

Custom BOF

プロキシ方式

MethodDescription
None直接 API 呼び出し
Draugrスタックスプーフィングされた API 呼び出し
RegwaitRegisterWaitForSingleObject コールバック

割り当て方式

MethodDescription
HeapDraugr を使用した RtlCreateHeap によるプライベートヒープ
VirtualAllocDraugr を使用した NtAllocateVirtualMemory
Module stomping正規 DLL の .text セクションを上書き

一般オプション

OptionDescription
AllocRWX

スレッドスプーフィング

OptionDescription
ModuleName開始アドレス用の正規モジュール(例: Kernel32.dll)
ProcedureNameモジュール内の関数名(例: BaseThreadInitThunk)

出力キャプチャ

すべての PE 出力は IAT フックを介して beacon コンソールにリダイレクトされます。コンソールウィンドウや名前付きパイプは作成されません。

回避技術

検出ベクトル

カーネルテレメトリ(ETW-TI)

NtGetContextThread / NtSetContextThread:

  • 中断されたスレッドのコンテキストを操作してから再開する

メモリ操作:

  • NtAllocateMemory による割り当て。RWX にすることが可能(設定に依存)
  • NtProtectVirtualMemory の遷移(RW → RX)
  • ヒープ領域内の実行可能メモリは疑わしい(設定に依存)
  • モジュールストンピングはセクションハッシュの不一致で検出可能(設定に依存)

行動インジケーター

  • 中断されたスレッドが作成され、コンテキストを取得した後に RIP の値が変更される
  • ヒープメモリが実行可能としてマークされる(メモリ割り当てがヒープの場合)
  • DLL が DONT_RESOLVE_DLL_REFERENCES で読み込まれる(メモリ割り当てがモジュールストンピングの場合)
  • ntdll の .text セクションが変更される(アンフッキングが有効な場合)

使用方法

スクリプトの読み込み

root@kitploit:~
Cobalt Strike → Script Manager → Load → BOF_RunPe.cna

Aggressor コマンド

root@kitploit:~
beacon> runpe /path/to/binary.exe --arg1 value1

Mimikatz

root@kitploit:~
beacon> help runpe

Help

コンパイル

GCC 13(mingw-w64)が必要です。付属の Dockerfile を使用してください:

root@kitploit:~
sudo docker build -t ubuntu-gcc-13 .
sudo docker run --rm -it -v "$PWD":/work -w /work ubuntu-gcc-13:latest make

出力: Bin/runpe.o

制限事項

LimitationDescription
CETControl-flow Enforcement Technology が合成スタックフレームをブロックする可能性があります
x64 のみx86/WoW64 はサポートされていません

クレジット / 開発に使用したリソース

リポジトリ/ブログ記事

  • https://github.com/susMdT/LoudSunRun
  • https://github.com/Octoberfest7/Inline-Execute-PE
  • https://www.coresecurity.com/core-labs/articles/running-pes-inline-without-console
  • https://0xdarkvortex.dev/proxying-dll-loads-for-hiding-etwti-stack-tracing/

書籍

  • Windows Native API Programming(著: Pavel Yosifovich)
  • Windows Internals, Part 1(著: Pavel Yosifovich)
  • Windows Internals, Part 2(著: Andrea Allievi)
ツールをダウンロード
TimerTimer Queue コールバック
RWX として割り当て(RW→RX 遷移の代わりに)
UnhookNtdllntdll.dll の .text をディスクからの新しいコピーに置き換え
Timeout実行タイムアウト(ミリ秒単位、0 = 無制限)
StompModuleモジュールストンピング用 DLL パス(例: chakra.dll)
Offset
関数先頭からのオフセット
Hooked FunctionTarget
GetCommandLineA/Wスプーフィングされた引数を返す
__getmainargs / __wgetmainargsCRT 引数の初期化
printf / wprintfBeaconPrintf へのリダイレクト
WriteConsoleA/WBeaconPrintf へのリダイレクト
__stdio_common_vfprintfUCRT の print 関数
ExitProcess / exitExitThread に変換
TechniqueBypasses
間接システムコールユーザーランド API フック(EDR/AV)
Draugr スタックスプーフィングコールスタック検査
スレッド開始アドレスのスプーフィングスレッド開始アドレスの分析
モジュールストンピングバックされていないメモリの検出
プライベートヒープ割り当てVirtualAlloc の監視
Ntdll アンフッキングディスク上の ntdll でメモリ内 ntdll を上書き
IAT フッキング(パイプなし)名前付きパイプの監視
カーネル可視性スレッド作成がカーネルコールバックに可視
.NETマネージド実行ファイルはサポートされていません