本文是 Sysmon 威胁分析系列的第一部分。 该系列的所有其他部分:
第1部分:Sysmon日志分析简介 (我们在这儿)
第 2 部分:使用 Sysmon 事件数据识别威胁
第 3 部分. 使用图表深入分析 Sysmon 威胁
如果您从事信息安全工作,您可能经常需要了解正在进行的攻击。 如果您已经拥有训练有素的眼睛,则可以在“原始”未处理日志中查找非标准活动 - 例如,正在运行的 PowerShell 脚本
想要了解 Sysmon 日志中显示的威胁背后的基本思想吗? 下载我们的指南
在我们系列的第一部分中,我们将了解您可以使用 Sysmon 的基本信息做什么。 在第 XNUMX 部分中,我们将充分利用父进程信息来创建更复杂的合规性结构(称为威胁图)。 在第三部分中,我们将研究一种简单的算法,该算法扫描威胁图,通过分析图的“权重”来搜索异常活动。 最后,您将获得一种简洁(且易于理解)的概率威胁检测方法。
第1部分:Sysmon日志分析简介
什么可以帮助您理解事件日志的复杂性? 最终——SIEM。 它将事件标准化并简化后续分析。 但我们不必走那么远,至少一开始不需要。 一开始,要了解 SIEM 的原理,尝试一下精彩的免费 Sysmon 实用程序就足够了。 而且她出奇地容易相处。 继续努力,微软!
Sysmon 有哪些功能?
简而言之 - 有关流程的有用且可读的信息(见下图)。 您会发现 Windows 事件日志中没有的大量有用详细信息,但最重要的是以下字段:
- 进程 ID(十进制,而不是十六进制!)
- 父进程ID
- 处理命令行
- 父进程的命令行
- 文件图像哈希
- 文件图像名称
Sysmon 既作为设备驱动程序又作为服务安装 - 更多详细信息
Sysmon 通过提供有用的(或者供应商喜欢说的,可操作的)信息来帮助理解底层流程,从而实现了巨大的飞跃。 例如,我开始了一个秘密会议
Windows日志显示了有关该进程的一些信息,但用处不大。 加上十六进制的进程ID???
对于了解黑客基础知识的专业 IT 专业人员来说,命令行应该是值得怀疑的。 使用cmd.exe然后运行另一个命令并将输出重定向到一个奇怪名称的文件,这显然类似于监控软件的操作
现在让我们看一下 Sysmon 条目的等效项,注意它为我们提供了多少附加信息:
Sysmon 功能在一张屏幕截图中:以可读的形式提供有关进程的详细信息
您不仅可以看到命令行,还可以看到文件名、可执行应用程序的路径、Windows 所了解的信息(“Windows 命令处理器”)、标识符 父母的 进程、命令行 亲,它启动了cmd shell,以及父进程的真实文件名。 终于一切都集中在一处!
从 Sysmon 日志中我们可以得出结论,我们在“原始”日志中看到的这个可疑命令行很可能不是员工正常工作的结果。 恰恰相反,它是由类似 C2 的进程(如我之前提到的 wmiexec)生成的,并且直接由 WMI 服务进程 (WmiPrvSe) 生成。 现在我们有一个迹象表明远程攻击者或内部人员正在测试公司基础设施。
介绍 Get-Sysmonlogs
当然,如果 Sysmon 将日志放在一处,那就太好了。 但如果我们能够以编程方式访问各个日志字段(例如通过 PowerShell 命令),情况可能会更好。 在这种情况下,您可以编写一个小型 PowerShell 脚本来自动搜索潜在威胁!
我并不是第一个有这样想法的人。 在一些论坛帖子和 GitHub 中,这很好
第一个重要的点是团队的能力
$events = Get-WinEvent -LogName "Microsoft-Windows-Sysmon/Operational" | where { $_.id -eq 1 -or $_.id -eq 11}
如果您想自己测试该命令,通过显示 $events 数组的第一个元素 $events[0].Message 中的内容,输出可以是一系列格式非常简单的文本字符串: Sysmon 字段、冒号,然后是值本身。
万岁! 将 Sysmon 日志输出为 JSON-ready 格式
你是不是和我有同样的想法? 只需多一点努力,您就可以将输出转换为 JSON 格式的字符串,然后使用强大的命令将其直接加载到 PS 对象中
我将在下一部分中展示用于转换的 PowerShell 代码 - 它非常简单。 现在,让我们看看我作为 PS 模块安装的名为 get-sysmonlogs 的新命令可以执行哪些操作。
我们可以轻松地直接从 PowerShell 会话中搜索增量活动,以及使用 PS 命令,而不是通过不方便的事件日志界面深入进行 Sysmon 日志分析
通过 WMI 启动的 cmd shell 列表。 使用我们自己的 Get-Sysmonlogs 团队进行廉价的威胁分析
奇妙! 我创建了一个工具来轮询 Sysmon 日志,就像它是一个数据库一样。 在我们的文章中关于
Sysmon 和图形分析
让我们退一步思考一下我们刚刚创建的内容。 本质上,我们现在拥有一个可通过 PowerShell 访问的 Windows 事件数据库。 正如我之前提到的,记录之间存在连接或关系(通过 ParentProcessId),因此可以获得完整的流程层次结构。
如果您读过该系列
但是,通过我的 Get-Sysmonlogs 命令和我们稍后将在文本中查看的附加数据结构(当然是图表),我们有一种实用的方法来检测威胁 - 这只需要进行正确的顶点搜索。
与我们的 DYI 博客项目一样,您越多地分析小规模威胁的细节,您就越会意识到企业级别的威胁检测有多么复杂。 而这种意识是极其 很重要的一点.
我们将在本文的第二部分中遇到第一个有趣的复杂情况,我们将开始将 Sysmon 事件相互连接成更复杂的结构。
来源: habr.com