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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
ツール/GitHubGitHub/devianntsec/cve-2024-51324
防御ツール脆弱性分析エクスプロイトリバースエンジニアリングフォレンジックペネトレーションテスト論文と研究学習と教育レッドチーミングバイナリエクスプロイト
GitHubdevianntsec/cve-2024-51324

CVE-2024-51324

1105ヶ月前未レビュー

人気

すべて見る →

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

すべてのツールを探索

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

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

CVE-2024-51324(BYOVD)に関する修士論文研究。4つの動作モード(SCANNER, LOADER, KILLER, CLEANUP)を備えた高度なエクスプロイト、SHA-256ドライバ検証、完全な学術文書を含む。ポートフォリオ作品は、Windowsカーネルドライバセキュリティ、IOCTLリバースエンジニアリング、Bring Your Own Vulnerable Driverエクスプロイトをカバーする。

リポジトリを見る

CVE-2024-51324 — BYOVD: BdApiUtil64.sys · 修士論文研究

Platform Language License: MIT Research CVSS

Bring Your Own Vulnerable Driver (BYOVD) — Baidu アンチウイルス BdApiUtil64.sys
3つの未ドキュメントのカーネルプリミティブ: プロセス終了、任意ファイル削除、SectionObjectPointer バイパスによる使用中ファイル削除
影響: Baidu アンチウイルス v5.2.3.116083 (BdApiUtil64.sys)


脆弱ドライバをカーネルにロード中(LOADER モード)

説明

このリポジトリには、Baidu アンチウイルスのカーネルドライバ BdApiUtil64.sys における Bring Your Own Vulnerable Driver (BYOVD) の脆弱性である CVE-2024-51324 に関する私の 修士論文研究 が含まれています。

NVD レコードは CVSS v3.1 ベーススコア 3.8 (低)、ベクタ AV:N/AC:L/PR:H/UI:N/S:U/C:L/I:L/A:N、CWE-269 (不適切な特権管理) を割り当てています。このスコアは本研究で文書化されたローカル攻撃の現実を反映していません。管理者がドライバをロードした後(ソーシャルエンジニアリングや任意のローカル特権昇格によって達成可能な1回限りのステップ)、サンドボックス化されたプロセスや標準ユーザープロセスを含む後続のプロセスは、追加の権限チェックなしで IOCTL を送信できます。研究者が評価した CVSS v3.1 スコア 7.8 (高)、ベクタ AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H は、ロード後の悪用の現実をより正確に捉えています。両方のスコアは技術文書で議論されています。

このドライバはデバイスオブジェクト \Device\BdApiUtil を SecurityDescriptor = NULL で作成するため、任意のプロセス(整合性レベルに関係なく)がハンドルを開いて IOCTL を送信できます。Ghidra 11.0.3 による静的解析の結果、内部メカニズムは以前文書化されたよりも重要であることが明らかになりました。ドライバは ZwOpenProcess ではなく PsLookupProcessByProcessId + ObOpenObjectByPointer(KernelMode) を使用しており、SeAccessCheck を完全にバイパスします。3つの IOCTL プリミティブが完全に特性評価され、そのうち2つは公開文書がありません。

私の貢献

側面説明
技術的訂正ZwOpenProcess はインポートテーブルに存在せず、実際のメカニズムは PsLookupProcessByProcessId + ObOpenObjectByPointer(KernelMode) であり、無条件に SeAccessCheck をバイパスします
3つの文書化されたプリミティブプロセス終了 (0x800024B4)、任意ファイル削除 (0x80002648)、SectionObjectPointer バイパスによる使用中ファイル削除 (0x8000264C) — 最後の2つは公開文書なし
4つの動作モードLOADER、KILLER、SCANNER、CLEANUP — 完全なライフサイクル管理
SHA-256 検証ロード試行前にドライバハッシュを検証
PPL 実証テストプロセスカテゴリごとに10回試行し、PPL が唯一のランタイム緩和策であることを確認
フォレンジック分析クリーンアップ後の永続的な Event ID 7045、自己告訴的なログクリア成果物としての Event ID 1102
検出ルールSigma ルールと Sysmon 設定(ハッシュによる Event ID 6 + レジストリキーによる Event ID 13)
CVSS 再評価公式 NVD スコア (3.8 低) と研究者評価によるローカル悪用の深刻度 (7.8 高) との差異を文書化

リポジトリ構造

CVE-2024-51324/
├── README.md
├── LICENSE
│
├── drivers/
│   └── BdApiUtil64.sys              # ドライバ(配布なし)
│
├── exploit/
│   ├── exploit-explanation.md
│   └── byovd_killer.py              # メインエクスプロイト — 4つの動作モード
│
└── docs/
    ├── screenshots/
    │   ├── 01-byovd-scan.png
    │   ├── 02-byovd-scan-target.png
    │   ├── 03-byovd-load.png
    │   ├── 04-byovd-load-custom.png
    │   ├── 05-kill-name.gif
    │   ├── 06-kill-pid.gif
    │   ├── 07-kill-limit.gif
    │   ├── 08-dry-run.gif
    │   └── 09-byovd-cleanup.png
    │
    └── analysis/
        ├── 01-root-cause.md
        ├── 02-driver-analysis.md    # Ghidra RE 完全版、3つのプリミティブ、PPL テスト
        └── 03-timeline.md

クイックスタート

前提条件

  • Windows 10/11 (任意のビルド)
  • Python 3.6+
  • BdApiUtil64.sys (SHA-256: 47EC51B5F0EDE1E70BD66F3F0152F9EB536D534565DBB7FCC3A05F542DBE4428)
  • 管理者アカウント(LOADER モードと CLEANUP モードのみ)
  • 標準ユーザーアカウントでドライバロード後は KILLER モードが使用可能

ステップ1 — システムのスキャン

python exploit/byovd_killer.py --scan
python exploit/byovd_killer.py --scan --target lsass.exe

ステップ2 — ドライバのロード(管理者権限が必要)

python exploit/byovd_killer.py --load
python exploit/byovd_killer.py --load --driver C:\path\to\BdApiUtil64.sys
python exploit/byovd_killer.py --load --service-name MyService

ステップ3 — プロセスの強制終了(管理者権限不要)

python exploit/byovd_killer.py --kill notepad.exe
python exploit/byovd_killer.py --pid 1234
python exploit/byovd_killer.py --kill notepad.exe --max-instances 2
python exploit/byovd_killer.py --kill notepad.exe --dry-run

ステップ4 — クリーンアップ(管理者権限が必要)

python exploit/byovd_killer.py --cleanup
python exploit/byovd_killer.py --cleanup --service-name MyService

動作モード

モードコマンド権限説明
SCANNER--scan任意のユーザーシステムおよびドライバのステータス情報
LOADER--load管理者カーネルサービス作成によるドライバのロード
KILLER--kill / --pid任意のユーザーIOCTL によるプロセス終了
CLEANUP--cleanup管理者ドライバサービスの停止と削除

デモ

SCANNER モード — システム情報

SCANNER モード

SCANNER モード — ターゲットプロセスの検索

SCANNER ターゲット

LOADER モード — ドライバのロード

LOADER モード

LOADER モード — カスタムパスとサービス名

LOADER カスタム

KILLER モード — プロセス名による強制終了

名前による強制終了

KILLER モード — PID による強制終了

PID による強制終了

KILLER モード — インスタンス数の制限

インスタンス制限

KILLER モード — ドライラン(シミュレーション)

ドライラン

CLEANUP モード — ドライバのアンロード

CLEANUP モード


技術概要

IOCTL 攻撃面 — 3つのプリミティブ

Ghidra 11.0.3 による BdApiUtil64.sys のリバースエンジニアリングにより、従来の公開情報よりも広い攻撃面が特定されました。

IOCTLハンドラプリミティブ事前の文書
0x800024B4FUN_000152b0プロセス終了部分あり(メカニズムが不正確)
0x80002648FUN_00013bb0任意ファイル削除なし
0x8000264CFUN_00013850使用中ファイル削除(SectionObjectPointer バイパス)なし

プリミティブ1 — プロセス終了 (0x800024B4)

ディスパッチチェーンは3つのレベルで構成されます。

IOCTL 0x800024B4
  └─ FUN_00028630  (IRP_MJ_DEVICE_CONTROL ディスパッチャ)
       └─ FUN_00015230  (ラッパー: IOCTL コードとバッファサイズ = 4 バイトを検証)
            └─ FUN_000152b0  (強制終了ハンドラ — 脆弱性の所在)

再構築されたハンドラ (Ghidra):

if ((param_1 != 0) && (param_1 != 4)) {
    PsLookupProcessByProcessId(param_1, &local_res10);
    ObOpenObjectByPointer(
        local_res10,
        0x200,      // OBJ_KERNEL_HANDLE
        0,          // PassedAccessState: NULL
        0x1fffff,   // PROCESS_ALL_ACCESS
        0,          // ObjectType: NULL
        0,          // AccessMode: KernelMode  ← SeAccessCheck をバイパス
        local_res18
    );
    ZwTerminateProcess(local_res18[0], 0);
}

なぜ KernelMode が SeAccessCheck をバイパスするのか:

ZwOpenProcess のパス:
  NtOpenProcess → ObOpenObjectByName → SeAccessCheck
                                        (DACL、呼び出し元トークン、整合性レベルをチェック)
                                        STATUS_ACCESS_DENIED を返す可能性あり

ObOpenObjectByPointer(KernelMode) のパス:
  SeAccessCheck  ← 呼び出されない
  → PROCESS_ALL_ACCESS ハンドルが無条件に付与される

ZwOpenProcess は ドライバのインポートテーブルに存在しません。以前の情報源に基づく ZwOpenProcess を使用した説明は技術的に誤りです。

プリミティブ2 — 任意ファイル削除 (0x80002648)

ツールをダウンロード