隐藏的宝藏:ETW的入侵检测(第1部分)

今天的互联网用户所面临的信息不对称已经是越来越大的障碍。随着内存中的攻击和有针对性的恶意软件的出现,用户不能仅仅依靠Windows提供的默认事件日志。攻击者可能会使用空进程来将其代码隐藏在一个看似良性的过程中,并将其Command&Control通过DNS路由保持流量隐藏。

在通过Office 365模拟攻击练习我们的事件响应功能后,我们开始调查Windows安全事件日志之外的备用数据源。我们意识到,虽然我们看到一个可疑进程已经开始执行,但我们不知道该进程查询了哪些域,或者发送哪些数据到哪些端口。此外,我们发现PowerShell.exe执行的命令则是未知部分,对手可以执行任意数量的未知命令。所以我们需要比通过安全事件日志提供更多的信息。

挑战

想象下面的情况 – 在查看事件日志时,您发现一个未知可执行文件的进程启动事件(4688),bad.exe:

1

不幸的是,当您使用此可疑进程调查机器时,bad.exe不再位于磁盘或任何位置。仅使用Windows安全事件日志中可用的内容,除了4688 Process Start事件中的上述内容之外,您只能获得非常少的信息。

现在想一下取证所需要的东西。关于bad.exe的哪些信息在检测和威胁评估中最有用?主要是我们对三个问题感兴趣

  • 谁干的?例如用户名
  • 他们做了什么?例如过程 – 如果使用过程中空/注射,这可能会产生误导
  • 他们在哪里发送数据?例如网络目的地和域名

考虑到这些问题,我们想知道的问题列表可能如下所示:

  • 进程执行哪些DNS查找?
  • 该进程连接到哪个IP地址?
  • 流程传输了多少数据?
  • 过程“指向”?即进程是否与Command&Control基础架构通信?
  • 哪些DLL被进程加载?
  • 过程是否在其他进程中创建线程?
  • 该进程执行哪些WMI操作?
  • 进程调用了哪些PowerShell函数?

要收集这种类型的数据,您可能会假设需要内核驱动程序或某种挂钩机制。幸运的是,Windows提供了现有的数据源,可以帮助我们回答这些ETW或Windows事件跟踪的问题。

ETW提供的支持

Windows事件跟踪(ETW)是Windows 2000以来在Windows中可用的跟踪技术。它最初旨在帮助Microsoft工程师调试操作系统,例如性能测量和电源管理跟踪。在以前的生活中,我是Windows的工程师,并使用ETW进行性能测试和组件跟踪。

ETW与您可能遇到的其他跟踪技术没有显着差异。一个组件(例如PowerShell)发出一个或多个类型的事件。每个事件都有一个描述事件执行操作中包含的数据类型的模式。事件可能包含字符串,整数,浮点数,布尔值,甚至二进制数据。

ETW流程图如下:

2

ETW的属性

为了更好地了解什么是ETW事件,我们将使用一个名为Microsoft Message Analyzer的工具。该工具允许您调用操作系统上可用的ETW跟踪,并在事件进入时检查事件。

以下是启动PowerShell提供程序后Message Analyzer的主窗口:

3

在中心,我们看到一系列的事件与总结:

4

当我们选择其中一个事件时,就像上面突出显示的那些事件,我们在下半部分得到一个详细的视图:

5

标有“ContextInfo”,“UserData”和“Payload”的前三个项目都是此事件的属性。我们可以看到“类型”列描述了所有这些都是字符串。如果我们选择其中一个属性,我们可以看到该属性的内容:

6

这是一个包含主机应用程序(“powershell.exe”),命令名称(“invoke-mimikatz”)和调用它的用户(“REDMOND\zbrown”)的结构化字符串blob。

每个ETW提供商都会有自己独特的模式发送事件。除了唯一的模式,每个事件还有一些标准属性 – EventId,ProcessId,ThreadId,TimeStamp,ProviderId等等。这些属性对于所有ETW事件是常见的。

如果您想了解更多有关使用Message Analyzer来检查ETW事件的信息,请参阅本指南

ETW可视性

ETW提供对大多数核心Windows子系统的可视性,包括:

  • 网络活动
  • 流程创建/终止
  • 线程创建/终止
  • 内存分配
  • DLL加载/卸载
  • PowerShell方法调用
  • DNS解析(缓存)
  • 防火墙活动
  • WMI活动
  • WinINet请求/响应头
  • 还有更多的…

在Windows 10中,有超过1000个提供商。如果您好奇您的Windows版本上提供哪些提供程序,则可以运行以下命令:

logman query providers > providers.txt

随着所有这些数据成熟,您可以假设我们可以简单地将这些ETW打开,并立即开始从增加的信息中受益。然而,ETW仍然是一个调试流,因此输出了真正大量的数据。这就像从消防水带中喝水:

7

想象一下,尝试将此数据发送到您的SIEM:

  • 每个进程中的每个DLL加载
  • 每个进程中的每个线程创建
  • 每个进程从每个端口开始

如果我们以原始形式发送数据,可能无法有效地使用数据。要使用这个新的数据源,我们需要一些方法来过滤和/或汇总数据。

在ETW的下一篇博客文章中,我们将讨论如何以编程方式消耗ETW,输入过滤以及如何对上述我们概述的取证问题列表进行解答。

 

*参考:Office 365安全小组的官方博客,转载请注明来自MottoIN

原创文章,作者:Jarry,如若转载,请注明出处:http://www.mottoin.com/100501.html

发表评论

登录后才能评论

联系我们

021-62666911

在线咨询:点击这里给我发消息

邮件:root@mottoin.com

工作时间:周一至周五,9:30-18:30,节假日休息

QR code