执行间接清理系统调用(Syscalls) | 可以绕过EDR-网络攻防学习社区-安全圈子-FancyPig's blog

执行间接清理系统调用(Syscalls) | 可以绕过EDR

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

a0640187e3155901

 

HellsHall

0678fa6505155912

 

效果

使用此 HellsHall 实现绕过 Below EDR,该实现使用NtAllocateVirtualMemoryNtProtectVirtualMemoryNtCreateThreadExsyscalls 与一个RWX部分。

a3c6e6af48155925

 

请登录后发表评论

    没有回复内容