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级数据处理, 安全运维, 红队行动