Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
MSRMapper — Mapeador manual de driver de kernel para Windows x64 que explora a CVE-2025-8061 no LnvMSRIO.sys da Lenovo para realizar um ataque BYOVD, mapeando drivers PE64 para o ring 0. | Kitploit
Ferramentas/GitHubGitHub/ull0a/msrmapper
Escalada de PrivilégiosForensia de MemóriaExploraçãoEngenharia ReversaShellcodePós-ExploraçãoRed TeamingDesenvolvimento de PayloadsExploração de Binários
GitHubull0a/msrmapper

MSRMapper

Mapeador manual de driver de kernel para Windows x64 que explora a CVE-2025-8061 no LnvMSRIO.sys da Lenovo para realizar um ataque BYOVD, mapeando drivers PE64 para o ring 0.

1há 8h 20mAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar
Ver Repositório

MSRMapper

Mapeador Manual BYOVD para Windows x64 · CVE-2025-8061


MSRMapper em execução

Visão Geral

MSRMapper é um mapeador manual de driver de kernel para Windows x64 que explora a CVE-2025-8061 no driver vulnerável da Lenovo LnvMSRIO.sys para realizar um ataque BYOVD (Bring Your Own Vulnerable Driver).

O projeto mapeia um driver PE64 diretamente na memória do kernel sem usar sc create ou um serviço, e executa seu DriverEntry em ring 0. Todo o processo depende de:

  • Leitura/escrita de MSR e memória física através do LnvMSRIO.sys.
  • Resolução de símbolos do kernel via arquivos PDB usando DbgHelp.
  • Tradução VA → PA através da classe SuperfetchPfnQuery de NtQuerySystemInformation.
  • Sequestro temporário do LSTAR para executar shellcode em ring 0.
  • Hook temporário em NtAddAtom para chamar funções do kernel como ExAllocatePoolWithTag, RtlCopyMemory e DriverEntry.

Status: Testado no Windows 10 22H2 (OS Build 19045.6466). O driver é mapeado com sucesso e DriverEntry retorna STATUS_SUCCESS (0x0).


Recursos

  • Mapeamento manual de PE64 no kernel usando ExAllocatePoolWithTag.
  • Resolução de símbolos do kernel (KiSystemCall64, NtAddAtom, etc.) baixando PDBs do Microsoft Symbol Server.
  • Tradução VA → PA com Superfetch (NtQuerySystemInformation classe 0x4F), sem precisar de um page-table walker personalizado.
  • Leitura/escrita de MSR (LSTAR, FMASK) e memória física através do LnvMSRIO.sys.
  • Shellcode gerado dinamicamente que:
    • Restaura o LSTAR original.
    • Chama MmGetPhysicalAddress para obter o PA de NtAddAtom.
    • Retorna o controle ao modo usuário via swapgs; sysret.
  • Hook temporário em NtAddAtom (12 bytes ) para chamar funções arbitrárias do kernel.

Como Funciona

1. Inicialização

  • Abre \\.\WinMsrDev (serviço exposto por LnvMSRIO.sys).
  • Obtém a base do ntoskrnl via EnumDeviceDrivers e a valida com LSTAR.
  • Inicializa PdbResolver para resolver os RVAs dos símbolos do kernel.

2. Obtendo o PA de NtAddAtom

  • Constrói um shellcode que será executado em ring 0 quando o LSTAR for sequestrado.
  • Escreve o gadget swapgs; iretq no LSTAR.
  • Prepara a pilha com PrepareStack e habilita AC=1 no modo usuário via EnableACUserMode.
  • No syscall, a CPU salta para o gadget, executa o shellcode, chama MmGetPhysicalAddress(NtAddAtom) e armazena o PA em um buffer do usuário.
  • O shellcode restaura o LSTAR e retorna ao modo usuário com swapgs; sysret.

3. Mapeamento do Driver

  • Aloca pool não paginado com ExAllocatePoolWithTag (invocado através do hook temporário em NtAddAtom).
  • Copia a imagem PE para o pool com RtlCopyMemory.
  • Aplica relocações, resolve imports e corrige o security cookie.
  • Chama DriverEntry com DriverObject = NULL e RegistryPath = NULL.

4. Limpeza

  • Restaura os bytes originais de NtAddAtom.
  • Restaura os MSRs originais.
  • Fecha o handle do driver vulnerável.

Requisitos

  • Windows 10/11 x64 (testado no 22H2).
  • Visual Studio 2022 com:
    • Desenvolvimento para desktop com C++.
    • MASM (Microsoft Macro Assembler) para compilar os arquivos .asm.
  • Windows SDK e WDK (se precisar compilar o driver de payload).
  • LnvMSRIO.sys vulnerável (CVE-2025-8061) instalado e o serviço WinMsrDev em execução.
  • Privilégios de Administrador.
  • Acesso à internet na primeira vez para baixar os PDBs da Microsoft, ou um cache local em C:\Symbols.
  • CMake 3.20 ou mais recente.

Compilação

Este projeto usa CMake. Para compilar pela linha de comando:

  1. Gere a solução do Visual Studio 2022:

    root@kitploit:~
    cmake -B build -G "Visual Studio 17 2022" -A x64
    
  2. Compile em modo Release:

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

Os binários de saída estarão em build/bin/Release/ (ou um caminho similar dependendo da configuração do CMake).

Alternativamente, você pode abrir o build/KernelLoader.sln gerado no Visual Studio 2022 e compilar por lá.

Certifique-se de que ShellcodeAsm.asm e EnableAC.asm sejam compilados com MASM. O CMakeLists.txt fornecido cuida disso automaticamente.

Se precisar ajustar a configuração de compilação, edite CMakeLists.txt.

Uso

  1. Instale e inicie o serviço LnvMSRIO.sys:

    root@kitploit:~
    sc create WinMsrDev type= kernel binPath= C:\path\to\LnvMSRIO.sys
    sc start WinMsrDev
    
  2. Execute KernelLoader.exe como Administrador:

    root@kitploit:~
    KernelLoader.exe
    
  3. Para ver a saída de DbgPrint do driver mapeado, use o DebugView (Sysinternals) como Administrador com:

    • Capture → Capture Kernel
    • Options → Enable Verbose Kernel Output
    • Se necessário, ajuste o filtro em:
      root@kitploit:~
      HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Debug Print Filter
      
      criando um DWORD chamado Default com valor .

Observações

  • A mensagem DBGHELP: ... - unmatched que aparece em alguns logs do PdbResolver é cosmética. O PDB é carregado em uma base virtual artificial e SymFromName ainda funciona corretamente. Isso não afeta a resolução de símbolos.
  • No Windows 11 24H2, EnumDeviceDrivers pode retornar uma base incorreta. Este projeto calcula a base real com LSTAR - KiSystemCall64.
  • O hook em NtAddAtom é temporário e restaurado após cada chamada. Ainda assim, use isso apenas em ambientes controlados.
  • O shellcode assume que SMEP/SMAP estão habilitados. Eles são temporariamente desabilitados via CR4 e restaurados antes de retornar ao modo usuário.
Baixar ferramenta
jmp rax
  • Restauração automática do hook e dos MSRs originais.
  • Suporte ao Windows 11 24H2, onde EnumDeviceDrivers pode retornar uma base incorreta; a base real do kernel é calculada com LSTAR - KiSystemCall64.
  • 0xFFFFFFFF