ETW在APT进程检测中的应用场景

2020-12-09 06:52吴红
网络安全技术与应用 2020年12期
关键词:提供者关键字日志

◆吴红

(国网眉山供电公司四川 620010)

Windows事件跟踪[1](Event Tracing for Windows)是Windows操作系统提供的内核级别跟踪工具。在软件开发领域,ETW提供了以非侵入式的方式来监控组件的能力,例如识别CPU高占用率、资源泄露、调用堆栈,并能输出日志以便构建监控与警报系统。由于其强大的功能及广泛的覆盖面,在安全领域也常用作SIEM[2]等安全组件的事件收集器。

在APT攻击中,APT组织几乎都会在受害者主机上部署恶意软件,这些软件功能可能各有侧重,但总需要一种方式将数据走私至外部网络,因此NIDS等安全设施尽其所能地检测网络流量中的可疑行为,从而发现APT攻击的痕迹。除此之外,HIDS或EDR等终端防护设施也需要监视系统环境,试图拦截APT进程发起各类数据窃取、横向移动、权限提升、后门部署行为,并配合NIDS关联受害主机与恶意进程,而ETW正好提供了基础。ETW能以多个角度对进程行为进行记录,如进程调用的Win32 API、调用堆栈、加载的dll、网络通信等,并且十分高效。因此,使用ETW作为数据源构建自动化APT威胁告警系统是一种可行的方案。本文将介绍ETW架构,并描述一种基于ETW的可疑APT进程检测的解决方案。

1 ETW架构介绍

ETW分为三个组件:

(1)控制器,用于启动和停止事件跟踪会话并启用提供程序。

(2)提供者,提供事件。

(3)消费者,消费事件。

有四种提供者,MOF提供者、WPP提供者、基于清单的提供者与TraceLogging提供者。每一个基于清单的提供者都有下列信息:

(1)名称;

(2)GUID;

(3)级别,系统使用6个级别,0为Log Always,1为Critical,2为Error, 3为Warning,4为Informational,5为Verbose,其中0是默认级别。还可以定义自定义日志记录级别,但保留级别 6-15。可以通过 ORing各自的级别来捕获一个以上的日志记录级别;提供255 (0xFF)是捕获所有支持的日志记录级别的标准方法;

(4)关键字 All,关键字用于过滤特定类别的事件。日志级别用于按事件的真实性/重要性进行过滤,而关键字则允许按事件类别进行过滤。一个关键字对应于一个特定的位值。All表示对于KeywordsAny匹配的给定关键字,应根据 KeywordsAll中的特定位值进行进一步过滤。该字段通常被设置为零;

(5)关键字Any,允许根据指定的关键字的任意组合进行过滤。这可被视为“逻辑或”,其中 KeywordsAll是“逻辑与”的后续应用。低的 6个字节指的是特定于提供者的关键字,高的两个字节是保留的。

(6)属性;

(7)过滤器类型。

图1 ETW架构图

2 ETW相关工具及库

2.1 Logman

Logman是Windows内置的事件跟踪会话创建与管理工具。下面介绍一些用法:

(1)查询Providers: logman query providers;

(2)查询系统正在运行的ETW会话:logman query -ets;

(3)创建事件跟踪会话:logman create trace [Name]-ets。

2.2 ETWExplorer

ETWExplorer用于查看Provider的元信息,例如事件类型、模板、关键字等。如果想探索系统中一些未文档化或用例较少的Provider,该工具是一个较好的选择。

2.3 Microsoft Message Analyzer

该工具是微软官方提供的ETW分析工具,功能强大并具有友好的用户界面,但它已停止开发与支持。

2.4 Krabsetw

krabsetw是一个C++库,它简化了与ETW的交互。它允许启用任何数量的跟踪和提供者,并允许客户端代码从这些跟踪中注册事件通知。krabsetw还提供了代码来简化将通用事件数据解析为强类型数据的过程。

2.5 flatkrabsetw

flatkrabsetw 是一个围绕 krabsetw C++ 库的 flat-C 封装器。它的主要目的是为其他语言的FFI绑定提供接口。

3 使用ETW记录进程行为

本文的解决方案主要从三个方面记录进程行为:

对于进程网络行为,我们选择Provider Microsoft-Windows-Kernel-Network。该Provider提供TCP/IP及UDP协议细粒度的事件模板,如发起连接、连接建立、发送数据、接收数据、断开连接等。模板字段包含数据长度、源地址、目标地址、源端口、目标端口、开始时间、结束时间、以及最重要的进程ID等信息。

对于进程的操作行为,如镜像加载、线程创建等,使用Microsoft-Windows-Kernel-Process Provider。该Provider提供的重要事件模板有进程创建、进程结束、线程创建、线程结束、镜像加载、镜像卸载。

APT攻击行为中的数据窃取会留下对文件系统的访问痕迹,而这些痕迹可通过ETW Provider Microsoft-Windows-Kernel-File记录。该Provider记录文件创建、写入、读取、移动、拷贝、重命名、设置安全描述符等。

下一步是选择对ETW进行交互的工具。Logman等命令行工具虽然允许我们配置并启动ETW会话,但它们通常不提供API或自定义配置以供其他客户端实时分析并处理日志。虽然我们可以选择先保存日志文件,再统一转发至日志中心,但这样做在实时性上稍差,对事件日志的预处理也需要在服务端统一完成,而一些轻量的预处理工作交由客户端处理更加合适。因此,我们的方案是自行开发事件收集器,为了减轻开发人员的工作量,使用脚本语言FFI[3]库与ETW进行交互。

4 事件处理与分析

Elasticsearch、Logstash 和 Kibana(ELK)I[4]在数据处理和分析领域有广泛应用。使用ETW收集到的事件日志将流经日志管道并落入Elasticsearch中,可通过Elasticsearch API检索并进一步分析。在部署ELK栈时,我们在靠近数据源侧使用Filebeat TCP端口转发日志到Redis数据库中,Redis数据库用于消息队列。

当NIDS发出告警后,APT分析引擎将关联连接时间到ETW事件中的一组网络通信日志,并提取PID字段,在Elasticsearch中过滤出相应的进程并告警。接下来,引擎进一步分析可疑进程,这一步可通过下列几个方面进行:

(1)调用反病毒软件接口进行查杀。例如主机是Windows 10操作系统,则调用内置的反病毒软件扫描接口[5](AMSI)的Scan方法扫描。

(2)提取进程链,这一过程需要部署在主机上的Agent配合收集信息。获得进程链后,识别可疑模式,如利用 Office宏创建的子进程,或者Jscript或VBScript等脚本引擎解释器创建的子进程,以及WMI宿主进程创建的子进程。

(3)标记“白加黑”模式运行的可疑软件。白加黑指利用杀软白名单进程加载恶意 dll的手法。如果 dll包含 APT所需的核心功能,则其在加载后可能直接搜集数据并发送至攻击源,因此,分析引擎寻找最早的告警记录时间并在其之前一段范围里过滤进程镜像加载事件,以此大致定位可疑的dll,当然这种方式误报率较高。

(4)C2信道检测。虽然有不少APT组织使用的远控都能随机化心跳包间隔,但检测以固定间隔发起的C2连接请求仍然有必要。除此之外,使用DNS信道往往会产生大量DNS请求,因此过于频繁的DNS流量也是检测指标之一。

5 结束语

本文介绍了ETW在APT检测中的应用。ETW作为Windows内置的高效工具,已经被大量运用于红军安全建设领域,越来越多的安全产品也使用它收集数据。但ETW不是万灵药,不能笃定ETW能无损地记录所有数据。目前已有不少技术用于避开或破坏ETW架构,因此在未来围绕ETW的对抗还将持续升温。

猜你喜欢
提供者关键字日志
履职尽责求实效 真抓实干勇作为——十个关键字,盘点江苏统战的2021
一名老党员的工作日志
扶贫日志
网络交易平台提供者的法律地位与民事责任分析
基于隐私度和稳定度的D2D数据共享伙伴选择机制
成功避开“关键字”
雅皮的心情日志
雅皮的心情日志
网络言论自由的行政法规制研究
做商用车行业新材料应用解决方案的提供者——访同元集团副总裁赵延东