Sysmon事件ID全面解析 - 更新至29号事件!
作者:Jordan Drysdale
更新日期:2023年10月30日
更新说明
Sysmon新增了事件ID 29!该事件ID遵循相同的增量编号方案。与之前的更新一样,本次更新内容已添加到文章末尾。
2022年12月22日更新:Sysmon有一些变化,本文需要相应更新。现已包含Sysmon 26(检测文件删除)、Sysmon 27(阻止可执行文件)和Sysmon 28(阻止文件粉碎)的最新事件ID和描述。新增事件已按本文格式添加到相应事件ID标题和描述下。
内容概述
本文旨在展示Sysmon按事件ID分类的日志记录能力。事件ID将在上下文中捕获,并与sysmon-modular配置部分匹配以进行调优。
特别感谢Github上sysmon-modular仓库的作者Olaf,他为社区提供了最好的Sysmon调优平台和快速配置文件部署工具之一。
相关资源:
- @olafhartong
- @falconforceteam
- github.com/olafhartong/sysmon-modular
什么是Sysmon配置文件?
配置文件(简称)提供了指导Sysmon写入日志的指令。以下是我为本文使用sysmon-modular构建的配置文件示例:
|
|
事件ID详解
事件ID 1:进程创建
上述配置指令规定,在事件ID 1(进程创建)下,必须匹配列出的映像之一。这远非modular事件ID 1配置块中列出的完整映像名列表。该选择旨在展示sysmon modular的能力。
测试示例:执行bitsadmin命令尝试文件下载时,会触发与之前屏幕截图的匹配。每个映像的配置部分包括潜在的MITRE ATT&CK映射。如上所示,使用Bitsadmin.exe映像匹配T1197,BITS作业(https://attack.mitre.org/techniques/T1197/)。
事件ID 2:进程更改文件创建时间
事件ID 2在我的经验中并不有用,但可能对取证调查员有用。该技术称为"Timestomping",相关文章包括MITRE页面和SpectreOps文章(含PoC)。modular仓库引用MITRE T1099,该技术已被T1070.006取代。父技术现为"主机上的指标移除",子技术为"timestomp"。
链接:
- https://posts.specterops.io/revisiting-ttps-timestomper-622d4c28a655
- https://attack.mitre.org/techniques/T1070/006/
事件ID 3:网络连接
事件ID 3用于记录网络连接。来自modular配置的已建立映像名和连接类型会导致映射技术。在以下屏幕截图中,我们可以看到从工作站到子网外另一个IP的RDP连接。虽然这是良性连接,但我们确实看到了映射到T1021(远程服务)的MITRE ATT&CK技术。
事件ID 4、5:Sysmon服务更改
事件ID 4不可过滤。这在Sysmon服务状态更改时报告。
事件ID 5似乎是一个罕见事件。我通过重新启动Sysmon服务触发了此事件。
根据对modular配置文件的审查,映像必须从用户空间、temp或\Windows\temp加载和卸载。
事件ID 6:驱动程序加载
事件ID 6也很罕见。它被描述为"驱动程序加载",此特定网络上的系统在过去24小时内未报告任何Sysmon事件ID 6。
事件ID 7:映像加载
事件ID 7涵盖映像加载操作及实例化它们的进程。
此事件映射到T1073(DLL侧加载),该技术已被T1574.002取代。此实例中的父技术是劫持执行流,子技术列为DLL侧加载。
链接:https://attack.mitre.org/techniques/T1574/002/
虽然从技术上讲MS Defender正在"侧加载"DLL,但这是引入事件调优理论的绝佳机会。在这种情况下,我们应该审查modular配置目录、结构,并确保我们理解sysmon-modular如何处理这种情况。以下屏幕截图既有排除语句也有包含语句——这些必须存在于单独的RuleGroup中。
要从事件ID 7配置块中排除MpCmdRun.exe映像,我们必须创建一个全新的RuleGroup,否则在配置文件更新时会抛出错误。另一个注意事项是没有明确的"事件ID ##“配置部分,规则由我们可以与sysmon操作日志匹配的列表处理(如下所示)。
例如,要为已识别的规则创建新的RuleGroup,我们将使用类似于以下的语法:
|
|
事件ID 8:CreateRemoteThread
现在转到事件ID 8,CreateRemoteThread。此事件ID也很罕见,但在分析此博客的系统上每天发生一次。其中一个事件是图形驱动程序。
另一个事件值得调查,显示如下。
事件ID 9:RawAccessRead
事件ID 9列为RawAccessRead事件。Randy Franklin Smith(ultimatewindowssecurity.com fame)将此事件描述为"当进程使用\.\表示法从驱动器进行读取操作时报告”。进一步阅读后,这也是Sysinternals网站上sysmon列出的内容。此系统未报告任何事件ID 9。
链接:
- https://www.ultimatewindowssecurity.com/securitylog/encyclopedia/event.aspx?eventid=90009
- https://docs.microsoft.com/en-us/sysinternals/downloads/sysmon
事件ID 10:ProcessAccess
事件ID 10是一个非常有趣的事件,列为ProcessAccess。当映像请求"priv"以访问另一个进程时发生。如下一个屏幕截图所示,MS Defender请求快速查看LSASS,系统授予了适当的访问权限。
链接:https://cyberwardog.blogspot.com/2017/03/chronicles-of-threat-hunter-hunting-for_22.html
事件ID 11:文件创建事件
事件ID 11涵盖文件创建事件。这在检测、取证和调查中非常有用。通过一些基本的创建规则,Sysmon EID11可以为用户空间中的写入操作提供早期预警系统。
快速退一步提供"用户空间"的定义。
用户空间(名词): 在计算上下文中,这可以指所有在低权限进程中运行的代码,在管理员或内核上下文之外。对于限制性环境,用户应具有有限权限来写入工作站的磁盘,通常位置包括C:\users%username%\或在某些情况下重定向到网络共享的用户位置。
如下一个屏幕截图所示,.bat和.cmd文件创建事件被记录到磁盘。
.cmd和.bat文件的创建随后被记录到磁盘。
事件ID 12、13、14:注册表对象
这些事件ID与注册表事件相关。
- 添加/删除的RegObject(HKLM / HKU)
- 设置的RegValue(DWORD / QWORD添加)
- 重命名的RegObject
注册表相关事件的配置参数选择如下所示。
事件ID 12和13相对常见,可能需要一些调优。在创建此博客期间未看到事件ID 14。
事件ID 15:FileCreateStreamHash
事件ID 15涵盖与文件流相关的事件,通常是通过Web浏览器的下载。如下所示,我们看到chrome.exe从CrackMap存档下载build_collector.py文件。注意事件内容中突出显示的zone.identifier文件,在Sysinternals的sysmon页面中称为"web标记"。
PowerShell下载未使用此特定事件ID捕获,但如果配置文件已适当调优以捕获.zip文件,则可能已通过事件ID 11捕获。
事件ID 16:Sysmon配置更改
一个非常容易解释的事件ID是EID16:Sysmon配置更改。
事件ID 17和18:管道事件
这些事件ID与管道事件相关。
- 事件ID 17:管道创建
- 事件ID 18:管道连接
渗透测试工具、恶意软件工具和许多其他软件通常利用SMB协议。管道是SMB客户端可以建立与远程可用进程连接的一种手段。监控这些事件显然有一些价值。
Sysmon modular对这些事件ID的配置是排除优先操作。结果配置文件中列出了一些常见的管道事件违规者,如下所示。
链接:
- https://docs.microsoft.com/en-us/dotnet/standard/io/how-to-use-named-pipes-for-network-interprocess-communication
- https://book.hacktricks.xyz/pentesting/pentesting-smb
事件ID 19、20、21:WMI事件
- EID19 WMIEventFilters
- EID20 WMIEventConsumer
- EID21 WMIEventConsumertoFilter
WMI事件可能很嘈杂,并将取决于环境。启用WMI的完整日志记录可能会导致大量日志。modular的默认配置参数是包含事件,其中任何EventFilters、EventConsumers或EventConsumertoFilters在产生的事件内容中列为已创建。
我无法使用命令行生成匹配事件,尝试让wmic打开命令 shell。
Olaf可能已经为WMIC和相关事件的噪音实施了最佳解决方案。可能需要进行额外调查,但目前建议以这种方式捕获WMI事件。
链接:https://redcanary.com/threat-detection-report/techniques/windows-management-instrumentation
事件ID 22:DNSEvents
DNS事件很有用,当与事件ID 3(网络连接和文件写入事件)结合时,可以帮助生成完整的画面。然而……像网络上的许多事情一样,这些可能非常嘈杂。modular方法一直是排除已知域并记录其余部分。
此实验室系统上记录的Sysmon事件中约20%是EID22,因此显然,此事件的有用性需要审查。在日志记录、威胁狩猎、ETW、调查等大方案中,我可能更倾向于依赖我的解析器日志、基于代理的防御及其日志记录能力,而不是端点。
事件ID 23:FileDelete
Sysmon事件系列的另一个非常酷的补充是这个!正如取证调查员可能会说的,“给我看恶意软件”。许多黑客在事后清理,此工具允许我们在文件中定义的空间(用户空间)中创建并随后删除时保留存档副本,因此事件ID 23 – FileDelete。
此事件比我想象的更难触发,在审查sysmon modular配置的结构之前。例如,让我们审查配置的\Downloads\部分。
我尝试创建匹配这些扩展名的文件(由EID 11捕获)然后删除它们。这并未导致预期的事件。在审查这些groupRelation配置参数后,逻辑"and"运算符似乎是问题所在。修改配置文件并更新本地操作安装后,我能够在这些定义条件下触发EID23。截至2020年12月28日,modular仓库可以使用拉取请求来修复此逻辑缺陷。修复似乎很简单,如下所示(“or"而不是"and”)。
筛选事件日志的选择如下所示。
最后,从用户空间删除的文件被复制到Sysmon配置指示的RestrictedContainer。
事件ID 24:剪贴板更改
此事件最初以怀疑态度审查,因为……嗯……剪贴板内容的副本可能最终出现在另一个存档位置。此内容将包括密码和其他敏感材料,因此应谨慎实施此功能。
事件ID 25:进程篡改
Sysmon版本13添加了进程篡改以解决Johnny Shaw的process herpaderping技术(基于空心化等)。为了确认这会捕获该技术,在编译项目后,我使用编译的ProcessHerpaderping.exe文件并执行它。
如之前的屏幕截图所示,我使用ProcessHerpaderping.exe与mimikatz.exe构建一个名为sysmon.exe的文件,其中填充了lsass.exe的签名位。
这导致捕获!!!!我们现在都可以捕获进程篡改了。
但是,让我们快速查看此过程的相反情况。首先,我们审查了事件ID 25,进程篡改。但是,第一个事件,事件ID 1,捕获了一个进程创建事件。如下所示,我们还看到了部分命令行。可能的IOC?抱歉下一个屏幕截图,为了可读性,我裁剪了它——但是,整个命令在这里: .\ProcessHerpaderping.exe mimikatz.exe sysmon25.exe C:\Windows\System32\lsass.exe
我们还在事件ID 11:文件创建中看到了此进程创建的.exe。
查看事件查看器,很明显在执行前触发了一些标志,至少我们应该能够帮助取证团队弄清楚发生了什么。
嗯,还有一个。
事件ID 26:文件删除检测
假设对手想通过删除他们的工件来掩盖他们的踪迹。此事件ID对我来说是EID23(文件删除存档)或EID26(文件删除)的二选一。真的,如果你存档所有内容,你可以将你的存档位置增长到荒谬的大小。但也许这正是你想要的。如果是这样,请使用事件ID 23并存档与配置文件逻辑匹配的删除。否则,如果你只想知道用户何时删除匹配文件,请使用事件ID 26。
事件ID 27:阻止可执行文件
这是我对Sysmon引擎最喜欢的补充之一。对基本问题的非常清晰的回答:我们不希望我们的用户从Internet下载exe。以下配置文件块实现了阻止下载到c:\users*\Downloads的exe(感谢Olaf,H/T通配符)。请注意下面的配置块涵盖了EID 27和EID 28所需的配置更改。
假设我尝试从Internet下载文件,如Chrome.exe。被拒绝。游戏结束。简单容易。
我们已经讨论了用户空间和写入权限、管理访问和许多相关主题。让我们将其归结为——用户应具有有限的权限来写入其本地系统。你的用户空间配置越好,此保护就越容易实施。通过限制磁盘上的写入权限,你还缩小了Sysmon中的光学焦点。此演示完全依赖于默认浏览器配置将.exe下载到C:\users\someuser\Downloads\,并且可以轻松绕过。限制写入访问并使用Sysmon配置这些位置以拒绝。
事件ID 28:阻止文件粉碎
这是添加到Sysmon的最新事件ID,旨在拒绝像sdelete这样的粉碎工具在磁盘上粉碎文件。如下例所示,我们看到对手试图从下载目录粉碎恶意Firefox Installer.exe文件。Sysmon在此介入并拒绝了操作。
在事件日志中,我们看到以下内容。Sysmon阻止了粉碎操作。
事件ID 29:阻止可执行文件
此事件ID旨在捕获可执行文件,特别是PE格式类型,包括EXE、DLL和目标代码。配置文件也需要更新,并且一如既往,Olaf和Falcon Force有必要的部分来理解正确实施。在测试中,我们必须在
我们测试了三种特定条件。我们测试了使用Edge下载文件,被捕获。
我们尝试使用Explorer通过RDP会话复制文件,被捕获。
最后,我们还使用PowerShell将复制的文件移动到新名称。并且……我们被捕获。
总之,此添加将提供另一个机会,以高度可见性了解最终用户环境以及他们在任何给定时间点可能正在做什么。由于在Sysmon Modular框架中实施的惊人工作,噪音有限,我们的建议仍然是先实施,然后处理日志降噪策略。
嗯,还有一个。
事件ID 255:错误
就是这样。到达这里是一段漫长的旅程,我要感谢使这一切成为可能的几个人。
- @bhinfosecurity 提供一个平台
- @strandjs 提供所有支持
- @olafhartong 提供modular
- @markrussinovich 提供Sysmon
狩猎愉快!