使用 Elastic 收集 Windows 遥测数据:ETW Filebeat 输入简介
2024年11月29日 | by mebius
作者:来自 ElasticChema Martinez
在安全领域,能够使用 Windows 主机的系统遥测数据为监控、故障排除和保护 IT 环境开辟了新的可能性。意识到这一点,Elastic 推出了专注于 Windows 事件跟踪 (ETW) 的新功能 – 这是一种强大的 Windows 原生机制,用于捕获大量系统和应用程序事件。借助这些新功能,Elastic 用户可以使用 Elastic Search AI 平台捕获、分析和可视化 Windows 遥测数据。
什么是 ETW?
ETW 是一种轻量级、高性能的 Windows 原生机制,用于记录有关系统性能和活动(system performance and activity)的详细事件数据。与传统的 Windows 事件日志不同,ETW 使用户能够收集低级遥测数据,这些遥测数据可针对不同的提供商和场景进行定制,包括系统性能洞察和特定于应用程序的诊断。
在 Elastic 中集成 ETW 的动机
ETW 已广泛用于 Windows 环境中的诊断和性能监控,但收集和管理 ETW 数据传统上需要复杂的设置。通过将 ETW 功能直接集成到 Elastic 中,我们的目标是简化此过程,使在 Elastic 中收集、过滤和分析 ETW 事件以及其他系统和应用程序日志变得更加容易。
深入探究:Filebeat ETW 输入
Elastic 的新 ETW 功能的核心是 Filebeat 的 ETW 输入。此新输入允许 Filebeat 直接订阅 ETW 提供商,从而简化了收集、传输和处理 ETW 数据的方式。下面深入了解它的工作原理以及你可以使用它的方式。
Filebeat ETW 输入的工作原理
Filebeat ETW 输入(Filebeat ETW input)订阅 Windows 主机上的 ETW 会话。ETW 会话是来自 ETW 提供商的事件的逻辑分组,这些提供商本质上是遥测数据的来源,例如 Windows 内核和应用程序提供商。
Filebeat 中的 ETW 输入使用此订阅机制,实时收集数据并将其发送到 Elasticsearch 进行分析和可视化。它可以在三种灵活的模式下运行,并适应一系列数据收集场景,以满足实时和历史数据需求:
- 创建新会话:在此模式下,Filebeat 在 Windows 主机上初始化新的 ETW 会话以捕获来自用户模式提供商的事件。此设置非常适合需要从系统上当前运行的tgcode应用程序或服务获取实时数据的场景。通过创建专用会话,用户可以收集特定的遥测数据,而不会影响或依赖系统上预先存在的 ETW 会话。
- 附加到现有会话:Filebeat 还可以附加到已经活动的 ETW 会话,收集该会话中生成的持续事件数据。这种方法对于已在使用 ETW 会话的环境非常有用。它允许管理员与其他监控工作流一起捕获事件,而不会重复会话或影响系统性能。
- 从预先录制的 .etl 文件中读取:在某些情况下,ETW 数据可能会提前记录并存储在 .tgcodeetl 文件中。Filebeat 可以解析这些文件,使用户能够分析历史事件数据。此模式对于回顾性分析特别有价值,用户可能希望根据先前捕获的 ETW 数据调查以前的系统或应用程序行为。
这种操作模式的灵活性使 Filebeat 的 ETW 输入能够适应各种用例 —— 无论是用于实时监控、取证分析还是操作故障排除。
技术工作流程概述
设置模式后,ETW 输入将遵循简化的流程来收集数据并将其发送到 Elastic:
- 提供商订阅:Filebeat 根据用户配置发起对一个或多个 ETW 提供商的订阅,无论是通过创建新会话还是连接到现有会话。
- 数据收集:从活动 ETW 会话捕获事件或从 .etl 文件中解析事件。ETW 记录被收集、解析并转换为 JSON 对象,以确保它们的结构一致,以便有效提取。此转换为 Elasticsearch 中的顺利索引做好了准备,使其能够与 Elastic 中的其他日志和指标数据无缝集成。
- 传输到 Elasticsearch:收集事件后,它们将被发送到 Elasticsearch 进行存储和分析 – 并准备在 Kibana 中进行可视化。
示例用例:配置 ETW 输入
为了演示如何配置 Filebeat ETW 输入以从特定 ETW 提供程序捕获数据,我们以监控 Microsoft DNS 服务器提供程序为例。
要配置 Filebeat ETW 输入以监控 DNS 事件,我们可以使用 logman 命令行实用程序,该实用程序可以深入了解可用的 ETW 提供程序及其详细信息。logman 允许我们列出所有可用的提供程序,查看每个提供程序的清单,并检查可过滤关键字、跟踪级别和其他配置等详细信息。
在配置 Filebeat 以从特定提供程序收集事件之前,你可能需要查看系统中所有可用的 ETW 提供程序。要查看提供程序的完整列表,请运行以下命令:
PS> logman query providers
示例输出:
Provider GUID
-------------------------------------------------------------------------------
Microsoft-Windows-Kernel-Process {75A03DF8-6A47-4C6C-B0A0-FB37A13CA342}
Microsoft-Windows-Kernel-File {EDD08927-9CC4-4E65-B970-C2560FB5C289}
Microsoft-Windows-Kernel-Network {7DD42A49-5329-4832-8DFD-43D979153A88}
Microsoft-Windows-DNSServer {EB79061A-Atgcode566-4698-9119-3ED2807060E7}
Microsoft-Windows-PowerShell {A0C1853B-5C40-4B15-8766-3CF1C58F985A}
...
此命令输出可用 ETW 提供程序的列表,显示每个提供程序的名称和唯一 GUID。通过找到感兴趣的提供程序,你可以记下其名称和 GUID 以用于配置目的。
要查看有关特定提供程序作为 Microsoft DNS 服务器的更多详细信息,请在命令 shell 中运行:
PS> logman query providers "Microsoft-Windows-DNSServer"
示例输出如下:
Provider GUID
-------------------------------------------------------------------------------
Microsoft-Windows-DNSServer {EB79061A-A566-4698-9119-3ED2807060E7}
Value Keyword Description
-------------------------------------------------------------------------------
0x0000000000000001 QUERY_RECEIVED
0x0000000000000002 RESPONSE_SUCCESS
0x0000000000000004 RESPONSE_FAILURE
0x0000000000000008 IGNORED_QUERY
0x0000000000000010 RECURSE_QUERY_OUT
0x0000000000000020 RECURSE_RESPONSE_IN
0x0000000000000040 RECURSE_QUERY_DROP
...
0x8000000000000000 Microsoft-Windows-DNSServer/Analytical Microsoft-Windows-DNS-Server/Analytical
0x4000000000000000 Microsoft-Windows-DNSServer/Audit Microsoft-Windows-DNS-Server/Audit
Value Level Description
-------------------------------------------------------------------------------
0x02 win:Error Error
0x03 win:Warning Warning
0x04 win:Informational Information
PID Image
-------------------------------------------------------------------------------
0x00000354 C:WindowsSystem32dns.exe
0x00000354 C:WindowsSystem32dns.exe
从此输出中,我们可以看到提供程序 Microsoft-Windows-DNSServer 提供了几个关键字来过滤特定事件类型,例如 QUERY_RECEIVED、RESPONSE_SUCCESS、RESPONSE_FAILURE 等 – 每个关键字都由唯一的十六进制代码表示。此外,它还提供级别(错误、警告、信息),指定可以捕获的事件的严重性。
Filebeat ETW 输入提供过滤选项,允许你仅捕获来自特定提供程序的相关事件:
- match_any_keyword:如果事件与指定的任何一个关键字匹配,则捕获事件。当你想要监控一系列不一定同时发生的事件类型时,这很有用。
- match_all_keyword:仅当事件与所有指定的关键字匹配时才捕获事件。此选项非常适合高度特定的事件监控,其中事件必须同时满足多个条件。
- trace_level:根据事件的严重性级别过滤事件,允许你指定是否仅捕获错误、警告或信息性消息。这有助于将监控工作集中在高优先级问题上。
logman 的输出列出了各种事件类型和相应的关键字,允许你选择要监控的特定事件。例如,如果你想要跟踪递归查询,你可以查找诸如 RECURSE_QUERY_OUT、RECURSE_RESPONSE_IN 或 RECURSE_QUERY_DROP 之类的关键字。要专门针对这些递归查询事件进行过滤,你可以计算它们的值的位掩码总和:
1. 确定每个关键字的十六进制值:
- RECURSE_QUERY_OUT:0x0000000000000010
- RECURSE_RESPONSE_IN:0x0000000000000020
- RECURSE_QUERY_DROP:0x0000000000000040
- Microsoft-Windows-DNSServer/Analytical(确保捕获分析事件):0x8000000000000000
2. 将这些值相加:
- 0x8000000000000000 + 0x000000000000010 + 0x0000000000000020 + 0x0000000000000040 = 0x8000000000000070
此结果位掩码 0x8000000000000070 将在 match_any_keyword 配置中使用,以仅捕获这些特定的递归查询事件。
此方法允许对 ETW 输入所摄取的数据进行精细控制,确保你仅收集与你的监控需求相关的事件。
引入基于 ETW 的集成
除了 Filebeat ETW 输入之外,我们还引入了两个集成,它们可简化特定用例的 ETW 数据收集。
Microsoft DNS 服务器集成
监控 DNS 服务器分析日志对于维护网络基础设施的安全性和性能至关重要。常见的 DNS 攻击类型 — DNS 劫持、DNS 隧道、各种拒绝服务 (DoS) 攻击和 DNS 缓存中毒 — 对组织来说意味着重大风险。Windows DNS 分析日志记录是管理员和安全分析师需要了解的重要事件源。它提供了对网络上内部和外部发生的每个 DNS 事务的详细见解。
Microsoft DNS 服务器集成专注于收集 DNS 服务器审计和分析日志。通过此集成,组织可以轻松跟踪和分析 DNS 查询、响应和错误率 — 从而更深入地了解 DNS 活动。集成中包含的预构建仪表板允许用户深入研究 DNS 活动分析,而无需进行复杂的配置或大量设置。
自定义 ETW 集成
自定义 ETW(custom ETW)集成使用户能够将 ETW 事件导入 Elastic,从而可以灵活地配置与任何兼容提供商的集成或从预先记录的 .etl 文件中读取。
这种适应性使用户能够捕获特定于提供商的数据(应用程序日志、系统性能指标或历史事件数据),以满足他们的监控需求。
尝试 ETW 输入
Elastic 中的新 ETW 输入揭示了监控和保护 Windows 环境的强大可能性。用户现在可以从依赖 ETW 的 Windows 应用程序和服务中收集详细的遥测数据,从而实时洞察系统性能、应用程序行为和潜在的安全风险。
此功能由内置集成(例如 Microsoft DNS 服务器集成)补充,这些集成使无需复杂设置即可轻松获得即时、可操作的洞察。
这些新功能只是 ETW 可以为 Elastic 用户带来的开始。我们很高兴你尝试这些功能、探索新的用例并分享你的反馈,以帮助我们继续在 Elastic 中发展 ETW 功能。要开始使用,请访问 ETW 输入(ETW input)页面获取设置说明,或在 Elastic Cloud 上免费试用这些功能。
本文中描述的任何功能或特性的发布和时间均由 Elastic 自行决定。任何当前不可用的功能或特性可能无法按时交付或根本无法交付。
原文:Collecting Windows telemetry with Elastic: An introduction to the ETW Filebeat input | Elastic Blog