
Exploit LnvMSRIO.sys vulnerable driver
LnvMSRIO.sys (Lenovo MSR I/O 드라이버)에 대한 개념 증명 익스플로잇으로, Superfetch VA-to-PA 변환을 통해 임의의 물리 메모리 읽기/쓰기 및 커널 메모리 접근을 시연합니다.
| 속성 | 값 |
|---|---|
| 드라이버 이름 | 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)을 통해 Superfetch에 물리 메모리 범위를 쿼리합니다LnvMSRIOExploit.exe <path_to_LnvMSRIO.sys>
요구 사항:
LnvMSRIOExploit.dproj를 엽니다Win64\Release\LnvMSRIOExploit.exe이 도구는 교육 및 승인된 보안 연구 목적으로만 제공됩니다. 귀하가 소유하거나 명시적 테스트 허가를 받지 않은 시스템에 대한 무단 사용은 불법입니다. 작성자는 오용에 대해 책임을 지지 않습니다.
연구 및 교육 목적으로만 사용하십시오.
| IOCTL 코드 | 기능 | 설명 | PoC |
|---|
0x9C406104 | 물리 메모리 읽기 | MmMapIoSpace를 통해 매핑 | ✅ |
0x9C40A108 | 물리 메모리 쓰기 | 물리 메모리 매핑 및 쓰기 | ✅ |
0x9C402084 | MSR 읽기 | 모델별 레지스터 읽기 | ❌ |
0x9C402088 | MSR 쓰기 | 모델별 레지스터 쓰기 | ❌ |