这篇文章主要介绍了在 Windows 内核漏洞利用方面的研究和实践,包括绕过 Windows 8 以来内置的内存保护机制 SMEP(Supervisor Mode Execution Prevention)和 Virtualization-Based Security(VBS),以及创建通用的绕过技术“Violet Phosphorus”。
主要观点和关键信息:
- 通过努力和决心完成此文章,强调源代码的重要性,后续内容基于对 Windows 内核漏洞利用的深入理解展开。
- 从 Windows 7(x86)的栈溢出漏洞利用过渡到 Windows 10(x64)和 Windows 11(x64)的利用开发,使用 C 语言替代 Python,并介绍了相关的编译环境和工具(如 mingw-w64 和 Visual Studio)。
- 遇到 SMEP 内存保护机制,其通过设置 CR4 寄存器的 20 位来启用,理论上可通过 ROP 技术绕过,通过编写 C 程序找到要放置在 CR4 中的值,并在 WinDbg 中进行验证,还找到了用于修改 CR4 的 ROP gadget,但要处理
nt
模块的随机化问题。 - 引入 VBS 机制,遇到无法直接执行 shellcode 的问题,通过修改 Page Table Entry(PTE)中的 U/S 位(将用户模式位 U 清除为内核模式位 K)来绕过 VBS,利用
MiGetPteAddress
函数获取 PTE 地址并进行操作。 - 创建“Violet Phosphorus”通用的 SMEP/VBS 绕过技术,通过一系列 ROP 操作实现,包括准备寄存器、调用
MiGetPteAddress
函数、修改 PTE 位等,并使用 Kristal-G 的 SYSRET 壳代码返回用户模式。 - 给出了包含上述绕过技术的 PoC 代码,在测试中成功绕过 Windows 11 的最新版本的内核保护机制,并提到需要对 shellcode 进行版本检查等修改。
重要细节:
- 详细介绍了各种函数、工具的使用方法和相关代码实现,如
CreateFileA
、DeviceIoControl
、VirtualAlloc
、EnumDeviceDrivers
、MiGetPteAddress
等函数,以及rp++
工具用于查找 ROP gadget。 - 提供了多个相关的研究资料和博客链接,如
connormcgarr.github.io
、m0uk4.gitbook.io
等,作为进一步学习和参考的资源。 - 展示了在 WinDbg 中的调试过程和相关截图,如 CR4 寄存器的值、PTE 的输出等,以帮助理解内存保护机制和绕过过程。
总之,这篇文章全面介绍了在 Windows 内核漏洞利用中绕过相关保护机制的技术和实践,为后续的研究和开发提供了参考。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。