Tx-Bovo/wazuh-detection-engineering

GitHub: Tx-Bovo/wazuh-detection-engineering

基于 Wazuh/OpenSearch 构建的企业级 SOC 战术分诊面板与检测规则集,专注于 Active Directory 环境下的告警疲劳治理和威胁狩猎。

Stars: 0 | Forks: 0

# 🛡️ SOC Triage 与 Active Directory 威胁狩猎 Dashboard ## 概述 本仓库记录了基于 **Wazuh / OpenSearch Dashboards** 生态构建的 **Single Pane of Glass** 面板的工程与开发过程。本项目的主要目的是优化安全事件的战术分诊,从而大幅减少 Level 1 和 Level 2 SOC 分析师面临的 *Alert Fatigue*。 dashboard-triage-sanitized ## 战略决策(为何构建?) Security Operations Center 的有效性通常由两个主要指标来衡量:**MTTD** (Mean Time to Detect) 和 **MTTR** (Mean Time to Respond)。 此 dashboard 及相关规则集旨在通过从**被动姿态**(分析师追查孤立且未关联的告警)转向**主动姿态**(将关键的行为异常进行整合、关联,并附带可操作的上下文直接推送到分析师的屏幕上),从而推动这些指标的降低。 ## 战术决策与检测工程 此 dashboard 的主要数据源涵盖 **Windows Security Event Logs** 和 **Fortigate Syslog**。主要关注 Identity (Active Directory) 异常和边界故障,映射以下关键事件: - **Event ID 4624:** Logon Success - **Event ID 4625:** Logon Failure - **Event ID 4740:** Account Lockout - **Event ID 1102:** Audit Log Cleared ### 1. 分诊队列 事件响应的基础已通过过滤无关严重性得到了优化。该队列严格显示高严重性的告警,配置为 `rule.level >= 10`。此外,为了直接在界面中应对 *Alert Fatigue*,我们在 OpenSearch 中实施了严格的噪声抑制逻辑。 ### 2. 抑制工程(减少 *Alert Fatigue*) 现代 SOC 最大的祸害是过多的良性告警(*False Positives*)。我们开发了自定义规则(`custom-rules.xml`),在引擎层面 (Wazuh) 运行,以便在将操作噪声索引为告警之前就将其静音: * **Active Directory (Windows):** 为机器账户 (`*$`)、Built-in 账户(`SYSTEM`, `LOCAL SERVICE`, `NETWORK SERVICE`, `DWM-*`, `UMFD-*`)以及类型 4 (Batch) 和 5 (Service) 登录创建了精准的 Level 0 抑制。此外,已命名的服务账户(前缀 `svc_*`, `SA_*`)和原生 loopback 登录(`127.0.0.1`, `::1`)也会被相互忽略。 * **Fortigate (Syslog):** Web Filter 在良性类别(例如:*Social Media*, *Games*, *Proxy Avoidance*)中允许的流量会在源端被抑制,从而避免污染分析 pipeline。 ### 3. 高级用例(关联与 MITRE ATT&CK) 为了将检测水平从简单的原子事件提升到真实的威胁战术,我们实施了高保真度的时间关联规则: * **Windows AD - Brute Force (T1110):** 孤立的登录失败 (Event ID 4625) 会被赋予 `no_log` 标签,不会生成单独的告警,以避免产生视觉疲劳。仅当**同一个 IP** 在限定的 5 分钟窗口内出现 10 次失败时,才会严格触发关键告警 (Level 12)。 * **Fortigate - 侦察与 Flood:** 原子 *Port Scan* (TCP/UDP) 检测会生成低级别的告警 (Level 5)。然而,如果同一来源在 5 分钟内发生多次扫描,其严重性将提升至 Level 10。结构性的 DoS 攻击(*UDP Flood*, *ICMP Flood*, *TCP SYN Flood*)会被立即归类为 Level 10。 * **Fortigate - Admin Brute Force:** 边界管理门户的访问失败受到严格监控。同一 IP 在 5 分钟内出现 5 次失败将触发 Level 12 告警 (*Possible admin brute force*)。 ### 4. 高级 Logon 异常微调 (4624) 大量的 *Logons Bem-Sucedidos* (4624) 在企业运营中是很自然的,这使得对它们的分析充满了噪声。为了分离出真正异常的登录(例如:源自标准化 VPN 隧道之外的外部访问),我们在 Dashboard 中应用了微调,精准排除了本地子网 (RFC 1918) 和 IPv4/IPv6 loopback 地址的流量。 在生产环境中使用的精确 DQL 代码块如下: ``` data.win.system.eventID: "4624" AND NOT (data.win.eventdata.ipAddress: 10.* OR data.win.eventdata.ipAddress: 192.168.* OR data.win.eventdata.ipAddress: 172.16.* OR data.win.eventdata.ipAddress: 172.18.* OR data.win.eventdata.ipAddress: 128.0.* OR data.win.eventdata.ipAddress: 127.0.0.1 OR data.win.eventdata.ipAddress: "::1" OR data.win.eventdata.ipAddress: fe80*) ``` ## Dashboard 组件 (SOC 的 UI/UX) 平台的界面设计从上到下进行了结构化,旨在提供即时的态势感知,并逐步深化至技术细节: 1. **顶部记分卡(即时影响指标)** - 高可见性的静态和动态面板,展示即时的关键严重性事件(例如:**Contas Bloqueadas** 和 **Limpeza de Logs de Auditoria**)。 - 包含一个时间趋势 *Sparkline*,用于快速直观地查看 *Brute Force* 尝试的猛烈程度。 2. **攻击上下文(左右并列)** - **左侧:** 详细列出源自外部 IP 的异常成功登录的表格(重点关注微调后的 4624)。 - **右侧:** 水平条形图,映射受身份验证失败 (4625) 影响的 Top 10 用户,这对于在 *Low-and-Slow Password Spraying* 期间确定优先目标至关重要。 3. **执行(分诊队列)** - 占据 dashboard 底部 100% 的宽度,提供高严重性日志的原始表格视图。这是 *Blue Team* 分析师进行事件原子检查(显示 *Time*, *Agent Name*, *Rule Description* 和 *Target User*)的主要工作流水线。 ## 仓库结构 本项目的版本控制组织结构旨在方便事件响应团队快速部署和采用: - `/assets`: 包含脱敏后的视觉证据、dashboard 的高分辨率截图以及拓扑图。 - `/rules`: XML 文件(例如:`custom-rules.xml`)。这是 *backend* 智能发挥作用的地方:包含用于从根源上消除 *Alert Fatigue* 的 Level 0 抑制,以及用于高级检测(例如:T1110 战术)的关联规则。 - `/queries`: 战术文档(例如:`01-triage-queue-filter.md`)和原始 DQL 代码,用于可视化视图的导出和导入。允许其他团队在任何 OpenSearch/Kibana 环境中重现面板逻辑。 - `/playbooks`: 事件响应指南和手册(例如:`AD-brute-force-response.md`)。指导分析师在“关键时刻”采取行动,定义升级矩阵、安全遏制措施以及 *backdoors* 狩猎。
标签:Active Directory, Plaso, Wazuh, 子域名变形, 安全仪表盘, 安全运营, 扫描框架, 红队行动