voidmap
一个非常简单的驱动手动映射器,利用 CVE-2021-40449 在给定地址执行任意函数并传入单个参数。它基于 CallbackHell 漏洞利用 PoC。已在 Windows 10 Pro For Workstations 1809 17763.379(64 位)上测试,但实际上那个时期左右的系统应该都支持。
它执行以下操作:
- 通过重写 cr4 寄存器值来禁用 SMEP(可能还有 SMAP)
- 跳转到用户模式代码,手动映射目标驱动
- 重新启用 SMEP(可能还有 SMAP)
这种方法有两个主要问题:
- 手动映射的驱动将位于由 ExAllocatePool 分配的内存池中。如果你想将其用于更严肃的目的,应考虑寻找更好的内存分配方式,使其不易被转储。
- 没有简单的方法读取原始 cr4 值,这意味着我必须硬编码我系统上的值。虽然对于大多数现代 CPU 来说该值应该相同,但你仍应仔细检查该值是否正确。
视频:
