基于ETW的POC,用于识别直接和间接的系统调用。
作者:Sec-Labs | 发布时间:
项目地址
https://github.com/thefLink/Hunt-Weird-Syscalls
Hunt-Weird-Syscalls
这是一个基于ETW的POC,用于监控异常的系统调用。
目前,监控NtOpenThread和NtSetContextThread这两个系统调用,以识别直接和间接系统调用的指标。
描述
该项目使用ETW,更准确地说是基于内核的ETW提供程序来监控指标。
位于内核中的ETW提供程序可以有效地利用,因为发出的事件的调用跟踪包含了进行系统调用的用户模式地址。
这允许监控指标,指示直接和间接的系统调用,这是威胁行为者经常利用的技术:
1:从不受信任的模块(=直接系统调用)中进行系统调用
2:在ntdll中使用的系统调用存根与进行的系统调用不匹配(=间接系统调用)
该项目使用提供程序:Microsoft-Windows-Kernel-Audit-API-Calls,分别监控由系统调用NtSetContextThread或NtOpenThread触发的OpenThread和SetContextThread事件。
使用标志EVENT_ENABLE_PROPERTY_STACK_TRACE启用调用跟踪。
这是一个POC,仅监视两个特定的系统调用。当然,可以使用其他基于内核的提供程序来增强遥测。
测试
该项目包含两个示例程序,使用直接和间接系统调用创建,这些示例程序使用了令人惊叹的 SysWhispers3。生成的方法如下:
python3 syswhispers.py -a x64 -m jumper_randomized --functions NtSetContextThread
python3 syswhispers.py -a x64 -m embedded --functions NtSetContextThread
执行后,应识别出异常的系统调用:

在10.0.19044上测试通过。
致谢
- KrabsETW
- SysWhispers3
- etw provider docs by repnz
- @OutflankNL 提供
IsElevated()方法 - @trickster012 进行测试和支持 <3
标签:工具分享, 主机安全