借助 Windows 事件转发进行入侵检测
了解有关从组织的设备中收集事件的方法。 本文同时讨论了正常操作情况下以及怀疑有入侵时的事件。
Windows 事件转发 (WEF) 读取在组织中的设备上记录的任何操作或管理事件,并将你选择的事件转发到 Windows 事件收集器 (WEC) 服务器。
为了完成此功能,有两个不同的订阅发布到客户端设备 - 基线订阅和可疑订阅。 基线订阅注册组织中的所有设备,可疑订阅仅包括你添加的设备。 Suspect 订阅收集更多事件以帮助构建系统活动的上下文,并且可以根据需要快速更新,以适应新的事件和/或方案,而不会影响基线操作。
此实现有助于区分最终存储事件的位置。 基线事件可以发送到具有联机分析功能的设备(例如安全事件管理器 (SEM) ),同时还可以将事件发送到 MapReduce 系统(如 HDInsight 或 Hadoop),以便进行长期存储和更深入的分析。 由于音量和信号/噪声比较低,来自 Suspect 订阅的事件将直接发送到 MapReduce 系统,它们主要用于主机取证分析。
SEM 的优势在于能够检查、关联事件并生成已知模式的警报,并以计算机速度向安全人员发出警报。
对于 SEM) ,MapReduce 系统的保留时间更长, (年比几个月长, (每天) 数百 TB 的入口能力更大,并且能够对数据执行更复杂的操作,例如统计和趋势分析、模式聚类分析或应用机器学习算法。
下面是 WEF 事件的大致缩放指南:
事件/秒范围 | 数据存储 |
---|---|
0 - 5,000 | SQL 或 SEM |
5,000 - 50,000 | SEM |
50,000+ | Hadoop/HDInsight/Data Lake |
必须在设备上单独启用事件生成,或者作为基线 WEF 实现的 GPO 的一部分启用,包括启用禁用的事件日志和设置通道权限。 有关详细信息,请参阅 附录 C - 事件通道设置 (启用和通道访问) 方法。 这种情况是因为 WEF 是有关事件日志的被动系统。 它无法更改事件日志文件的大小、启用禁用的事件通道、更改通道权限或调整安全审核策略。 WEF 仅查询现有事件的事件通道。 此外,在设备上已发生事件生成允许更完整的事件收集,从而生成完整的系统活动历史记录。 否则,将限制为 GPO 和 WEF 订阅刷新周期的速度,以更改设备上生成的内容。 在现代设备上,启用更多事件通道并扩展事件日志文件的大小不会造成明显的性能差异。
有关建议的最低审核策略和注册表系统 ACL 设置,请参阅 附录 A - 最低建议的最低审核策略 和 附录 B - 建议的最低注册表系统 ACL 策略。
注意
这些只是满足 WEF 订阅选择的内容所需的最小值。
从 WEF 订阅管理的角度来看,提供的事件查询应在两个单独的订阅中使用,以便于维护:仅允许符合特定条件的计算机访问目标订阅。 此访问将由算法或分析师的方向决定。 所有设备都应有权访问基线订阅。
这种双订阅系统意味着你将创建两个基本订阅:
- 基线 WEF 订阅。 从所有主机收集的事件;这些事件包括一些特定于角色的事件,这些事件仅由这些计算机发出。
- 目标 WEF 订阅。 由于异常活动和/或对这些系统的意识增强,从有限的主机集收集的事件。
每个都使用以下相应的事件查询。 对于目标订阅,启用“读取现有事件”选项应设置为 true 以允许从系统收集现有事件。 默认情况下,WEF 订阅只会转发客户端收到 WEF 订阅后生成的事件。
在 附录 E - 批注基线订阅事件查询 和 附录 F - 批注的可疑订阅事件查询中,创建 WEF 订阅时包含事件查询 XML。 为便于查询和清楚起见,这些订阅会进行批注。 可以删除或编辑单个 <Query>
元素,而不会影响查询的其余部分。
常见的 WEF 问题
本部分介绍 IT 专业人员和客户的常见问题。
用户是否会注意到其计算机是否启用了 WEF 或 WEF 是否遇到错误?
简短的回答是:不。
较长的答案是: Eventlog-forwardingPlugin/Operational 事件通道记录设备上存在的与 WEF 订阅相关的成功、警告和错误事件。 除非用户打开事件查看器并导航到该通道,否则他们不会通过资源消耗或图形用户界面弹出窗口注意到 WEF。 即使 WEF 订阅存在问题,也不会降低用户交互或性能。 所有成功、警告和失败事件都记录到此操作事件通道。
WEF 是推送还是拉取?
可以将 WEF 订阅配置为推送或拉取,但不能同时推送或拉取。 使用推送或源发起的订阅可以实现最简单、最灵活的 IT 部署和最大的可伸缩性。 使用 GPO 配置 WEF 客户端,并激活内置转发客户端。 对于收集器启动的拉取,WEC 服务器上的订阅预配置了要从中选择事件的 WEF 客户端设备的名称。 这些客户端应提前配置,以允许订阅中使用的凭据通过向 事件日志读取器 内置本地安全组添加凭据来远程访问其事件日志 (。) 一个有用的方案:密切监视一组特定的计算机。
WEF 是否通过 VPN 或 RAS 工作?
WEF 可很好地处理 VPN、RAS 和 DirectAccess 方案,并在重新建立与 WEF 收集器的连接时重新连接并发送任何累积积压事件。
如何跟踪客户端进度?
WEC 服务器在其注册表中维护每个 WEF 订阅的每个事件源的书签信息和上次检测信号时间。 当事件源重新连接到 WEC 服务器时,最后一个书签位置将发送到设备,以用作恢复转发事件的起点。 如果 WEF 客户端没有要发送的事件,WEF 客户端会定期连接以将检测信号发送到 WEC 服务器,以指示其处于活动状态。 可以为每个订阅单独配置此检测信号值。
WEF 是否在 IPv4、IPv6 或混合 IPv4/IPv6 环境中工作?
是。 WEF 与传输无关,并且将通过 IPv4 或 IPv6 工作。
WEF 事件是否加密? 我看到 HTTP/HTTPS 选项!
在域设置中,用于传输 WEF 事件的连接使用 Kerberos 进行加密,默认情况下, (使用 NTLM 作为回退选项,可以使用 GPO) 禁用该选项。 只有 WEF 收集器可以解密连接。 此外,无论 (Kerberos 或 NTLM 的身份验证类型如何,WEF 客户端和 WEC 服务器之间的连接都会相互进行身份验证。) 有一些 GPO 选项可以强制身份验证仅使用 Kerberos。
无论选择了 HTTP 还是 HTTPS,都会执行此身份验证和加密。
如果使用基于证书的身份验证,则 HTTPS 选项可用,但不能选择基于 Kerberos 的相互身份验证。 SSL 证书和预配的客户端证书用于提供相互身份验证。
WEF 客户端是否有单独的事件缓冲区?
当与 WEC 服务器的连接丢失时,WEF 客户端计算机本地事件日志是 WEF 的缓冲区。 若要增加“缓冲区大小”,请增加要在其中选择事件的特定事件日志文件的最大文件大小。 有关详细信息,请参阅 附录 C - 事件通道设置 (启用和通道访问) 方法。
当事件日志覆盖现有事件 (导致数据丢失时,如果设备未连接到事件收集器) ,则不会向 WEF 收集器发送事件从客户端丢失的通知。 两者都没有指示在事件流中遇到差距。
转发事件使用哪种格式?
WEF 有两种转发事件的模式。 默认值为“呈现的文本”,其中包含事件的文本说明,如事件查看器中所示。 包含此说明意味着事件大小实际上增加了一倍或三倍,具体取决于呈现的说明的大小。 替代模式是“事件”, (有时也称为“二进制”格式) - 这只是以二进制 XML 格式发送的事件 XML 本身 (,因为它将写入 evtx 文件。) 此格式是精简的,可以将单个 WEC 服务器容纳的事件量增加一倍以上。
可以通过 WECUTIL 实用工具将订阅“testSubscription”配置为使用事件格式:
@rem required to set the DeliveryMaxItems or DeliveryMaxLatencyTime
Wecutil ss "testSubscription" /cf:Events
WEF 事件的传递频率如何?
事件传递选项是 WEF 订阅配置参数的一部分 - 有三个内置订阅传递选项:正常、最小化带宽和最小化延迟。 第四个称为“自定义”的捕获功能可用,但无法使用事件查看器通过 WEF UI 进行选择或配置。 必须使用 WECUTIL.EXE 命令行应用程序选择和配置自定义传递选项。 所有订阅选项都定义最大事件计数和最大事件期限,如果超出任一限制,则累积事件将发送到事件收集器。
下表概述了内置交付选项:
事件传递优化选项 | 描述 |
---|---|
正常 | 此选项可确保可靠地传递事件,并且不会尝试节省带宽。 除非需要更严格地控制带宽使用情况或需要尽快传递转发事件,否则这是适当的选择。 它使用拉取传递模式,一次批处理 5 个项目,并将批超时设置为 15 分钟。 |
最小化带宽 | 此选项可确保严格控制使用网络带宽传递事件。 如果要限制为传递事件而建立的网络连接的频率,这是一个适当的选择。 它使用推送传递模式,并将批处理超时设置为 6 小时。 此外,它还使用 6 小时的检测信号间隔。 |
将延迟降到最低 | 此选项可确保以最小的延迟传递事件。 如果要收集警报或关键事件,这是一个适当的选择。 它使用推送传递模式,并将批超时设置为 30 秒。 |
有关传递选项的详细信息,请参阅 配置高级订阅设置。
主要区别在于从客户端发送事件的延迟。 如果任何内置选项都不符合要求,可以从提升的命令提示符为给定订阅设置自定义事件传递选项:
@rem required to set the DeliveryMaxItems or DeliveryMaxLatencyTime
Wecutil ss "SubscriptionNameGoesHere" /cm:Custom
@rem set DeliveryMaxItems to 1 event
Wecutil ss "SubscriptionNameGoesHere" /dmi:1
@rem set DeliveryMaxLatencyTime to 10 ms
Wecutil ss "SubscriptionNameGoesHere" /dmlt:10
如何控制哪些设备有权访问 WEF 订阅?
对于源启动的订阅:WEC 服务器上的每个 WEF 订阅都有自己的计算机帐户或安全组的 ACL,其中包含计算机帐户 (而不是显式允许参与该订阅或显式拒绝访问的用户帐户) 。 此 ACL 仅适用于单个 WEF 订阅 (因为给定的 WEC 服务器上可以有多个 WEF 订阅) ,其他 WEF 订阅具有自己的单独 ACL。
对于收集器发起的订阅:订阅包含 WEC 服务器要从中收集事件的计算机列表。 此列表在 WEC 服务器上管理,用于订阅的凭据必须有权从 WEF 客户端读取事件日志 - 凭据可以是计算机帐户或域帐户。
客户端能否与多个 WEF 事件收集器通信?
是。 如果需要 High-Availability 环境,请使用同一订阅配置配置多个 WEC 服务器,并将这两个 WEC 服务器 URI 发布到 WEF 客户端。 如果 WEF 客户端具有适当的访问权限,则同时将事件转发到 WEC 服务器上配置的订阅。
WEC 服务器有哪些限制?
有三个因素限制了 WEC 服务器的可伸缩性。 商品硬件上稳定 WEC 服务器的一般规则是计划所有已配置的订阅平均每秒总共 3,000 个事件。
磁盘 I/O。 WEC 服务器不会处理或验证收到的事件,而是缓冲收到的事件,然后将其记录到本地事件日志文件 (EVTX 文件) 。 记录到 EVTX 文件的速度受磁盘写入速度的限制。 将 EVTX 文件隔离到其自己的阵列或使用高速磁盘可能会增加单个 WEC 服务器每秒可接收的事件数。
网络连接。 虽然 WEF 源不会维护与 WEC 服务器的永久持久连接,但它不会在发送事件后立即断开连接。 这种宽大意味着可以同时连接到 WEC 服务器的 WEF 源数仅限于 WEC 服务器上可用的开放 TCP 端口。
注册表大小。 对于连接到 WEF 订阅的每个唯一设备,都有一个注册表项 (对应于创建用于存储书签和源检测信号信息的 WEF 客户端) 的 FQDN。 如果未修剪此信息以删除非活动客户端,则随着时间的推移,这组注册表项可能会增长到不可管理的大小。
- 当订阅在其 >操作生存期内有 1000 个 WEF 源连接到该订阅(也称为生存期 WEF 源),事件查看器在左侧导航中选择 “订阅” 节点时可能会变得几分钟无响应,但之后会正常运行。
- 在 >50,000 个生存期的 WEF 源中,事件查看器不再是一个选项,Windows) 中包含的 wecutil.exe (必须用于配置和管理订阅。
- 在 >100,000 个生存期的 WEF 源中,注册表将不可读,并且可能必须重新生成 WEC 服务器。
订阅信息
下面列出了每个订阅收集的所有项,附录中提供了实际的订阅 XML。 这些项目分为“基线”和“目标”。 目的是将所有主机订阅到基线,然后根据需要向目标订阅注册 (并删除) 主机。
基线订阅
虽然此订阅似乎是最大的订阅,但它实际上是每个设备的最低量。 (异常设备应允许异常 - 执行复杂开发人员相关任务的设备可能会创建异常大量的进程创建和 AppLocker 事件。) 此订阅不需要在客户端设备上进行特殊配置即可启用事件通道或修改通道权限。
订阅实质上是应用于事件日志的查询语句的集合。 此订阅意味着它本质上是模块化的,可以删除或更改给定的查询语句,而不会影响订阅中的其他查询语句。 此外,禁止筛选出特定事件的语句,这些语句仅在该查询语句中应用,而不适用于整个订阅。
基线订阅要求
为了从基线订阅中获得最大价值,我们建议在设备上设置以下要求,以确保客户端已生成从系统转发所需的事件。
应用安全审核策略,该策略是建议的最低审核策略的超级集。 有关详细信息,请参阅 附录 A - 最低建议的最低审核策略。 此策略可确保安全事件日志生成所需的事件。
将至少 Audit-Only AppLocker 策略应用于设备。
- 如果已使用 AppLocker 允许或限制事件,则满足此要求。
- AppLocker 事件包含有用的信息,例如可执行文件和脚本的文件哈希和数字签名信息。
启用禁用的事件通道并设置新式事件文件的最小大小。
目前,没有 GPO 模板用于启用或设置新式事件文件的最大大小。 必须使用 GPO 定义此阈值。 有关详细信息,请参阅 附录 C - 事件通道设置 (启用和通道访问) 方法。
可以在以下内容中找到带批注的事件查询。 有关详细信息,请参阅 附录 F - 批注的可疑订阅事件查询。
来自 Windows 安全中心的反恶意软件事件。 如果任何给定的反恶意软件产品写入 Windows 事件日志,则可以轻松配置这些事件。
安全事件日志进程创建事件。
AppLocker 进程创建事件 (EXE、脚本、打包的应用安装和执行) 。
注册表修改事件。 有关详细信息,请参阅 附录 B - 建议的最低注册表系统 ACL 策略。
OS 启动和关闭
- 启动事件包括操作系统版本、Service Pack 级别、QFE 版本和启动模式。
服务安装
- 包括服务的名称、映像路径以及服务安装者。
证书颁发机构审核事件
- 这些事件仅适用于安装了证书颁发机构角色的系统。
- 记录证书请求和响应。
用户配置文件事件
- 使用临时配置文件或无法创建用户配置文件可能表示入侵者正在以交互方式登录到设备,但不想留下永久配置文件。
服务启动失败
- 失败代码已本地化,因此必须检查消息 DLL 中的值。
网络共享访问事件
- 筛选掉预期和干扰的 IPC$ 和 /NetLogon 文件共享。
系统关闭启动请求
- 了解启动设备重启的项。
用户发起的交互式注销事件
远程桌面服务会话连接、重新连接或断开连接。
EMET 事件(如果已安装 EMET)。
事件转发插件事件
- 用于监视 WEF 订阅操作,例如部分成功事件。 此事件可用于诊断部署问题。
创建和删除网络共享
- 启用对未经授权的共享创建的检测。
注意
设备启动时会重新创建所有共享。
- 启用对未经授权的共享创建的检测。
登录会话
- 交互式 (本地和远程交互式/远程桌面) 登录成功
- 非内置帐户(例如 LocalSystem、LocalNetwork 等)的服务登录成功。
- 批处理会话登录成功
- 登录会话关闭,这是非网络会话的注销事件。
Windows 错误报告 (应用程序崩溃事件仅)
- 此会话可帮助检测使用目标恶意软件不熟悉企业环境的入侵者的早期迹象。
事件日志服务事件
- Windows 事件日志服务的错误、启动事件和停止事件。
已清除事件日志 (包括安全事件日志)
- 此事件可能指示覆盖其轨迹的入侵者。
分配给新登录的特权
- 此分配指示在登录时,用户要么是管理员,要么具有足够的访问权限,使自己成为管理员。
出站远程桌面服务会话尝试
- 对入侵者的潜在滩头的可见性
系统时间已更改
SMB 客户端 (映射驱动器连接)
帐户凭据验证
- 域控制器上的本地帐户或域帐户
已从本地管理员安全组添加或删除用户。
已访问加密 API 私钥
- 使用本地存储的私钥与签名对象相关联。
任务计划程序任务创建和删除
- 任务计划程序允许入侵者在指定时间以 LocalSystem 的形式运行代码。
使用显式凭据登录
- 检测入侵者使用凭据更改来访问更多资源。
智能卡卡持有者验证事件
- 此事件检测何时使用智能卡。
可疑订阅
此订阅添加了一些可能与入侵者相关的活动,以帮助分析师进一步优化他们对设备状态的确定。
网络会话的登录会话创建
- 启用网络图的时序分析。
RADIUS 和 VPN 事件
- 如果使用 Microsoft IAS RADIUS/VPN 实现,则很有用。 它显示了连接到企业的远程 IP 地址的用户> IP 地址分配。
加密 API X509 对象和生成链事件
- 检测已知错误的证书、CA 或子 CA
- 检测 CAPI 的异常进程使用
分配给本地登录的组
- 为启用帐户范围的访问的组提供可见性
- 允许更好地规划修正工作
- 排除已知的内置系统帐户。
登录会话退出
- 特定于网络登录会话。
客户端 DNS 查找事件
- 返回执行 DNS 查询的进程以及从 DNS 服务器返回的结果。
进程退出
- 启用检查进程是否意外终止。
本地凭据验证或使用显式凭据登录
- 当本地 SAM 对要进行身份验证的帐户凭据具有权威性时生成。
- 域控制器上的干扰
- 在客户端设备上,它仅在本地帐户登录时生成。
注册表修改审核事件
- 仅当正在创建、修改或删除注册表值时。
无线 802.1x 身份验证
- 检测具有对等 MAC 地址的无线连接
Windows PowerShell 日志记录
- 涵盖 Windows PowerShell 2.0 及更高版本,并包括 Windows PowerShell 5.0 日志记录改进,用于使用 Windows PowerShell 进行内存中攻击。
- 包括 Windows PowerShell 远程处理日志记录
用户模式驱动程序框架“驱动程序已加载”事件
- 可以检测 USB 设备加载多个设备驱动程序。 例如,USB_STOR设备加载键盘或网络驱动程序。
附录 A - 最低建议的最低审核策略
如果组织审核策略允许更多审核来满足其需求,则没关系。 以下策略是启用由基线订阅和目标订阅收集的事件所需的最低审核策略设置。
类别 | 子类别 | 审核设置 |
---|---|---|
帐户登录 | 凭据验证 | 成功和失败 |
帐户管理 | 安全组管理 | 成功 |
帐户管理 | 用户帐户管理 | 成功和失败 |
帐户管理 | 计算机帐户管理 | 成功和失败 |
帐户管理 | 其他帐户管理事件 | 成功和失败 |
详细跟踪 | 流程创建 | 成功 |
详细跟踪 | 流程终止 | 成功 |
登录/注销 | 用户/设备声明 | 未配置 |
登录/注销 | IPsec 扩展模式 | 未配置 |
登录/注销 | IPsec 快速模式 | 未配置 |
登录/注销 | 登录 | 成功和失败 |
登录/注销 | 在用户界面中, | 成功 |
登录/注销 | 其他登录/注销事件 | 成功和失败 |
登录/注销 | 特殊登录 | 成功和失败 |
登录/注销 | 帐户锁定 | 成功 |
对象访问 | 已生成应用程序 | 未配置 |
对象访问 | 文件共享 | 成功 |
对象访问 | 文件系统 | 未配置 |
对象访问 | 其他对象访问事件 | 未配置 |
对象访问 | 注册表 | 未配置 |
对象访问 | 可移动存储 | 成功 |
策略更改 | 审核策略更改 | 成功和失败 |
策略更改 | MPSSVC Rule-Level 策略更改 | 成功和失败 |
策略更改 | 其他策略更改事件 | 成功和失败 |
策略更改 | 身份验证策略更改 | 成功和失败 |
策略更改 | 授权策略更改 | 成功和失败 |
特权使用 | 敏感权限使用 | 未配置 |
系统 | 安全状态更改 | 成功和失败 |
系统 | 安全系统扩展 | 成功和失败 |
系统 | 系统完整性 | 成功和失败 |
附录 B - 建议的最低注册表系统 ACL 策略
Run 和 RunOnce 密钥对于入侵者和恶意软件持久性非常有用。 它允许代码 (运行或仅运行一次,然后分别) 用户登录到系统时删除。
此含义可以轻松地扩展到注册表中的其他自动执行起始点键。
使用下图了解如何配置这些注册表项。
附录 C - 事件通道设置 (启用和通道访问) 方法
某些通道默认处于禁用状态,必须启用。 其他选项(如 Microsoft-Windows-CAPI2/Operational)必须修改通道访问权限,以允许事件日志读取器内置安全组从中读取。
执行此自定义的建议和最有效的方法是配置基线 GPO 以运行计划任务,以配置事件通道 (启用、设置最大大小以及调整通道访问) 。 此配置将在下一个 GPO 刷新周期生效,对客户端设备的影响最小。
以下 GPO 代码片段执行以下任务:
- 启用 Microsoft-Windows-Capi2/Operational 事件通道。
- 将 Microsoft-Windows-Capi2/Operational 的最大文件大小设置为 100MB。
- 将 Microsoft-Windows-AppLocker/EXE 和 DLL 的最大文件大小设置为 100 MB。
- 设置 Microsoft-Windows-Capi2/Operational 的最大通道访问权限,以包括内置的事件日志读取器安全组。
- 启用 Microsoft-Windows-DriverFrameworks-UserMode/Operational 事件通道。
- 将 Microsoft-Windows-DriverFrameworks-UserMode/Operational 的最大文件大小设置为 50 MB。
下表还包含要在 GPO 中配置的六个操作:
程序/脚本 | Arguments |
---|---|
%SystemRoot%\System32\wevtutil.exe | sl Microsoft-Windows-CAPI2/Operational /e:true |
%SystemRoot%\System32\wevtutil.exe | sl Microsoft-Windows-CAPI2/Operational /ms:102432768 |
%SystemRoot%\System32\wevtutil.exe | sl “Microsoft-Windows-AppLocker/EXE and DLL” /ms:102432768 |
%SystemRoot%\System32\wevtutil.exe | sl Microsoft-Windows-CAPI2/Operational /ca:“O:BAG:SYD: (A;;0x7;;;BA) (A;;0x2;;;AU) (A;;0x1;;;S-1-5-32-573) ” |
%SystemRoot%\System32\wevtutil.exe | sl “Microsoft-Windows-DriverFrameworks-UserMode/Operational” /e:true |
%SystemRoot%\System32\wevtutil.exe | sl “Microsoft-Windows-DriverFrameworks-UserMode/Operational” /ms:52432896 |
附录 D - WEF 客户端配置的最低 GPO
以下是 WEF 运行的最低步骤:
- 配置收集器 URI () 。
- 启动 WinRM 服务。
- 将网络服务帐户添加到内置事件日志读取器安全组。 此添加允许从安全事件通道(例如安全事件通道)进行读取。
附录 E - 带批注的基线订阅事件查询
<QueryList>
<Query Id="0" Path="System">
<!-- Anti-malware *old* events, but only detect events (cuts down noise) -->
<Select Path="System">*[System[Provider[@Name='Microsoft Antimalware'] and (EventID >= 1116 and EventID <= 1119)]]</Select>
</Query>
<!-- AppLocker EXE events or Script events -->
<Query Id="1" Path="Microsoft-Windows-AppLocker/EXE and DLL">
<Select Path="Microsoft-Windows-AppLocker/EXE and DLL">*[UserData[RuleAndFileData[PolicyName="EXE"]]]</Select>
<Select Path="Microsoft-Windows-AppLocker/MSI and Script">*</Select>
</Query>
<Query Id="2" Path="Security">
<!-- Wireless Lan 802.1x authentication events with Peer MAC address -->
<Select Path="Security">*[System[(EventID=5632)]]</Select>
</Query>
<Query Id="3" Path="Microsoft-Windows-TaskScheduler/Operational">
<!-- Task scheduler Task Registered (106), Task Registration Deleted (141), Task Deleted (142) -->
<Select Path="Microsoft-Windows-TaskScheduler/Operational">*[System[Provider[@Name='Microsoft-Windows-TaskScheduler'] and (EventID=106 or EventID=141 or EventID=142 )]]</Select>
<Select Path="System">*[System[Provider[@Name='Microsoft-Windows-TaskScheduler'] and (EventID=106 or EventID=141 or EventID=142 )]]</Select>
</Query>
<Query Id="4" Path="System">
<!-- System startup (12 - includes OS/SP/Version) and shutdown -->
<Select Path="System">*[System[Provider[@Name='Microsoft-Windows-Kernel-General'] and (EventID=12 or EventID=13)]]</Select>
</Query>
<Query Id="5" Path="System">
<!-- Service Install (7000), service start failure (7045), new service (4697) -->
<Select Path="System">*[System[Provider[@Name='Service Control Manager'] and (EventID = 7000 or EventID=7045)]]</Select>
<Select Path="Security">*[System[(EventID=4697)]]</Select>
</Query>
<Query Id="6" Path="Security">
<!-- TS Session reconnect (4778), TS Session disconnect (4779) -->
<Select Path="Security">*[System[(EventID=4778 or EventID=4779)]]</Select>
</Query>
<Query Id="7" Path="Security">
<!-- Network share object access without IPC$ and Netlogon shares -->
<Select Path="Security">*[System[(EventID=5140)]] and (*[EventData[Data[@Name="ShareName"]!="\\*\IPC$"]]) and (*[EventData[Data[@Name="ShareName"]!="\\*\NetLogon"]])</Select>
</Query>
<Query Id="8" Path="Security">
<!-- System Time Change (4616) -->
<Select Path="Security">*[System[(EventID=4616)]]</Select>
</Query>
<Query Id="9" Path="System">
<!-- Shutdown initiate requests, with user, process and reason (if supplied) -->
<Select Path="System">*[System[Provider[@Name='USER32'] and (EventID=1074)]]</Select>
</Query>
<!-- AppLocker packaged (Modern UI) app execution -->
<Query Id="10" Path="Microsoft-Windows-AppLocker/Packaged app-Execution">
<Select Path="Microsoft-Windows-AppLocker/Packaged app-Execution">*</Select>
</Query>
<!-- AppLocker packaged (Modern UI) app installation -->
<Query Id="11" Path="Microsoft-Windows-AppLocker/Packaged app-Deployment">
<Select Path="Microsoft-Windows-AppLocker/Packaged app-Deployment">*</Select>
</Query>
<Query Id="12" Path="Application">
<!-- EMET events -->
<Select Path="Application">*[System[Provider[@Name='EMET']]]</Select>
</Query>
<Query Id="13" Path="System">
<!-- Event log service events -->
<Select Path="System">*[System[Provider[@Name='Microsoft-Windows-Eventlog']]]</Select>
</Query>
<Query Id="14" Path="Security">
<!-- Local logons without network or service events -->
<Select Path="Security">*[System[(EventID=4624)]] and (*[EventData[Data[@Name="LogonType"]!="3"]]) and (*[EventData[Data[@Name="LogonType"]!="5"]])</Select>
</Query>
<Query Id="15" Path="Application">
<!-- WER events for application crashes only -->
<Select Path="Application">*[System[Provider[@Name='Windows Error Reporting']]] and (*[EventData[Data[3] ="APPCRASH"]])</Select>
</Query>
<Query Id="16" Path="Security">
<!-- Security Log cleared events (1102), EventLog Service shutdown (1100)-->
<Select Path="Security">*[System[(EventID=1102 or EventID = 1100)]]</Select>
</Query>
<Query Id="17" Path="System">
<!-- Other Log cleared events (104)-->
<Select Path="System">*[System[(EventID=104)]]</Select>
</Query>
<Query Id="18" Path="Security">
<!-- user initiated logoff -->
<Select Path="Security">*[System[(EventID=4647)]]</Select>
</Query>
<Query Id="19" Path="Security">
<!-- user logoff for all non-network logon sessions-->
<Select Path="Security">*[System[(EventID=4634)]] and (*[EventData[Data[@Name="LogonType"] != "3"]])</Select>
</Query>
<Query Id="20" Path="Security">
<!-- Service logon events if the user account isn't LocalSystem, NetworkService, LocalService -->
<Select Path="Security">*[System[(EventID=4624)]] and (*[EventData[Data[@Name="LogonType"]="5"]]) and (*[EventData[Data[@Name="TargetUserSid"] != "S-1-5-18"]]) and (*[EventData[Data[@Name="TargetUserSid"] != "S-1-5-19"]]) and (*[EventData[Data[@Name="TargetUserSid"] != "S-1-5-20"]])</Select>
</Query>
<Query Id="21" Path="Security">
<!-- Network Share create (5142), Network Share Delete (5144) -->
<Select Path="Security">*[System[(EventID=5142 or EventID=5144)]]</Select>
</Query>
<Query Id="22" Path="Security">
<!-- Process Create (4688) -->
<Select Path="Security">*[System[EventID=4688]]</Select>
</Query>
<Query Id="23" Path="Security">
<!-- Event log service events specific to Security channel -->
<Select Path="Security">*[System[Provider[@Name='Microsoft-Windows-Eventlog']]]</Select>
</Query>
<Query Id="26" Path="Security">
<!-- Special Privileges (Admin-equivalent Access) assigned to new logon, excluding LocalSystem-->
<Select Path="Security">*[System[(EventID=4672)]]</Select>
<Suppress Path="Security">*[EventData[Data[1]="S-1-5-18"]]</Suppress>
</Query>
<Query Id="27" Path="Security">
<!-- New user added to local security group-->
<Select Path="Security">*[System[(EventID=4732)]]</Select>
</Query>
<Query Id="28" Path="Security">
<!-- New user added to global security group-->
<Select Path="Security">*[System[(EventID=4728)]]</Select>
</Query>
<Query Id="29" Path="Security">
<!-- New user added to universal security group-->
<Select Path="Security">*[System[(EventID=4756)]]</Select>
</Query>
<Query Id="30" Path="Security">
<!-- User removed from local Administrators group-->
<Select Path="Security">*[System[(EventID=4733)]] and (*[EventData[Data[@Name="TargetUserName"]="Administrators"]])</Select>
</Query>
<Query Id="31" Path="Microsoft-Windows-TerminalServices-RDPClient/Operational">
<!-- Log attempted TS connect to remote server -->
<Select Path="Microsoft-Windows-TerminalServices-RDPClient/Operational">*[System[(EventID=1024)]]</Select>
</Query>
<Query Id="32" Path="Security">
<!-- Certificate Services received certificate request (4886), Approved and Certificate issued (4887), Denied request (4888) -->
<Select Path="Security">*[System[(EventID=4886 or EventID=4887 or EventID=4888)]]</Select>
</Query>
<Query Id="34" Path="Security">
<!-- New User Account Created(4720), User Account Enabled (4722), User Account Disabled (4725), User Account Deleted (4726) -->
<Select Path="Security">*[System[(EventID=4720 or EventID=4722 or EventID=4725 or EventID=4726)]]</Select>
</Query>
<Query Id="35" Path="Microsoft-Windows-SmartCard-Audit/Authentication">
<!-- Gets all Smart-card Card-Holder Verification (CHV) events (success and failure) performed on the host. -->
<Select Path="Microsoft-Windows-SmartCard-Audit/Authentication">*</Select>
</Query>
<Query Id="36" Path="Microsoft-Windows-SMBClient/Operational">
<!-- get all UNC/mapped drive successful connection -->
<Select Path="Microsoft-Windows-SMBClient/Operational">*[System[(EventID=30622 or EventID=30624)]]</Select>
</Query>
<Query Id="37" Path="Application">
<!-- User logging on with Temporary profile (1511), cannot create profile, using temporary profile (1518)-->
<Select Path="Application">*[System[Provider[@Name='Microsoft-Windows-User Profiles Service'] and (EventID=1511 or EventID=1518)]]</Select>
</Query>
<Query Id="39" Path="Microsoft-Windows-Sysmon/Operational">
<!-- Modern SysMon event provider-->
<Select Path="Microsoft-Windows-Sysmon/Operational">*</Select>
</Query>
<Query Id="40" Path="Application">
<!-- Application crash/hang events, similar to WER/1001. These include full path to faulting EXE/Module.-->
<Select Path="Application">*[System[Provider[@Name='Application Error'] and (EventID=1000)]]</Select>
<Select Path="Application">*[System[Provider[@Name='Application Hang'] and (EventID=1002)]]</Select>
</Query>
<Query Id="41" Path="Microsoft-Windows-Windows Defender/Operational">
<!-- Modern Windows Defender event provider Detection events (1006-1009) and (1116-1119) -->
<Select Path="Microsoft-Windows-Windows Defender/Operational">*[System[( (EventID >= 1006 and EventID <= 1009) )]]</Select>
<Select Path="Microsoft-Windows-Windows Defender/Operational">*[System[( (EventID >= 1116 and EventID <= 1119) )]]</Select>
</Query>
<Query Id="42" Path="Security">
<!-- An account Failed to Log on events -->
<Select Path="Security">*[System[(EventID=4625)]] and (*[EventData[Data[@Name="LogonType"]!="2"]]) </Select>
</Query>
</QueryList>
附录 F - 带批注的可疑订阅事件查询
<QueryList>
<Query Id="0" Path="Security">
<!-- Network logon events-->
<Select Path="Security">*[System[(EventID=4624)]] and (*[EventData[Data[@Name="LogonType"]="3"]])</Select>
</Query>
<Query Id="1" Path="System">
<!-- RADIUS authentication events User Assigned IP address (20274), User successfully authenticated (20250), User Disconnected (20275) -->
<Select Path="System">*[System[Provider[@Name='RemoteAccess'] and (EventID=20274 or EventID=20250 or EventID=20275)]]</Select>
</Query>
<Query Id="2" Path="Microsoft-Windows-CAPI2/Operational">
<!-- CAPI events Build Chain (11), Private Key accessed (70), X509 object (90)-->
<Select Path="Microsoft-Windows-CAPI2/Operational">*[System[(EventID=11 or EventID=70 or EventID=90)]]</Select>
</Query>
<Query Id="3" Path="Security">
<!-- CA stop/Start events CA Service Stopped (4880), CA Service Started (4881), CA DB row(s) deleted (4896), CA Template loaded (4898) -->
<Select Path="Security">*[System[(EventID=4880 or EventID = 4881 or EventID = 4896 or EventID = 4898)]]</Select>
</Query>
<Query Id="4" Path="Microsoft-Windows-LSA/Operational">
<!-- Groups assigned to new login (except for well known, built-in accounts)-->
<Select Path="Microsoft-Windows-LSA/Operational">*[System[(EventID=300)]] and (*[EventData[Data[@Name="TargetUserSid"] != "S-1-5-20"]]) and (*[EventData[Data[@Name="TargetUserSid"] != "S-1-5-18"]]) and (*[EventData[Data[@Name="TargetUserSid"] != "S-1-5-19"]])</Select>
</Query>
<Query Id="5" Path="Security">
<!-- Logoff events - for Network Logon events-->
<Select Path="Security">*[System[(EventID=4634)]] and (*[EventData[Data[@Name="LogonType"] = "3"]])</Select>
</Query>
<Query Id="6" Path="Security">
<!-- RRAS events - only generated on Microsoft IAS server -->
<Select Path="Security">*[System[( (EventID >= 6272 and EventID <= 6280) )]]</Select>
</Query>
<Query Id="7" Path="Microsoft-Windows-DNS-Client/Operational">
<!-- DNS Client events Query Completed (3008) -->
<Select Path="Microsoft-Windows-DNS-Client/Operational">*[System[(EventID=3008)]]</Select>
<!-- suppresses local machine name resolution events -->
<Suppress Path="Microsoft-Windows-DNS-Client/Operational">*[EventData[Data[@Name="QueryOptions"]="140737488355328"]]</Suppress>
<!-- suppresses empty name resolution events -->
<Suppress Path="Microsoft-Windows-DNS-Client/Operational">*[EventData[Data[@Name="QueryResults"]=""]]</Suppress>
</Query>
<Query Id="8" Path="Security">
<!-- Process Terminate (4689) -->
<Select Path="Security">*[System[(EventID = 4689)]]</Select>
</Query>
<Query Id="9" Path="Security">
<!-- Local credential authentication events (4776), Logon with explicit credentials (4648) -->
<Select Path="Security">*[System[(EventID=4776 or EventID=4648)]]</Select>
</Query>
<Query Id="10" Path="Security">
<!-- Registry modified events for Operations: New Registry Value created (%%1904), Existing Registry Value modified (%%1905), Registry Value Deleted (%%1906) -->
<Select Path="Security">*[System[(EventID=4657)]] and ((*[EventData[Data[@Name="OperationType"] = "%%1904"]]) or (*[EventData[Data[@Name="OperationType"] = "%%1905"]]) or (*[EventData[Data[@Name="OperationType"] = "%%1906"]]))</Select>
</Query>
<Query Id="11" Path="Security">
<!-- Request made to authenticate to Wireless network (including Peer MAC (5632) -->
<Select Path="Security">*[System[(EventID=5632)]]</Select>
</Query>
<Query Id="12" Path="Microsoft-Windows-PowerShell/Operational">
<!-- PowerShell execute block activity (4103), Remote Command(4104), Start Command(4105), Stop Command(4106) -->
<Select Path="Microsoft-Windows-PowerShell/Operational">*[System[(EventID=4103 or EventID=4104 or EventID=4105 or EventID=4106)]]</Select>
</Query>
<Query Id="13" Path="Microsoft-Windows-DriverFrameworks-UserMode/Operational">
<!-- Detect User-Mode drivers loaded - for potential BadUSB detection. -->
<Select Path="Microsoft-Windows-DriverFrameworks-UserMode/Operational">*[System[(EventID=2004)]]</Select>
</Query>
<Query Id="14" Path="Windows PowerShell">
<!-- Legacy PowerShell pipeline execution details (800) -->
<Select Path="Windows PowerShell">*[System[(EventID=800)]]</Select>
</Query>
</QueryList>
附录 G - 联机资源
可以通过以下链接获取详细信息: