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
特権昇格メモリフォレンジックエクスプロイトリバースエンジニアリングシェルコードポストエクスプロイトレッドチーミングペイロード開発バイナリエクスプロイト
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 ドライバをカーネルメモリへ直接マッピングし、その DriverEntry をリング0で実行します。プロセス全体は以下に依存しています:

  • 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 Symbol Server から 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 の構成に応じた同様のパス) に生成されます。

あるいは、生成された build/KernelLoader.sln を Visual Studio 2022 で開き、そこからビルドすることもできます。

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 の自動復元。
  • Windows 11 24H2 のサポート。ここでは EnumDeviceDrivers が誤ったベースを返す可能性があり、実際のカーネルベースは LSTAR - KiSystemCall64 で計算されます。
  • 0xFFFFFFFF