denis541/ICT-Infrastructure-Monitoring-Splunk
GitHub: denis541/ICT-Infrastructure-Monitoring-Splunk
基于 Splunk 的暴力破解检测与告警调优项目,通过完整检测工程流程将误报率从 95% 降至 5% 以下。
Stars: 1 | Forks: 0
# 使用 Splunk 进行 ICT 基础设施监控



**分析师:** Denis O. Onduso | [GitHub](https://github.com/denis541) | Denis.Onduso@outlook.com
**许可证:** MIT
## 概述
在受控的家庭实验室中构建的端到端暴力破解检测 pipeline:通过 Kali Linux 对 Windows 11 进行攻击模拟,将日志转发至 Splunk Enterprise,并通过迭代调整检测规则,将每日 22 次误报减少至 3–4 次高保真告警。该项目涵盖了完整的检测工程生命周期——威胁建模、规则开发、误报分析和调优——基于 MITRE ATT&CK T1110 记录的真实攻击模式。
## 架构
```
graph LR
A[Kali Linux] -->|Brute Force - Hydra| B[Windows 11]
B -->|Security Event Logs - Universal Forwarder| C[Splunk Enterprise]
C -->|Alert| D[Analyst]
```
| 组件 | 详情 |
|-----------|---------|
| SIEM | Splunk Enterprise (免费版) |
| 目标 | Windows 11 — 安全事件日志源 |
| 攻击模拟 | Kali Linux — Hydra、自定义 PowerShell/Python 脚本 |
| 网络 | 隔离的 VMware 虚拟子网 — 无外部流量 |
| Hypervisor | VMware Workstation |
## 威胁模型
**目标技术:** T1110.001 — 暴力破解:密码猜测
**目标资产:** Windows 本地身份验证 (NTLM)
**攻击路径:** 凭据泄露 → 合法账户访问 (T1078) → 横向移动或持久化
**检测方法:** 对 Event ID 4625 (登录失败) 进行基于阈值的分析,过滤为基于网络的登录类型,并为每个源 IP 分配威胁分数,以供分析师进行分流优先级排序。
## 检测规则
**文件:** `/detection_rules/splunk/windows_auth_bruteforce.spl`
```
index=windows sourcetype="WinEventLog:Security" EventCode=4625
(Logon_Type=3 OR Logon_Type=10)
| stats count values(Logon_Type) as logon_types by src_ip, user
| where count > 7
| eval threat_score = count * 10
| sort -threat_score
| table src_ip, user, count, logon_types, threat_score
```
| 逻辑组件 | 目的 |
|----------------|---------|
| `EventCode=4625` | 仅限登录失败事件 |
| `Logon_Type=3 OR Logon_Type=10` | 网络和 RDP 登录 — 过滤掉会产生大量合法噪音的本地控制台失败 |
| `count > 7` | 调整阈值以抑制单用户锁定误报,同时捕获工具生成的喷雾模式 |
| `threat_score = count * 10` | 用于分析师队列优先级排序的线性分数 — 计数越高 = 分数越高 |
注意:`Logon_Type` 过滤器在 `stats` 聚合之前应用,因此该字段可用于过滤。在 `stats` 之后对已聚合消失的字段进行过滤会产生不正确的结果。
## 调优过程
初始条件:告警阈值为 5 次失败,无登录类型过滤器,无白名单 — 每天产生 22 个告警,误报率为 95%。
| 迭代 | 变更 | 结果 |
|-----------|--------|---------|
| 基线 | 阈值:5 次失败,无过滤器 | 每日 22 个告警 — 95% 误报率 |
| 调优 1 | 阈值提高到 7,添加 Logon_Type 过滤器 | 告警量减少 — 服务账户产生残余误报 |
| 调优 2 | 为已知的内部系统添加源 IP 白名单 | 仅保留高保真告警 |
| 最终 | 跨 IP、用户和登录类型的多因子关联 | 每日 3–4 个告警 — 全部需要真正的调查 |
**结果:** 每日告警量减少了 82%。在最终配置中,误报率从 95% 降至 5% 以下。
95% → 近乎零的误报率降低是比原始准确性更有意义的结果 — 在 SOC 环境中,高误报率规则引起的告警疲劳会导致分析师开始忽视或自动关闭告警而不进行调查,这是一种比完全没有规则更危险的情况。
## 证据
| 文件 | 目的 |
|------|---------|
| `01_splunk_dashboard.png` | 日志摄取概述和索引健康状态 |
| `02_windows_log_ingestion.png` | Event ID 4625 解析验证 |
| `03_bruteforce_alert_fired.png` | 针对模拟攻击触发的检测规则 |
| `04_alert_tuning_fp_reduction.png` | 调优前后的告警量对比 |
## 法规遵从
日志和监控配置满足 **《肯尼亚数据保护法》(2019) 中的以下要求:**
| 条款 | 要求 | 实现 |
|---------|-------------|---------------|
| 第 30 条 | 处理活动记录 | Splunk 索引保留了身份验证事件的完整审计跟踪 |
| 第 32 条 | 个人数据的安全保障 | 检测规则针对访问持有个人数据的系统的未授权尝试发出告警 |
| 第 39 条 | 违规检测和通知 | 告警 pipeline 为违规通知时间表提供了记录在案的检测时间戳 |
## 展示技能
| 领域 | 详情 |
|------|--------|
| SIEM 管理 | Splunk 索引管理、Universal Forwarder 配置、数据接入 |
| 检测工程 | 威胁建模、SPL 规则开发、迭代调优、误报分析 |
| 日志分析 | Windows Event Log 解析、字段提取、登录类型分类 |
| MITRE ATT&CK | T1110.001 检测、T1078 后续活动识别 |
| 基础设施 | VMware 网络分段、Windows 11 和 Kali Linux 管理 |
| 自动化 | 用于检测验证的 PowerShell 和 Python 日志生成脚本 |
## 相关文档
- [检测工程流程](Detection_rules)
- [误报调优分析](Docs/04_lessons_false_positives.md)
- [威胁模型 — T1110.001](Docs/01_threat_modeling_T1110.md)
- [事件响应手册 — 暴力破解](Playbooks/01-Incident_response.md)
标签:AI合规, 免杀技术, 安全运营, 扫描框架, 暴力破解检测, 红队行动, 逆向工具