使用 Elastic 收集 Windows 遥测数据:ETW Filebeat 输入简介

作者:来自 Elastic Chema 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 进行分析和可视化。它可以在三种灵活的模式下运行,并适应一系列数据收集场景,以满足实时和历史数据需求:

  1. 创建新会话:在此模式下,Filebeat 在 Windows 主机上初始化新的 ETW 会话以捕获来自用户模式提供商的事件。此设置非常适合需要从系统上当前运行的应用程序或服务获取实时数据的场景。通过创建专用会话,用户可以收集特定的遥测数据,而不会影响或依赖系统上预先存在的 ETW 会话。
  2. 附加到现有会话:Filebeat 还可以附加到已经活动的 ETW 会话,收集该会话中生成的持续事件数据。这种方法对于已在使用 ETW 会话的环境非常有用。它允许管理员与其他监控工作流一起捕获事件,而不会重复会话或影响系统性能。
  3. 从预先录制的 .etl 文件中读取:在某些情况下,ETW 数据可能会提前记录并存储在 .etl 文件中。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-A566-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/AuditValue               Level                Description
-------------------------------------------------------------------------------
0x02                win:Error            Error
0x03                win:Warning          Warning
0x04                win:Informational    InformationPID                 Image
-------------------------------------------------------------------------------
0x00000354          C:\Windows\System32\dns.exe
0x00000354          C:\Windows\System32\dns.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 活动分析,而无需进行复杂的配置或大量设置。

Microsoft 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/62221.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

k8s网络服务

k8s 中向外界提供服务的几种方法port-forward、NodePort,以及 更加常用的提供服务的资源ingress。 1 kubectl port-forward service/redis 6379:6379 现在k8s中有一个pod运行在6379,本机访问映射到6379上,它可以针对部署,服务&…

手动设置 IP 地址和使用 DHCP 在以下方面存在区别

手动设置 IP 地址和使用 DHCP 在以下方面存在区别: 配置过程 手动设置 IP 地址:需要用户手动输入 IP 地址、子网掩码、默认网关、DNS 服务器地址等网络配置参数。在 Windows 系统中,通常要打开 “控制面板”,进入 “网络和共享中…

Python网络爬虫基础

Python网络爬虫是一种自动化工具,用于从互联网上抓取信息。它通过模拟人类浏览网页的行为,自动地访问网站并提取所需的数据。网络爬虫在数据挖掘、搜索引擎优化、市场研究等多个领域都有广泛的应用。以下是Python网络爬虫的一些基本概念: 1.…

实现跨语言通信:Rust 和 Thrift 的最佳实践

前言 在分布式系统中,服务之间高效且安全的通信至关重要。Apache Thrift 是一个被广泛应用的跨语言 RPC(远程过程调用)框架,它支持多种编程语言,包括 Rust。Rust 以其卓越的性能和内存安全保障,成为越来越…

微信小程序按字母顺序渲染城市 功能实现详细讲解

在微信小程序功能搭建中,按字母渲染城市会用到多个ES6的方法,如reduce,map,Object.entries(),Object.keys() ,需要组合熟练掌握,才能优雅的处理数据完成渲染。 目录 一、数据分析 二、数据处理 …

框架学习07 - SpringMVC 其他功能实现

一. 拦截器实现HandlerInterceptor 接⼝ SpringMVC 中的 Interceptor 拦截器也是相当重要和相当有⽤的,它的主要作⽤是拦截⽤户的请求并进⾏相应的处理。⽐如通过它来进⾏权限验证,或者是来判断⽤户是否登陆等操作。对于 SpringMVC 拦截器的定义⽅式有两…

前端JavaScript(一)---基本介绍

Javascript是一种由Netscape(网景)的LiveScript发展而来的原型化继承的面向对象的动态类型的区分大小写的客户端脚本语言,主要目的是为了解决服务器端语言,比如Perl,遗留的速度问题,为客户提供更流畅的浏览效果。当时服务端需要对…

git的使用(简洁版)

什么是 Git? Git 是一个分布式版本控制系统 (DVCS),用于跟踪文件的更改并协调多人之间的工作。它由 Linus Torvalds 在 2005 年创建,最初是为了管理 Linux 内核的开发。Git 的主要目标是提供高效、易用的版本控制工具,使得开发者…

设计模式之破环单例模式和阻止破坏

目录 1. 序列化和反序列化2. 反射 这里单例模式就不多说了 23种设计模式之单例模式 1. 序列化和反序列化 这里用饿汉式来做例子 LazySingleton import java.io.Serializable;public class LazySingleton implements Serializable {private static LazySingleton lazySinglet…

kotlin 的循环

循环的步长可以通过step关键字进行设置 在Kotlin中,循环的默认步长为1。如果需要改变步长,可以在循环表达式中使用step关键字。例如,要从0循环到100,步长为2,可以这样写: for (i in 0..100 step 2) {prin…

vscode可以编译通过c++项目,但头文件有红色波浪线的问题

1、打开 VSCode 的设置,可以通过快捷键 Ctrl Shift P 打开命令面板,然后搜索并选择 “C/C: Edit Configurations (JSON)” 命令,这将在 .vscode 文件夹中创建或修改 c_cpp_properties.json 文件 {"configurations": [{"name…

Java与Kotlin在鸿蒙中的地位

在当今移动操作系统领域,华为推出的鸿蒙系统(HarmonyOS)正逐渐崭露头角,成为与Android、iOS并驾齐驱的操作系统之一。对于开发者而言,了解如何为鸿蒙系统开发高质量的应用程序变得至关重要。在这篇文章中,我…

VS Code前端常用插件

通用类 auto close tag auto rename tag beautify class autocomplete for html Code Runner css peek dash JavaScript Debugger document this eslint font-awesome codes for html filesize git history gitlens html css support HTMLHint htmltagwrap indenticator Intel…

Android 16 开发者预览版抢先使用

Android 16 开发者预览版 获取 Android 16在 Google Pixel 设备上获取 Android 16设置 Android 模拟器 设置 Android 16 SDK获取 Android Studio安装 SDK更新应用的 build 配置 获取 Android 16 你可以通过以下任一方式获取 Android 16 在 Google Pixel 设备上获取 Android 1…

从web前端角度浅析网络安全

摘 要 当前网络与信息技术已经有了非常大的进步﹐Web前端技术的使用、和其安全问题也越来越受到我们的重视。 Web前端技术毫无疑问是网络技术的入口,是我们互联网的门户,也是网络安全中最容易被攻击的环节,经常受到黑客的青睐。因此&…

解析生成对抗网络(GAN):原理与应用

目录 一、引言 二、生成对抗网络原理 (一)基本架构 (二)训练过程 三、生成对抗网络的应用 (一)图像生成 无条件图像生成: (二)数据增强 (三&#xff…

Vue.js 开发技巧:懒加载组件 vs 直接导入,何时选择哪个?

在开发 Vue.js 应用时,决定是否使用 动态加载组件(懒加载)或者 直接导入并注册组件,是前端开发中一个重要的设计决策。两者各有优势,选择合适的方式可以提升应用的性能、可维护性和开发效率。那么,究竟什么…

【大模型】从零样本到少样本学习:一文读懂 Zero-shot、One-shot 和 Few-shot 的核心原理与应用!

《从零样本到少样本学习:一文读懂 Zero-shot、One-shot 和 Few-shot 的核心原理与应用!》 正文: 在自然语言处理(NLP)领域,Zero-shot、One-shot 和 Few-shot 学习已经成为衡量大语言模型泛化能力的重要指标…

docker 安装mysql8.4.0

1、拉取mysql8.4.0镜像 docker pullmysql:8.4.0-oraclelinux8查看镜像 docker images2、新建宿主机本地目录:用来挂载MySQL容器所产生的数据的目录 mkdir -p /home/admin/data/mysql /home/admin/logs/mysql /home/admin/conf/mysql3、在/home/admin/conf/mysql目…

ABAP OOALV模板

自用模板,可能存在问题 一、主程序 *&---------------------------------------------------------------------* *& Report ZVIA_OO_ALV *&---------------------------------------------------------------------* REPORT ZVIA_OO_ALV.INCLUDE ZVI…