0xflux/Hells-Hollow

GitHub: 0xflux/Hells-Hollow

该项目展示了一种兼容 Windows 11 的现代 SSDT Hooking 技术,通过滥用内核 Alternate Syscall 机制实现对系统调用的拦截与篡改,同时抵抗 PatchGuard 检测。

Stars: 264 | Forks: 30

# Hells Hollow Hell's Hollow 是一种兼容 Windows 11 的 rootkit 技术,相当于一种现代的(抵抗 PatchGuard 的)技术,可以有效地 执行 SSDT Hooking(系统服务分发表)—— 绕过内核中所有先前的防御机制。 该技术的工作原理是滥用内核中未公开的 Alternate Syscall 处理程序机制,借此我们可以直接 修改 KTRAP_FRAME,从而能够在 Windows 11 中有效地 hook SSDT。我们可以决定是让 OS 继续分发 系统调用(这使我们能够修改传递给它的参数),还是代表 dispatcher 进行修改,并直接返回到 用户态 —— 这样调用程序就会认为系统调用已正常分发。 - [关于 Hells Hollow 的博客文章](https://fluxsec.red/hells-hollow-a-new-SSDT-hooking-technique-with-alt-syscalls-rootkit) - [关于 Alt Syscalls 内部原理的博客文章](https://fluxsec.red/alt-syscalls-for-windows-11) 特别感谢 [@sixtyvividtails](https://x.com/sixtyvividtails),在我对该技术的首次实现中提出了一个关键的[观察](https://x.com/sixtyvividtails/status/1950581722070069404):即可以通过直接读取 KTHREAD 来简化 KTRAP 的发现过程。代码仓库现已更新以反映这一点,现在它的运行效果更好,甚至不需要进行任何堆栈修改! 通过 hook 修改系统调用的返回值: ![Hells Hollow SSDT hooking Windows 11 Rust](https://raw.githubusercontent.com/0xflux/Hells-Hollow/master/img/poc.png) ### 限制 感谢 [Xacone](https://github.com/Xacone) 进行的一些测试,我们现在知道 **HVCI** 会阻止对 `PspServiceDescriptorGroupTable ` 结构的写入;因此该技术被 HVCI 阻止。 ## 设置 我已经将此仓库作为生成该技术的 MVP(使用 Rust 编写)上传。如果你刚开始接触 Rust,只是想让它跑 起来,请按照 [Windows Rust Drivers](https://github.com/microsoft/windows-drivers-rs) 项目中的环境配置步骤进行操作,并运行 `cargo make`。 它会生成一个驱动程序,你可以直接用 OSR 或任何你想要的工具来加载它。此 POC 旨在(通过 Alt Syscalls)在内核中 hook `NtTraceEvent`, 它会在 `rax` 中将返回值修改为 0xff 传递给用户态。 如果你想在自己选择的其他 SSN(而不是 `NtTraceEvent`)上测试这一点,请创建一个名为 `hello_world.exe` 的程序(此 rootkit 目前会对其进行过滤), 并在 [alt_syscalls.rs](https://github.com/0xflux/Hells-Hollow/blob/master/src/alt_syscalls.rs) 中更改你想要 hook 的 SSN,目前它定义为: ``` const NT_TRACE_EVENT_SSN: u32 = 0x005e; ``` 然后,通过针对 Alt Syscall 回调/陷阱的内核调试器,或者针对系统调用本身的用户态调试器,你将看到底层发生的事情。 视频 POC 很快就会发布,并会对底层机制提供更多解释,在此之前,请阅读我的博客 :)。 ### 参考 - [Alt Syscalls for Windows 11 - 0xflux](https://fluxsec.red/alt-syscalls-for-windows-11) - [System Calls Tracing & Monitoring via Alternative Handlers - Xacone](https://xacone.github.io/BestEdrOfTheMarketV3.html#4) - [WinAltSyscallHandler - 0xcpu](https://github.com/0xcpu/WinAltSyscallHandler/tree/master) - [Symbols](https://www.vergiliusproject.com/kernels/x64/windows-11/24h2)
标签:Hpfeeds, Rootkit, Rust驱动, SSDT Hook, Windows内核, Zeek, 可视化界面, 白帽子, 系统调用, 通知系统