
Exploit LnvMSRIO.sys vulnerable driver
Exploit de Prova de Conceito para LnvMSRIO.sys (Driver MSR I/O da Lenovo), demonstrando leitura/escrita arbitrária de memória física e acesso à memória do kernel através da tradução VA-para-PA do Superfetch.
| Propriedade | Valor |
|---|---|
| Nome do Driver | LnvMSRIO.sys |
| Nome do Dispositivo | \\.\WinMsrDev |
| Nome do Serviço | LnvMSRIO |
| Fabricante | Lenovo |
| Finalidade | Acesso a MSR e memória física para utilitários do sistema |
O driver expõe operações privilegiadas do kernel para o modo de usuário:
Leitura de Memória 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)
Escrita de Memória Física (16 bytes de cabeçalho + dados):
Offset 0: UInt64 PhysicalAddress
Offset 8: DWORD AccessSize
Offset 12: DWORD Count
Offset 16: Data[] (bytes to write)
Como o driver fornece apenas acesso à memória física, usamos a técnica Superfetch para traduzir endereços virtuais do kernel para endereços físicos:
NtQuerySystemInformation(SystemSuperfetchInformation)LnvMSRIOExploit.exe <path_to_LnvMSRIO.sys>
Requisitos:
LnvMSRIOExploit.dproj no IDE Delphi (RAD Studio)Win64\Release\LnvMSRIOExploit.exeEsta ferramenta é fornecida apenas para fins educacionais e de pesquisa de segurança autorizada. O uso não autorizado contra sistemas que você não possui ou para os quais não tem permissão explícita para testar é ilegal. O autor não assume nenhuma responsabilidade pelo uso indevido.
Apenas para fins de pesquisa e educacionais.
| Código IOCTL | Função | Descrição | PoC |
|---|
0x9C406104 | LEITURA de Memória Física | Mapeia via MmMapIoSpace | ✅ |
0x9C40A108 | ESCRITA de Memória Física | Mapeia e escreve memória física | ✅ |
0x9C402084 | LEITURA de MSR | Ler Registro Específico do Modelo | ❌ |
0x9C402088 | ESCRITA de MSR | Escrever Registro Específico do Modelo | ❌ |