了解有关从组织的设备中收集事件的方法。 本文同时讨论了正常操作情况下以及怀疑有入侵时的事件。
Windows 事件转发(WEF)在你的组织中的设备上读取任何运行或管理事件日志,并将你选择的事件转发到 Windows 事件收集器(WEC)服务器。
若要实现此目的,请向客户端设备发布两个不同的订阅:基准套餐和可疑订阅。 基准套餐将注册你组织中的所有设备,并且可疑订阅仅包括你已添加的设备。 可疑订阅收集其他事件以帮助构建系统活动的上下文,并且可以快速更新以适应所需的新事件和/或方案,而不会影响基准操作。
此实现有助于区分最终存储事件的位置。 可以通过联机分析功能(如安全事件管理器(SEM))将基准事件发送到设备,同时还会将事件发送到 MapReduce 系统(如 HDInsight 或 Hadoop),以便长期存储和更深分析。 由于音量和信号比率较低,来自可疑订阅的事件将直接发送到 MapReduce 系统,它们很大程度上用于主机鉴证分析。
SEM 的强项在于能够检查、关联事件以及生成已知模式的警报,并以计算机速度通知安全人员。
MapReduce 系统具有较长的保留时间(SEM 的年数和月数)、较大的入口能力(每天数百 tb),以及对数据执行更复杂的操作,如统计和趋势分析、模式群集分析或应用机器学习算法。
下面是 WEF 事件的大致缩放指南:
事件/第二个范围 | 数据存储 |
0-5000 | SQL 或 SEM |
5000-50000 | SEM |
50000 + | 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。 这些注释针对查询目的和清晰度进行了注释。 可以<删除>或编辑单个查询元素,而不会影响查询的其余部分。
常见的 WEF 问题
本部分介绍来自 IT 专业人士和客户的常见问题。
用户是否会注意到他们的计算机是否已启用 WEF 或 WEF 是否遇到错误?
简短答案是:否。
更长的答案是: Eventlog-forwardingPlugin/操作事件通道记录与设备上提供的 WEF 订阅相关的成功、警告和错误事件。 除非用户打开事件查看器并导航到该通道,否则它们将不会注意到 WEF 通过 "资源使用情况" 或 "图形用户界面" 弹出窗口。 即使 WEF 订阅存在问题,也没有用户交互或性能下降。 所有成功、警告和失败事件都将记录到此操作事件通道中。
是否 WEF 推送或拉出?
WEF 订阅可以配置为推拉或 pull,但不能同时配置为。 最简单、最灵活的具有最大可伸缩性的 IT 部署可通过使用推送或源启动订阅来实现。 WEF 客户端通过使用 GPO 进行配置,并激活了内置转发客户端。 对于 pull、收集器启动的 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 客户是否具有单独的事件缓冲区?
WEF 客户端计算机本地事件日志是 WEF 的缓冲区,用于连接到 WEC 服务器的连接丢失。 若要增加 "缓冲区大小",请增加选择事件的特定事件日志文件的最大文件大小。 有关详细信息,请参阅附录 C-事件通道设置(启用和通道访问)方法。
当事件日志覆盖现有事件时(如果设备未连接到事件收集器,会导致数据丢失),不会向 WEF 收集器发送任何通知,从客户端丢失事件。 在事件流中,两个指示灯都没有出现间隙。
转发事件使用的是哪种格式?
WEF 具有两种转发事件模式。 默认值为 "呈现的文本",其中包括事件的文本描述,就像在事件查看器中看到的那样。 这意味着事件大小有效地增加或 tripled,具体取决于呈现的描述的大小。 替代模式是 "事件" (有时称为 "二进制" 格式)-它只是以二进制 XML 格式发送的事件 XML 本身(如将写入 .evtx 文件。)这是非常紧凑的,并且可以超过单个 WEC 服务器可以容纳的事件量的两倍。
可通过 WECUTIL 实用工具将订阅 "testSubscription" 配置为使用事件格式:
syntax复制
@rem required to set the DeliveryMaxItems or DeliveryMaxLatencyTime
Wecutil ss “testSubscription” /cf:Events
WEF 事件的传递频率有多长?
事件传递选项是 WEF 订阅配置参数的一部分-有三个内置订阅传递选项:正常、最小化带宽和最小化延迟。 第四个 "捕获-全部" 自定义 "自定义" 是可用的,但不能通过使用事件查看器通过 WEF UI 进行选择或配置。 必须选择并使用 WECUTIL 配置 "自定义传递" 选项。EXE 命令行应用程序。 "所有订阅选项" 定义最大事件计数和最长事件寿命,如果超过一个限制,则会将累积事件发送到事件收集器。
下表概述了内置的传递选项:
事件传递优化选项 | 描述 |
Normal | 此选项可确保事件的可靠传递,并且不会尝试保留带宽。 如果你需要更严格地控制带宽使用或需要尽可能快地传递的转发事件,则是合适的选择。 它使用拉取传递模式,一次批处理5个项目,并将批处理超时设置为15分钟。 |
最大限度地减少带宽 | 此选项可确保严格控制事件传递的网络带宽的使用。 如果你想要限制发送事件的网络连接频率,则这是一个合适的选择。 它使用推送传递模式,并将批处理超时设置为6小时。 此外,它还使用6小时的检测信号间隔。 |
最小延迟 | 此选项可确保以最少的延迟传递事件。 如果你正在收集通知或关键事件,则此选项是一种合适的选择。 它使用推送传递模式,并将批处理超时设置为30秒。 |
有关传递选项的详细信息,请参阅配置高级订阅设置。
主要区别是指从客户端发送事件的延迟。 如果所有内置选项都不能满足你的要求,则可以从提升的命令提示符设置给定订阅的自定义事件传递选项:
syntax复制
@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 事件收集器通信?
是。 如果你需要高可用性环境,只需配置具有相同订阅配置的多个 WEC 服务器,并将两个 WEC 服务器 Uri 发布到 WEF 客户端。 如果用户拥有相应的访问权限,WEF 客户将同时将事件转发到 WEC 服务器上已配置的订阅。
WEC 服务器的限制是什么?
限制 WEC 服务器的可伸缩性的因素有三个。 在商品硬件上稳定的 WEC 服务器的一般规则是 "10k x 10k"-这意味着,每个 WEC 服务器最多只能有10000个活动的 WEF 客户端,并且不超过10000个事件/第二个平均事件量。
- 磁盘输入/输出。 WEC 服务器不处理或验证接收的事件,而是缓冲接收的事件,然后将其记录到本地事件日志文件(.EVTX 文件)。 记录的 .EVTX 文件的速度受磁盘写入速度的限制。 将 .EVTX 文件隔离到其自己的数组或使用高速磁盘可以增加单个 WEC 服务器可以接收每秒事件的次数。
- 网络连接。 尽管 WEF 源不会保留与 WEC 服务器的永久持久连接,但它不会在发送其事件后立即断开连接。 这意味着可以同时连接到 WEC 服务器的 WEF 源的数量限制为 WEC 服务器上可用的打开 TCP 端口。
- 注册表大小。 对于连接到 WEF 订阅的每个唯一设备,都有一个注册表项(对应于 WEF 客户端的 FQDN),后者是为存储书签和源检测信号信息而创建的。 如果此操作不会被修剪以删除非活动客户端,则此注册表项集可以随着时间的推移增大到无法控制的大小。
- 当套餐具有>1000 WEF 源(也称为 lifetime WEF 源)连接到它时,当在左侧导航中选择 "订阅" 节点时,事件查看器可能会停止响应几分钟,但随后将正常运行。
- 在>50000 生存时间 WEF 源时,事件查看器不再是一个选项,wecutil (包含在 Windows 中)必须用于配置和管理订阅。
- 在>100000 生存时间 WEF 源时,注册表将不可读,并且可能需要重新生成 WEC 服务器。
订阅信息
下面列出了每个订阅收集的所有项目,附录中提供了实际订阅 XML。 这些功能分为基准和目标。 目的是将所有主机订阅到基准,然后根据需要向目标订阅注册(并删除)主机。
基线订阅
虽然这看起来是最大的套餐,但实际上它是每台设备的最低音量。 (对于不寻常的设备,应允许例外-执行复杂的开发人员相关任务的设备可能会创建异常高的进程创建和 AppLocker 事件。)此订阅不需要客户端设备上的特殊配置即可启用事件通道或修改频道权限。
该订阅实质上是应用于事件日志的查询语句的集合。 这意味着它自然是模块化的,并且可以删除或更改给定查询语句,而不会影响订阅中的其他查询语句。 此外,禁止筛选出特定事件的语句,仅在该查询语句中应用,而不是整个订阅。
基线订阅要求
为了最大程度地利用基准套餐,我们建议在设备上设置以下要求,以确保客户已经生成了要转发到系统的所需事件。
- 应用作为建议的最低审核策略的超级集的安全审核策略。 有关详细信息,请参阅附录 A –建议的最低审核策略。 这可确保安全事件日志生成所需的事件。
- 将至少一个仅审核的 AppLocker 策略应用到设备。
- 如果你已使用 AppLocker whitelisting 或 blacklisting 事件,则会满足此要求。
- AppLocker 事件包含非常有用的信息,例如文件哈希和可执行文件和脚本的数字签名信息。
- 启用已禁用的事件通道并设置新式事件文件的最小大小。
- 当前,没有可用于启用或设置新式事件文件的最大大小的 GPO 模板。 必须使用 GPO 执行此操作。 有关详细信息,请参阅附录 C-事件通道设置(启用和通道访问)方法。
可以在以下中找到批注事件查询。 有关详细信息,请参阅附录 F-批注的可疑订阅事件查询。
- Microsoft 反恶意软件或 Windows Defender 中的反恶意软件事件。 这可以针对任何给定的反恶意软件产品进行配置,以便在它写入 Windows 事件日志时轻松。
- 安全事件日志流程创建事件。
- AppLocker 进程创建事件(EXE、脚本、打包应用安装和执行)。
- 注册表修改事件。 有关详细信息,请参阅附录 B-推荐的最低注册表系统 ACL 策略。
- 操作系统启动和关机
- 启动事件包括操作系统版本、service pack 级别、QFE 版本和启动模式。
- 服务安装
- 包括服务的名称、图像路径和服务的安装者。
- 证书颁发机构审核事件
- 这仅适用于安装了证书颁发机构角色的系统。
- 记录证书请求和响应。
- 用户配置文件事件
- 使用临时配置文件或无法创建用户配置文件可能表示入侵者以交互方式登录到设备,但不希望留下永久配置文件。
- 服务启动失败
- 失败代码已本地化,因此你必须检查消息 DLL 中的值。
- 网络共享访问事件
- 筛选出需要和干扰的 IPC $ 和/NetLogon 文件共享。
- 系统关闭启动请求
- 了解已启动设备重启的内容。
- 用户启动的交互式注销事件
- 远程桌面服务会话连接、重新连接或断开连接。
- EMET 事件(如果已安装 EMET)。
- 事件转发插件事件
- 对于监视 WEF 订阅操作,尤其是部分成功事件。 这对于诊断部署问题非常有用。
- 网络共享创建和删除
- 启用对未经授权的共享创建的检测。 >注意: 当设备启动时,将重新创建所有共享。
- 登录会话
- 交互式登录成功(本地和远程交互式/远程桌面)
- 对于非内置帐户(如 LocalSystem、LocalNetwork 等)的服务登录成功。
- 批处理会话的登录成功
- 登录会话关闭,这是非网络会话的注销事件。
- Windows 错误报告(仅限应用程序崩溃事件)
- 这有助于检测不熟悉使用目标恶意软件的企业环境的入侵者的早期迹象。
- 事件日志服务事件
- Windows 事件日志服务的错误、启动事件和停止事件。
- 事件日志已清除(包括安全事件日志)
- 这可能表示入侵者覆盖了他们的踪迹。
- 分配给新登录的特殊权限
- 这表示在登录时用户是管理员,或者拥有足够的访问权限,以使其成为自己的管理员。
- 出站远程桌面服务会话尝试
- 深入了解入侵者的潜在 beachhead
- 系统时间已更改
- SMB 客户端(映射的驱动器连接)
- 帐户凭据验证
- 域控制器上的本地帐户或域帐户
- 已从本地管理员安全组中添加或删除用户。
- 已访问加密 API 私钥
- 与使用本地存储的私钥的对象签名相关联。
- 任务计划程序任务创建和删除
- 任务计划程序允许入侵者在指定时间(LocalSystem)运行代码。
- 带有显式凭据的登录
- 检测凭据使用入侵者所做的更改访问其他资源。
- 智能卡持有人验证事件
- 这将检测使用智能卡的时间。
可疑订阅
这会添加一些可能的与入侵者相关的活动,帮助分析人员进一步优化他们对设备状态的决定。
- 网络会话的登录会话创建
- 启用网络图的时间系列分析。
- RADIUS 和 VPN 事件
- 使用 Microsoft IAS RADIUS/VPN 实现时很有用。 它显示连接到>企业的远程 ip 地址的用户 IP 地址分配。
- 加密 API X509 对象和内部版本链事件
- 检测已知的不良证书、CA 或子 CA
- 检测使用 CAPI 的异常过程
- 分配给本地登录的组
- 提供对支持帐户范围访问的组的可见性
- 允许更好地规划补救措施
- 排除众所周知的内置系统帐户。
- 登录会话退出
- 特定于网络登录会话。
- 客户端 DNS 查找事件
- 返回执行 DNS 查询的进程和从 DNS 服务器返回的结果。
- 进程退出
- 支持意外终止的进程的检查。
- 本地凭据验证或具有显式凭据的登录
- 在本地 SAM 对正在进行身份验证的帐户凭据进行授权时生成。
- 在域控制器上发出噪音
- 在客户端设备上,仅当本地帐户登录时才会生成此项。
- 注册表修改审核事件
- 仅在创建、修改或删除注册表值时。
- 无线 802.1 x 身份验证
- 检测具有对等 MAC 地址的无线连接
- Windows PowerShell 日志记录
- 介绍 Windows PowerShell 2.0 及更高版本,包括 Windows PowerShell 5.0 日志记录,这些改进使用 Windows PowerShell 的内存内攻击。
- 包括 Windows PowerShell 远程登录
- 用户模式驱动程序框架 "驱动程序已加载" 事件
- 可能检测到加载多个设备驱动程序的 USB 设备。 例如,USB \ _STOR 设备加载键盘或网络驱动程序。
附录 A-最低建议的最低审核策略
如果你的组织审核策略支持其他审核来满足其需求,则这是很好的。 下面的策略是启用由比较基准和目标订阅收集的事件所需的最低审核策略设置。
类别 | 子类别 | 审核设置 |
帐户登录 | 凭据验证 | 成功和失败 |
帐户管理 | 安全组管理 | 成功 |
帐户管理 | 用户帐户管理 | 成功和失败 |
帐户管理 | 计算机帐户管理 | 成功和失败 |
帐户管理 | 其他帐户管理事件 | 成功和失败 |
详细跟踪 | 流程创建 | 成功 |
详细跟踪 | 进程终止 | 成功 |
登录/注销 | 用户/设备声明 | 未配置 |
登录/注销 | IPsec 扩展模式 | 未配置 |
登录/注销 | IPsec 快速模式 | 未配置 |
登录/注销 | Logon | 成功和失败 |
登录/注销 | 在用户界面中, | 成功 |
登录/注销 | 其他登录/注销事件 | 成功和失败 |
登录/注销 | 特殊登录 | 成功和失败 |
登录/注销 | 帐户锁定 | 成功 |
对象访问 | 应用程序生成 | 未配置 |
对象访问 | 文件共享 | 成功 |
对象访问 | 文件系统 | 未配置 |
对象访问 | 其他对象访问事件 | 未配置 |
对象访问 | 注册表 | 未配置 |
对象访问 | 可移动存储 | 成功 |
策略更改 | 审核策略更改 | 成功和失败 |
策略更改 | MPSSVC 规则级别策略更改 | 成功和失败 |
策略更改 | 其他策略更改事件 | 成功和失败 |
策略更改 | 身份验证策略更改 | 成功和失败 |
策略更改 | 授权策略更改 | 成功和失败 |
特权使用 | 敏感权限使用 | 未配置 |
系统 | 安全状态更改 | 成功和失败 |
系统 | 安全系统扩展 | 成功和失败 |
系统 | 系统完整性 | 成功和失败 |
附录 B-推荐的最低注册表系统 ACL 策略
运行和 RunOnce 键对于入侵者和恶意软件持久性非常有用。 它允许在用户登录到系统时运行代码(或仅运行一次,然后分别删除一次)。
这可以轻松扩展到注册表中的其他自动执行起始点键。
使用以下数字查看如何配置这些注册表项。
附录 C-事件通道设置(启用和通道访问)方法
某些频道在默认情况下处于禁用状态,并且必须启用。 其他人(如 Microsoft Windows-CAPI2/操作)必须修改了频道访问权限,以允许事件日志阅读器内置安全组对其进行读取。
执行此操作的建议和最有效方式是将基准 GPO 配置为运行计划任务以配置事件通道(启用、设置最大大小和调整频道访问)。这将在下一个 GPO 刷新周期生效,并且对客户端设备的影响最小。
以下 GPO 代码段执行下列操作:
- 启用Microsoft Windows Capi2/操作事件通道。
- 将Microsoft-Capi2/可操作的最大文件大小设置为100mb。
- 将Microsoft-AppLocker/EXE 和 DLL的最大文件大小设置为100mb。
- 设置适用于 Microsoft Windows 的最大频道访问Capi2/操作,包括内置事件日志读取器安全组。
- 启用Microsoft-DriverFrameworks-用户模式/操作事件通道。
- 设置Microsoft-DriverFrameworks-用户模式/运行到50MB 的最大文件大小。
附录 D-WEF 客户端配置的最低 GPO
下面是 WEF 操作的最低步骤:
- 配置收集器 URI。
- 启动 WinRM 服务。
- 将 "网络服务" 帐户添加到内置的 "事件日志读取器" 安全组。 这允许从安全事件通道(如安全事件通道)读取。
附录 E-批注的基线订阅事件查询
XML复制
<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-已批注的可疑订阅事件查询
XML复制
<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-在线资源
你可以使用以下链接获取详细信息: