在 Elastic 中使用 JOIN 进行威胁狩猎!

作者:来自 Elastic Paul Ewing, Jonhnathan Ribeiro

Elastic 的管道查询语言 ES | QL 为查询带来了 join 功能。

威胁狩猎者欢呼吧!你是否一直在寻找一种通过 Elastic 的速度和强大功能来连接数据的方法?好消息!Elastic 现在可以通过管道查询语言 ES|QL(Elasticsearch 查询语言)中的新功能来连接数据源。这将使得从高级行为检测到警报筛查,再到威胁狩猎的强大搜索成为可能。

为什么 JOIN 在安全中至关重要:这全关乎上下文

Elastic 一直提供全面的搜索功能,帮助用户调查安全事件、分析日志以及大规模地探索数据。其中一个关键功能在推动检测和调查中发挥着重要作用:JOIN,因为上下文至关重要。

JOIN 允许分析人员、检测工程师和威胁狩猎者在基于条件的查询上构建更具上下文感知的逻辑。考虑以下问题:这个人在哪个部门工作,他们的工作需要他们运行 PowerShell 吗?这个恶意软件事件是否涉及一个关键用户,比如域管理员?这个钓鱼攻击活动是否针对特定的角色或业务部门?

所有这些问题都依赖于警报之外的数据。而 JOIN 就是让从业人员将这些上下文信息引入查询的方式 —— 通过跨数据源连接线索,从而在狩猎、调查和响应过程中做出更智能、更快速的决策。

JOIN 的进化:ES|QL 中的 LOOKUP

Elastic 现有的丰富策略已经支持类似 JOIN 的工作流,但维护丰富作业和管理更新增加了摩擦,比如每次更新后都需要重新执行丰富策略。现在,随着 ES|QL 中引入 LOOKUP JOIN 函数,一切变得更加轻松。这一新功能为分析人员提供了更快速、更直观的方式来将外部数据引入查询。不需要预处理或外部步骤 —— 只需在搜索工作流中按需 JOIN 所需数据。

在每一步帮助安全分析师

安全从业人员专注于保护组织数据的许多方面。让我们来看看在传统的端到端工作流中,JOIN 如何提供帮助:(1)发现新的可疑活动,(2)筛查检测警报,以及(3)进行事件响应。

1. 发现威胁:假设、搜索、关联

威胁狩猎者和检测工程师通过发现可疑行为来保护他们的系统。威胁狩猎工作流侧重于一个科学模型来发现恶意活动。首先,建立假设,查看你的结果,并判断是否发生了事件。

威胁狩猎可以包括机器学习和简单的搜索,但通常数据堆栈分析是其中的一部分。Elasticsearch 查询语言(ES|QL)已将聚合功能引入查询,并提供了转换数据的能力 —— 现在还可以将来自不同数据存储的结果添加到查询结果中。这就是 JOIN 如此关键的原因。分析师和威胁狩猎者经常需要处理多个数据源,并需要关联这些数据。通常会有一个共享的参数,如主机、用户、文件、进程等。那么,如何在身份验证日志和进程执行之间寻找横向移动呢?如何在网络流量数据和文件创建之间寻找数据外泄?JOIN 使得威胁狩猎者能够跨多个数据源找到异常行为。

2. 筛选警报:关注重要的部分

接下来,安全分析师正在审查威胁狩猎者和检测工程师提供的警报输出。警报筛查(alert triage)是另一个使用 JOIN 的场景。分析师因警报过多而遭遇警报疲劳这一问题已经广为人知。是的,Elastic 通过生成性 AI 和 Attack Discovery 以及上下文丰富的用户体验来解决这个问题,但有时仍需要从外部或额外的数据源中进行优先级排序。JOIN 在这里也发挥着作用。现在,用户可以将警报元数据与威胁情报数据源进行对比,优先处理那些具有已知恶意指标的警报。或者,如何处理来自特定资产清单的警报?现在,分析师可以优先考虑那些处理大部分外部通信并且是钓鱼攻击目标的业务元素。

3. 响应事件:快速行动,掌握全貌

事件响应通常是填补空白的过程。在调查初期,响应者通常只处理附带活动案件的部分信息。这时,JOIN 就变得至关重要。在事件响应过程中,团队需要跨系统连接信息 —— 身份验证日志、端点遥测、网络数据、威胁情报、资产清单 —— 并实时关联它们。没有 JOIN,响应者只能手动将信息拼凑在一起或在不同工具之间跳转。使用 LOOKUP JOIN,事件响应者可以:

  • 使用资产所有权或敏感性级别丰富警报

  • 将端点活动与已知恶意软件指标进行关联

  • 通过单个查询追踪用户在多个系统中的活动

这是一条更快速的路径,帮助理解根本原因并协调后续步骤。

ES|QL 中的 LOOKUP JOIN 语法

在深入了解一些安全查询示例之前,让我们首先回顾一下如何使用这个新的 ES|QL 函数。ES|QL 是一种管道语言,允许用户在单个搜索中构建一系列操作,同时过滤、转换和聚合数据。JOIN 本身以前是通过丰富策略或使用 ENRICH 命令与 ES|QL 来解决的。尽管这些方法解决了一些 JOIN 的用例,但我们的用户需要一种更简单的方法来连接数据,而不需要配置丰富的设置。

新的 JOIN 功能是在使用 LOOKUP JOIN 函数时实现的。在这里,你可以建立一个查找索引,根据连接键将数据添加到你的搜索结果中。当你使用 ES|QL 管道编写查询时,可以简单地建立查找并将结果添加到当前查询中,有效地将两个数据源进行连接。有关更多信息,请查阅我们的文档或其他内容,JOINs 已经到来!

这是一个简单的安全用例,使用 LOOKUP JOIN。让我们寻找包含已知威胁情报指标的 Elastic Security 警报。在这个场景中,我们的威胁情报数据存储将被命名为 “threat-match”。

FROM *.alerts-security*
| EVAL indicator.id = file.name
| LOOKUP JOIN threat-match on indicator.id

结果将包含你期望的所有警报元数据,包括:

  • 规则内容:名称、描述、严重性等

  • 原始事件、主机信息、用户信息、进程信息、文件信息和网络信息

  • 现在,来自查找的威胁情报信息:指标名称、指标值、指标类型、指标描述等

让我们试试看!

为了真正展示 ES|QL 和 LOOKUP JOIN 的强大功能,让我们重新审视一些安全场景,在这些场景中,连接数据将发挥最大的作用。

使用 AI 助手来引导 首先,使用 AI 助手总是有帮助的。我们可以请求助手首先解释更多关于 ES|QL LOOKUP JOIN 的内容,然后请求帮助为警报添加当前用户的风险评分。让我们来看看!

使用 AI 助手来引导进行 Alerts 丰富

注意:请使用最新版本的 Elastic Security,以获得最新的 AI 助手安全体验。

警报分类示例

让我们继续使用警报分类的场景。在查看安全警报时,分析师总是在寻找优先排序的方法,为什么不关注那些拥有特权访问的用户呢?我们将查看 Windows 系统上的警报,然后在 Entity Analytics Active Directory 集成中查找结果,查看特权组成员。

其他示例可以专注于使用 MITRE ATT&CK™。我们将利用 Elastic 实体风险评分来优先排序生成跨多个 MITRE ATT&CK 战术(初始访问、持久性、防御规避等)警报的关键主机。

威胁狩猎查询

现在,假设我们没有警报,需要使用 LOOKUP JOIN 来进行狩猎。回想一下,Elastic 的核心理念是开放性。我们通过以下仓库提供了我们的检测规则,Elastic Security Labs 团队甚至扩展了这一点,加入了威胁狩猎内容。欲了解更多信息,请阅读如何提升你的威胁狩猎。

让我们从一个威胁狩猎查询开始,比如通过 Run Keys 实现的 Windows 持久性(Windows Persistence via Run Keys)。如果我们通过与资产信息的连接来丰富这些查询呢?在这种情况下,我们将从预构建的威胁狩猎查询开始,然后通过扩展日期范围和查看所有持久性示例来进行微调。接着,通过添加实体查找,我们可以找到主机的资产位置。

Threat hunting queries

如果你想进一步简化这个示例,我们可以将查询减少到查看所有启动过程,并执行 LOOKUP JOIN,如之前那样,我们可以看到资产位置。

利用本地工具技术

许多威胁狩猎者搜索 “本地工具执行”(living off the land)进程执行,这代表了系统上可用的本地工具,这些工具可以执行任意代码。尽管管理员可能出于良性原因使用这些工具,但攻击者可以利用这些进程来规避检测。现在,通过 LOOKUP JOINS,我们可以为我们的威胁狩猎创建这些文件的列表。这个工作流允许我们不断将新进程添加到我们新创建的 LOOKUP 索引中,同时保留查询的逻辑。

1. 首先创建 LOOKUP 索引。这里是一个示例:

PUT /lolbins-lookup
{"mappings": {"properties": {"process.name": {"type": "keyword"},"lolbin": {"type": "boolean"}}},"settings": {"index.mode": "lookup"}
}

2. 然后,我们可以通过批量上传将数据添加到索引中

POST /_bulk
{ "index" : { "_index" : "lolbins-lookup" }}
{ "process.name" : "powershell.exe", "lolbin": true }
{ "index" : { "_index" : "lolbins-lookup" }}
{ "process.name" : "cmd.exe", "lolbin": true }
...

3. 现在,我们可以通过 LOOKUP JOINS 在网络中搜索 “living off the land processes” 的进程!

这意味着我们可以使用 LOOKUP 来与指标列表进行匹配。请记住,LOOKUP 索引可以更新,因此当你发现更多的 “living off the land processes” 技术时,只需将其添加到索引中,便无需更改查询或执行加值策略即可看到新的结果。

总结

LOOKUP JOIN 在许多安全工作流中已经证明了其极大的实用性,但这只是开始。如 Elasticsearch 博客中所述,这种类型的连接最接近于 SQL 风格的 LEFT OUTER JOIN,除了改善整体用户体验外,我们还计划扩展连接功能(例如 INNER 连接)。此外,这项功能还使其他搜索语言的语法转换成为可能。请阅读我们最近的博客,了解更多有关自动迁移的信息!

总结一下,这种新的连接功能是安全分析师工具箱中的另一个工具,Elastic 搜索 AI 技术提供了许多先进的技术来保护您的数据免受攻击。这包括生成式 AI、机器学习、聚合、加值、基于序列的关联等等。继续关注更多更新和信息!体验 Elastic Security 最快、最简单的方式是在 Elastic Cloud Serverless 上。立即试用。

本博客中描述的任何功能或功能的发布和时机由 Elastic 单独决定。任何当前不可用的功能或功能可能无法按时或根本不交付。

在本文中,我们可能使用或引用了第三方生成式 AI 工具,这些工具由各自的所有者拥有和运营。Elastic 对这些第三方工具没有控制权,也不对其内容、操作或使用负责,也不对因使用这些工具而产生的任何损失或损害承担责任。在使用 AI 工具处理个人、敏感或机密信息时,请务必谨慎。您提交的任何数据可能会用于 AI 训练或其他用途。我们无法保证您提供的信息会保持安全或机密。使用任何生成式 AI 工具之前,您应了解其隐私政策和使用条款。

Elastic、Elasticsearch 和相关标志是 Elasticsearch N.V. 在美国及其他国家的商标、标识或注册商标。所有其他公司和产品名称是各自所有者的商标、标识或注册商标。

原文:Threat hunting in Elastic with JOINs! | Elastic Blog

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

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

相关文章

从实列中学习linux shell5: 利用shell 脚本 检测硬盘空间容量,当使用量达到80%的时候 发送邮件

下面是用于检测硬盘空间并在使用量达到80%时发送邮件的Shell脚本 第一步 编写脚本 #!/bin/bash# 邮件配置 recipient"zhaoqingyou99qhzt.com" subject"磁盘空间警报" mail_cmd"/usr/bin/mail" # 根据实际邮件命令路径修改# 检查是否安装邮件工…

Ethan独立开发产品日报 | 2025-04-30

1. Daytona 安全且灵活的基础设施,用于运行你的人工智能生成代码。 Daytona Cloud重新定义了AI代理的基础设施,具备低于90毫秒的启动时间、原生性能和有状态执行能力,这些是传统云服务无法比拟的。您可以以前所未有的速度和灵活性来创建、管…

Unity SpriteMask(精灵遮罩)

🏆 个人愚见,没事写写笔记 🏆《博客内容》:Unity3D开发内容 🏆🎉欢迎 👍点赞✍评论⭐收藏 🔎SpriteMask:精灵遮罩 💡作用就是对精灵图片产生遮罩&#xff0c…

OpenHarmony全局资源调度管控子系统之内存管理部件

OpenHarmony之内存管理部件 内存管理部件 简介目录框架 进程回收优先级列表 补充 回收策略/查杀策略 使用说明参数配置说明 availbufferSizeZswapdParamkillConfignandlife 相关仓 简介 内存管理部件位于全局资源调度管控子系统中,基于应用的生命周期状态&#…

姜老师的MBTI课程笔记小结(1)ENFJ人格

课程文稿: 好,今天我们的重点其实并不在ENTJ,而是在于如果一个人其他都很像,只是在思考和感受这两端选择的时候,他缺了思考而更尊重感受,它会是什么样的一个人格特质呢?这就是ENFG在16人格的学派…

Node.js 应用场景

Node.js 应用场景 引言 Node.js 是一个基于 Chrome V8 JavaScript 引擎的开源、跨平台 JavaScript 运行环境。它主要用于服务器端开发,通过非阻塞 I/O 模型实现了高并发处理能力。本文将详细介绍 Node.js 的应用场景,帮助你了解其在实际项目中的应用。…

Qt/C++面试【速通笔记六】—Qt 中的线程同步

在多线程编程中,多个线程同时访问共享资源时,可能会出现数据不一致或者错误的情况。这时,我们需要线程同步机制来保证程序的正确性。Qt 提供了多种线程同步方式,每种方式适用于不同的场景。 1. 互斥锁(QMutex&#xff…

JDK-17 保姆级安装教程(附安装包)

文章目录 一、下载二、安装三、验证是否安装成功1、看 java 和 javac 是否可用2、看 java 和 javac 的版本号是否无问题 一、下载 JDK-17_windows-x64_bin.exe 二、安装 三、验证是否安装成功 java:执行工具 javac:编译工具 1、看 java 和 javac 是否…

【LeetCode Hot100】回溯篇

前言 本文用于整理LeetCode Hot100中题目解答,因题目比较简单且更多是为了面试快速写出正确思路,只做简单题意解读和一句话题解方便记忆。但代码会全部给出,方便大家整理代码思路。 46. 全排列 一句话题意 给定一个无重复数字的序列&#xf…

pytest-前后置及fixture运用

1.pytest中的xunit风格前后置处理 pytest中用例的前后置可以直接使用类似于unittest中的前后置处理,但是pytest中的前后置处理方式更 加丰富,分为模块级、类级、方法级、函数级等不同等级的前后置处理,具体见下面的代码: test_…

使用scipy求解优化问题

一、求解二次规划问题 min(X.T * P * X C.T * X) s.t. Xi > 0 ∑Xi 1 1.定义目标函数 def objective(x):return 0.5 * np.dot(x, np.dot(P, x)) np.dot(c, x)2. 定义等式约束 def equality_constraint(x):return np.sum(x) - 1 3.定义边界约束:x # …

C++初阶-STL简介

目录 1.什么是STL 2.STL的版本 3.STL的六大组件 4.STL的重要性 4.1在笔试中 4.2在面试中 4.3.在公司中 5.如何学习STL 6.总结和之后的规划 1.什么是STL STL(standard template library-标准模板库);是C标准库的重要组成部分&#xf…

kivy android打包buildozer.spec GUI配置

这个适合刚刚学习kivyd的道友使用,后面看情况更新 代码 import tkinter as tk from tkinter import ttk, filedialog, messagebox, simpledialog import configparser import os import json # 新增导入class BuildozerConfigTool:def __init__(self, master):se…

MOOS-ivp使用(一)——水下机器人系统的入门与使用

MOOS-ivp使用(一)——水下机器人系统的入门与使用 MOOS-ivp(Marine Operational Oceanographic System for Intelligent Vehicle Planning)是专为水下机器人(如AUV)设计的开源框架。类似于ROS,…

电子病历高质量语料库构建方法与架构项目(智能质控体系建设篇)

引言 随着人工智能技术的迅猛发展,医疗信息化建设正经历着前所未有的变革。电子病历作为医疗机构的核心数据资产,其质量直接关系到临床决策的准确性和医疗安全。传统的病历质控工作主要依赖人工审核,存在效率低下、主观性强、覆盖面有限等问题。近年来,基于人工智能技术的…

react学习笔记4——React UI组件库与redux

流行的开源React UI组件库 material-ui(国外) 官网: http://www.material-ui.com/#/github: GitHub - mui/material-ui: Material UI: Comprehensive React component library that implements Googles Material Design. Free forever. ant-design(国内蚂蚁金服) 官网: Ant…

GPU集群搭建

1. 硬件规划与采购 GPU 服务器:挑选契合需求的 GPU 服务器,像 NVIDIA DGX 系列就不错,它集成了多个高性能 GPU。网络设备:高速网络设备不可或缺,例如万兆以太网交换机或者 InfiniBand 交换机,以此保证节点…

ZYNQ 纯PL端逻辑资源程序固化流程

ZYNQ 纯PL端逻辑资源程序固化 ZYNQ的程序固化流程比传统的FPGA固化流程复杂很多,Vivado生成的bit文件无法直接固化在ZYNQ芯片中。因为ZYNQ 非易失性存储器的引脚(如 SD 卡、QSPI Flash)是 ZYNQ PS 部分的专用引脚。这些非易失性存储器由 PS …

[计算机科学#6]:从锁存器到内存,计算机存储的构建与原理

【核知坊】:释放青春想象,码动全新视野。 我们希望使用精简的信息传达知识的骨架,启发创造者开启创造之路!!! 内容摘要:在上一篇文章中,我们深入了解了计算机如…