
Exploiter le pilote vulnérable LnvMSRIO.sys
Exploit de preuve de concept pour LnvMSRIO.sys (pilote MSR d'E/S Lenovo), démontrant une lecture/écriture arbitraire de la mémoire physique et un accès à la mémoire du noyau via la traduction VA-PA de Superfetch.
| Property | Value |
|---|---|
| Nom du pilote | LnvMSRIO.sys |
| Nom du périphérique | \\.\WinMsrDev |
| Nom du service | LnvMSRIO |
| Fournisseur | Lenovo |
| Fonction | Accès MSR et à la mémoire physique pour les utilitaires système |
Le pilote expose des opérations noyau privilégiées au mode utilisateur :
Lecture de mémoire physique (16 octets) :
Offset 0: UInt64 PhysicalAddress
Offset 8: DWORD AccessSize (1=byte, 2=word, 8=qword)
Offset 12: DWORD Count (number of elements)
Écriture de mémoire physique (en-tête de 16 octets + données) :
Offset 0: UInt64 PhysicalAddress
Offset 8: DWORD AccessSize
Offset 12: DWORD Count
Offset 16: Data[] (bytes to write)
Étant donné que le pilote ne fournit qu'un accès physique à la mémoire, nous utilisons la technique Superfetch pour traduire les adresses virtuelles du noyau en adresses physiques :
NtQuerySystemInformation(SystemSuperfetchInformation)LnvMSRIOExploit.exe <path_to_LnvMSRIO.sys>
Prérequis :
LnvMSRIOExploit.dproj dans l'IDE Delphi (RAD Studio)Win64\Release\LnvMSRIOExploit.exeCet outil est fourni uniquement à des fins éducatives et de recherche en sécurité autorisée. Toute utilisation non autorisée contre des systèmes que vous ne possédez pas ou pour lesquels vous n'avez pas d'autorisation explicite de tester est illégale. L'auteur décline toute responsabilité en cas d'usage abusif.
Uniquement à des fins de recherche et d'éducation.
| IOCTL Code | Function | Description | PoC |
|---|
0x9C406104 | Lecture mémoire physique | Mappe via MmMapIoSpace | ✅ |
0x9C40A108 | Écriture mémoire physique | Mappe et écrit la mémoire physique | ✅ |
0x9C402084 | Lecture MSR | Lit le registre spécifique au modèle | ❌ |
0x9C402088 | Écriture MSR | Écrit le registre spécifique au modèle | ❌ |