Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
MSRMapper — Manueller Kernel-Treiber-Mapper für Windows x64, der CVE-2025-8061 in Lenovos LnvMSRIO.sys ausnutzt, um einen BYOVD-Angriff durchzuführen und PE64-Treiber in Ring 0 einzubinden. | Kitploit
Tools/GitHubGitHub/ull0a/msrmapper
Privilege EscalationSpeicherforensikExploitationReverse EngineeringShellcodePost-ExploitationRed TeamingPayload-EntwicklungBinary-Exploitation
GitHubull0a/msrmapper

MSRMapper

Manueller Kernel-Treiber-Mapper für Windows x64, der CVE-2025-8061 in Lenovos LnvMSRIO.sys ausnutzt, um einen BYOVD-Angriff durchzuführen und PE64-Treiber in Ring 0 einzubinden.

1vor 8h 20mNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen
Repository anzeigen

MSRMapper

BYOVD Manual Mapper für Windows x64 · CVE-2025-8061


MSRMapper running

Übersicht

MSRMapper ist ein manueller Kernel-Treiber-Mapper für Windows x64, der CVE-2025-8061 im verwundbaren Lenovo-Treiber LnvMSRIO.sys ausnutzt, um einen BYOVD-Angriff (Bring Your Own Vulnerable Driver) durchzuführen.

Das Projekt mappt einen PE64-Treiber direkt in den Kernel-Speicher, ohne sc create oder einen Dienst zu verwenden, und führt dessen DriverEntry in Ring 0 aus. Der gesamte Prozess stützt sich auf:

  • MSR- und physischen Speicher-Lese-/Schreibzugriff über LnvMSRIO.sys.
  • Kernel-Symbolauflösung über PDB-Dateien mit DbgHelp.
  • VA → PA-Übersetzung über die SuperfetchPfnQuery-Klasse von NtQuerySystemInformation.
  • Temporäres LSTAR-Hijacking zur Ausführung von Ring-0-Shellcode.
  • Temporäres NtAddAtom-Hooking zum Aufruf von Kernel-Funktionen wie ExAllocatePoolWithTag, RtlCopyMemory und DriverEntry.

Status: Getestet auf Windows 10 22H2 (OS Build 19045.6466). Der Treiber wird erfolgreich gemappt und DriverEntry gibt STATUS_SUCCESS (0x0) zurück.


Funktionen

  • Manuelles PE64-Mapping im Kernel mit ExAllocatePoolWithTag.
  • Kernel-Symbolauflösung (KiSystemCall64, NtAddAtom, etc.) durch Herunterladen von PDBs vom Microsoft Symbol Server.
  • VA → PA-Übersetzung mit Superfetch (NtQuerySystemInformation-Klasse 0x4F), ohne einen benutzerdefinierten Page-Table-Walker zu benötigen.
  • MSR- (LSTAR, FMASK) und physischer Speicher-Lese-/Schreibzugriff über LnvMSRIO.sys.
  • Dynamisch generierter Shellcode, der:
    • das ursprüngliche LSTAR wiederherstellt.
    • MmGetPhysicalAddress aufruft, um die PA von NtAddAtom zu erhalten.
    • die Kontrolle über swapgs; sysret an den User-Mode zurückgibt.

Funktionsweise

1. Initialisierung

  • Öffnet \\.\WinMsrDev (Dienst, der von LnvMSRIO.sys bereitgestellt wird).
  • Ermittelt die ntoskrnl-Basis über EnumDeviceDrivers und validiert sie mit LSTAR.
  • Initialisiert PdbResolver, um Kernel-Symbol-RVAs aufzulösen.

2. Ermitteln der PA von NtAddAtom

  • Erstellt einen Shellcode, der in Ring 0 ausgeführt wird, wenn LSTAR gehijackt wird.
  • Schreibt das swapgs; iretq-Gadget in LSTAR.
  • Bereitet den Stack mit PrepareStack vor und aktiviert AC=1 im User-Mode über EnableACUserMode.
  • Bei syscall springt die CPU zum Gadget, führt den Shellcode aus, ruft MmGetPhysicalAddress(NtAddAtom) auf und speichert die PA in einem User-Buffer.
  • Der Shellcode stellt LSTAR wieder her und kehrt mit swapgs; sysret in den User-Mode zurück.

3. Treiber-Mapping

  • Allokiert Non-Paged-Pool mit ExAllocatePoolWithTag (aufgerufen über den temporären NtAddAtom-Hook).
  • Kopiert das PE-Image mit RtlCopyMemory in den Pool.
  • Wendet Relocations an, löst Imports auf und korrigiert das Security-Cookie.
  • Ruft DriverEntry mit DriverObject = NULL und RegistryPath = NULL auf.

4. Bereinigung

  • Stellt die ursprünglichen Bytes von NtAddAtom wieder her.
  • Stellt die ursprünglichen MSRs wieder her.
  • Schließt das Handle des verwundbaren Treibers.

Anforderungen

  • Windows 10/11 x64 (getestet auf 22H2).
  • Visual Studio 2022 mit:
    • Desktopentwicklung mit C++.
    • MASM (Microsoft Macro Assembler) zum Erstellen der .asm-Dateien.
  • Windows SDK und WDK (falls Sie den Payload-Treiber erstellen müssen).
  • Verwundbarer LnvMSRIO.sys (CVE-2025-8061) installiert und der WinMsrDev-Dienst läuft.
  • Administrator-Rechte.
  • Internetzugang beim ersten Mal zum Herunterladen der Microsoft-PDBs oder ein lokaler Cache in C:\Symbols.
  • CMake 3.20 oder neuer.

Build

Dieses Projekt verwendet CMake. Um über die Kommandozeile zu bauen:

  1. Generieren Sie die Visual Studio 2022-Lösung:

    root@kitploit:~
    cmake -B build -G "Visual Studio 17 2022" -A x64
    
  2. Bauen Sie im Release-Modus:

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

Die Ausgabebinärdateien befinden sich in build/bin/Release/ (oder einem ähnlichen Pfad, abhängig von der CMake-Konfiguration).

Alternativ können Sie die generierte build/KernelLoader.sln in Visual Studio 2022 öffnen und von dort aus bauen.

Stellen Sie sicher, dass ShellcodeAsm.asm und EnableAC.asm mit MASM kompiliert werden. Die bereitgestellte CMakeLists.txt übernimmt dies automatisch.

Wenn Sie die Build-Konfiguration anpassen müssen, bearbeiten Sie CMakeLists.txt.

Verwendung

  1. Installieren und starten Sie den LnvMSRIO.sys-Dienst:

    root@kitploit:~
    sc create WinMsrDev type= kernel binPath= C:\path\to\LnvMSRIO.sys
    sc start WinMsrDev
    
  2. Führen Sie KernelLoader.exe als Administrator aus:

    root@kitploit:~
    KernelLoader.exe
    
  3. Um die DbgPrint-Ausgabe des gemappten Treibers zu sehen, verwenden Sie DebugView (Sysinternals) als Administrator mit:

    • Capture → Capture Kernel
    • Options → Enable Verbose Kernel Output
    • Falls nötig, passen Sie den Filter an unter:
      root@kitploit:~
      HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Debug Print Filter
      
      indem Sie einen DWORD namens mit dem Wert erstellen.

Hinweise

  • Die Meldung DBGHELP: ... - unmatched, die in einigen PdbResolver-Logs erscheint, ist kosmetisch. Die PDB wird an einer künstlichen virtuellen Basis geladen und SymFromName funktioniert weiterhin korrekt. Sie beeinträchtigt die Symbolauflösung nicht.
  • Unter Windows 11 24H2 kann EnumDeviceDrivers eine falsche Basis zurückgeben. Dieses Projekt berechnet die echte Basis mit LSTAR - KiSystemCall64.
  • Der NtAddAtom-Hook ist temporär und wird nach jedem Aufruf wiederhergestellt. Verwenden Sie dies dennoch nur in kontrollierten Umgebungen.
  • Der Shellcode geht davon aus, dass SMEP/SMAP aktiviert sind. Sie werden vorübergehend über CR4 deaktiviert und vor der Rückkehr in den User-Mode wiederhergestellt.
Tool herunterladen
  • Temporärer NtAddAtom-Hook (12-Byte jmp rax) zum Aufruf beliebiger Kernel-Funktionen.
  • Automatische Wiederherstellung des Hooks und der ursprünglichen MSRs.
  • Unterstützung für Windows 11 24H2, wo EnumDeviceDrivers eine falsche Basis zurückgeben kann; die echte Kernel-Basis wird mit LSTAR - KiSystemCall64 berechnet.
  • Default
    0xFFFFFFFF