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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
DLLHijackHunter — 自動化されたDLLハイジャックの発見、検証、確認。ローカルの設定ミスを武器化された確定した攻撃経路に変換します。 | Kitploit
ツール/GitHubGitHub/ghostvectoracademy/dllhijackhunter
特権昇格脆弱性スキャナーペイロード生成永続化メカニズム動的コード分析 (DAST)エクスプロイト横移動ペネトレーションテストバイナリ解析学習と教育レッドチーミング
GitHub
39644174日前Kitploit レビュー済み

人気

すべて見る →

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

すべてのツールを探索

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

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

DLLHijackHunter

自動化されたDLLハイジャックの発見、検証、確認。ローカルの設定ミスを武器化された確定した攻撃経路に変換します。

リポジトリを見る

DLLHijackHunter

By ProjectMerai

自動化されたDLLハイジャックの発見、検証、確認
ローカルの設定ミスを、武器化された確定済みの攻撃経路へと変える。


概要

DLLHijackHunter は、静的解析を超えた自動化されたWindows DLLハイジャック検出ツールです。多段階パイプラインを使用して、DLLハイジャックの機会を発見、検証、確認します:

  1. 発見 — サービス、スケジュールタスク、スタートアップ項目、COMオブジェクト、AutoElevate UACバイパスベクターにわたるバイナリを列挙します
  2. フィルタリング — インテリジェントなハードゲートとソフトゲートを通じて誤検知を排除します
  3. カナリア確認 — 無害なカナリアDLLを展開し、バイナリをトリガーしてハイジャックが機能することを証明します
  4. スコアリングとレポート — 階層化された信頼度システムで悪用可能性に基づいて発見結果をランク付けします

ほとんどのDLLハイジャックツールは「このDLLはハイジャック可能かもしれない」というところで止まります。DLLHijackHunter はそれを検証し、既知のエクスプロイトインテリジェンスと照合し、可能な場合は実際の実行経路を確認しようとします。


アーキテクチャ

root@kitploit:~
flowchart TB
    subgraph Phase1["フェーズ 1: 発見"]
        SE["静的エンジン<br/>サービス、タスク、スタートアップ、<br/>COM、Runキー"]
        AE["AutoElevateエンジン<br/>マニフェスト + COM UACバイパス"]
        PE["PEアナライザー<br/>インポートテーブル、遅延ロード、<br/>マニフェスト、エクスポート"]
        ETW["ETWエンジン<br/>リアルタイムDLLロード<br/>モニタリング"]
        SO["検索順序<br/>計算機"]
    end

    subgraph Phase2["フェーズ 2: フィルターパイプライン"]
        direction LR
        HG["ハードゲート<br/>(バイナリキル)"]
        SG["ソフトゲート<br/>(信頼度調整)"]
    end

    subgraph Phase3["フェーズ 3: ロード検証 (--verify-load)"]
        LP["LoadProbe<br/>子プロセスローダーテスト<br/>プローブDLL配置 &amp; 削除"]
    end

    subgraph Phase4["フェーズ 4: カナリア"]
        CB["カナリアDLLビルダー"]
        TE["トリガー実行器"]
        VF["検証"]
    end

    subgraph Phase5["フェーズ 5: 出力"]
        SC["階層化スコアラー"]
        RC["コンソールレポート"]
        RJ["JSONレポート"]
        RH["HTMLレポート"]
    end

    SE --> PE --> SO
    AE --> PE
    ETW --> SO
    SO --> Phase2
    HG --> SG
    Phase2 --> Phase3
    Phase3 --> Phase4
    CB --> TE --> VF
    Phase4 --> Phase5

主な機能

ハイジャックタイプのカバレッジ

IFEOデバッガーエントリは列挙され、参照されるバイナリはDLLインポートについて分析されますが、専用のIFEO/KnownDLLバイパスハイジャックタイプはありません — これらはスタンドアロンの検出として宣伝されていません。

UACバイパス発見

DLLHijackHunter には専用のUACバイパス発見が含まれています:

  • マニフェストAutoElevate — System32とSysWOW64をスキャンして、埋め込みマニフェストに<autoElevate>true</autoElevate>を含むEXEを探します
  • COM自動昇格 — HKLM\SOFTWARE\Classes\CLSIDをスキャンして、Elevation\Enabled=1を持つCOMオブジェクトを探します
  • サイドロードシミュレーション — SetDllDirectoryまたはSetDefaultDllDirectoriesを呼び出さないAutoElevateバイナリに対して、「EXEを書き込み可能フォルダにコピー + DLLをドロップ」攻撃パスをシミュレートします

ターゲット型脆弱性ナレッジベース

  • ターゲット型脆弱性マッピング — 発見されたインポートを、バンドルされたHijackLibsデータセットのスナップショット(約700の脆弱な実行可能ファイルにわたる約590の文書化されたDLLエントリ)と照合します。Resources/hijacklibs.jsonとして埋め込まれています。一致すると信頼度が上がり、発見結果がHijackLibs参照ページにリンクされます。一致しないことは何も意味しません。データセットはデータ駆動型です — https://hijacklibs.net/api/hijacklibs.jsonを再ダウンロードしてそのリソースに上書きすることで更新できます(コード変更は不要)。データセット© HijackLibsプロジェクトおよび貢献者。
  • 自動化されたPATH悪用 — 書き込み可能なPATHフォルダを評価し、不足しているDLLをPATHで検索することが知られているネイティブWindowsサービスの厳選マップに対してハイジャック候補を生成します
  • 拡張ファントムDLLハンティング — 複数のカテゴリにわたって高価値のファントムDLL機会のライブラリを検索します

フィルターパイプライン

パイプラインは2つの段階を通じて誤検知を削減します:

ハードゲート

  • APIセットスキーマフィルタリング (api-ms-*、ext-ms-*)
  • KnownDLLフィルタリング
  • 攻撃者相対ACL書き込み可能性検証 — パスは、非特権プリンシパル(Users / Authenticated Users / Everyone、およびLOCAL SERVICE/NETWORK SERVICEのようなリーク防止サブ管理者サービスアカウント)が実効書き込み権限を持つ場合にのみ書き込み可能とカウントされます。重要なのは、これはツールが実行されるトークンとは独立して計算されるため、昇格して実行してもSystem32/Program Filesが書き込み可能に見えることはありません。これが、昇格実行をLPEトリアージにとって意味のあるものにしている理由です。

ソフトゲート

  • WinSxSマニフェストペナルティ
  • 特権デルタ分析
  • LoadLibraryEx緩和チェック
  • 署名検証チェック
  • グレースフルエラーハンドリングペナルティ

カナリア確認

推測する代わりに、DLLHijackHunter はハイジャックが機能することを証明しようとします:

root@kitploit:~
sequenceDiagram
    participant H as DLLHijackHunter
    participant B as カナリアDLLビルダー
    participant T as トリガー実行器
    participant V as 被害者バイナリ

    H->>B: カナリアDLLをビルド
    B->>B: プリコンパイル済みカナリアを抽出<br/>(またはMSVCでプロキシをコンパイル)
    B-->>H: canary.dll + 確認ファイルパス
    H->>H: ハイジャックパスにDLLを配置
    H->>T: バイナリ実行をトリガー
    T->>V: サービス開始 / タスク実行 / COMアクティベート
    V->>V: カナリアDLLをロード
    V-->>H: 確認ファイルを書き込み<br/>PID、特権、整合性レベル
    H->>H: 記録: CONFIRMED
    H->>H: カナリアDLLをクリーンアップ

カナリアDLL:

  • x64とx86の両方でプリコンパイル済みで出荷され、スキャナーに埋め込まれているため、スキャン時にコンパイラは不要です。被害者のビットネスに一致する正しいアーキテクチャが選択され、オンデマンドで抽出されます。
  • 自己位置特定型です:実行時に自身のロード済みモジュールパスから確認ファイルパスを導出します(%ProgramData%\DLLHijackHunter\canary_<hash>.confirm)。そのため、1つのバイナリがすべての候補にサービスを提供します。スキャナーはデプロイパスから同じハッシュを計算し、そのファイルをポーリングします。
  • ファイルベースの確認メカニズムを使用します
  • ユーザー、整合性レベル、特権インジケーターなどの実行メタデータをキャプチャします
  • 悪意のあるペイロードは含まれません。厳密に検出および検証メカニズムです
  • CRTを静的にリンクするため、被害者ホスト上にランタイム依存関係(ucrtbase/vcruntime)はありません。

バンドルされたバイナリは、src/DLLHijackHunter/Resources/canary_src.cの監査可能なソースからビルドされ、Resources/build_canary.batで再生成できます(MSVC C++ツールチェーンが必要です。スキャナーには不要です)。

機能プロキシ例外: 検索順序ハイジャックが存在しエクスポートを公開するDLLをターゲットにする場合、確認後にホストを生かし続けるにはエクスポート転送プロキシが必要です。これはMSVC(cl.exe、vswhere/vcvarsallで検出)でDLLごとにコンパイルされます。ツールチェーンがない場合は、プリコンパイル済みカナリアが代わりに使用されます — それでもロードを確認します(DllMainが発火)が、エクスポートを転送しないため、確認が記録された後にホストプロセスがクラッシュする可能性があります。ファントムDLLやその他のエクスポートなし候補はコンパイラをまったく必要としません。

署名: 埋め込まれたカナリアは署名されていません。コード署名(より厳格なポリシーの下でロードされ、帰属可能になるように)には署名証明書が必要であり、メンテナー向けのリリース時ステップとして残されています。

プロキシ/エクスポート転送モードに関する重要な注意

プロキシ/エクスポート転送カナリアは実験的でありベストエフォートです。一部のターゲットは正しくロードできないか、以下によって予期しない動作をする可能性があります:

  • 序数のみのエクスポート
  • 装飾されたエクスポート名
  • 呼び出し規約の不一致
  • ターゲットプロセス内のローダー/ランタイムの前提

つまり、プロキシカナリアの失敗は、基盤となるハイジャックパスが不可能であることを常に意味するわけではありません。


ロード順序検証 (--verify-load)

フィルターパイプラインとカナリアフェーズの間に位置するオプトインの標準ユーザー検証です。該当する各候補について、書き込み可能なハイジャック位置に良性のプローブDLLを一時的に書き込み、その後、短命の子プロセス内の実際のWindowsローダーにDLLを名前で解決するよう要求します。ローダーが解決する場所が判定を決定します:

  • 検証済み勝利 — ローダーが書き込み可能な位置を選択します。検索順序の主張が証明されます(この裏付けにより、発見結果はHigh層に到達できます。カナリア実行のみがConfirmedへの唯一の経路です)。
  • 保護されたものに敗北 — ローダーがKnownDLL、System32コピー、またはSxSリダイレクトコピーを代わりに選択します。その位置はほぼ確実にハイジャック不可能であるため、候補は大幅に降格されます。これにより、静的検索順序計算機が見逃す古典的な誤検知が捕捉されます(例:KnownDLLsが悪用不可能にするntdll.dllの.local/検索順序「発見」)。

設計と安全性のメモ:

  • 子プロセスで実行されるため、スキャナーに既にロードされている名前が結果をショートサーキットできず、ロードの副作用やクラッシュが分離されます。昇格は不要です。
  • 各プローブは配置、解決、そして削除されます。既存のファイルはバックアップされ復元されます。
  • 最新のLOAD_LIBRARY_SEARCH順序をモデル化するため、ファントム / 検索順序 / サイドロード候補にのみ適用されます。.local、PATH、AppInit/AppCert候補は異なるメカニズムを使用するため、スキップとして報告されます。
  • 候補位置にファイルを一時的に書き込みます(中程度の影響)。完全にパッシブな読み取り専用トリアージにはオフのままにしてください。
root@kitploit:~
# ローダー検証済み検索順序による標準ユーザートリアージ(カナリアなし、ETWなし)
.\DLLHijackHunter.exe --lpe-only --no-canary --no-etw --verify-load

比較

¹ プリコンパイル済みデュアルアーキテクチャカナリアが埋め込まれています — ロードを確認するのに**コンパイラは不要**です。オプションのエクスポート転送*プロキシ*(エクスポート消費ホストを生かし続けるため)のみMSVCが必要です。
² 攻撃者相対ACL書き込み可能性による(フィルターパイプラインを参照)。誤検知を削減します — 排除はしません。ソフトゲートヒューリスティック(マニフェスト/SxS/LoadLibraryEx)には依然として不確実性があります。未検証の静的発見結果は現在**High**層未満に制限されています。
³ 自動起動ステータスから導出されたもので、検証済みの再起動テストではありません。
⁴ エクスポート転送プロキシは実験的/ベストエフォートです(上記の注を参照)。
⁵ サービス/タスク/COMトリガーのみ。UACバイパス発見結果はカナリアトリガーされません。
⁶ HijackLibsデータセットのバンドルスナップショット(約590エントリ)によって支えられています。hijacklibs.netから更新可能です。

使用方法

前提条件

  • Windows 10/11 または Windows Server 2016+
  • .NET 8.0 または 10.0 ランタイム(または自己完結型ビルドを使用)
  • 管理者権限推奨(ETW、カナリア展開、一部のサービストリガーに必要)

ビルド

root@kitploit:~
git clone https://github.com/ghostvectoracademy/DLLHijackHunter.git
cd DLLHijackHunter

# ビルド(自己完結型シングルファイル)
dotnet publish src/DLLHijackHunter/DLLHijackHunter.csproj `
    -c Release -r win-x64 --self-contained `
    -p:PublishSingleFile=true -o ./publish

# またはビルドスクリプトを使用
.\build.ps1

クイックスタート

root@kitploit:~
# フルアグレッシブスキャン(推奨、管理者が必要)
.\DLLHijackHunter.exe --profile aggressive

# セーフスキャン(ファイルドロップなし、トリガーなし)
.\DLLHijackHunter.exe --profile safe

# UACバイパス焦点スキャン
.\DLLHijackHunter.exe --profile uac-bypass

# 特定のバイナリをターゲット
.\DLLHijackHunter.exe --target "C:\Program Files\MyApp\app.exe"

# ファイル名でターゲット(部分一致)
.\DLLHijackHunter.exe --target notepad.exe

# 確認済みの発見結果のみ
.\DLLHijackHunter.exe --profile redteam --format json -o report.json

CLIオプション

root@kitploit:~
DLLHijackHunter — 自動化されたDLLハイジャック検出

オプション:
  -p, --profile <profile>        スキャンプロファイル [デフォルト: aggressive]
                                   aggressive | strict | safe | redteam | uac-bypass
  -o, --output <path>            出力ファイルパス(フォーマットを自動検出)
  -f, --format <format>          出力フォーマット [デフォルト: console]
                                   console | json | html
  -t, --target <target>          特定のバイナリ、ディレクトリ、またはファイル名をターゲット
      --min-confidence <value>   最小信頼度しきい値 0-100。省略時は各プロファイルの
                                   しきい値が適用されます。これを渡すと上書きされます。
      --no-canary                カナリア確認を無効化
      --no-etw                   ETWランタイム発見を無効化
      --verify-load              実際のローダーで検索順序を検証(下記参照)。
                                   標準ユーザー。良性プローブを一時的に書き込みます。
      --confirmed-only           カナリア確認済みの発見結果のみ表示
      --lpe-only                 厳格なLPEハンティング:System32/Program Filesを無視し、
                                   標準ユーザー書き込み可能な脆弱性のみ表示
      --log-file <path>          診断スキャンログをファイルに書き込み
  -v, --verbose                  詳細出力

注:--min-confidenceは明示的に渡した場合のみ上書きとして扱われます。それ以外の場合は選択されたプロファイルのしきい値が使用されます(例:safe = 50%、strict = 80%)。

スキャンプロファイル


スコアリング

各発見結果は、最終的な優先順位付け層に結合される信頼度と影響のシグナルを受け取ります。

典型的な影響の考慮事項には以下が含まれます:

  • 獲得される特権
  • トリガーの信頼性
  • ステルス性
  • 再起動永続性

確認済みのカナリア実行は、最も強力な検証シグナルとして扱われるべきです。

層のゲーティング: HighおよびConfirmed層は、証明シグナル(発火したカナリア、ETWランタイムロード観測、または文書化されたナレッジベース一致)によって裏付けられた発見結果のために予約されています。純粋に静的な検索順序の一致は、どれほどクリーンでも、Medium層の最上位に制限され、Static-onlyとして注釈が付けられるため、未検証のヒューリスティックが高信頼度として提示されることはありません。

推奨トリアージ構成

書き込み可能性は攻撃者相対で評価されるため、昇格実行と標準ユーザー実行の両方が意味を持ちます:

  • LPEトリアージの場合、最も信頼できる構成は**--lpe-only付きの標準ユーザー実行**です(コンパイラが利用できない場合は--no-canaryも)。生き残ったすべての発見結果は、非特権プリンシパルによって実際に書き込み可能です。
  • 昇格実行はETWとカナリア確認に必要であり、「System32内のすべてが書き込み可能に見える」という歴史的な逆転から安全になりました。

安全性

DLLHijackHunter は、許可された環境での防御的セキュリティ研究、ラボ検証、監査、レッドチームシミュレーション用に設計されています。

所有している、または評価する明示的な許可があるシステムとネットワークでのみ使用してください。

運用上の注意

  • カナリアモードは候補位置にテストDLLを書き込みます
  • 一部のトリガーは検証中にサービス/タスクを一時的に開始または停止する場合があります
  • プロキシ/エクスポート転送カナリアは脆弱なターゲットを不安定にする可能性があります
  • ファイルドロップとトリガーが許容されない場合、セーフプロファイルが本番トリアージの推奨モードです

出力

DLLHijackHunter は以下をサポートします:

  • コンソールレポート
  • JSONエクスポート
  • HTMLエクスポート

推奨ワークフロー:

  1. 広範なスキャンを実行
  2. 高信頼度の発見結果をレビュー
  3. 高価値パスでカナリア確認を選択的に使用
  4. レポートとトリアージ用にJSON/HTML出力を保存

ライセンス

MIT


クレジット

ProjectMerai によって構築されました。

ツールをダウンロード
タイプ説明ステルス性ステータス
ファントムDLLがディスク上のどこにも存在しない高実装済み
検索順序Windows検索順序のより早い位置にDLLを配置する高実装済み
サイドローディング正規アプリが自ディレクトリからDLLをロードすることを悪用高実装済み (AutoElevateコピー-to-tempパス)
.localリダイレクト.localディレクトリリダイレクションによるハイジャック高実装済み
ENV PATHシステムPATH内の書き込み可能ディレクトリの武器化高実装済み (厳選されたサービス/DLLマップ)
AppInit DLLAppInit_DLLsレジストリ悪用低実装済み
AppCert DLLAppCertDLLsレジストリ悪用 (すべてのCreateProcess/WinExec呼び出し元にロードされる)低実装済み
CWDカレントワーキングディレクトリのハイジャック低計画中 — 現在どの発見パスでも生成されない
機能DLLHijackHunterRobberDLLSpyWinPEASProcmon
自動発見✅✅✅✅❌
ファントムDLL検出✅❌✅❌✅
検索順序分析✅❌❌❌❌
ACLベースの書き込み可能性チェック✅部分的❌基本❌
ETWリアルタイムモニタリング✅❌❌❌✅
カナリア確認✅¹❌❌❌❌
特権昇格チェック✅❌❌❌❌
UACバイパス発見✅❌❌❌❌
誤検知削減✅²なし基本なしなし
再起動永続性チェック✅³❌❌❌❌
プロキシDLL生成✅⁴❌❌❌❌
信頼度スコアリング✅❌❌❌❌
自動トリガー (svc/task/COM)✅⁵❌❌❌❌
HTML/JSONレポート✅❌❌TXT❌
脅威インテリジェンス相関✅⁶❌❌❌❌
自動化されたPATHエクスプロイト✅❌❌❌❌
ターゲット固有スキャン✅❌❌❌✅
自己完結型バイナリ✅❌❌✅❌
プロファイルユースケースカナリアETWUACバイパス最小信頼度トリガー
aggressiveフル監査、ラボ環境✅✅✅15%サービス、タスク、COM
strict高信頼度の発見結果のみ✅✅❌80%サービス、タスク
safe本番システム、読み取り専用❌❌❌50%なし
redteam確認済み悪用可能のみ✅✅❌50%サービス、タスク、COM
uac-bypassUACバイパスベクターのみ❌❌✅20%AutoElevateのみ