Sysmon v14.0

原文链接:https://docs.microsoft.com/en-gb/sysinternals/downloads/sysmon

马克 Russinovich 和 Thomas Garnier

发布时间:2022 年 8 月 16 日

下载 Sysmon (3.4 MB)

下载适用于 Linux 的 Sysmon (GitHub)

介绍

系统监视器( Sysmon ) 是一种 Windows 系统服务和设备驱动程序,一旦安装在系统上,它就会在系统重新启动后保持驻留,以监视系统活动并将其记录到 Windows 事件日志中。它提供有关进程创建、网络连接和文件创建时间更改的详细信息。通过使用 Windows 事件收集SIEM 代理收集它生成的事件并随后分析它们,您可以识别恶意或异常活动并了解入侵者和恶意软件如何在您的网络上运行。

请注意,Sysmon不提供对其生成的事件的分析,也不试图保护或隐藏自己免受攻击者的攻击。

Sysmon 功能概述

Sysmon包括以下功能:

  • 使用完整命令行为当前进程和父进程记录进程创建。
  • 使用 SHA1(默认)、MD5、SHA256 或 IMPHASH 记录过程映像文件的哈希值。
  • 可以同时使用多个哈希。
  • 在进程创建事件中包含进程 GUID,以允许事件关联,即使 Windows 重用进程 ID。
  • 在每个事件中包括一个会话 GUID,以允许在同一登录会话中关联事件。
  • 使用签名和哈希记录驱动程序或 DLL 的加载。
  • 日志为磁盘和卷的原始读取访问打开。
  • 可选择记录网络连接,包括每个连接的源进程、IP 地址、端口号、主机名和端口名。
  • 检测文件创建时间的变化以了解文件的真正创建时间。修改文件创建时间戳是恶意软件常用来掩盖其踪迹的一种技术。
  • 如果在注册表中更改,则自动重新加载配置。
  • 规则过滤以动态包含或排除某些事件。
  • 在启动过程的早期生成事件,以捕获由复杂的内核模式恶意软件进行的活动。

用法

常见用法具有简单的命令行选项来安装和卸载 Sysmon,以及检查和修改其配置:

安装: sysmon64 -i [<configfile>]
更新配置: sysmon64 -c [<configfile>]
安装事件清单: sysmon64 -m
打印架构: sysmon64 -s
卸载: sysmon64 -u [force]

范围 描述
-i 安装服务和驱动程序。可以选择获取配置文件。
-c 如果未提供其他参数,则更新已安装 Sysmon 驱动程序的配置或转储当前配置。可选地接受一个配置文件。
-m 安装事件清单(也在服务安装上隐式完成)。
-s 打印配置模式定义。
-u 卸载服务和驱动程序。-u force即使未安装某些组件,使用也会导致卸载继续进行。

该服务会立即记录事件,并且驱动程序作为启动启动驱动程序安装,以从启动早期捕获服务启动时将写入事件日志的活动。

在 Vista 及更高版本上,事件存储在Applications and Services Logs/Microsoft/Windows/Sysmon/Operational. 在旧系统上,事件被写入System事件日志。

如果您需要有关配置文件的更多信息,请使用该-? config 命令。

指定-accepteula在安装时自动接受 EULA,否则会以交互方式提示您接受它。

安装和卸载都不需要重新启动。

例子

使用默认设置安装(使用 SHA1 哈希处理图像且无网络监控)

sysmon -accepteula -i
使用配置文件安装 Sysmon(如下所述)

sysmon -accepteula -i c:\windows\config.xml

卸载
sysmon -u

转储当前配置

sysmon -c

使用配置文件重新配置活动的 Sysmon(如下所述)
sysmon -c c:\windows\config.xml


将配置更改为默认设置

sysmon -c —

显示配置架构

sysmon -s

事件

在 Vista 和更高版本中,事件存储在 中Applications and Services Logs/Microsoft/Windows/Sysmon/Operational,而在旧系统上,事件被写入系统事件日志。事件时间戳采用 UTC 标准时间。

以下是 Sysmon 生成的每种事件类型的示例。

事件 ID 1:进程创建
流程创建事件提供有关新创建流程的扩展信息。完整的命令行提供有关流程执行的上下文。ProcessGUID 字段是跨域的此流程的唯一值,以使事件关联更容易。哈希是文件的完整哈希,其中包含 HashType 字段中的算法。

事件 ID 2:进程更改了文件创建时间
当文件创建时间被进程显式修改时,会注册更改文件创建时间事件。此事件有助于跟踪文件的实际创建时间。攻击者可能会更改后门的文件创建时间,使其看起来像是随操作系统一起安装的。请注意,许多进程会合法地更改文件的创建时间;它不一定表示恶意活动。

事件 ID 3:网络连接
网络连接事件记录机器上的 TCP/UDP 连接。默认情况下禁用。每个连接都通过 ProcessId 和 ProcessGUID 字段链接到一个进程。该事件还包含源主机名和目标主机名、IP 地址、端口号和 IPv6 状态。

事件 ID 4:Sysmon 服务状态已更改
服务状态更改事件报告 Sysmon 服务的状态(启动或停止)。

事件 ID 5:进程终止
进程终止事件报告进程何时终止。它提供进程的 UtcTime、ProcessGuid 和 ProcessId。

事件 ID 6:已加载驱动程序
驱动程序加载事件提供有关正在系统上加载的驱动程序的信息。提供了配置的哈希以及签名信息。出于性能原因,签名是异步创建的,并指示文件是否在加载后被删除。

事件 ID 7:图像已加载
在特定进程中加载模块时的图像加载事件日志。默认情况下禁用此事件,需要使用 -l 选项进行配置。它指示加载模块的过程,哈希和签名信息。出于性能原因,签名是异步创建的,并指示文件是否在加载后被删除。该事件需要谨慎配置,因为监控所有图片加载事件会产生大量事件。

事件 ID 8:创建远程线程
CreateRemoteThread 事件检测进程何时在另一个进程中创建线程。恶意软件使用此技术注入代码并隐藏在其他进程中。该事件指示源和目标进程。它提供了有关将在新线程中运行的代码的信息:StartAddress、StartModule 和 StartFunction。注意 StartModule 和 StartFunction 字段是推断出来的,如果起始地址在加载的模块或已知的导出函数之外,它们可能为空。

事件 ID 9:RawAccessRead
RawAccessRead 事件检测进程何时使用标记从驱动器执行读取操作\.\。这种技术通常被恶意软件用于对被锁定以供读取的文件进行数据泄露,以及避免文件访问审计工具。该事件指示源进程和目标设备。

事件 ID 10:进程访问
当一个进程打开另一个进程时,该进程访问事件报告,该操作通常伴随着信息查询或读写目标进程的地址空间。这可以检测到读取本地安全机构 (Lsass.exe) 等进程的内存内容的黑客工具,以窃取用于传递哈希攻击的凭据。如果有激活的诊断实用程序重复打开进程以查询其状态,则启用它可以生成大量日志记录,因此通常只能使用删除预期访问的过滤器来执行此操作。

事件 ID 11:文件创建
创建或覆盖文件时会记录文件创建操作。此事件对于监视自动启动位置(如启动文件夹)以及临时目录和下载目录很有用,这些目录是恶意软件在初始感染期间丢弃的常见位置。

事件 ID 12:RegistryEvent(对象创建和删除)
注册表项和值的创建和删除操作映射到此事件类型,这对于监视注册表自动启动位置的更改或特定的恶意软件注册表修改很有用。

Sysmon 使用注册表根键名称的缩写版本,具有以下映射:

Key nameAbbreviation
HKEY_LOCAL_MACHINEHKLM
HKEY_USERSHKU
HKEY_LOCAL_MACHINE\System\ControlSet00xHKLM\System\CurrentControlSet
HKEY_LOCAL_MACHINE\ClassesHKCR

事件 ID 14:RegistryEvent(键和值重命名)
注册表键和值重命名操作映射到此事件类型,记录被重命名的键或值的新名称。

事件 ID 15:FileCreateStreamHash
此事件记录创建命名文件流的时间,并生成记录分配流的文件(未命名流)的内容的哈希值以及命名流的内容的事件。有一些恶意软件变种会通过浏览器下载删除其可执行文件或配置设置,此事件旨在基于附加Zone.Identifier“网络标记”流的浏览器捕获这些变体。

事件 ID 16:ServiceConfigurationChange
此事件记录 Sysmon 配置中的更改 – 例如更新过滤规则时。

事件 ID 17:PipeEvent(已创建管道)
此事件在创建命名管道时生成。恶意软件经常使用命名管道进行进程间通信。

事件 ID 18:PipeEvent(管道连接)
此事件记录在客户端和服务器之间建立命名管道连接时。

事件 ID 19:WmiEvent(检测到 WmiEventFilter 活动)
当注册 WMI 事件过滤器(恶意软件用来执行的一种方法)时,此事件会记录 WMI 命名空间、过滤器名称和过滤器表达式。

事件 ID 20:WmiEvent(检测到 WmiEventConsumer 活动)
此事件记录 WMI 使用者的注册,记录使用者名称、日志和目的地。

事件 ID 21:WmiEvent(检测到 WmiEventConsumerToFilter 活动)
当消费者绑定到过滤器时,此事件会记录消费者名称和过滤器路径。

事件 ID 22:DNSEvent(DNS 查询)
此事件在进程执行 DNS 查询时生成,无论结果是成功还是失败,是否缓存。此事件的遥测是为 Windows 8.1 添加的,因此在 Windows 7 和更早版本上不可用。

事件 ID 23:FileDelete(已归档文件删除)
删除了一个文件。除了记录事件之外,删除的文件也保存在ArchiveDirectory(C:\Sysmon默认情况下)中。在正常操作条件下,此目录可能会增长到不合理的大小 – 请参阅事件 ID 26:FileDeleteDetected了解类似行为但不保存已删除文件。

事件 ID 24:ClipboardChange(剪贴板中的新内容)
当系统剪贴板内容发生变化时,会产生该事件。

事件 ID 25:ProcessTampering(过程映像更改)
当检测到“hollow”或“herpaderp”等进程隐藏技术时,会生成此事件。

事件 ID 26:FileDeleteDetected(记录文件删除)
删除了一个文件。

事件 ID 255:错误
当 Sysmon 中发生错误时会生成此事件。如果系统负载过重并且无法执行某些任务或 Sysmon 服务中存在错误,则可能会发生这种情况。您可以在 Sysinternals 论坛或 Twitter ( @markrussinovich )上报告任何错误。

配置文件

可以在-i(安装)或 -c(安装)配置开关之后指定配置文件。它们使部署预设配置和过滤捕获的事件变得更加容易。

一个简单的配置 xml 文件如下所示:

配置文件在 Sysmon 标记上包含一个 schemaversion 属性。此版本独立于 Sysmon 二进制版本,并允许解析较旧的配置文件。您可以使用“-? 配置”命令行。配置条目直接位于 Sysmon 标记下,过滤器位于 EventFiltering 标记下。

配置条目
配置条目类似于命令行开关,包括以下内容

配置条目包括以下内容:

入口价值描述
ArchiveDirectoryString删除时复制文件移动到的卷根目录的名称。该目录受系统 ACL 保护(您可以使用 Sysinternals 的 PsExec 来访问该目录psexec -sid cmd)。默认值:Sysmon
CheckRevocationBoolean控制签名撤销检查。默认值:真
CopyOnDeletePEBoolean保留已删除的可执行映像文件。默认值:假
CopyOnDeleteSIDString将保留文件删除的帐户 SID 的逗号分隔列表。
CopyOnDeleteExtensionsString删除时保留的文件的扩展名。
CopyOnDeleteProcessesString将保留文件删除的进程名称。
DnsLookupBoolean控制反向 DNS 查找。默认值:真
DriverNameString为驱动程序和服务映像使用指定的名称。
HashAlgorithmsString哈希算法(S)申请哈希。支持的算法包括 MD5、SHA1、SHA256、IMPHASH 和 *(全部)。默认值:无

命令行开关的配置条目在 Sysmon 使用输出中描述。根据标签,参数是可选的。如果命令行开关也启用了事件,则需要通过其过滤器标签对其进行配置。您可以指定 -s 开关以让 Sysmon 打印完整的配置模式,包括事件标记以及每个事件的字段名称和类型。例如,下面是 RawAccessRead事件类型的架构:

XML

事件过滤条目
事件过滤允许您过滤生成的事件。在许多情况下,事件可能很嘈杂,不可能收集所有内容。例如,您可能只对特定进程的网络连接感兴趣,而不是所有进程。您可以过滤主机上的输出以减少要收集的数据。

每个事件在配置文件的 EventFiltering 节点下都有自己的过滤器标签:

ID事件
1 ProcessCreate
2 FileCreateTime
3 NetworkConnect
4 n/a
5 ProcessTerminate
6 DriverLoad
7 ImageLoad
8 CreateRemoteThread
9 RawAccessRead
10 ProcessAccess
11 FileCreate
12 RegistryEvent
13 RegistryEvent
14 RegistryEvent
15 FileCreateStreamHash
16 n/a
17 PipeEvent
18 PipeEvent
19 WmiEvent
20 WmiEvent
21 WmiEvent
22 DNSQuery
23 FileDelete
24 ClipboardChange
25 ProcessTampering
26 FileDeleteDetected
27 FileBlockExecutable
流程创建
文件创建时间
检测到网络连接
sysmon 服务状态变化(无法过滤)
进程终止
已加载驱动程序
图片已加载
检测到 CreateRemoteThread
检测到 RawAccessRead
进程访问
已创建文件
添加或删除注册表对象
注册表值集
注册表对象重命名
创建的文件流
Sysmon 配置更改(无法过滤)
已创建命名管道
命名管道连接
WMI 过滤器
WMI 消费者
WMI 消费者过滤器
DNS查询
文件删除存档
剪贴板中的新内容
过程映像更改
记录文件删除
文件块可执行文件

您还可以在任务名称的事件查看器中找到这些标签。

onmatch如果事件匹配,则应用过滤器。可以使用onmatch过滤器标签的属性进行更改。如果值为 “include”,则表示仅包含匹配的事件。如果设置为 “exclude”,则除非规则匹配,否则将包含该事件。您可以为每个事件 ID 指定包含过滤器集和排除过滤器集,其中排除匹配优先。

每个过滤器可以包含零个或多个规则。过滤器标签下的每个标签都是来自事件的字段名称。为相同字段名称指定条件的规则表现为 OR 条件,而指定不同字段名称的规则表现为 AND 条件。字段规则也可以使用条件来匹配一个值。条件如下(均不区分大小写):

条件描述
is
is any
is not
contains
contains any
contains all
excludes
excludes any
excludes all
begin with
end with
not begin with
not end with
less than
more than
image
默认值,值相等
该字段是;分隔值之一
价值观不同
该字段包含此值
该字段包含任何;分隔值
该字段包含所有;分隔值
该字段不包含此值
该字段不包含一个或多个;分隔值
该字段不包含任何;分隔值
该字段以此值开头
该字段以此值结尾
该字段不以此值开头
该字段不以此值结尾
词典比较小于零
词典比较大于零
匹配图像路径(完整路径或仅图像名称)。例如:lsass.exe将匹配c:\windows\system32\lsass.exe

XML

要让 Sysmon 报告哪个规则匹配导致事件被记录,请将名称添加到规则中:

XML


您可以对同一标记同时使用包含规则和排除规则,其中排除规则覆盖包含规则。在规则中,过滤条件具有 OR 行为。

在前面显示的示例配置中,网络过滤器使用包含和排除规则来捕获所有进程到端口 80 和 443 的活动,但名称中包含的进程除外iexplore.exe。

还可以通过使用允许将一个或多个事件的规则组合类型明确设置为 AND 或 OR 的规则组来覆盖规则组合的方式。

下面的示例演示了这种用法。timeout.exe在第一个规则组中,仅使用命令行参数执行时将生成进程创建事件100,但对于终止将生成进程终止事件ping.exeand timeout.exe。

XML

运行于:

客户端:Windows 8.1 及更高版本。
服务器:Windows Server 2012 及更高版本。

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注