Olaf Hartong - Endpoint detection Superpowers on the cheap — part 3 — Sysmon Tampering

第 2 部分中,我讨论了如何部署和维护 Sysmon 及其配置。这篇文章将帮助您确保您可以信任 Sysmon 正在运行,并使用您设置的配置。

篡改检测

几乎所有攻击者都喜欢不被发现。为了降低这种可能性,他们已经使用了我在第 1 部分中提到的 ATT&CK 框架中记录的大量技术。他或她也很有可能会意识到正在运行的 Sysmon 服务,并会尝试学习如何避免通过它被检测到。以下主题是恶意用户尝试规避检测的潜在方式,但这也会产生一些有用的事件:image.png
示例仪表板

配置更改

任何配置更改都需要重新加载服务,生成EventID 16 — Sysmon Configuration Changed。此事件仅应在您将更新推送到配置后,在特定时间范围内由您生成:
image.png
幸运的是,此事件还有另一个非常有用的独特字段,即ConfigurationFileHash字段。此字段包含已加载配置的 SHA1 哈希,您可以对其进行监控和基线:
image.png
样本查找列表
您可以在 Splunk 中创建一个查找列表,其中包含您信任的哈希版本。之后创建一个如下所示的已保存搜索以在有结果时发出警报,这将是您未创建的配置。

  1. index=* sourcetype="XmlWinEventLog:Microsoft-Windows-Sysmon/Operational" EventCode=16
  2. | search NOT
  3. [| inputlookup trusted-sysmon-configurations.csv
  4. | fields SHA1]
  5. | table _time Computer Configuration SHA1
  6. | sort _time

确保生成配置的 SHA1 哈希并将其添加到白名单中,以防止在推送新配置时警报发疯。

服务停止

当服务的状态发生变化时,Sysmon 本身会生成一个事件。这在EventID 4 — Sysmon Start 中可见。在 State 字段中记录了服务发生的情况,Started 在系统重新启动后的大部分时间显然是正常的。停止几乎肯定是手动或脚本活动的结果,应该对此进行调查:
image.png
Sysmon 状态更改,启动时正常启动。绝不应发生止损。
同样,在这样的事件上创建警报相当简单。每当状态未启动时,都会发出警报。

  1. index=* sourcetype="XmlWinEventLog:Microsoft-Windows-Sysmon/Operational" EventCode=4 State!=Started
  2. | table _time Computer State

此外,如果您正在审核和提取这些日志,您还应该监视 Windows 系统事件日志中的EventID 7034 和 7036中的 Sysmon 状态更改。

没有收到更多的日志记录

这要么是因为主机已关闭,要么是发生了其他事情。最简单的方法是确定机器是否根本没有日志记录,可能只是因为机器相当空闲而没有 Sysmon 生成数据。这显然也取决于您的配置,但您应该创建一些基线并将这些服务器分组到几个警报类中。
然而,像Invoke-Phant0m这样的工具可能会导致机器在线但不记录,而不会生成事件。它通过杀死线程而不是被监视的服务来做到这一点。到目前为止,您可以依靠您的网络和 Active Directory 日志记录仍然能够从这台机器上发现活动,如果有的话,但您没有收到任何日志警报和调查。

通过注册表访问配置

sysmon 规则和配置设置保存在注册表下:

  • HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Sysmon\
  • HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\SysmonDrv\

您可以在两个事件中监控访问:

  • EventID 1 注册表路径在命令行中,例如:

    1. reg query HKLM\SYSTEM\CurrentControlSet\services\SysmonDrv\Parameters >> sysmon.dump
  • EventID 12–14,在这些键中的任何内容都从您的 sysmon 可执行文件(完整路径)以外的进程修改

image.png
系统配置
image.png
用于检测来自不受信任进程的注册表修改的示例 Splunk 查询

打开配置

对 sysmon 配置的本地副本进行文件审核并获取该日志记录会提醒您对该文件的任何访问。您甚至可以创建一个Canary Token或类似配置的文件。如果有人访问它,您应该会收到警报并调查机器。

Sysmon.exe 中的进程注入

始终监视 Sysmon 可执行文件的进程执行情况。攻击者或有趣的红队成员可以在假设它被列入白名单的情况下注入 sysmon 二进制文件并执行恶意命令。
image.png
有趣的红队队员通过 sysmon.exe 执行 in-mem Mimikatz

重命名驱动程序

安装后,可以选择通过添加 -d 标志来重命名DriverName 。这是一个有趣的功能,我个人不太相信通过默默无闻的安全概念。但是,如果这是您喜欢的东西,请继续使用它。确保还向系统管理员和安全团队简要介绍,以使他们怀疑您重命名的服务。

结束

这篇文章介绍了篡改 Sysmon 及其配置的检测,包括前一部分:

下一个主题将涵盖:

  • 如何开始解释日志记录以帮助您调整配置
  • 我的基于 ATT&CK 的 Splunk 威胁搜寻应用程序
  • 请求/建议?…