使用 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上,它可以针对部署,服务&…

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

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

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

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

git的使用(简洁版)

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

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

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

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…

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

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

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…

DeepSpeed-chat RLHF实战

轩辕-6bRLHF落地实战 模型介绍:轩辕-6B 模型库 (modelscope.cn) 1.1偏好数据集构建 ​ 1.1.1Prompt构建 1.1.2 Response生成 保证RM训练数据和测试数据分布一致 使用模型来生成response,为了评价response的质量,可以提高采样参数中的…

通过抓包,使用frida定位加密位置

首先我们抓取一下我们要测试的app的某一个目标api,通过抓api的包,得到关键字。 例如:关键字:x-sap-ri 我们得到想要的关键字后,通过拦截 类,寻找我们的关键字,及找到发包收包的位置&#xff0c…

无线WiFi网络版毫米波雷达人体传感器,智能家居节能减排照明有人无人识别

在这个科技日新月异的时代,智能家居已经不再是遥不可及的未来概念,而是悄然融入了我们的日常生活,为我们的生活带来了未有的便捷与舒适。今天,让我们一起探索一项创新性的智能家居技术——飞睿智能无线WiFi网络版毫米波雷达人体传…

Linux介绍与安装指南:从入门到精通

1. Linux简介 1.1 什么是Linux? Linux是一种基于Unix的操作系统,由Linus Torvalds于1991年首次发布。Linux的核心(Kernel)是开源的,允许任何人自由使用、修改和分发。Linux操作系统通常包括Linux内核、GNU工具集、图…

26.100ASK_T113-PRO 测试摄像头 输出信息

1.测试代码 读到摄象头参数 输出 video_test.c #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <sys/ioctl.h> #include <unistd.h> #include <stdio.h> #include <string.h> #include <linux/type…

Qt读写Usb设备的数据

Qt读写Usb设备的数据 问题:要读取usb设备进行通讯&#xff0c;qt好像没有对应的库支持。解决&#xff1a;libusbwindow下载 :Linux下载: QtUsb 开源的第三方库库里面的函数说明&#xff1a;window版本&#xff1a;Linux中也提供的直接下载测试代码&#xff1a;库下载&#xff1…

2024最新python使用yt-dlp

2024最新python使用yt-dlp下载YT视频 1.获取yt的cookie1&#xff09;google浏览器下载Get cookies.txt LOCALLY插件2&#xff09;导出cookie 2.yt-dlp下载[yt-dlp的GitHub地址](https://github.com/yt-dlp/yt-dlp?tabreadme-ov-file)1&#xff09;使用Pycharm(2024.3)进行代码…

python学opencv|读取图像

【1】引言 前序学习了使用matplotlib模块进行画图&#xff0c;今天开始我们逐步尝试探索使用opencv来处理图片。 【2】学习资源 官网的学习链接如下&#xff1a; OpenCV: Getting Started with Images 不过读起来是英文版&#xff0c;可能略有难度&#xff0c;所以另推荐一…

27加餐篇:gRPC框架的优势与不足之处

gRPC作为一个现代的、开源的远程过程调用(RPC)框架,在多个方面都展现了其优雅之处,同时也存在一些不足之处。这篇文章我们就相对全面的分析一下gRPC框架那些优雅的地方和不足的地方。 优雅的地方 gRPC作为一个RPC框架,在编码、传输协议已经支持多语言方面都比较高效,下…

linux模拟HID USB设备及wireshark USB抓包配置

文章目录 1. 内核配置2. 设备配置附 wireshark USB抓包配置 linux下模拟USB HID设备的简单记录&#xff0c;其他USB设备类似。 1. 内核配置 内核启用USB Gadget&#xff0c;使用fs配置usb device信息。 Device Drivers ---> [*] USB support ---><*> USB …