Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
MSRMapper — Windows x64용 수동 커널 드라이버 매퍼로, Lenovo의 LnvMSRIO.sys에 있는 CVE-2025-8061을 악용하여 BYOVD 공격을 수행하고 PE64 드라이버를 링 0에 매핑합니다. | Kitploit
도구/GitHubGitHub/ull0a/msrmapper
Privilege EscalationMemory ForensicsExploitationReverse EngineeringShellcodePost-ExploitationRed TeamingPayload DevelopmentBinary Exploitation
GitHubull0a/msrmapper

MSRMapper

Windows x64용 수동 커널 드라이버 매퍼로, Lenovo의 LnvMSRIO.sys에 있는 CVE-2025-8061을 악용하여 BYOVD 공격을 수행하고 PE64 드라이버를 링 0에 매핑합니다.

18시간 20분 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
저장소 보기

MSRMapper

Windows x64용 BYOVD 수동 매퍼 · CVE-2025-8061


MSRMapper running

개요

MSRMapper는 Windows x64용 수동 커널 드라이버 매퍼로, 취약한 Lenovo 드라이버 LnvMSRIO.sys의 CVE-2025-8061을 악용하여 BYOVD(Bring Your Own Vulnerable Driver) 공격을 수행합니다.

이 프로젝트는 sc create나 서비스를 사용하지 않고 PE64 드라이버를 커널 메모리에 직접 매핑하고, 링 0에서 해당 드라이버의 DriverEntry를 실행합니다. 전체 과정은 다음에 의존합니다:

  • LnvMSRIO.sys를 통한 MSR 및 물리 메모리 읽기/쓰기.
  • DbgHelp를 사용한 PDB 파일 기반 커널 심볼 해석.
  • NtQuerySystemInformation의 SuperfetchPfnQuery 클래스를 통한 VA → PA 변환.
  • 링 0 셸코드를 실행하기 위한 일시적 LSTAR 하이재킹.
  • ExAllocatePoolWithTag, RtlCopyMemory, DriverEntry와 같은 커널 함수를 호출하기 위한 일시적 NtAddAtom 후킹.

상태: Windows 10 22H2 (OS Build 19045.6466) 에서 테스트되었습니다. 드라이버가 성공적으로 매핑되고 DriverEntry가 STATUS_SUCCESS(0x0)를 반환합니다.


기능

  • ExAllocatePoolWithTag를 사용한 커널 내 수동 PE64 매핑.
  • Microsoft 심볼 서버에서 PDB를 다운로드하여 커널 심볼(KiSystemCall64, NtAddAtom 등) 해석.
  • 사용자 정의 페이지 테이블 워커 없이 Superfetch(NtQuerySystemInformation 클래스 0x4F)를 통한 VA → PA 변환.
  • LnvMSRIO.sys를 통한 MSR(LSTAR, FMASK) 및 물리 메모리 읽기/쓰기.
  • 동적으로 생성되는 셸코드로 다음을 수행:
    • 원래 LSTAR를 복원.
    • MmGetPhysicalAddress를 호출하여 NtAddAtom의 PA를 획득.
    • swapgs; sysret을 통해 사용자 모드로 제어권을 반환.
  • 임의의 커널 함수를 호출하기 위한 일시적 NtAddAtom 후크(12바이트 ).

작동 방식

1. 초기화

  • \\.\WinMsrDev(LnvMSRIO.sys가 노출하는 서비스)를 엽니다.
  • EnumDeviceDrivers를 통해 ntoskrnl 베이스를 가져오고 LSTAR로 검증합니다.
  • 커널 심볼 RVA를 해석하기 위해 PdbResolver를 초기화합니다.

2. NtAddAtom의 PA 획득

  • LSTAR가 하이재킹될 때 링 0에서 실행될 셸코드를 작성합니다.
  • swapgs; iretq 가젯을 LSTAR에 씁니다.
  • PrepareStack으로 스택을 준비하고 EnableACUserMode를 통해 사용자 모드에서 AC=1을 활성화합니다.
  • syscall 시 CPU가 가젯으로 점프하여 셸코드를 실행하고, MmGetPhysicalAddress(NtAddAtom)를 호출한 뒤 PA를 사용자 버퍼에 저장합니다.
  • 셸코드는 LSTAR를 복원하고 swapgs; sysret으로 사용자 모드로 복귀합니다.

3. 드라이버 매핑

  • ExAllocatePoolWithTag(일시적 NtAddAtom 후크를 통해 호출됨)로 비페이징 풀을 할당합니다.
  • RtlCopyMemory로 PE 이미지를 풀에 복사합니다.
  • 재배치를 적용하고, 임포트를 해석하며, 보안 쿠키를 수정합니다.
  • DriverObject = NULL 및 RegistryPath = NULL로 DriverEntry를 호출합니다.

4. 정리

  • NtAddAtom의 원래 바이트를 복원합니다.
  • 원래 MSR을 복원합니다.
  • 취약한 드라이버 핸들을 닫습니다.

요구 사항

  • Windows 10/11 x64 (22H2에서 테스트됨).
  • Visual Studio 2022와 다음 항목:
    • C++를 사용한 데스크톱 개발.
    • .asm 파일을 빌드하기 위한 MASM(Microsoft Macro Assembler).
  • Windows SDK 및 WDK(페이로드 드라이버를 빌드해야 하는 경우).
  • 취약한 LnvMSRIO.sys(CVE-2025-8061)가 설치되어 있고 WinMsrDev 서비스가 실행 중이어야 합니다.
  • 관리자 권한.
  • 처음 Microsoft PDB를 다운로드하기 위한 인터넷 접속, 또는 C:\Symbols의 로컬 캐시.
  • CMake 3.20 이상.

빌드

이 프로젝트는 CMake를 사용합니다. 명령줄에서 빌드하려면:

  1. Visual Studio 2022 솔루션을 생성합니다:

    root@kitploit:~
    cmake -B build -G "Visual Studio 17 2022" -A x64
    
  2. Release 모드로 빌드합니다:

    root@kitploit:~
    cmake --build build --config Release
    

출력 바이너리는 build/bin/Release/(또는 CMake 구성에 따라 유사한 경로)에 생성됩니다.

또는 Visual Studio 2022에서 생성된 build/KernelLoader.sln을 열고 빌드할 수도 있습니다.

ShellcodeAsm.asm과 EnableAC.asm이 MASM으로 컴파일되는지 확인하세요. 제공된 CMakeLists.txt가 이를 자동으로 처리합니다.

빌드 구성을 조정해야 하는 경우 CMakeLists.txt를 편집하세요.

사용법

  1. LnvMSRIO.sys 서비스를 설치하고 시작합니다:

    root@kitploit:~
    sc create WinMsrDev type= kernel binPath= C:\path\to\LnvMSRIO.sys
    sc start WinMsrDev
    
  2. 관리자 권한으로 KernelLoader.exe를 실행합니다:

    root@kitploit:~
    KernelLoader.exe
    
  3. 매핑된 드라이버의 DbgPrint 출력을 보려면 관리자 권한으로 DebugView(Sysinternals)를 사용하여 다음을 설정합니다:

    • Capture → Capture Kernel
    • Options → Enable Verbose Kernel Output
    • 필요한 경우 다음 위치에서 필터를 조정합니다:
      root@kitploit:~
      HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Debug Print Filter
      
      Default라는 이름의 DWORD를 값 로 생성하여 조정합니다.

참고 사항

  • 일부 PdbResolver 로그에 나타나는 DBGHELP: ... - unmatched 메시지는 외관상의 문제입니다. PDB는 인위적인 가상 베이스에 로드되며 SymFromName은 여전히 올바르게 작동합니다. 심볼 해석에는 영향을 미치지 않습니다.
  • Windows 11 24H2에서 EnumDeviceDrivers는 잘못된 베이스를 반환할 수 있습니다. 이 프로젝트는 LSTAR - KiSystemCall64로 실제 베이스를 계산합니다.
  • NtAddAtom 후크는 일시적이며 각 호출 후 복원됩니다. 그래도 통제된 환경에서만 사용하세요.
  • 셸코드는 SMEP/SMAP이 활성화되어 있다고 가정합니다. 이들은 CR4를 통해 일시적으로 비활성화되고 사용자 모드로 복귀하기 전에 복원됩니다.
도구 다운로드
jmp rax
  • 후크 및 원래 MSR의 자동 복원.
  • EnumDeviceDrivers가 잘못된 베이스를 반환할 수 있는 Windows 11 24H2 지원; 실제 커널 베이스는 LSTAR - KiSystemCall64로 계산됩니다.
  • 0xFFFFFFFF