HWSyscalls 是一种使用 HWBP、HaloGate 和内核32 上的合成跳板来执行间接系统调用的新方法。
HWSyscalls 是一种新的方法,使用 3 个主要组件来执行间接系统调用:
间接系统调用是一种流行的方法,用于以不同的变化方式从 ntdll 调用系统调用,但是,从 ntdll 调用系统调用的主要问题是其核心:程序直接访问 ntdll,而不通过任何前置 dll。HWSyscalls 基于间接系统调用的核心思想,但通过结合硬件断点功能来解决这个问题,从而在 kernel32 中创建合成跳板,并在 HalosGate 中获取 SSN。为了方便起见,正常的间接系统调用流程如下所示:
我们更新了 HWSyscallExceptionHandler 函数的逻辑,添加了一些栈操作魔术,以使栈不可回退。我们通过直接调用 NTAPI 函数(其地址现在在 PrepareSyscall 函数中返回)来实现此操作,在 NTAPI 函数中触发 HWBP,创建一个新的栈帧,并将新栈帧的返回地址设置为 kernel32(或 kernelbase)中找到的"ADD RSP, 68; RET" gadget,同时还将栈参数复制过来。现在,栈完全不可回退,并且实际上通过 kernel32 在从 ntdll 返回时返回,而无需我们进行断点和执行流操作:
如需更多信息,请查看我们的博客文章 (即将推出)。
暂无开放 Issues,或尚未同步最近议题。