
Projektdatum: Feb. 2026 / Speicherkorruptions-Schwachstelle im Kernel-Treiber von MiniTool. Demonstriert eine debugger-gestützte primitive Schreiboperation in den Kernel, die zur Privilegienausweitung genutzt werden kann.
Kernel-Write-what-where-Bedingung im pwdrvio.sys-Kerneltreiber von MiniTool. Demonstriert eine debugger-gestützte primitive Schreiboperation an beliebigen Kernel-Adressen, die zur Privilegienausweitung genutzt werden kann.
https://github.com/user-attachments/assets/ac81d7ce-0be7-40a5-9334-c54350e6e30e
Beliebiger Kernel-Schreibzugriff → Lokale Privilegienausweitung (LPE)
Schweregrad: HOCH
CVSS 3.1-Score: 7.8 (LPE)
CVSS-Vektor-String:
LPE: CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H
Angriffsvoraussetzungen:
Ausnutzungsergebnisse: LPE - Debugger-gestützte Privilegienausweitung demonstriert (NT AUTHORITY / SYSTEM), vollständige Systemkompromittierung
Datum: 5. Februar 2026
Aktivität: Systematisches Fuzzing des Kerneltreibers mit benutzerdefiniertem Python-Fuzzer
Entdeckungsprozess:
Zielauswahl:
pwdrvio.sys als ältester Treiber identifiziert (Zeitstempel: 16. Juni 2009)C:\Windows\System32\drivers\pwdrvio.sys\\.\PartitionWizardDiskAccesser\0Erstes Fuzzing:
ctypes zur Schnittstellenbildung mit dem Treiber entwickeltWriteFile/DeviceIoControl an das Treibergerät gesendetVerifier-Aktivierung:
Verifier-Konfiguration: ```
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
### WinDbg Kernel-Debugging-Einrichtung
**Datum:** 5.–6. Februar 2026
**Aktivität:** Einrichtung einer Kernel-Debugging-Umgebung für die Ursachenanalyse
**Einrichtungsverfahren:**
1. **VMware-Serielle-Port-Konfiguration:** ```
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" ✓
Gast-Betriebssystemkonfiguration: ```cmd REM Administrator Command Prompt bcdedit /debug on bcdedit /dbgsettings serial debugport:1 baudrate:115200 shutdown /r /t 0
Host-WinDbg-Verbindung: ``` WinDbg → File → Attach to Kernel ├─ Port: \.\pipe\com_1 ├─ Baud Rate: 115200 ├─ Pipe: ✓ └─ Reconnect: ✓
Result: "Kernel Debugger connection established."
Datum: 6. Februar 2026
Aktivität: Identifizierte Primitive für beliebiges Schreiben im Kernel
Analyseschritte:
Modulanalyse: ```
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
Erkennung verwundbarer Anweisungen:
Haltepunkt am Write-Handler setzen: ``` 1: kd> bp pwdrvio+0x1641 1: kd> g
Breakpoint 0 hit pwdrvio+0x1641: fffff805`315f1641 498943f0 mov qword ptr [r11-10h],rax
Kritischer Befund: Beliebige Schreib-Primitive identifiziert!
RAX) an die Adresse [R11-0x10]R11 wird aus dem Stack-Frame geladen: mov r11, qword ptr [rbp+0xB8h]Analyse des Registerzustands: ``` 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
Datum: 6.–7. Februar 2026
Aktivität: Verfolgte die Schwachstelle von User-After-Free bis zur Write-What-Where-Bedingung
Speicherkorruptionskette:
IRP-Zuweisung: ``` 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
Pufferbeziehung: ``` 0: kd> r rsi rsi=ffffe60f828df900 ← User buffer location
0: kd> ? @rbp - @rsi Evaluate expression: 35823344 = 00000000`02229ef0 ← 35MB difference!
Analyse: Der User-Buffer ist NICHT direkt über den RBP-Frame zugänglich
RBP+0xB8 zeigt nicht in den benutzergesteuerten BufferUse-After-Free-Bedingung:
Der Treiber verwaltet verwaiste Zeiger (Dangling Pointers) in der IRP-Struktur: ```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!
Datum: 7.–8. Februar 2026
Aktivität: Entwicklung einer Token-Diebstahl-Technik
Exploitationsstrategie:
Ziel: Aktuellen Prozess-Token mit SYSTEM-Token überschreiben
Windows-EPROCESS-Struktur:``` +0x000 Pcb : _KPROCESS ... +0x4b8 Token : _EX_FAST_REF ← Token pointer location
**Token-Diebstahl-Verfahren:**