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

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

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

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

ツールディレクトリ

カテゴリ

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

人気

すべて見る →

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

すべてのツールを探索

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

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

DLLHijackHunter

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

リポジトリを見る

DLLHijackHunter

By ProjectMerai

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


概要

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

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

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


アーキテクチャ

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

主な機能

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

タイプ説明ステルス性ステータス
ファントムDLLがディスク上のどこにも存在しない高実装済み
検索順序Windows検索順序のより早い位置にDLLを配置する高実装済み
サイドローディング正規アプリが自ディレクトリからDLLをロードすることを悪用高実装済み (AutoElevateコピー-to-tempパス)
.localリダイレクト.localディレクトリリダイレクションによるハイジャック高実装済み
ENV PATHシステムPATH内の書き込み可能ディレクトリの武器化高実装済み (厳選されたサービス/DLLマップ)
AppInit DLLAppInit_DLLsレジストリ悪用低実装済み
AppCert DLLAppCertDLLsレジストリ悪用 (すべてのCreateProcess/WinExec呼び出し元にロードされる)低実装済み
CWDカレントワーキングディレクトリのハイジャック低計画中 — 現在どの発見パスでも生成されない

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 はハイジャックが機能することを証明しようとします:

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候補は異なるメカニズムを使用するため、スキップとして報告されます。
  • 候補位置にファイルを一時的に書き込みます(中程度の影響)。完全にパッシブな読み取り専用トリアージにはオフのままにしてください。
# ローダー検証済み検索順序による標準ユーザートリアージ(カナリアなし、ETWなし)
.\DLLHijackHunter.exe --lpe-only --no-canary --no-etw --verify-load

比較

ツールをダウンロード