-
-
[原创]利用任意物理读写驱动来加载自己的驱动
-
发表于: 8小时前 128
-
早期许多漏洞驱动未对 MmMapIoSpace 施加严格的用户态访问限制,导致攻击者可借此读写物理内存(如利用 PFN 页表可直接将物理内存转换为虚拟内存)。为此,Windows 后续封堵了这一利用路径,将 PFN 页表设为不可映射,强行访问会直接触发蓝屏(BSOD)。
使用VDM。
其本质为修改一个内核函数 利用物理内存读写驱动来找到一个用户态可以调用传给内核态的函数 写入一段shellcode,来实现任意内核代码执行。但是由于其本质还是类似.data ptr hook (容易被检测,并且效率不高),而且作者最后利用它写的physmeme还是一个无模块驱动加载器 我认为其被检测的可能性还是很大的。
2.直接修改驱动校验函数
ShirokoLEET/PhysDrvLoader (各位大佬如果觉得好的话请点点star!)
即为我想要说的方法,如果我的目的只是加载我自己的驱动,为什么要这么复杂呢?
这里介绍 SystemSuperfetchInformation SuperFetch Query 超能力 - vegvisir
Gemini说:在 Windows 内核机制中,SystemSuperfetchInformation 是 NtQuerySystemInformation API 中一个未完全文档化的信息类(System Information Class 79)。
它之所以在 Red Team、漏洞利用 (Exploit Dev) 和恶意软件开发 (Maldev) 领域被称为**“超能力 (Superpower)”**,核心原因在于:它允许拥有特定权限(通常是 SeProfSingleProcessPrivilege 或 SeDebugPrivilege)的用户态程序,直接向内核的内存管理器探查极度详尽的物理内存和 PFN(物理页帧)页表状态
省流版:它可以查到每个物理页(PFN)的详细“户口本”信息。
具体能查到的核心字段包括:
物理坐标 (PFN / Physical Address):直接获取真实的物理地址编号。
当前状态 (Page State):精准知道该页是 Active(正在使用)、Standby(备用/缓存)、Modified(已修改待写入)还是 Free(空闲)。
归属文件 (File Mapping):如果页面已被使用或缓存,它能指出这个物理页对应的是硬盘上的哪个具体文件(例如 ntoskrnl.exe 或某个反作弊驱动)。