nullmap
一个非常简单的驱动手动映射器,基于我早期的 voidmap 和 CVE-2023-21768 POC,由 chompie 和 b33f 完成。由于底层 IoRing 后利用内存读/写原语无法很好地处理大量连续的读取和写入,我决定覆写 CR4 来禁用 SMEP/SMAP,以执行映射到用户态的驱动。已在 Windows 11 22H2 (22621.525) 上测试。
用法:
nullmap.exe <path_to_driver>
可能的问题:
- 手动映射的驱动会位于由 ExAllocatePool 分配的内存池中。如果你想将其用于更严肃的目的,应该考虑寻找更好的内存分配方式,使其不易被转储。
- 没有简单的方法读取原始的 cr4 值,这意味着我不得不硬编码我系统上的值。虽然大多数现代 CPU 上该值应该相同,但你仍应仔细检查该值是否正确。
- 我硬编码了到 NtGdiGetEmbUFI 的偏移,因为没有简单的方法对其进行特征码扫描,这意味着你必须针对自己的特定 Windows 版本更新该偏移。
- 它是在一个下午内写完的,可能不是最整洁的代码库。
视频:
