jelanidm/sentinel-range

GitHub: jelanidm/sentinel-range

一个基于 Microsoft Sentinel 和 Entra ID 审计日志的检测工程实验室,包含五条经真实事件验证的 KQL 分析规则。

Stars: 0 | Forks: 0

# SENTINL.RANGE **一个云原生检测实验室,基于实时的 Microsoft Entra 审计遥测数据,构建于 Microsoft Sentinel 之中。** 本仓库是一个小型的检测工程作品集。我搭建了一个 Microsoft Sentinel 工作区,在一个隔离的测试租户中生成了我自己的管理员攻击遥测数据,编写了五条 KQL 分析规则来捕获它们,并在 Microsoft Defender 门户中将每条规则触发时的真实事件记录了下来。 这里的每一条规则都是由我编写的,并作为计划分析规则部署,而且(除了一个明确标注的例外情况)都进行了端到端的验证:执行攻击、引发事件、捕获证据。没有任何内容是自我评分的,全由平台进行评分。 ## 为什么使用 Audit logs(而不是 sign-in logs) 最初的计划是使用 Entra 的 **sign-in** logs。将其导出到 Sentinel 需要付费的 Entra ID P1/P2 许可证,而这无法在个人账户租户上顺利激活。与其伪造数据,我不如将整个实验室的研究方向转向了 **Audit Logs**,它可以在任何租户上免费流入 Sentinel,且无需额外的许可证。 事实证明,这是更有趣的数据集。Audit logs 捕获了管理和身份管理活动、账户创建、角色授予、应用/服务主体注册、同意授权以及策略更改,这恰恰是持久化、权限提升和同意网络钓鱼经常出没的领域。这些正是 SOC 分析师在首次告警之后去调查的事件。 ## 检测项 | # | 检测项 | MITRE 技术 | 规则 | 证据 | |---|-----------|-----------------|------|----------| | 1 | 创建了新用户或访客账户 | [T1136](https://attack.mitre.org/techniques/T1136/) Create Account | [KQL](detections/01-new-account-created.md) | 已触发(队列) | | 2 | 分配了特权角色 | [T1098](https://attack.mitre.org/techniques/T1098/) Account Manipulation | [KQL](detections/02-privileged-role-assigned.md) | [事件 #66](screenshots/incident-privileged-role-detail.png) | | 3 | 添加了服务主体 / 应用注册 | [T1098.001](https://attack.mitre.org/techniques/T1098/001/) Additional Cloud Credentials | [KQL](detections/03-service-principal-added.md) | [事件 #60-65](screenshots/incidents-queue.png) | | 4 | 更改或禁用了 Conditional Access 策略 | [T1562](https://attack.mitre.org/techniques/T1562/) Impair Defenses | [KQL](detections/04-conditional-access-changed.md) | 规则已部署,未触发(需要 P2) | | 5 | 单个执行者突发进行大量管理更改(关联) | TA0003 + TA0004(多重技术) | [KQL](detections/05-admin-change-burst.md) | 已触发(`ChangeCount: 4`) | 所有五条规则均已在 Sentinel Analytics 边栏选项卡中部署并启用: ![已部署的分析规则](https://static.pigsec.cn/wp-content/uploads/repos/cas/3b/3b6b747cead8f2f44ba6c3b5087f44957d451389a4b9fae4a479376a95b53c33.png) 在 Microsoft Defender 门户中引发的事件: ![事件队列](https://static.pigsec.cn/wp-content/uploads/repos/cas/2c/2c686e873b1d29fc746f720ab471ab274a083619ff2a53b878ea642fd81cbb6d.png) ## 技术栈 - **SIEM:** Microsoft Sentinel(基于 Azure Log Analytics 工作区) - **遥测数据:** Microsoft Entra ID Audit Logs - **检测语言:** KQL (Kusto Query Language) - **框架:** MITRE ATT&CK - **事件呈现面:** Microsoft Defender 门户 ## 构建过程 1. **搭建 SIEM**:配置 Log Analytics 工作区 + 启用 Microsoft Sentinel,安装 Entra ID 数据连接器并流入 Audit Logs。([工作区](screenshots/01-create-workspace.png) · [Sentinel](screenshots/03-sentinel-enabled.png) · [连接器](screenshots/04-entra-connector-auditlogs.png)) 2. **生成攻击遥测数据**:在一个隔离的测试租户中,我执行了每条规则所针对的管理操作:创建测试用户、分配和移除特权角色、注册应用程序/服务主体。([示例](screenshots/05-create-test-user.png)) 3. **编写并验证检测项**:使用 KQL 搜寻原始事件,将每个查询提升为计划分析规则,重新触发该操作,并确认了事件。([关联规则查询](screenshots/06-correlation-rule-query.png)) 4. **捕获证据**:Defender 门户中的事件,Defender 自身的 MITRE 映射确认了该技术。([事件详情](screenshots/incident-privileged-role-detail.png)) ## 关于调优的诚恳说明 本实验室触发了 **68 个事件**,其中大多数是重复的“添加了服务主体 / 应用注册”警报。这并不是需要隐瞒的错误,这恰恰是调优的核心意义所在。 在真实的 SOC 中,一条对每次应用注册都会发出警报的规则会让分析师疲于奔命。下面的每个检测文件都包含一条**调优说明**,准确描述了我将如何在生产环境中减少这种噪音(阈值、对已知自动化的排除、告警前的丰富化),同时又不丧失检测覆盖范围。 firsthand 亲身体验这些噪音是理解为什么警报保真度如此重要的最快方法,而通过调优减少误报正是我日常 SOC 工作的一部分。 ## 仓库布局 ``` sentinel-range/ README.md detections/ 01-new-account-created.md 02-privileged-role-assigned.md 03-service-principal-added.md 04-conditional-access-changed.md 05-admin-change-burst.md screenshots/ (setup, query, deployed-rules, and incident evidence) ```
标签:Entra ID, KQL, Microsoft Sentinel, 安全运营, 扫描框架