2025最强Sentinel-Queries实战指南:从KQL入门到威胁狩猎全流程

2025最强Sentinel-Queries实战指南:从KQL入门到威胁狩猎全流程

【免费下载链接】Sentinel-Queries Collection of KQL queries 【免费下载链接】Sentinel-Queries 项目地址: https://gitcode.com/gh_mirrors/se/Sentinel-Queries

痛点直击:你还在为这些问题困扰吗?

• 面对成百上千条KQL查询不知如何高效利用?
• 安全告警响应迟缓,错失威胁处置黄金时间?
• 缺乏系统化的查询编写方法论,反复踩坑?

本文将通过3大核心模块+12个实战场景+20+代码示例,帮你彻底掌握Sentinel-Queries项目的使用精髓,实现从"被动响应"到"主动狩猎"的安全运营升级。

读完你将获得

  • 快速定位项目中200+预置查询的精准路径
  • 掌握KQL高级操作符组合技巧(summarize+bin+render实战)
  • 构建自定义威胁检测规则的完整方法论
  • 学会5类典型攻击场景的查询改写与优化

一、项目架构与核心价值解析

1.1 项目定位与优势

Sentinel-Queries是面向Microsoft Sentinel(哨兵)的Kusto Query Language(KQL,库斯托查询语言)查询集合,包含200+经过实战验证的安全分析规则,覆盖Azure AD、Office 365、Defender for Endpoint等12个核心数据源。

mermaid

1.2 目录结构解密

项目采用数据源+场景的二维分类体系,关键目录功能如下:

目录路径核心功能代表查询
Azure Active DirectoryAzure AD身份安全监控Audit-AdminActionsfromRiskyUsers.kql
Defender for Endpoint终端威胁狩猎Device-DetectLocalUserCreated.kql
Office 365办公应用异常行为OfficeActivity-GuestAddedtoMultipleTeams.kql
Functions可复用查询模块Function-UserLookup.kql
Security Alert告警关联分析SecurityAlert-VisualizeAlertsbyMITRE.kql

⚠️ 特别提示:Azure Active Directory目录下的Audit-*系列查询(如Audit-AdminActionsfromRiskyUsers.kql)是身份安全检测的核心,建议优先掌握。

二、KQL核心操作实战指南

2.1 时间范围优化:从"全量扫描"到"精准定位"

KQL查询性能优化的黄金法则:始终将时间过滤放在查询起始位置

对比以下两种写法的执行效率:

❌ 低效写法(扫描全表后过滤时间)

SigninLogs
| where UserPrincipalName == "admin@contoso.com"
| where TimeGenerated > ago(14d)  // 错误位置:应放在表名后

✅ 高效写法(先限定时间范围)

SigninLogs
| where TimeGenerated between (ago(7d) .. ago(1d))  // 最优位置:紧跟表名
| where ResultType == "0"  // 0表示登录成功

常用时间函数速查表:

函数作用应用场景
ago(1d)过去1天日常巡检
ago(30d)过去30天月度报告
between(ago(14d)..ago(7d))14天前到7天前历史数据回溯

2.2 数据聚合:从"原始日志"到"情报摘要"

使用summarize+bin组合实现时间维度聚合,这是威胁狩猎的核心技巧:

// 示例:特权用户登录行为基线分析
SigninLogs
| where TimeGenerated > ago(30d)
| where UserPrincipalName has_any ("admin", "svc", "priv")
| summarize LoginCount=count() by bin(TimeGenerated, 1d), UserPrincipalName
| render columnchart with (title="特权用户日登录次数", xtitle="日期", ytitle="次数")

上述查询将生成如下可视化结果: mermaid

2.3 高级关联:从"单点告警"到"攻击链还原"

通过多表关联(join)实现复杂攻击场景检测,以管理员异常行为检测为例:

// 关键查询片段:高风险特权用户操作检测
let PrivilegedUsers = AuditLogs
| where TimeGenerated > ago(60d)
| where ActivityDisplayName == 'Add member to role completed (PIM activation)'
| distinct tostring(InitiatedBy.user.userPrincipalName);
SigninLogs
| where UserPrincipalName in (PrivilegedUsers)
| where RiskLevelDuringSignIn == "high"
| project TimeGenerated, UserPrincipalName, IPAddress, RiskDetail

三、五大实战场景深度剖析

3.1 特权账号异常行为检测

核心查询:Azure Active Directory/Audit-AdminActionsfromRiskyUsers.kql

该查询通过三步实现检测逻辑:

  1. 角色定义:通过pack_array定义高权限角色列表
  2. 用户识别:筛选近60天内激活PIM角色的用户
  3. 风险关联:关联高风险登录与特权操作

mermaid

优化建议:添加地理位置异常检测

// 追加地理位置异常检测逻辑
| extend Location = strcat(LocationDetails.city, ", ", LocationDetails.countryOrRegion)
| summarize Locations=make_set(Location) by UserPrincipalName
| where array_length(Locations) > 3  // 标记3个以上地区登录的用户

3.2 外部来宾账号滥用监控

核心查询:Office 365/OfficeActivity-GuestAddedtoMultipleTeams.kql

关键检测点:

  • 单个来宾24小时内加入>5个团队
  • 异常时间段(如凌晨1-5点)的来宾添加行为
  • 来自高风险域的来宾账号

可视化增强

| summarize TeamCount=count() by GuestUPN, bin(TimeGenerated, 1h)
| render timechart with (title="来宾账号每小时加入团队数")

3.3 终端横向移动追踪

核心查询:Defender for Endpoint/Device-DetectLocaltoPublicRDP.kql

检测逻辑

DeviceNetworkEvents
| where ActionType == "ConnectionSuccess"
| where RemotePort == 3389
| where RemoteIPType == "Public"
| where LocalIPType == "Private"
| project TimeGenerated, DeviceName, LocalIP, RemoteIP, RemoteCountry

扩展场景:结合账号登录日志

| join kind=inner (SigninLogs) on $left.DeviceName==$right.DeviceName
| where UserPrincipalName !contains "admin"  // 非管理员使用RDP

3.4 云凭证窃取防范

核心查询:OAuth-DetectingFirstTimeCredentialAddition.kql

关键指标

  • 首次添加凭证的应用
  • 短时间内多次添加凭证
  • 凭证添加后立即发生权限提升

3.5 安全告警优先级排序

核心查询:Security Alert/SecurityAlert-VisualizeAlertsbyMITRE.kql

通过MITRE ATT&CK框架分类告警:

SecurityAlert
| extend Tactics=split(Tactics, ",")
| mv-expand Tactics
| summarize AlertCount=count() by Tactics
| sort by AlertCount desc
| render piechart with (title="告警按战术分布")

四、项目最佳实践与扩展技巧

4.1 查询效率优化 checklist

  •  始终在查询开头使用TimeGenerated过滤
  •  优先使用has/has_any替代contains(性能提升30%+)
  •  对大表使用materialize缓存中间结果
  •  避免使用*通配符搜索所有字段

4.2 自定义查询开发流程

mermaid

4.3 定期维护建议

  1. 每季度审核查询有效性(移除过时表和字段)
  2. 根据新威胁情报更新检测规则
  3. 建立查询性能基准,监控劣化情况
  4. 定期合并重复功能的查询

五、资源获取与部署指南

5.1 项目获取

git clone https://gitcode.com/gh_mirrors/se/Sentinel-Queries

5.2 导入Sentinel方法

  1. 登录Azure门户→Sentinel→工作区
  2. 选择"分析"→"导入"→"从文件上传"
  3. 批量选择对应目录下的.kql文件
  4. 调整查询计划和告警阈值

5.3 版本控制建议

建立分支管理策略:

  • main:稳定版查询
  • dev:开发中的新规则
  • hotfix:紧急修复

六、总结与进阶路线

Sentinel-Queries项目不仅是查询集合,更是安全分析思维的具体实践。掌握它的三个阶段:

  1. 应用阶段:熟练使用现有查询解决日常问题
  2. 定制阶段:根据企业环境修改优化查询
  3. 创造阶段:开发全新检测规则和分析模型

进阶资源

  • KQL官方文档:https://learn.microsoft.com/zh-cn/azure/data-explorer/kusto/query/
  • Sentinel社区库:https://github.com/Azure/Azure-Sentinel
  • MITRE ATT&CK框架:https://attack.mitre.org/

立即行动:从Azure Active Directory目录开始,优先部署特权账号相关查询,构建基础安全检测能力!

【免费下载链接】Sentinel-Queries Collection of KQL queries 【免费下载链接】Sentinel-Queries 项目地址: https://gitcode.com/gh_mirrors/se/Sentinel-Queries

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值