rizko-d/kql-detection-library
GitHub: rizko-d/kql-detection-library
为 Microsoft Sentinel 云安全监控场景精心整理的 KQL 检测规则库,每条规则均映射 MITRE ATT&CK 技术并配套测试验证工具。
Stars: 0 | Forks: 0
# KQL 检测库
**Azure Sentinel / Microsoft 365 检测规则库** —— 专为 Microsoft 云环境中的威胁检测、威胁狩猎和安全监控精心整理的 KQL 查询。
## 概述
| 指标 | 数值 |
|---|---|
| **总规则数** | 5(当前)—— 计划增加至约 70 条,请参阅 [路线图](#roadmap) |
| **覆盖战术** | 14 项中的 3 项 |
| **覆盖技术** | 约 200 项中的 5 项 |
| **目标平台** | Microsoft Sentinel (Log Analytics / KQL) |
| **规则格式** | 包含 MITRE ATT&CK frontmatter 的标准化 KQL |
## 快速开始
```
// Copy any rule directly into Sentinel Log Analytics Workspace
// or deploy as Scheduled Query Rule via ARM / CLI.
```
### 前置条件
- **Microsoft Sentinel** 工作区(或 Azure Log Analytics)
- 每个规则所需的日志表(参见各规则的 `Data Source` 标题)
- 最低权限要求:`Microsoft.OperationalInsights/workspaces/query/read`
## 规则索引
### 凭证访问
| 规则 | 技术 | 严重性 | 数据源 |
|---|---|---|---|
| [RDP 暴力破解](azure-sentinel/credential-access/brute-force-rdp.kql) | T1110 | 高 | SigninLogs, AADNonInteractiveUserSignInLogs |
| [Kerberoasting 检测](azure-sentinel/credential-access/kerberoasting-detection.kql) | T1558.003 | 高 | SecurityEvent, IdentityLogonEvents |
| [DCSync 检测](azure-sentinel/credential-access/dcsync-detection.kql) | T1003.006 | 严重 | DirectoryServiceAccess, BehaviorAnalytics |
### 执行
| 规则 | 技术 | 严重性 | 数据源 |
|---|---|---|---|
| [PowerShell 混淆](azure-sentinel/execution/powershell-obfuscation.kql) | T1059.001 | 中 | DeviceProcessEvents (MDE) |
### 持久化
| 规则 | 技术 | 严重性 | 数据源 |
|---|---|---|---|
| [计划任务创建](azure-sentinel/persistence/scheduled-task-creation.kql) | T1053.005 | 中 | SecurityEvent, DeviceEvents |
## 规则格式
每条规则遵循以下结构:
```
// === MITRE ATT&CK ===
// Technique: TXXXX.XXX — Description
// Tactic: Tactic Name
// Severity: High / Medium / Low / Critical
// Data Source: TableName (Source)
// False Positives: Known noise sources
// Recommended Response: Step-by-step IR guidance
// === QUERY ===
```
## 测试
请查看 `mapping/test-cases/` 获取示例数据及预期检测逻辑:
```
python tools/rule-validator.py azure-sentinel/
```
每个测试用例都使用真实的事件数据模拟相关的表结构,并验证查询语法。该测试(而非实际的 Sentinel 部署)可在部署前捕获结构性错误和 schema 不匹配的问题。
## MITRE ATT&CK 覆盖范围
有关完整的战术/技术映射,请参阅 [ATTACK_MATRIX.md](ATTACK_MATRIX.md)。
## 路线图
### v0.1 — MVP(当前)
- [x] RDP 暴力破解检测 (T1110)
- [x] Kerberoasting 检测 (T1558.003)
- [x] DCSync 检测 (T1003.006)
- [x] PowerShell 混淆检测 (T1059.001)
- [x] 计划任务持久化 (T1053.005)
- [x] 规则验证器工具
- [x] 每条规则的测试框架
- [x] MITRE ATT&CK 映射
### v0.2 — 执行与防御规避(+10 条规则)
- [ ] **LSASS 访问 / Mimikatz 检测** (T1003.001) — 通过 lsass.exe 进行 ProcessAccess,Event 4663
- [ ] **AMSI 绕过检测** (T1562.001) — AmsiScanBuffer patching,注册表禁用
- [ ] **进程镂空检测** (T1055.012) — 可信二进制文件中的无支持内存 + 挂起线程
- [ ] **日志清除检测** (T1070.001) — Event 1102(安全日志已清除),wevtutil /auditpol
- [ ] **注册表 Run Key 持久化** (T1547.001) — CurrentVersion\Run 修改 (Event 4657)
- [ ] **WMI 事件订阅持久化** (T1546.003) — \_\_EventFilter / \_\_FilterToConsumerBinding (Event 5861)
- [ ] **启动文件夹持久化** (T1547.001) — 在 StartUp 文件夹中创建 LNK
- [ ] **DLL 搜索顺序劫持** (T1574.001) — 从用户可写路径加载 DLL
- [ ] **BITS 任务持久化** (T1197) — 后台智能传输服务任务创建
- [ ] **服务安装检测** (T1543.003) — 非管理员创建新服务 (Event 4697)
### v0.3 — 横向移动与发现(+10 条规则)
- [ ] **Pass-the-Hash 检测** (T1550.002) — NTLM 登录类型 3 异常
- [ ] **远程服务创建** (T1543.003) — 来自远程的 sc.exe / PowerShell New-Service
- [ ] **WMI 执行检测** (T1047) — wmic process call create,Invoke-CimMethod
- [ ] **PsExec / SMB 执行** (T1570) — PSEXESVC 服务 + 命名管道 \psexecsvc
- [ ] **网络共享发现** (T1135) — net view / net share 枚举爆发
- [ ] **DCOM 横向移动** (T1021.003) — MMC20.Application,ShellWindows,Excel DCOM
- [ ] **WinRM / PowerShell 远程控制** (T1021.006) — WinRM 服务访问,PS 会话创建
- [ ] **RDP 横向移动** (T1021.001) — 来自非管理员工作站的 RDP 登录成功
- [ ] **SMB 命名管道模拟** (T1550.003) — SMB 会话后的 \\pipe\\\* 访问
- [ ] **Active Directory 发现** (T1087.002) — BloodHound / AD 枚举工具(adfind,sharphound)
### v0.4 — 数据外传与 C2(+10 条规则)
- [ ] **异常出站流量** (T1048) — 来自非 Web 服务器的出口流量异常
- [ ] **DNS 隧道异常** (T1572) — 高熵子域名,TXT 查询爆发
- [ ] **Beaconing 模式检测** (T1071.001) — 周期性 HTTP/HTTPS 连接间隔分析
- [ ] **大文件上传异常** (T1030) — 通过 Web / 云存储上传 > 100MB 的文件
- [ ] **数据暂存检测** (T1074) — 在敏感共享上创建归档(zip/rar/7z)
- [ ] **基于 WebSocket 的 C2** (T1071.001) — 与罕见域的长连接 WebSocket
- [ ] **基于 HTTPS 的 C2 (JA3/S)** — 针对已知 C2 框架的 JA3 hash 聚类
- [ ] **云存储数据外传** (T1567.002) — 上传文件至个人云(Dropbox,GDrive)
- [ ] **邮件转发数据外传** (T1114.003) — 创建自动转发规则到外部域
- [ ] **ICMP / 自定义协议隧道** (T1571) — 非 DNS/HTTP 的出站协议异常
### v0.5 — 云特有与 Kubernetes(+10 条规则)
- [ ] **Azure AD MFA 绕过 / 旧版身份验证** (T1078.004) — 旧版协议身份验证,无 MFA 条件访问
- [ ] **可疑的 OAuth 同意授权** (T1525.001) — 具有高权限的第三方应用授权
- [ ] **异常的服务主体使用** (T1098) — 非工作时间出现新的 SPN / client secret
- [ ] **容器逃逸检测** (T1611) — --privileged 标志,宿主机挂载,--pid=host
- [ ] **Azure Key Vault 访问异常** (T1552.005) — 来自意外 IP / 区域的机密访问
- [ ] **Kubernetes RBAC 滥用** (T1087.004) — ClusterRole 提权,通过 API 枚举 secret
- [ ] **Azure VM Run Command 滥用** (T1059.009) — RunCommand / Invoke-AzVMRunCommand
- [ ] **Blob 存储公共访问** (T1530) — 匿名 blob 枚举,存储账户配置错误
- [ ] **Azure 资源删除** (T1485) — 几分钟内大量删除资源组 / NSG
- [ ] **Azure Logic App / Automation Account 滥用** (T1053.006) — 可疑的 runbook/作业创建
### v0.6 — 狩猎与基线(+10 条查询)
- [ ] **威胁狩猎查询模块** — `hunting-queries/` 目录
- [ ] **用户行为基线 KQL** — 历史登录时间,地理位置,设备数量
- [ ] **非托管设备访问检测** — 设备合规性检查 + 条件访问绕过
- [ ] **异常登录时间分析** — 特定用户首次在凌晨 3 点登录
- [ ] **跨租户访问异常** — B2B 来宾账户枚举
- [ ] **服务账户交互式登录** — 服务账户不应有交互式会话
- [ ] **Pass-the-Hash 狩猎** — 跨非 DC 主机的 RC4 NTLM 登录
- [ ] **黄金票据狩猎** — Kerberos 票据生命周期 > 10 小时(Event 4768/4769 异常)
- [ ] **邮箱访问异常** — 通过未知 IP 的 EWS/Graph API 访问邮箱
- [ ] **Identity Protection 洞察** — 聚合的 Azure AD Identity Protection 风险检测
### v0.7 — 工具与 CI
- [ ] **`rule-scaffold.py`** — 带有自动生成 frontmatter 的模板生成新规则
- [ ] **`coverage-report.py`** — 从规则目录自动生成 ATT&CK 矩阵 Markdown
- [ ] **`test-simulator.py`** — 按表结构生成模拟事件
- [ ] **GitHub Actions CI** — 在每次 push + PR 时运行 `rule-validator.py`
- [ ] **ARM Template 导出器** — 通过 ARM/Bicep 将规则部署为 Sentinel 分析规则
- [ ] **Sentinel-as-code (Terraform)** — 用于 `azurerm_sentinel_alert_rule` 的 Terraform 模块
- [ ] **规则依赖检查器** — 交叉引用规则间的表和可用数据连接器
- [ ] **误报测试仪表板** — 在历史数据上量化每条规则误报率的 KQL
### v0.8 — 高级功能
- [ ] **Sentinel Workbook 生成器** — 从规则集自动创建 Azure Workbook JSON
- [ ] **Tier-2:关联规则** — 多事件链检测(例如:用户进行 RDP 登录 → 创建任务 → 转储 LSASS)
- [ ] **Tier-3:机器学习 / Fusion 异常** — 时间序列异常检测规则
- [ ] **跨工作区狩猎** — 跨越多个 Sentinel 工作区的 KQL 查询
- [ ] **Watchlist 集成** — 通过 Sentinel watchlist 进行动态白名单设置(企业 IP 范围,已知良好的 hash)
- [ ] **KQL 单元测试框架** — 自动化基于 `datatable` 的断言预期结果测试
- [ ] **MITRE ATT&CK Navigator 层** — 将规则导出为 ATT&CK Navigator 热力图 JSON
- [ ] **多语言规则转换器** — Sigma 到 KQL 的翻译映射器
## 部署
### 手动方式
1. 打开 Azure Portal → Sentinel → Logs
2. 粘贴 KQL 查询
3. 调整时间范围和阈值
4. 点击 **+ New alert rule** → 配置触发频率 / 抑制
### 自动化方式 (ARM / CLI) — 将在 v0.7 中推出
```
# 使用 az CLI 的示例
az deployment group create --resource-group rg-sentinel --template-file deploy-rule.json
```
## 贡献
1. Fork 该仓库
2. 按照上述[格式](#rule-format)创建规则
3. 将 MITRE 映射添加到 `mapping/mitre-attack.yaml`
4. 添加包含示例数据的测试用例
5. 运行 `python tools/rule-validator.py`
6. 提交 PR
## 许可证
MIT — 请参阅 [LICENSE](LICENSE)。
标签:AMSI绕过, Azure Sentinel, KQL, OpenCanary, 威胁检测, 安全运营, 扫描框架, 网络安全, 逆向工具, 隐私保护