prxg0007/SOC-BruteForce-Detection
GitHub: prxg0007/SOC-BruteForce-Detection
该项目是一个 SOC 安全运营实验室,模拟 SSH 暴力破解攻击并在 Splunk 中完成从日志检测、告警到事件调查的完整流程。
Stars: 0 | Forks: 0
# 🚨 SOC 检测实验室:使用 Splunk 进行 SSH 暴力破解检测与调查
**作者:** Parag Dharmadhikari
**目标角色:** SOC Analyst / Cloud Security Intern
**使用工具:** Splunk (SIEM), Linux (Ubuntu), Python, Hydra (攻击模拟)
## 📌 项目摘要
本项目模拟了针对 Linux 主机的真实 SSH 暴力破解攻击,
将生成的认证日志接入 Splunk,构建检测逻辑以
识别攻击,像 SOC Analyst 一样调查事件,并将
调查结果映射到 MITRE ATT&CK 框架。它还解释了如何将相同的检测
逻辑应用到云环境(AWS/Azure)中。
**项目意义:** 它展示了完整的检测生命周期 —
日志生成 → 接入 → 检测 → 告警 → 调查 → 报告 —
这是真实 SOC Analyst 的核心工作流程,而不仅仅是“我运行了一些搜索”。
## 🧱 架构
```
Attacker (Kali/local)
│
│ SSH brute force attempts
▼
Ubuntu Victim VM
/var/log/auth.log
│
│ Splunk Universal Forwarder / Monitor input
▼
Splunk Search Head (index=main)
│
│ SPL detection query
▼
Saved Search → Alert (threshold-based)
│
▼
Dashboard + Incident Report
```
## ⚙️ 步骤 1 — 环境设置
- **受害机器:** 运行 OpenSSH server 的 Ubuntu 虚拟机
- **攻击机器:** 位于同一网络中的 Kali Linux(或其他虚拟机)
- **Splunk:** 安装在受害虚拟机或独立的 Splunk 实例上,接入 `/var/log/auth.log`
```
# 在受害 VM 上 - 确认 SSH 正在运行并记录日志
sudo systemctl status ssh
tail -f /var/log/auth.log
```
## 🧨 步骤 2 — 模拟攻击
在 `attack_simulation/` 中提供了两种选项:
1. `hydra_commands.md` — 仅针对你**自己的实验室虚拟机**使用 Hydra 进行真实暴力破解
2. `simulate_failed_logins.py` — 如果你不想运行实时的 Hydra 流量,这是一个安全的合成日志生成器(适用于快速演示 / 截图)
⚠️ **道德声明:** 永远只对你拥有或获得明确书面测试许可的系统运行暴力破解工具。切勿将其指向互联网上的任何事物。
## 📥 步骤 3 — 将日志接入 Splunk
Splunk → **Settings → Add Data → Monitor**
- 路径:`/var/log/auth.log`
- Sourcetype:`linux_secure`
- Index:`main`(或创建一个专用的 `soc_lab` index)
## 🔍 步骤 4 — 检测逻辑
有关完整的 SPL 查询集合,请参见 `detection_queries/brute_force_detection.spl`,
包括:
- 按源 IP 统计的基本失败登录次数
- 基于阈值的暴力破解检测
- 多次失败后成功(失陷指标)
- 基于时间窗口的检测(速度)
## 🚨 步骤 5 — 告警
告警配置(在 Splunk UI 中构建,在此记录以便复现):
| 设置 | 值 |
|---|---|
| 搜索 | `brute_force_detection.spl` → Query 2 |
| 触发条件 | 在滚动的 5 分钟窗口内 `count > 10` |
| 计划 | 每 5 分钟运行一次 |
| 动作 | 添加到 Triggered Alerts 列表(+ 可选电子邮件) |
| 严重程度 | 高 |
## 📊 步骤 6 — 仪表板
已构建的面板(详情及 SPL 位于 `dashboards/dashboard_panels.md`):
1. 攻击次数最多的源 IP(条形图)
2. 失败与成功登录的趋势(时间图表)
3. 攻击时间线(单一值 + 折线图)
4. 源 IP 的地理地图(可选,如果使用 iplocation)
## 🕵️ 步骤 7 — 调查工作流
在 `report/incident_report_template.md` 中有分步记录,遵循
标准的 SOC 分诊流程:
1. **检测** — 针对 `src_ip` 超过失败登录阈值触发的告警
2. **分诊** — 确认它不是被锁定在自己账户之外的合法用户
3. **调查** — 检查来自该 IP 的任何登录是否最终**成功**
4. **关联** — 检查来自该账户的后续活动(sudo 使用、创建新用户、出站连接)
5. **遏制** — 在防火墙 / 安全组阻止 IP,如果账户被盗用则禁用该账户
6. **记录** — 填写事件报告
7. **经验教训** — 推荐 fail2ban / 速率限制 / MFA
在 `report/sample_incident_report.md` 中包含了一份填写好的
**事件报告示例**,以便你可以准确了解如何编写报告。
## 🎯 MITRE ATT&CK 映射
请参见 `mitre_mapping.md`。主要技术:**T1110 – Brute Force**(子技术 T1110.001 – Password Guessing)。
## 🧰 自动化
`automation/log_parser.py` — 一个 Python 脚本,可直接解析
`auth.log`(独立于 Splunk),并打印出违规次数最多的 IP 及失败尝试次数。
这表明你能够处理原始日志,而不仅仅是使用 GUI。
## 📸 检测结果
**暴力破解告警查询**

**失陷指标(失败 → 成功)**

**触发的告警**

**仪表板概览**

## 📁 仓库结构
```
SOC-BruteForce-Detection/
│
├── README.md
├── detection_queries/
│ └── brute_force_detection.spl
├── dashboards/
│ └── dashboard_panels.md
├── attack_simulation/
│ ├── hydra_commands.md
│ └── simulate_failed_logins.py
├── automation/
│ └── log_parser.py
├── report/
│ ├── incident_report_template.md
│ └── sample_incident_report.md
├── mitre_mapping.md
├── cloud_extension.md
└── screenshots/
```
## ✅ 展示的技能
- Splunk 中的日志源接入
- SPL 检测工程(stats, eval, where, transaction)
- 告警创建和调优(误报意识)
- 仪表板构建
- 事件调查和报告(SOC 工作流)
- MITRE ATT&CK 映射
- Python 日志解析 / 自动化
标签:Cloudflare, MITRE ATT&CK, 免杀技术, 安全运营, 扫描框架, 暴力破解检测, 逆向工具