0x01 - 杀死 Windows 内核缓解措施

这篇文章主要介绍了在 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 进行版本检查等修改。

重要细节:

  • 详细介绍了各种函数、工具的使用方法和相关代码实现,如CreateFileADeviceIoControlVirtualAllocEnumDeviceDriversMiGetPteAddress等函数,以及rp++工具用于查找 ROP gadget。
  • 提供了多个相关的研究资料和博客链接,如connormcgarr.github.iom0uk4.gitbook.io等,作为进一步学习和参考的资源。
  • 展示了在 WinDbg 中的调试过程和相关截图,如 CR4 寄存器的值、PTE 的输出等,以帮助理解内存保护机制和绕过过程。

总之,这篇文章全面介绍了在 Windows 内核漏洞利用中绕过相关保护机制的技术和实践,为后续的研究和开发提供了参考。

阅读 6
0 条评论