直接系统调用学习记录
2023-10-14 20:47:17 Author: xz.aliyun.com(查看原文) 阅读量:3 收藏

什么是直接系统调用

直接系统调用是windows系统上的操作,允许用户模式临时到内核模式.攻击者无需从kenel32.dll获取api或者是ntdll.dll。

EDR
现在的EDR厂商实现在Ring3层实现了挂钩,通过用户资料替换操作码和操作数导致重新到EDR的hook.dll。EDR检测出本机API执行的代码是否存在恶意内容和行为

常规调用和直接调用的流程图片
这个是未挂钩的执行图片

这个是EDR挂钩之后的执行流程

这个是直接系统调用的流程图

显而易见直接系统调用没走正常路线所有没有被EDR的钩子检测到达到了绕过EDR的目的

需要的文件
https://github.com/jthuraisamy/SysWhispers2
这里使用SysWhisper2当中的syscalls.h

asm文件
需要的函数

MOVE r10,rcx
mov eax,funcation
syscall
ret

代码实现

这里我使用c++来实现这个代码

这里现获取到ntdll.dll的句柄,从ntdll.dll中的NtallocateVirtualMemory函数读取系统调用号,系统调用号为函数的第四个字节,这个就是系统调用的核心部分。
重复这个操作获取到全部要使用的函数然后就可以执行加载shellcode

这里给出MASM汇编代码


EXTERN用于全局访问变量 包含了对应的SSN

展示效果

处理一下


文章来源: https://xz.aliyun.com/t/12903
如有侵权请联系:admin#unsafe.sh