Kajal-Dhanjal/sentinel-detection-lab

GitHub: Kajal-Dhanjal/sentinel-detection-lab

基于 Microsoft Sentinel 的实操检测工程实验室,提供经过模拟攻击双向验证(触发 + 误报排除)的自定义 KQL 检测规则及其完整调优记录。

Stars: 0 | Forks: 0

# Sentinel 检测实验室 一个基于 Microsoft Sentinel 构建的实操检测工程实验室。Windows 终端遥测数据(安全审计日志 + Sysmon)被接入 Log Analytics 工作区,在其中编写自定义 KQL 检测、针对误报进行调优,并部署为可自动引发事件的计划分析规则。 本仓库记录了我编写的检测、为验证它们而模拟的攻击,以及最重要的是,每个检测背后的调优决策。 ## 为什么要有这个项目 大多数“家庭 SOC 实验室”项目仅仅停留在“我把日志接入了 SIEM”。而本项目则专注于 SOC 中真正重要的部分:**编写能够捕获真实攻击者行为,同时在正常合法活动时保持安静的检测。** 这里的每一个检测都经过了双向验证——它会在模拟攻击时触发,并且*不会*在良性噪音中触发。 ## 架构 ``` Windows VM (Sysmon + Security auditing) │ Azure Monitor Agent ▼ Data Collection Rules ──► Log Analytics Workspace ──► Microsoft Sentinel │ Scheduled Analytics Rules │ Incidents ``` - **终端:** Windows Server 2022,配置了 [Sysmon](https://learn.microsoft.com/en-us/sysinternals/downloads/sysmon)(SwiftOnSecurity 配置)+ Windows 安全审计 - **收集:** Azure Monitor Agent → Data Collection Rules → Log Analytics - **检测:** 自定义 KQL → Microsoft Sentinel 计划分析规则 - **关于数据表的说明:** 日志会进入 `Event` 表(基于 DCR 的收集),因此检测会解析 `RenderedDescription`,而不是读取预先拆分的列——这更贴近真实世界中的日志处理场景。 ## 检测 | # | 检测 | MITRE | 战术 | 数据源 | |---|-----------|-------|--------|-------------| | 1 | [暴力破解失败登录](detections/01-brute-force-failed-logons.md) | T1110 | 凭证访问 | Security (4625) | | 2 | [可疑的 PowerShell 执行](detections/02-suspicious-powershell.md) | T1059.001, T1027 | 执行 / 防御规避 | Sysmon (EID 1) | | 3 | [注册表 Run-Key 持久化](detections/03-registry-run-key-persistence.md) | T1547.001 | 持久化 | Sysmon (EID 13) | 每个检测文件都记录了:威胁、KQL、用于验证它的模拟攻击、遇到的误报及其调优方法,以及 MITRE 映射。 ## 此处总结的关键经验 - **解析至关重要。** 真实的日志数据比列名所暗示的要杂乱得多;使用 regex 从 `RenderedDescription` 中提取字段是一项核心技能(参见检测 1)。 - **第一个 regex 匹配往往是错误的。** 检测 1 最初标记的是合法用户,而不是攻击者。 - **检测未触发并不总是 bug。** 有时是因为测试数据与真实的攻击节奏不匹配(参见检测 1)。 - **排除良性活动才是核心工作。** 检测 3 最初会对合法的 Windows 行为触发;该记录说明了如何在不遗漏真实攻击的情况下对其进行精细调优。 ## 免责声明 这是一个个人学习实验室。所有的“攻击”都是在我自己隔离的 VM 上运行的良性模拟。没有真实的恶意软件,没有真实的凭证,也没有生产系统。
标签:KQL, Microsoft Sentinel, 安全运营, 扫描框架