检测特权访问活动:一个新的 Kibana 集成
作者:来自 Elastic Kirti Sodhi
用于检测特权访问(privileged access)活动的全新高级检测分析包。
特权账户是攻击者的首要目标,常被用来加速访问并在网络中横向移动。由于访问中介的普遍存在,满足对被盗凭证几乎无止境的需求,组织需要强大的检测机制,以尽早识别入侵尝试中的可疑特权活动。
这篇博客介绍了新发布的 特权访问检测包(Privileged Access Detection package),该包现已作为技术预览在 Kibana 8.18 和 9.0 版本的 Beta 集成中提供。该集成包括用于检测 Windows、Linux 和 Okta 环境中异常特权活动的 ingest pipeline、transform 和机器学习任务。
此外,专用仪表板展示了关键细节,如实体、事件代码、进程名称、IP 地址和地理位置,提供直观的异常视图。这些功能使安全团队能够高效调查并识别可疑的特权访问和管理操作。
特权访问检测简介
特权访问活动是指由具有高权限的用户(如系统管理员或服务账户)执行的操作。这些用户可以修改系统配置、访问敏感数据、管理用户角色、安装软件、更改安全策略,并直接与关键控制系统进行交互。
传统的安全措施依赖于预定义的规则和特征签名,但这些方法往往无法检测出新型或复杂的攻击模式。由于特权用户会执行各种管理任务,区分正常操作和可疑行为是一个挑战。特权访问检测包通过机器学习建立用户和实体的行为基线,从而检测出偏离正常使用模式的异常行为。目前,该包主要关注来自合法账户的异常特权访问活动,例如基于管理员的事件和命令。
我们的方法
在 Elastic,我们专注于检测拥有高访问权限和关键系统控制权的合法特权账户所表现出的异常行为。我们不仅仅监控单一操作,而是结合管理行为上下文来跟踪特权账户的活动。通过分析正常的访问模式,我们能够标记出偏离常规的行为,例如来自不同 IP、设备或位置的异常访问。我们还特别关注来自同一账户的多个并发会话,这可能表明存在未授权使用或可疑活动。
该检测包的工作流程如下图所示,主要包括数据准备、特征提取和机器学习几个关键过程。在接下来的部分中,我们将深入介绍每一个阶段的具体内容。

数据准备
该检测包专为混合 IT 环境设计,覆盖 Windows、Linux 和 Okta 系统。为了有效监控这些不同平台上的特权活动,我们提取相关的事件类型和命令,并与 MITRE ATT&CK 中的特权升级技术对齐。下表展示了不同数据源如何对应特定的特权事件类型和 MITRE ATT&CK 技术。
Data Source | Privileged Event Types | MITRE ATT&CK Coverage |
Windows | Account Management Events, Group and Role Management Events, Special Logon Events | T1078 (Valid Accounts), T1068 (Exploitation for Privilege Escalation), T1098 (Account Manipulation) |
Linux | Privileged commands executed by admin accounts | T1078 (Valid Accounts), T1068 (Exploitation for Privilege Escalation), T1098 (Account Manipulation) |
Okta | User Lifecycle Change Events, Group Membership Change Events, Group Privilege Change Events, User Account Change Events, Group Lifecycle Change Events | T1078 (Valid Accounts), T1068 (Exploitation for Privilege Escalation), T1098 (Account Manipulation), T1069 (Permission Groups Discovery) |
特征提取(Featurization)
数据准备完成后,下一步是特征提取,即将原始的特权事件日志转换为可用的特征。这些特征是通过 Elasticsearch 的 ingest pipeline 和 pivot transform 创建的,随后由机器学习模型进行分析。
例如,我们会计算 process.command_line
字段的 Shannon Entropy。这个指标用于评估命令文本的随机性,当某个用户的熵(entropy)得分明显高于平常时,说明其命令异常复杂,可能存在可疑行为。
下面是一个 painless 脚本,它计算 Linux 命令行的熵,并将结果存储在 process.command_line_entropy
字段中。
String inputString = ctx["process"]["command_line"];Map m = new HashMap();for (int i = 0; i < inputString.length(); i++) {char c = inputString.charAt(i);m.put(c, m.getOrDefault(c, 0) + 1);}double result = 0.0;for (entry in m.entrySet()) {double frequency = entry.getValue() / (double) inputString.length();result -= frequency * (Math.log(frequency) / Math.log(2));}ctx["process.command_line_entropy"] = result;
此外,我们还使用了两个 pivot transform:一个用于 Windows,另一个用于 Okta。
对于 Windows,该 transform 聚焦于 winlog.event_data.PrivilegeList
字段,筛选出分配给用户的关键权限。我们会监控用户被分配权限的激增,或检测被授予的稀有权限,这些都可能是异常行为的信号。Okta 的 transform 则识别同一用户从不同 IP 和地理位置发起的多个并发会话,并将这些数据输入机器学习模型,用于学习该用户的典型会话模式。
机器学习
最后,在数据准备和特征提取步骤中创建的特征将被用于异常检测任务,以发现用户行为中的异常模式。该检测包共包含 21 个异常检测任务,其中 Windows 和 Okta 各有 9 个,Linux 有 3 个。这些任务用于检测多种可疑行为,如:
-
用户组和权限管理操作的激增
-
异常权限分配
-
特权用户访问的稀有 IP 和地理区域
-
非常规的特权进程名称执行
如需详细了解这些任务,请查看 README 链接,获取完整的异常检测任务目录及其描述。
入门指南
从 8.18(以及 9.0)版本开始,特权访问检测包作为 Beta 版本在 Kibana 的 Integrations 应用中提供。要设置并开始使用该检测包,请按照以下步骤操作。
步骤 1:安装检测包
在 Kibana 的 Integrations 应用底部启用 “Display beta integrations” 选项后,你将能够看到该检测包。
启用该选项后,搜索 Privileged Access Detection。
要安装该包,请进入 Settings 标签页,并点击 Install Privileged Access Detection assets。这将安装该检测包下的所有资源。
步骤 2:配置 transforms 和 ingest pipeline
安装完成后,你可以通过导航到 Stack Management > Ingest Pipelines 找到 0.0.1-ml_pad_ingest_pipeline
ingest pipeline。pivot transforms 位于 Stack Management > Data > Transforms 下。要开始使用 ingest pipeline 收集数据,请按照包概述中的安装部分的步骤 2、3 和 4 进行操作。有关 transform 的说明,请参考概述中的 Transform 部分。
步骤 3:启动异常检测任务
此包中的异常检测任务仅在你的集群正在积极 ingest Windows、Linux 或 Okta 日志,并且这些日志符合以下 KQL 查询时可见。
((host.os.type: "windows" or host.os.type: "Windows") and exists(winlog.event_id)) or
((host.os.type: "linux" or host.os.type: "Linux") and event.category: "process") or data_stream.dataset: "okta.system" or exists(okta_distinct_ips) or exists(privilege_type)
请确保步骤 2 已完成,并且 transforms 已正确设置,然后再创建用于异常检测任务的数据视图(Data View)。要创建数据视图,请参考检测包概述中安装部分的步骤 6。
创建好用于异常检测的数据视图后,导航到 Machine Learning > Anomaly Detection 并选择 Jobs wizard。点击 Create job 并选择你刚创建的数据视图。在 Use preconfigured jobs 选项下,你将看到 Privileged Access Detection 卡片。
选择该卡片后,点击 Create jobs 按钮。
步骤 4:启用安全检测规则
确保上一步中配置的机器学习任务已在运行。然后,导航至 Security > Rules > Detection rules (SIEM),启用与 Privileged Access Detection 检测包相关的 21 条检测规则。
使用 Privileged Access Detection 标签过滤器来查找该检测包中的相关规则。选择你想要启用的规则,然后在 Bulk actions 菜单中点击 Enable 进行启用。
开始分析异常检测告警
你可以在 Anomaly Detection > Anomaly Explorer 中查看由检测任务触发的异常。
要全面查看生成的异常并获得告警的完整上下文信息,可以使用该检测包中包含的仪表盘。你可以通过 Analytics > Dashboards 访问 Privileged Access Detection 仪表盘,以获得对检测到的异常的全方位视角。
要配置并开始使用这些仪表盘,请按照该检测包概述中安装部分的第 8 步中的说明进行操作。
总结
在这篇博客中,我们介绍了全新的 特权访问检测(Privileged Access Detection) 功能,它利用 Elasticsearch 组件在复杂的 IT 环境中识别异常的特权活动。我们解释了这些组件在检测包架构中的作用,并提供了安装说明和关键步骤,帮助你开始分析并应对由机器学习任务检测到的异常行为。
我们非常希望你能尝试使用 Privileged Access Detection 检测包,并在我们持续添加新功能的过程中提供反馈。如果你在使用过程中遇到任何问题,请通过我们的社区 Slack 频道或讨论论坛与我们联系。
本文中提及的任何功能或特性,其发布时间和上线安排完全由 Elastic 自行决定。任何当前尚未提供的功能可能无法按时发布,甚至不会发布。
原文:https://www.elastic.co/blog/detecting-privileged-access-activity-kibana-integration