Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
提出
ツールエクスプロイトブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
MSRKit — ROPチェーンとWRMSRプリミティブを組み合わせてカーネル関数を呼び出し、BYOVD(AmdTools64.sys)を通じて未署名ドライバーをマッピングするというコンセプト | Kitploit
ツール/GitHubGitHub/rurixis/msrkit
特権昇格エクスプロイトリバースエンジニアリングシェルコードポストエクスプロイトレッドチーミングペイロード開発バイナリエクスプロイト
GitHubrurixis/msrkit

MSRKit

ROPチェーンとWRMSRプリミティブを組み合わせてカーネル関数を呼び出し、BYOVD(AmdTools64.sys)を通じて未署名ドライバーをマッピングするというコンセプト

リポジトリを見る
91352日前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

MSRKit

脆弱なドライバ(AmdTools64.sys)の wrmsr プリミティブを介した ROP チェーンによって、カーネル関数を呼び出し、ドライバをマッピングするためのツール。

仕組み

  1. NtLoadDriver を介して AmdTools64.sys をロードする(シンボリックリンクが利用できない場合は、PnP devnode + GUID ベースのデバイスインターフェースにフォールバックする)
  2. ドライバの MSR 読み取り IOCTL(0xFFF02804)を通じて IA32_LSTAR を読み取る
  3. ntoskrnl.exe をスキャンして ROP ガジェット(pop rcx; ret、mov cr4, rcx; ret、wbinvd; ret など)を探す
  4. IA32_LSTAR をエントリガジェットで上書きし、FMASK の AC をクリアし、syscall を発行する
  5. ROP チェーンは CR4 の SMEP/SMAP ビットをクリアし、カーネルスタック上で対象関数をディスパッチし、CR4 と LSTAR を復元し、sysretq を介してユーザーモードに戻る

ドライバのマッピングも同じ経路をたどる。ExAllocatePoolWithTag を介してカーネルプールを割り当て、準備された PE イメージ(リロケーション適用済み、インポート解決済み、セキュリティクッキーパッチ済み)をコピーし、マッピングされたエントリポイントを呼び出す。

使用方法

CLI

root@kitploit:~
msrkit <driver.sys> call    <ExportName> [args...]
msrkit <driver.sys> call_at <address>    [args...]
msrkit <driver.sys> map     <unsigned.sys> [entry args...]
msrkit <driver.sys> unmap   <address>
  • call -- 名前付きの ntoskrnl エクスポートを解決して呼び出す。引数は整数として解析される(0x プレフィックス付きの16進数)。戻り値を出力する。
  • call_at -- 任意のカーネル仮想アドレスを呼び出す。
  • map -- 署名のないドライバを非ページプールにマッピングし、そのエントリポイントを呼び出す(ExAllocatePoolWithTag)。マッピングされたベースアドレスを出力する。
  • unmap -- 指定されたベースアドレスにある以前にマッピングされたドライバを解放する。

ライブラリ

root@kitploit:~
#include "msrkit.h"

#pragma comment(lib, "msrkit.lib")

int main()
{
	MSRK::INIT(L"AmdTools64.sys");

	void* mptr = MSRK::CALL("ExAllocatePool2", 0x40ULL, 0x1000, 'Ruri');
	std::cout << "Memory allocate: " << mptr << std::endl;

	auto mptr23 = MSRK::MAP("driver.sys", 123, 456);
	std::cout << "Driver mapped: " << std::hex << (uintptr_t)mptr23 << "\n";

	// raw call
	std::vector<uint64_t>args = { 0x40ULL, 1024, 'Tagz' };
	void* mptr24 = MSRK::M_FUNCTION::CALL("ExAllocatePool2", args.data(), args.size());
	std::cout << "raw memory alloc : " << mptr24 << std::endl;

	std::vector<uint64_t>args2 = { 123, 456 };
	auto mptr25 = MSRK::M_DRIVERMAP::MAP( "driver.sys", args2.data(), args2.size() );

	MSRK::UNMAP(mptr23);	
	MSRK::CLEANUP();
}

オプションで、既存のドライバハンドルを渡してロードをスキップできる:

root@kitploit:~
MSRK::INIT("AmdTools64.sys", existing_handle);

ビルド

MSVC(v143+)および MASM(ml64.exe)を備えた Visual Studio が必要。

root@kitploit:~
cmake -B build -G "Visual Studio 17 2022" -A x64
cmake --build build --config Release

出力:build/Release/msrkit.exe(CLI)および msrkit.lib(静的ライブラリ)。

CFG は無効化されている(/guard:cf-)。スタッククッキー(/GS)は有効化されている。

機能

  • すべての Windows 10 および 11 ビルドを完全サポート
  • KPTI と互換
  • HVCI はサポートされない(HVCI を無効化する必要がある)
  • PnP / 非 PnP ドライバをサポート

制限事項

  • シングルコア実行のみ -- カーネル呼び出し中はスレッドが CPU 0 に固定される
  • 別々のプロセスからの同時 LSTAR ハイジャックは BSOD を引き起こす(一度に1つの呼び出し元のみ)
  • Zw/Nt システムコールスタブは LSTAR コンテキストから呼び出すことができない(KiSystemService に再入する)
ツールをダウンロード