Malware Dev 04 - 隐匿之 ETW(Event Tracing for Windows)Bypass

写在最前

如果你是信息安全爱好者,如果你想考一些证书来提升自己的能力,那么欢迎大家来我的 Discord 频道 Northern Bay。邀请链接在这里:

https://discord.gg/9XvvuFq9Wb

我拥有 OSCP,OSEP,OSWE,OSED,OSCE3,CRTO,CRTP,CRTE,PNPT,eCPPTv2,eCPTXv2,KLCP,eJPT 证书。

所以,我会提供任意证书备考过程中尽可能多的帮助,并分享学习和实践过程中的资源和心得,大家一起进步,一起 NB~


背景

ETW(Event Tracing for Windows)是 Windows 用来跟踪和记录用户模式和内核模式产生的事件的一种机制。

图片来自https://medium.com/threat-hunters-forge/threat-hunting-with-etw-events-and-helk-part-1-installing-silketw-6eb74815e4a0

ETW 底层使用微软提供的 Event Tracing API。这组 API 大致上分为三个组件:

  • Controllers:控制整个 Event Tracing Session 的启动与停止
  • Providers:负责分发事件
  • Consumers:负责消费事件

Consumers 订阅 Providers 的服务,然后由 Controllers 统一分发事件。

ETW 有几大有点:

  • 普遍,目前所有的 Windows 10+ 系统都自带 ETW,无需安装;
  • 标准,ETW 使用微软的标准框架,利于开发;
  • 高效,大型的架构都使用 ETW 作为日志方案,如 Docker,MSSQL Server 集群等;

同 Sysmon 一样,ETW 提供了另一层日志,帮助管理员更加有效监测攻击者的行为。

ETW 可以兼容 YARA 规则,让管理员能灵活配置关键字,在事件产生的时候,ETW 会根据 YARA 规则的关键字进行匹配,上报异常。

这篇文章,我们看一下如何绕过 ETW,隐藏在目标主机上的行动轨迹。

开始之前,我们首先要了解一下 ETW 的特性,以便更好地实施绕过。我们会使用 SilkETW 作为事件的消费者,来演示 ETW 的使用。

ETW(Event Tracing for Windows)的使用

SilkETW 是对微软 ETW (Microsoft.Diagnostics.Tracing)的封装,并且对 YARA 规则做了支持,方便灵活,简单易用。

首先下载 SilkETW 最新版本 ,或者克隆仓库自行编译。

解压 zip 文件,可以看到三个文件夹,Dependencies,SilkETW,以及 SilkService。

v8\SilkETW 文件夹中可以找到 SilkETW 的可执行文件。

在这里插入图片描述

看一下帮助文档。

在这里插入图片描述

我们会用到的几个参数依次是:

  • -t:type,记录用户模式事件(User),还是内核模式事件(Kernel),这里使用 User;
  • -pn:providername,使用 Microsoft-Windows-DotNETRuntime 即可;
  • -uk:keywords mask,使用 0x2038 即可
  • -ot:output type,输出格式,可以是 URL,file,eventlog,这里使用 file
  • -p:log file path,输出的日志文件路径
  • -f:filter,过滤规则,可以是 None,EventName,ProcessID,ProcessName,OpCode,这里使用 EventName;
  • -fv:filtervalue,过滤值,对应过滤规则,这里过滤规则是 EventName,要抓取 .Net Assembly 加载的事件,这里用 Loader/AssemblyLoad;
  • -y:yara,yara 规则的路径;
  • -yo:yaraoptions,可以记录全部事件(All),或者是匹配事件(Matches),这里使用 Matches;

我们首先使用日志的形式来收集信息,然后将日志的信息转化成 YARA 规则,继而使用 YARA 来实时监测异常行为。

我们使用域渗透很常见的工具,SharpKatz,来看一下 .NET Assembly 应用在加载和执行阶段,会有哪些事件产生。然后将这些事件转化成 YARA 规则,做实时监测。

收集事件日志

我们启动 SilkETW 来捕获一下 SharpKatz 加载和执行时产生的事件。

SilkETW.exe -t user -pn Microsoft-Windows-DotNETRuntime -uk 0x2038 -ot file -p C:\Users\opr\Desktop\etw.json

在这里插入图片描述

打开 etw.json 文件,可以看到记录下来的日志,包含了事件名称(EventName),以及应用名称(FullyQualifiedAssemblyName)等。

我们收集一些带有 SharpKatz 字符串的日志记录。

"FullyQualifiedAssemblyName":"SharpKatz, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"

"ManagedInteropMethodNamespace":"SharpKatz.Win32.SysCall+Delegates+RtlGetNtVersionNumbers"

"MethodNamespace":"SharpKatz.Utility"

"ManagedInterop
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值