
Эксплуатация уязвимого драйвера LnvMSRIO.sys
PoC-эксплойт для LnvMSRIO.sys (драйвер ввода-вывода MSR Lenovo), демонстрирующий произвольное чтение/запись физической памяти и доступ к памяти ядра через трансляцию VA-to-PA Superfetch.
| Свойство | Значение |
|---|---|
| Имя драйвера | LnvMSRIO.sys |
| Имя устройства | \\.\WinMsrDev |
| Имя службы | LnvMSRIO |
| Производитель | Lenovo |
| Назначение | Доступ к MSR и физической памяти для системных утилит |
Драйвер предоставляет привилегированные операции ядра в пользовательском режиме:
Чтение физической памяти (16 байт):
Offset 0: UInt64 PhysicalAddress
Offset 8: DWORD AccessSize (1=byte, 2=word, 8=qword)
Offset 12: DWORD Count (number of elements)
Запись физической памяти (заголовок 16 байт + данные):
Offset 0: UInt64 PhysicalAddress
Offset 8: DWORD AccessSize
Offset 12: DWORD Count
Offset 16: Data[] (bytes to write)
Поскольку драйвер предоставляет только физический доступ к памяти, мы используем технику Superfetch для трансляции виртуальных адресов ядра в физические адреса:
NtQuerySystemInformation(SystemSuperfetchInformation)LnvMSRIOExploit.exe <path_to_LnvMSRIO.sys>
Требования:
LnvMSRIOExploit.dproj в Delphi IDE (RAD Studio)Win64\Release\LnvMSRIOExploit.exeЭтот инструмент предоставляется только для образовательных целей и санкционированных исследований в области безопасности. Несанкционированное использование против систем, которыми вы не владеете или на тестирование которых у вас нет явного разрешения, незаконно. Автор не несёт ответственности за неправомерное использование.
Только для исследовательских и образовательных целей.
| Код IOCTL | Функция | Описание | PoC |
|---|
0x9C406104 | Чтение физической памяти | Отображает через MmMapIoSpace | ✅ |
0x9C40A108 | Запись физической памяти | Отображает и записывает физическую память | ✅ |
0x9C402084 | Чтение MSR | Чтение модельно-зависимого регистра | ❌ |
0x9C402088 | Запись MSR | Запись модельно-зависимого регистра | ❌ |