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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2024-30051 — 修士論文研究: CVE-2024-30051 (Windows DWM ヒープオーバーフロー)。高信頼性エクスプロイトを特徴とし、自動ヒープスプレー最適化、リアルタイムログ記録、実証的な成功率分析を備えています。高度なWindowsバイナリエクスプロイト、ヒープレイアウト操作、およびデスクトップウィンドウマネージャーを介したLPEを示すポートフォリオ作品です。 | Kitploit
ツール/GitHubGitHub/devianntsec/cve-2024-30051
特権昇格メモリフォレンジック脆弱性分析エクスプロイトリバースエンジニアリング論文と研究学習と教育ペイロード開発バイナリエクスプロイト
GitHubdevianntsec/cve-2024-30051

CVE-2024-30051

修士論文研究: CVE-2024-30051 (Windows DWM ヒープオーバーフロー)。高信頼性エクスプロイトを特徴とし、自動ヒープスプレー最適化、リアルタイムログ記録、実証的な成功率分析を備えています。高度なWindowsバイナリエクスプロイト、ヒープレイアウト操作、およびデスクトップウィンドウマネージャーを介したLPEを示すポートフォリオ作品です。

154ヶ月前未レビュー

人気

すべて見る →

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

すべてのツールを探索

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

すべてのツールを見る →
共有
リポジトリを見る

CVE-2024-30051 — Windows DWM ヒープオーバーフロー EoP · 修士論文研究

Platform Language License: MIT Research CVSS

Windows デスクトップ ウィンドウ マネージャー (dwmcore.dll) におけるヒープベースのバッファオーバーフロー
ローカル特権昇格 → DWM プロセスによる Integrity Level SYSTEM
ビルドターゲット: Windows 11 22H2 (10.0.22621.3447) · パッチ: KB5037771


説明

このリポジトリには、Windows デスクトップ ウィンドウ マネージャー コア ライブラリ (dwmcore.dll) における高深刻度 (CVSS 7.8) の 特権昇格 脆弱性 CVE-2024-30051 に関する 修士論文の研究 が含まれています。

この脆弱性は、CCommandBuffer::Initialize における 整数除算のサイズ計算ミス に起因します。new() で使用されるサイズと memcpy() で使用されるサイズがこの計算ミスにより乖離し、0x8F バイトのヒープオーバーフロー が発生します。エクスプロイトが成功すると、dwm.exe が攻撃者が制御する DLL をロードし、window manager\dwm-1 アカウントのもとで Integrity Level SYSTEM として任意のコードを実行します。

私の貢献


リポジトリ構造

root@kitploit:~
CVE-2024-30051-Masters-Thesis/
├── README.md
├── LICENSE
├── setup.bat                        # s11.dll を必要な場所にコピーします
│
├── exploit/
│   ├── C21.sln                      # Visual Studio 2022 ソリューション
│   ├── exploit_src/
│   │   ├── c26f.vcxproj
│   │   ├── c26f.filters
│   │   └── main.cpp                 # エクスプロイト — ヒープスプレー + フッキング + オーバーフロー
│   └── payload/
│       ├── payload.vcxproj
│       ├── payload.vcxproj.filters
│       ├── dllmain.cpp              # ペイロード DLL — SYSTEM シェルを起動 + クリーンアップ
│       ├── framework.h
│       ├── pch.h
│       └── pch.cpp
│
└── docs/
    ├── screenshots/                 # パッチ差分解析、WinDbg、フォレンジックキャプチャ
    └── analysis/
        ├── 01-root-cause.md         # CCommandBuffer::Initialize の整数除算バグ
        ├── 02-heap-spray.md         # 50セッションの経験的データと統計的知見
        └── 03-timeline.md           # 発見、開示、パッチの時系列

クイックスタート

前提条件

  • Windows 11 22H2 (ビルド 22621.3447、未パッチ — KB5037771 未適用)
  • Visual Studio 2022 と C++ デスクトップワークロード
  • スナップショット付き VM 推奨 (再現可能なヒープ状態に必要)

ステップ 1 — ペイロード DLL のビルド

Visual Studio 2022 で C21.sln を開きます。payload プロジェクトを Release x64 でビルドします。

ステップ 2 — DLL の配置

リポジトリのルートから setup.bat を実行します。これにより s11.dll が C:\Users\Public\Documents\s11.dll にコピーされます (PAYLOAD_DLL_PATH で定義されたパス)。

⚠️ DLL は C26f.exe を実行する前にこの正確なパスに配置されている必要があります。実行ファイルの隣に置いても機能しません。

ステップ 3 — エクスプロイトのビルド

C26f プロジェクトを Release x64 でビルドします。

ステップ 4 — 実行

root@kitploit:~
x64\Release\C26f.exe

標準 (非昇格) CMD から実行します。エクスプロイトは最大 10 回自動再試行します。成功すると、dwm.exe が s11.dll をロードし、SYSTEM Integrity Level で CMD を起動します。セッションログは %TEMP%\cve_30051_log.txt に書き込まれます。


エクスプロイト設定

root@kitploit:~
#define MAX_ATTEMPTS        10      // セッションごとの最大自動再試行回数
#define SPRAY_STEP          0x10    // ホール間隔インデックス (1024 ホール)
#define SPRAY_RANGE_START   0x3000  // スプレー範囲開始インデックス
#define SPRAY_RANGE_END     0x7000  // スプレー範囲終了インデックス
#define SLEEP_POST_SPRAY    0xC8    // スプレー後の待機時間 (200ms)
#define SLEEP_POST_HOLES    0xC8    // ホール開放後の待機時間 (200ms)
#define PAYLOAD_DLL_PATH    "C:\\Users\\Public\\Documents\\s11.dll"

技術概要

脆弱性の根本原因

CCommandBuffer::Initialize (dwmcore.dll 10.0.22621.3447) では、CD2DSharedBuffer::GetBufferSize が 2 回呼び出されます。new() に渡されるサイズは乗算前に 0x90 で整数除算されますが、memcpy() は未加工の値を使用します:

root@kitploit:~
buffer_size = GetBufferSize()   → 例 0x23F

size_new    = (0x23F / 0x90) * 0x90  = 0x1B0   ← 割り当て
size_memcpy = 0x23F                             ← コピー

オーバーフロー    = 0x23F - 0x1B0 = 0x8F バイト

パッチ差分解析結果

ビルド 10.0.22621.3447 (脆弱) と 10.0.22621.3593 (修正) の BinDiff 比較:

全体類似度 0.98 に対してスコア 0.32 という異常値は、脆弱性箇所の直接的な兆候です。

エクスプロイト連鎖

root@kitploit:~
1. Hook RtlCreateHeap               → dwmcore ヒープハンドルをキャプチャ
2. Hook RtlAllocateHeap             → 基本チャンクアドレスをキャプチャ
3. Hook NtDCompositionCreateChannel → MappedAddress (共有メモリ領域) をキャプチャ
4. Hook NtDCompositionCommitChannel → サイズフィールドを上書き (0x120 → 0x23F)
                                      追加のバッチコマンドを注入
5. Heap spray 0x10000 CHolographicInteropTexture オブジェクト (サイズ=0x1B0)
6. 0x10 インデックスごとに空き領域を作成 → オーバーフロー着地点のギャップを作成
7. ペイロードをオーバーフローバッファに書き込み → KCBTable+0x388 + LoadLibraryA + DLL パス
8. すべてのスプレーオブジェクトを解放 → オーバーフローをトリガー → LoadLibraryA("s11.dll")
9. dwm.exe がペイロード DLL をロード → SYSTEM 整合性で CMD を起動

経験的ヒープスプレー解析 (50 セッション)

研究質問

利用可能な RAM は、ヒープスプレーの成功に必要な試行回数に影響しますか?

実験計画

それぞれ 25 セッションの 2 ブロック。セッションごとのプロトコル: クリーンな起動後スナップショットを復元 → 100 秒間の安定化待機 → エクスプロイトを起動 → 成功試行を記録。

ブロックRAMセッション成功失敗
A8,192 MB25241

結果

統計検定

検定統計量p値結論
Mann-Whitney UU = 184.0p = 0.031H₀ を棄却
Welch の t 検定t(23) = −2.695p = 0.011H₀ を棄却

主要な結論

  • C1: DWM ヒープの起動後は理論予測よりも 12.9–19 倍決定論的 です。
  • C2: RAM の可用性はスプレーの信頼性に統計的に有意な影響を与えます (p = 0.031)。
  • C3: RAM を半分にすると標準偏差が 2 倍になります (1.135 → 2.645)。
  • C4: 障害率は両構成で 4% と均一です。
  • C5: 定数 base = heap_base + 0x720 により、決定論の主な要因が穴密度ではなく再現可能な起動後ヒープレイアウトであることが確認されます。
  • C6: RAM が 8 GB 以上の場合、攻撃者は最初の 5 回の試行以内に成功を期待できます。

完全な生データ、セッションログ形式、および決定論的ヒープ観察結果は docs/analysis/02-heap-spray.md に文書化されています。


エクスプロイト後の出力

成功すると、window manager\dwm-1 のもとで CMD ウィンドウが開きます:

root@kitploit:~
=====================================================
  CVE-2024-30051 - Windows DWM Heap Overflow EoP
  CWE-122  |  CVSS 7.8  |  Elevation of Privilege
=====================================================

  Researched and reproduced by : devianntsec
  Original PoC by              : Ricardo Narvaja (Fortra)
  Target                       : Windows 11 22H2 (22621.3447)

=====================================================

  [*] Current user:
  window manager\dwm-1

  [*] Mandatory Integrity Level:
  Mandatory Label\System Mandatory Level   S-1-16-16384

  [*] Enabled privileges:
  SeImpersonatePrivilege    Enabled

=====================================================
  Shell running under DWM process - SYSTEM level
=====================================================

アーティファクト (s11.dll および .bat スクリプト) は、遅延クリーンアッププロセスにより 5 秒後に自動的に削除されます。


フォレンジックアーティファクト


技術ドキュメント

ドキュメント説明
根本原因解析CCommandBuffer::Initialize の整数除算バグ、パッチ差分解析手法

学術的背景

この研究は、私の サイバーセキュリティ修士論文 (UCAM — Campus Internacional de Ciberseguridad) の一部であり、複数の環境にわたる N-Day 脆弱性を分析しています。

この CVE は論文内の Windows デスクトップアプリケーション ベクトルを表し、以下を示しています:

  • DirectComposition ALPC チャネルを介したヒープベースのバッファオーバーフローエクスプロイト
  • N-Day 脆弱性の特定のための体系的手法としてのバイナリ差分解析 (BinDiff)
  • 外部ツールを使用しないインプロセス API フッキング
  • RAM 構成全体でのヒープスプレーの決定論性の経験的定量化

Keywords: EoP · Heap Overflow · DirectComposition · DWM · Patch Diffing · BinDiff · WinDbg · Heap Spray · Empirical Analysis · CVE-2024-30051


著者

Annais Molina (devianntsec) — サイバーセキュリティ修士課程学生

GitHub LinkedIn メール


謝辞

  • Ricardo Narvaja (Fortra/CoreSecurity) — オリジナルの PoC およびリバースエンジニアリングの解説
  • Kaspersky GReAT — 脆弱性の最初の発見と責任ある開示
  • Microsoft MSRC — パッチ KB5037771 (2024年5月)

ライセンス

MIT ライセンス — LICENSE を参照


法的免責事項

このリポジトリは、学術的な修士論文の一部として、教育およびセキュリティ研究目的のみで提供されます。すべてのテストは、ネットワークに公開されていない隔離された仮想マシン上で実施されました。所有しているシステム、またはテストする明示的な書面による許可があるシステムでのみ使用してください。システムに対する不正な使用は違法であり、刑事訴追される可能性があります。

© 2026 Annais Molina · サイバーセキュリティ修士論文
UCAM Universidad Católica San Antonio de Murcia · Campus Internacional de Ciberseguridad
ツールをダウンロード
項目説明
パッチ差分解析BinDiff 解析の完全版。CCommandBuffer::Initialize が正確な脆弱性箇所であることを特定 (類似度 0.32、全体 0.98、一致関数 14,062)
WinDbg 動的解析4つのフックすべて、サイズフィールドの上書き、ペイロード構築のステップバイステップ検証
経験的ヒープスプレー解析2つの RAM 構成 (8,192 MB および 4,096 MB) で 50 回の制御セッション を実施し、正式な統計検定を適用
統計的知見Mann-Whitney U (p = 0.031) および Welch の t 検定 (p = 0.011) により RAM の影響を確認; 観測平均は理論予測 ~64 試行の 12.9–19 倍良好
ペイロード DLL パスの集中管理ハードコードされたパスを #define PAYLOAD_DLL_PATH プリプロセッサ定数として抽出
セッションログ記録%TEMP%\cve_30051_log.txt にタイムスタンプ付きの完全なログをセッションごとに書き込み
学術的ドキュメント根本原因、50セッションのヒープスプレー解析、および CVE タイムライン
指標値
全体類似度0.98
信頼度0.99
一致関数14,062 (99.1%)
CCommandBuffer::Initialize 類似度0.32
基本ブロック — 脆弱バージョン4
基本ブロック — 修正バージョン20 (16 の検証ブロック追加)
B4,096 MB25241
ブロックRAM平均試行回数標準偏差95% CI理論 (64) に対する倍率
A8,192 MB3.3751.135[2.896; 3.854]≈ 19× 高速
B4,096 MB4.9582.645[3.841; 6.076]≈ 12.9× 高速
アーティファクト場所永続性検出ツール
cmd.exe (dwm.exe の子プロセス)セキュリティイベントログはい (プロセス監査が有効な場合)イベント ID 4688
外部プロセスが dwm.exe にアクセスSysmonはいSysmon イベント ID 10
dwm.exe のクラッシュ (失敗時)アプリケーションイベントログはいイベント ID 1000
ペイロード DLL s11.dll (ディスク上)C:\Users\Public\Documents\最初の約 5 秒間のみSHA-256 モニタリング
ヒープスプレー解析
50セッションの経験的データ、生セッションデータ、統計的検定
CVE タイムライン発見、開示、パッチの時系列