
Explotar el controlador vulnerable LnvMSRIO.sys
Exploit de prueba de concepto para LnvMSRIO.sys (Controlador MSR I/O de Lenovo), que demuestra lectura/escritura arbitraria de memoria física y acceso a memoria del kernel mediante traducción VA a PA de Superfetch.
| Propiedad | Valor |
|---|---|
| Nombre del controlador | LnvMSRIO.sys |
| Nombre del dispositivo | \\.\WinMsrDev |
| Nombre del servicio | LnvMSRIO |
| Fabricante | Lenovo |
| Propósito | Acceso a MSR y memoria física para utilidades del sistema |
El controlador expone operaciones privilegiadas del kernel al espacio de usuario:
Lectura de memoria física (16 bytes):
Offset 0: UInt64 PhysicalAddress
Offset 8: DWORD AccessSize (1=byte, 2=word, 8=qword)
Offset 12: DWORD Count (number of elements)
Escritura de memoria física (16 bytes de cabecera + datos):
Offset 0: UInt64 PhysicalAddress
Offset 8: DWORD AccessSize
Offset 12: DWORD Count
Offset 16: Data[] (bytes to write)
Dado que el controlador solo proporciona acceso a memoria física, usamos la técnica Superfetch para traducir direcciones virtuales del kernel a direcciones físicas:
NtQuerySystemInformation(SystemSuperfetchInformation)LnvMSRIOExploit.exe <ruta_a_LnvMSRIO.sys>
Requisitos:
LnvMSRIOExploit.dproj en el IDE de Delphi (RAD Studio)Win64\Release\LnvMSRIOExploit.exeEsta herramienta se proporciona únicamente con fines educativos y de investigación de seguridad autorizada. El uso no autorizado contra sistemas que no posea o para los que no tenga permiso explícito de prueba es ilegal. El autor no asume ninguna responsabilidad por el uso indebido.
Solo para fines de investigación y educativos.
| Código IOCTL | Función | Descripción | PoC |
|---|
0x9C406104 | LECTURA de memoria física | Mapea mediante MmMapIoSpace | ✅ |
0x9C40A108 | ESCRITURA de memoria física | Mapea y escribe memoria física | ✅ |
0x9C402084 | LECTURA de MSR | Lee el registro específico del modelo | ❌ |
0x9C402088 | ESCRITURA de MSR | Escribe el registro específico del modelo | ❌ |