Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
Spartacus — Spartacus DLL/COM ハイジャッキングツールキット | Kitploit
ツール/GitHubGitHub/accenture/spartacus
防御ツールペイロード生成コード分析エクスプロイトリバースエンジニアリングペネトレーションテストバイナリ解析レッドチーミングArchived
GitHubaccenture/spartacus

Spartacus

Spartacus DLL/COM ハイジャッキングツールキット

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

人気

すべて見る →

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

すべてのツールを探索

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

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

[!CAUTION]
このリポジトリはメンテナンスされていません。最新バージョンについては https://github.com/sadreck/Spartacus をご覧ください。

Spartacus DLL/COM Hijacking Toolkit version

なぜ「Spartacus」なのか?

1960年の映画『スパルタカス』をご覧になったことがあれば、ローマ人がスパルタカスに出頭するよう要求する場面を覚えているでしょう。本物のスパルタカスが立ち上がった瞬間、他の多くの人々も立ち上がり、「私はスパルタカスだ」と名乗り出ました。

DLLハイジャックに対して脆弱なプロセスがDLLの読み込みを要求するとき、それは「VERSION.DLLは誰だ?」と尋ねているようなもので、ランダムなディレクトリが「私がVERSION.DLLだ」「いいえ、私がVERSION.DLLだ」と主張し始めます。そしてそれがSpartacusです。

このツールは他のハイジャックツールと何が違うのか?

  • Spartacusはプロセスの大部分を自動化します。生のSysInternals Process Monitorログを解析し、ProcMonを何時間も実行して2次・3次のDLL/COMハイジャック脆弱性(つまり、親アプリの特定機能を使うと別のDLLを読み込み、さらに別のDLLを読み込むアプリ)を発見できます。
  • 脆弱なDLL用のVisual Studioソリューションを自動生成します。
  • 大きなPMLファイルを処理し、すべての関心イベントをCSVファイルに出力できます。ローカルベンチマークでは、800万イベントを含む3GBのファイルを45秒で処理しました。
  • DLLハイジャックとCOMハイジャックの両方の脆弱性スキャンをサポートします。
  • 自己署名証明書の生成とDLLファイルへの署名をサポートします。
  • Ghidra機能を利用して、エクスポート関数のシグネチャを抽出し、DllMainからすべてを実行する代わりに、個別にプロキシされた関数を介してペイロードを実行できます。この手法は、https://www.redteam.cafe/red-team/dll-sideloading/dll-sideloading-not-by-dllmain のShantanu Khandelwalによるウォークスルーに触発され実装されました。
  • [防御] 実行中のアプリケーションが呼び出しをプロキシしている(「DLLハイジャック進行中」)ことを特定しようとする監視モード。これは簡単に見つかる脆弱性を拾うためのもので、これに依存すべきではありません。

目次

  • インストール
  • サポートされる機能
    • DLLハイジャック
      • 使用方法
    • COMハイジャック
      • 使用方法
    • DLLプロキシ生成
      • 使用方法
    • DLLファイルへの署名
      • 使用方法
    • DLLハイジャック検出
  • コマンドライン引数
  • コントリビューション
  • クレジット

インストール

Spartacusの最新バージョンはReleasesから見つけてダウンロードしてください。あるいは、単にこのリポジトリをクローンしてソースからビルドしてください。

サポートされる機能

以下は、Spartacusがサポートする各モードの説明です。

注: v1からv2でコマンドライン引数が大幅に変更されました。

DLLハイジャック

Spartacusの本来の機能は、DLLハイジャック脆弱性を見つけることだけでした。動作方法は以下の通りです。

  1. 渡された引数に基づいて、その場でProcMon(PMC)設定ファイルを生成します。設定されるフィルターは次の通りです。
    • 操作は CreateFile。
    • パスが .dll で終わる。
    • プロセス名が procmon.exe または procmon64.exe ではない。
    • PML出力サイズを最小限に抑えるため Drop Filtered Events を有効化。
    • Auto Scroll を無効化。
  2. Process Monitor を実行し、ユーザーが ENTER を押すまで停止します。
  3. ユーザーはプロセスを実行/終了するか、必要なだけ実行し続けます。
  4. ユーザーが ENTER を押すと Process Monitor を終了します。
  5. 出力イベントログ(PML)ファイルを解析します。
    1. NAME_NOT_FOUND および PATH_NOT_FOUND のDLLすべてを含むCSVファイルを作成します。
    2. 上記のDLLを比較し、実際に読み込まれたDLLを特定しようとします。
    3. 見つかったDLLごとに、そのDLLのすべてのエクスポート関数をプロキシするためのVisual Studioソリューションを生成します。

DLLハイジャックの使用方法

すべてのイベントを収集し、C:\Data\logs.pml に保存します。脆弱なDLLは C:\Data\VulnerableDLLFiles.csv に、プロキシDLLソリューションは C:\Data\Solutions に保存されます。

--mode dll --procmon C:\SysInternals\Procmon.exe --pml C:\Data\logs.pml --csv C:\Data\VulnerableDLLFiles.csv --solution C:\Data\Solutions --verbose

既存のPMLイベントログ出力を解析し、CSVに出力し、プロキシVisual Studioソリューションを生成します。

--mode dll --existing --pml C:\MyData\SomeBackup.pml --csv C:\Data\VulnerableDLLFiles.csv --solution C:\Data\Solutions --verbose

スクリーンショット

DLL Runtime

CSV Output

COMハイジャック

Spartacusの新機能として、ローカルCOMハイジャック脆弱性を特定することができます。動作方法は以下の通りです。

  1. 渡された引数に基づいて、その場でProcMon(PMC)設定ファイルを生成します。設定されるフィルターは次の通りです。
    • 操作は RegOpenKey。
    • プロセス名が procmon.exe または procmon64.exe ではない。
    • PML出力サイズを最小限に抑えるため Drop Filtered Events を有効化。
    • Auto Scroll を無効化。
  2. Process Monitor を実行し、ユーザーが ENTER を押すまで停止します。
  3. ユーザーはプロセスを実行/終了するか、必要なだけ実行し続けます。
  4. ユーザーが ENTER を押すと Process Monitor を終了します。
  5. 出力イベントログ(PML)ファイルを解析します。
    1. 末尾が InprocServer32 で結果が NAME_NOT_FOUND のすべての欠落したレジストリキーを特定します。
    2. 特定されたキーが HKEY_CURRENT_USER の下にある場合、HKEY_CLASSES_ROOT の下でそのGUIDを検索し、見つかった場合はその詳細をエクスポートCSVに含めます。
    3. 収集したすべての情報を含むCSV出力を作成します。
  6. SpartacusはCOMハイジャック用のVisual Studioソリューションを自動的に作成しませんが、プロキシDLLが必要な場合は proxy モードを使用できます。

COMハイジャックでは、Spartacusはローカルシステムの誤設定されたCOMエントリのスキャンもサポートしています。

  1. HKEY_CLASSES_ROOT、HKEY_CURRENT_USER、HKEY_LOCAL_MACHINE のすべてを列挙します。
  2. InProcServer、InProcServer32、LocalServer、または LocalServer32 と呼ばれるレジストリキーを探します。
  3. 欠落しているEXE/DLLの場所、および現在のユーザーがファイルを変更または削除できるACLの誤設定を特定します。

COMハイジャックの使用方法

すべてのイベントを収集し、C:\Data\logs.pml に保存します。脆弱なCOM情報は C:\Data\VulnerableCOM.csv に保存されます。

--mode com --procmon C:\SysInternals\Procmon.exe --pml C:\Data\logs.pml --csv C:\Data\VulnerableCOM.csv --verbose

既存のPMLファイルを処理して脆弱なCOMエントリを特定します。

--mode com --existing --pml C:\Data\logs.pml --csv C:\Data\VulnerableCOM.csv --verbose

ローカルシステムのレジストリを列挙して、欠落または誤設定されたCOMライブラリと実行可能ファイルを特定します。

--mode com --acl --csv C:\Data\VulnerableCOM.csv --verbose

スクリーンショット

COM Runtime

CSV Output

DLLプロキシ生成

Spartacusは、悪用したいDLLに基づいてスケルトンプロジェクトを作成し、Visual Studioソリューションを生成することをサポートしています。

  • 正規のDLLに関数をエクスポートしてすべての呼び出しをリダイレクトします。
    • つまり、DllMain 関数からペイロードを実行する必要があります。
  • Ghidraを使用して、ターゲットDLLから可能な限り多くの関数シグネチャ/定義を抽出し、それらのプロキシ関数を作成します。
    • シグネチャを抽出できなかった関数については、正規の関数/DLLに直接リダイレクトされます。
    • つまり、DllMain 以外の関数からペイロードを実行できます。
    • 例えば、version.dll を悪用する場合、脆弱なアプリケーションによって呼び出される GetFileVersionInfoExW からインプラントを実行できます。

DLLプロキシ生成の使用方法

すべてのエクスポートをリダイレクトするソリューションを生成します(関数プロキシなし)。

--mode proxy --dll C:\Windows\System32\version.dll --solution "C:\data\tmp\refactor-version" --overwrite --verbose --external-resources

複数のDLLを同時に入力することも可能です。

--mode proxy --dll C:\Windows\System32\version.dll --dll C:\Windows\System32\userenv.dll --solution "C:\data\tmp\dll-collection" --overwrite --verbose --external-resources

可能な限り多くの関数のプロキシを作成します(Ghidraの出力に基づく)。

--mode proxy --ghidra C:\ghidra\support\analyzeHeadless.bat --dll C:\Windows\System32\userenv.dll --solution C:\Projects\spartacus-userenv --overwrite --verbose

上記と同じですが、外部アセットファイルを使用してソリューションを生成します(変更が必要な場合)。

--mode proxy --ghidra C:\ghidra\support\analyzeHeadless.bat --dll C:\Windows\System32\userenv.dll --solution C:\Projects\spartacus-userenv --overwrite --verbose --external-resources

Ghidraが関数定義を抽出できなかった関数のために、事前に生成された関数プロトタイプを利用します。

--mode proxy --ghidra C:\ghidra\support\analyzeHeadless.bat --dll C:\Windows\System32\userenv.dll --solution C:\Projects\spartacus-userenv --overwrite --verbose --external-resources --prototypes C:\data\prototypes.csv

GetFileVersionInfoExW と GetFileVersionInfoExA 関数のみのプロキシを生成します。

--mode proxy --ghidra C:\ghidra\support\analyzeHeadless.bat --dll C:\Windows\System32\version.dll --solution C:\Projects\spartacus-version --verbose --overwrite --external-resources --only "GetFileVersionInfoExW, GetFileVersionInfoExA"

既存の *.h ファイルから関数プロトタイプデータベースを生成し、Ghidraが関数定義を抽出できなかった関数のプロキシ生成を支援します。

--mode proxy --action prototypes --path "C:\Program Files (x86)\Windows Kits" --csv C:\data\prototypes.csv --verbose

DLLのエクスポートを一覧表示し、各関数に事前に生成されたプロトタイプがあるかどうかを確認します。

--mode proxy --action exports --dll C:\Windows\System32\version.dll --dll C:\Windows\System32\amsi.dll --prototypes ./Assets/prototypes.csv

DLLファイルへの署名

Spartacusは現在、自己署名証明書の生成(既存ファイルから属性をコピーしながら)とDLLファイルへの署名をサポートしています。

DLLファイルへの署名の使用方法

C:\Windows\System32\version.dll(署名済みDLLである必要があります)のプロパティを使用して署名証明書を作成します。

ツールをダウンロード