HellsHall – 获取干净系统调用的另一种方法
HellsHall 是HellsGate和间接系统调用的组合。
怎么运行的
首先,HellsHall 检查系统调用地址是否被挂钩,并尝试通过检查以下字节的存在来检索系统调用号:
0x4C, 0x8B, 0xD1, 0xB8
代表mov r10,rcx && mov eax,SSn
. 这就是每个系统调用应该如何开始。
此时,HellsGate 只是简单地获取系统调用 SSn(系统调用编号)并直接使用它,导致系统调用从地址空间之外被调用ntdll.dll
。这本身就是一个 IoC,可用于检测此类系统调用。检测实例:
然而,HellsHall 会在系统调用函数的地址附近搜索一条syscall
指令,然后将该系统调用的指令地址保存到一个全局变量中,稍后将跳转到该变量,而不是直接从asm
文件中执行该指令。这将导致系统调用函数从ntdll.dll
地址空间内部执行,唯一的区别是它未被挂钩。
强化
TartarusGate可用于进一步增强此技术。
HellsGate
HellsHall
效果
使用此 HellsHall 实现绕过 Below EDR,该实现使用NtAllocateVirtualMemory
、NtProtectVirtualMemory
和NtCreateThreadEx
syscalls 与一个RWX
部分。
没有回复内容