本文将为您详细介绍如何利用evtmute工具对windows事件日志进行筛选和过滤。evtmute允许我们使用yara规则进行攻击性操作,并对已经记录在windows事件日志中的事件进行动态过滤和筛选。
工具下载
研究人员可以使用以下命令将该项目克隆到本地:
或者,您可以直接点击底部【阅读原文】访问该项目的Releases页面,下载最新的EvtMute已编译版本。
工具使用
EvtMuteHook.dll包含该工具的核心功能,注入成功后,它将应用一个临时过滤器,允许报告所有事件。这个过滤器可以动态更新,而无需重新注入。SharpEvtMute.exe是一个C#程序集,可以通过在shad0w中执行或在Cobalt Strike中运行来使用。为了更好地与shad0w集成,我还计划用C语言编写原生版本。
禁用日志记录
EvtMute最常见的使用场景是禁用系统范围内的事件日志记录。我们可以应用以下Yara规则来实现:
首先,我们需要通过向事件(event)服务中注入钩子:
钩子设置好后,我们可以开始添加过滤器:
现在,event服务将忽略所有事件。
复杂型过滤器
EvtMute的过滤器可以动态更改,且无需重新注入钩子,这使得研究人员可以轻松更新现有的过滤器和规则。
以下是一个更复杂的过滤器示例,它可以阻止sysmon报告与lsass内存转储相关的事件:
对于这种复杂的Yara规则,我们很难将其浓缩成一行代码,因此我在EvtMute中添加了Base64编码功能。
可以通过Linux命令行终端将规则转换为Base64编码:
然后,使用—Encoded选项将其传递给过滤器:
操作安全注意事项
在注入钩子时,SharpEvtMute.exe会调用CreateRemoteThread,这个调用是在钩子设置之前进行的,因此会被Sysmon捕捉并报告。由于SharpEvtMute.exe文件仅用于PoC,我建议大家手动将EvtMuteHook.dll注入到事件日志服务中。
可以通过运行以下命令查看事件日志服务的进程PID,您还可以通过C2框架将钩子手动注入到shellcode中。
值得注意的是,钩子将使用命名管道来更新过滤器,命名的管道名为EvtMuteHook_Rule_Pipe。
项目地址
EvtMute:点击底部【阅读原文】获取