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。 ## 📸 检测结果 **暴力破解告警查询** ![暴力破解检测](https://static.pigsec.cn/wp-content/uploads/repos/cas/fa/fa5cb4638b2ba2ee71f05494adf50456eecec32d9ca25ffe1742bd5e399979e5.png) **失陷指标(失败 → 成功)** ![失陷指标](https://static.pigsec.cn/wp-content/uploads/repos/cas/3f/3f281fc380bb3f9c60ebc7d27e4c8c3ae1484eb310e04bc83eec3e1ec76a895b.png) **触发的告警** ![触发的告警](https://static.pigsec.cn/wp-content/uploads/repos/cas/6d/6dff1fc4ac759bea4bb2223e06fccde2e0739a69910427380ba17d5d2f49454f.png) **仪表板概览** ![仪表板](https://static.pigsec.cn/wp-content/uploads/repos/cas/89/89bc0c08a55e917757e2418b8d11dcf43ecbaec8f8a8e32c9c21769694144ad5.png) ## 📁 仓库结构 ``` 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, 免杀技术, 安全运营, 扫描框架, 暴力破解检测, 逆向工具