Sysmon 威胁分析指南,第 1 部分

Sysmon 威胁分析指南,第 1 部分

本文是 Sysmon 威胁分析系列的第一部分。 该系列的所有其他部分:

第1部分:Sysmon日志分析简介 (我们在这儿)
第 2 部分:使用 Sysmon 事件数据识别威胁
第 3 部分. 使用图表深入分析 Sysmon 威胁

如果您从事信息安全工作,您可能经常需要了解正在进行的攻击。 如果您已经拥有训练有素的眼睛,则可以在“原始”未处理日志中查找非标准活动 - 例如,正在运行的 PowerShell 脚本 使用 DownloadString 命令 或伪装成 Word 文件的 VBS 脚本 - 只需滚动 Windows 事件日志中的最新活动即可。 但这确实是一个非常令人头疼的问题。 幸运的是,微软创建了 Sysmon,这使得攻击分析变得更加容易。

想要了解 Sysmon 日志中显示的威胁背后的基本思想吗? 下载我们的指南 WMI 事件作为间谍手段 您会意识到内部人员如何秘密观察其他员工。 使用 Windows 事件日志的主要问题是缺乏有关父进程的信息,即从中无法理解流程的层次结构。 另一方面,Sysmon 日志条目包含父进程 ID、其名称以及要启动的命令行。 谢谢你,微软。

在我们系列的第一部分中,我们将了解您可以使用 Sysmon 的基本信息做什么。 在第 XNUMX 部分中,我们将充分利用父进程信息来创建更复杂的合规性结构(称为威胁图)。 在第三部分中,我们将研究一种简单的算法,该算法扫描威胁图,通过分析图的“权重”来搜索异常活动。 最后,您将获得一种简洁(且易于理解)的概率威胁检测方法。

第1部分:Sysmon日志分析简介

什么可以帮助您理解事件日志的复杂性? 最终——SIEM。 它将事件标准化并简化后续分析。 但我们不必走那么远,至少一开始不需要。 一开始,要了解 SIEM 的原理,尝试一下精彩的免费 Sysmon 实用程序就足够了。 而且她出奇地容易相处。 继续努力,微软!

Sysmon 有哪些功能?

简而言之 - 有关流程的有用且可读的信息(见下图)。 您会发现 Windows 事件日志中没有的大量有用详细信息,但最重要的是以下字段:

  • 进程 ID(十进制,而不是十六进制!)
  • 父进程ID
  • 处理命令行
  • 父进程的命令行
  • 文件图像哈希
  • 文件图像名称

Sysmon 既作为设备驱动程序又作为服务安装 - 更多详细信息 在这里。 它的主要优点是能够分析来自 几个 源、信息关联以及结果值输出到位于路径沿线的一个事件日志文件夹 Microsoft -> Windows -> Sysmon -> 操作。 在我自己对 Windows 日志进行的令人毛骨悚然的调查中,我发现自己必须不断地在 PowerShell 日志文件夹和安全文件夹之间切换,快速浏览事件日志,勇敢地尝试以某种方式将两者之间的值关联起来。 这从来都不是一件容易的事,我后来意识到,最好立即储备阿司匹林。

Sysmon 通过提供有用的(或者供应商喜欢说的,可操作的)信息来帮助理解底层流程,从而实现了巨大的飞跃。 例如,我开始了一个秘密会议 wmiexec,模拟网络内智能内部人员的移动。 这是您将在 Windows 事件日志中看到的内容:

Sysmon 威胁分析指南,第 1 部分

Windows日志显示了有关该进程的一些信息,但用处不大。 加上十六进制的进程ID???

对于了解黑客基础知识的专业 IT 专业人员来说,命令行应该是值得怀疑的。 使用cmd.exe然后运行另一个命令并将输出重定向到一个奇怪名称的文件,这显然类似于监控软件的操作 命令与控制(C2):这样就使用WMI服务创建了一个伪shell。
现在让我们看一下 Sysmon 条目的等效项,注意它为我们提供了多少附加信息:

Sysmon 威胁分析指南,第 1 部分

Sysmon 功能在一张屏幕截图中:以可读的形式提供有关进程的详细信息

您不仅可以看到命令行,还可以看到文件名、可执行应用程序的路径、Windows 所了解的信息(“Windows 命令处理器”)、标识符 父母的 进程、命令行 ,它启动了cmd shell,以及父进程的真实文件名。 终于一切都集中在一处!
从 Sysmon 日志中我们可以得出结论,我们在“原始”日志中看到的这个可疑命令行很可能不是员工正常工作的结果。 恰恰相反,它是由类似 C2 的进程(如我之前提到的 wmiexec)生成的,并且直接由 WMI 服务进程 (WmiPrvSe) 生成。 现在我们有一个迹象表明远程攻击者或内部人员正在测试公司基础设施。

介绍 Get-Sysmonlogs

当然,如果 Sysmon 将日志放在一处,那就太好了。 但如果我们能够以编程方式访问各个日志字段(例如通过 PowerShell 命令),情况可能会更好。 在这种情况下,您可以编写一个小型 PowerShell 脚本来自动搜索潜在威胁!
我并不是第一个有这样想法的人。 在一些论坛帖子和 GitHub 中,这很好 项目 前面已经解释了如何使用PowerShell解析Sysmon日志。 就我而言,我想避免为每个 Sysmon 字段编写单独的解析脚本行。 所以我使用了懒人原则,我想我想出了一些有趣的结果。
第一个重要的点是团队的能力 获取 WinEvent 读取 Sysmon 日志,过滤必要的事件并将结果输出到 PS 变量,如下所示:

$events = Get-WinEvent  -LogName "Microsoft-Windows-Sysmon/Operational" | where { $_.id -eq 1 -or $_.id -eq 11}

如果您想自己测试该命令,通过显示 $events 数组的第一个元素 $events[0].Message 中的内容,输出可以是一系列格式非常简单的文本字符串: Sysmon 字段、冒号,然后是值本身。

Sysmon 威胁分析指南,第 1 部分

万岁! 将 Sysmon 日志输出为 JSON-ready 格式

你是不是和我有同样的想法? 只需多一点努力,您就可以将输出转换为 JSON 格式的字符串,然后使用强大的命令将其直接加载到 PS 对象中 ConvertFrom-Json 格式 .
我将在下一部分中展示用于转换的 PowerShell 代码 - 它非常简单。 现在,让我们看看我作为 PS 模块安装的名为 get-sysmonlogs 的新命令可以执行哪些操作。
我们可以轻松地直接从 PowerShell 会话中搜索增量活动,以及使用 PS 命令,而不是通过不方便的事件日志界面深入进行 Sysmon 日志分析 哪里 (别名 - “?”)缩短搜索结果:

Sysmon 威胁分析指南,第 1 部分

通过 WMI 启动的 cmd shell 列表。 使用我们自己的 Get-Sysmonlogs 团队进行廉价的威胁分析

奇妙! 我创建了一个工具来轮询 Sysmon 日志,就像它是一个数据库一样。 在我们的文章中关于 EQL 值得注意的是,该功能将由其中描述的酷实用程序执行,尽管形式上仍然是通过真正的类似 SQL 的接口。 是的,EQL 优雅的,但我们会在第三部分谈到它。

Sysmon 和图形分析

让我们退一步思考一下我们刚刚创建的内容。 本质上,我们现在拥有一个可通过 PowerShell 访问的 Windows 事件数据库。 正如我之前提到的,记录之间存在连接或关系(通过 ParentProcessId),因此可以获得完整的流程层次结构。

如果您读过该系列 《难以捉摸的恶意软件历险记》 您知道,黑客喜欢创建复杂的多阶段攻击,其中每个进程都发挥自己的小作用,并为下一步准备跳板。 仅仅从“原始”日志中捕获这些东西是极其困难的。
但是,通过我的 Get-Sysmonlogs 命令和我们稍后将在文本中查看的附加数据结构(当然是图表),我们有一种实用的方法来检测威胁 - 这只需要进行正确的顶点搜索。
与我们的 DYI 博客项目一样,您越多地分析小规模威胁的细节,您就越会意识到企业级别的威胁检测有多么复杂。 而这种意识是极其 很重要的一点.

我们将在本文的第二部分中遇到第一个有趣的复杂情况,我们将开始将 Sysmon 事件相互连接成更复杂的结构。

来源: habr.com

添加评论