neelkotnis/kql-detection-rules
GitHub: neelkotnis/kql-detection-rules
一套包含32条生产级 KQL 检测规则的 Microsoft Sentinel 规则库,映射 MITRE ATT&CK 框架,解决 Azure 云环境和身份安全的自动化威胁检测问题。
Stars: 0 | Forks: 0
# KQL 检测规则库
这是一个包含 32 条生产级 KQL(Kusto Query Language)检测规则的库,适用于 Microsoft Sentinel 和 Microsoft Defender for Cloud,并已映射至 MITRE ATT&CK for Cloud 框架。
每条规则均被编写为可直接用于 Sentinel Analytics Rule 或 Log Analytics 查询,并在查询文件中直接包含了调优说明和误报指南。
## 规则
| ID | 类别 | 规则 | 严重性 | 数据源 |
|---|---|---|---|---|
| CA-001 | Credential Access | 暴力破解登录失败 | 高 | SigninLogs |
| CA-002 | Credential Access | 密码喷射检测 | 高 | SigninLogs |
| CA-003 | Credential Access | MFA 疲劳 / 推送泛洪 | 高 | SigninLogs |
| CA-004 | Credential Access | 多次失败后成功登录 | 严重 | SigninLogs |
| CA-005 | Credential Access | 首次访问 Key Vault 密钥 | 中 | AzureDiagnostics |
| CA-006 | Credential Access | 使用旧版身份验证协议 | 高 | SigninLogs |
| IA-001 | Initial Access | 不可能旅行 | 高 | SigninLogs |
| IA-002 | Initial Access | 来自新国家/地区的登录 | 中 | SigninLogs |
| IA-003 | Initial Access | 长期不活动后的登录 | 中 | SigninLogs |
| PE-001 | Privilege Escalation | 在订阅范围分配新的 Owner 角色 | 严重 | AzureActivity |
| PE-002 | Privilege Escalation | PIM 特权角色激活 | 中 | AuditLogs |
| PE-003 | Privilege Escalation | 用户被添加到特权组 | 高 | AuditLogs |
| LM-001 | Lateral Movement | 异常的 Service Principal 登录活动 | 高 | AADServicePrincipalSignInLogs |
| LM-002 | Lateral Movement | 添加了 Service Principal 凭据 | 高 | AuditLogs |
| EX-001 | Exfiltration | 大量 Blob 下载 | 高 | StorageBlobLogs |
| EX-002 | Exfiltration | 批量存储读取操作 | 中 | StorageBlobLogs |
| PS-001 | Persistence | 可疑的 OAuth 应用授权 | 高 | AuditLogs |
| PS-002 | Persistence | 创建了带有凭据的新 Service Principal | 中 | AuditLogs |
| PS-003 | Persistence | 受邀加入租户的来宾用户 | 低 | AuditLogs |
| PS-004 | Persistence | App Registration 重定向 URI 被修改 | 高 | AuditLogs |
| PS-005 | Persistence | 添加了联合身份验证凭据 | 高 | AuditLogs |
| DE-001 | Defense Evasion | 诊断设置被删除 | 高 | AzureActivity |
| DE-002 | Defense Evasion | Azure Policy 被删除或禁用 | 高 | AzureActivity |
| DE-003 | Defense Evasion | 条件访问策略被修改或删除 | 严重 | AuditLogs |
| DE-004 | Defense Evasion | 创建了 Defender for Cloud 警报抑制 | 高 | AzureActivity |
| DE-005 | Defense Evasion | 添加了开放的 NSG 入站规则 | 高 | AzureActivity |
| DI-001 | Discovery | Key Vault 枚举 | 中 | AzureDiagnostics |
| DI-002 | Discovery | 过度的资源枚举 | 中 | AzureActivity |
| EC-001 | Execution | 静默安装 VM 扩展 | 高 | AzureActivity |
| EC-002 | Execution | 创建或修改了 Automation Runbook | 高 | AzureActivity |
| IM-001 | Impact | 大规模资源删除 | 严重 | AzureActivity |
| IM-002 | Impact | 订阅所有权转移 | 严重 | AzureActivity |
## 前置条件
必须将以下日志源连接到您的 Log Analytics 工作区 / Microsoft Sentinel:
| 日志源 | 需求方 | 如何启用 |
|---|---|---|
| SigninLogs | CA-001 至 CA-006, IA-001 至 IA-003 | Entra ID → 诊断设置 → 发送至 Log Analytics |
| AuditLogs | PE-002, PE-003, LM-002, PS-001 至 PS-005, DE-003 | Entra ID → 诊断设置 → 发送至 Log Analytics |
| AzureActivity | PE-001, DE-001, DE-002, DE-004, DE-005, DI-002, EC-001, EC-002, IM-001, IM-002 | 订阅 → 活动日志 → 导出到 Log Analytics |
| AADServicePrincipalSignInLogs | LM-001 | Entra ID → 诊断设置(可选日志) |
| StorageBlobLogs | EX-001, EX-002 | 存储账户 → 诊断设置 → StorageRead |
| AzureDiagnostics (Key Vault) | CA-005, DI-001 | Key Vault → 诊断设置 → AuditEvent |
## 使用说明
### 直接在 Log Analytics / Sentinel 中运行
1. 打开 Microsoft Sentinel → 日志(或 Log Analytics 工作区 → 日志)
2. 复制任意 `.kql` 文件的内容
3. 粘贴到查询编辑器中
4. 按照调优部分的说明调整阈值和过滤器
5. 运行
### 创建 Sentinel Analytics Rule
1. Microsoft Sentinel → Analytics → 创建 → 计划查询规则
2. 粘贴 KQL 查询
3. 从规则头部信息设置规则名称、描述、MITRE 战术和严重性
4. 配置查询计划(建议:每 5-15 分钟运行一次,回溯 1 小时)
5. 设置警报阈值:当结果 > 0 时生成警报
## 仓库结构
```
rules/
credential-access/
CA-001_brute-force-signin-failures.kql
CA-002_password-spray.kql
CA-003_mfa-fatigue.kql
CA-004_success-after-failures.kql
CA-005_first-time-keyvault-access.kql
CA-006_legacy-auth-protocol.kql
initial-access/
IA-001_impossible-travel.kql
IA-002_signin-new-country.kql
IA-003_signin-after-inactivity.kql
privilege-escalation/
PE-001_owner-role-assignment.kql
PE-002_pim-role-activation.kql
PE-003_user-added-privileged-group.kql
lateral-movement/
LM-001_unusual-service-principal-activity.kql
LM-002_service-principal-credential-added.kql
exfiltration/
EX-001_large-blob-download.kql
EX-002_bulk-storage-reads.kql
persistence/
PS-001_suspicious-oauth-consent.kql
PS-002_new-service-principal-credentials.kql
PS-003_guest-user-invited.kql
PS-004_app-redirect-uri-modified.kql
PS-005_federated-identity-credential-added.kql
defense-evasion/
DE-001_diagnostic-settings-deleted.kql
DE-002_azure-policy-deleted.kql
DE-003_conditional-access-modified.kql
DE-004_defender-alert-suppression.kql
DE-005_nsg-open-rule-added.kql
discovery/
DI-001_keyvault-enumeration.kql
DI-002_resource-enumeration.kql
execution/
EC-001_vm-extension-installed.kql
EC-002_automation-runbook-modified.kql
impact/
IM-001_mass-resource-deletion.kql
IM-002_subscription-ownership-transfer.kql
MITRE_MAPPING.md
README.md
```
## 规则文件格式
每个 `.kql` 文件都遵循一致的头部格式:
```
// Rule ID :
// Name :
// MITRE Tactic:
// MITRE Tech : —
// Data Source :
// Severity :
// Author : Neel Kotnis
//
// Description:
// False Positives:
// Tuning Notes:
```
## 相关项目
- [azure-security-auditor](https://github.com/neelkotnis/azure-security-auditor) — 用于审计 Azure 安全态势(RBAC、NSG、存储、身份、计算、加密、监控)的 CLI 工具
- [aws-iam-security-auditor](https://github.com/neelkotnis/aws-iam-security-auditor) — 用于审计 AWS IAM 安全配置的 CLI 工具
标签:KQL, Microsoft Sentinel, PB级数据处理, 安全运维, 红队行动