TejinderS1130/splunk-soc-labs
GitHub: TejinderS1130/splunk-soc-labs
基于 Splunk SIEM 的 SOC 分析师实战实验室,通过模拟 SSH 攻击场景教授日志分析、威胁检测与事件响应的完整工作流程。
Stars: 0 | Forks: 0
# SOC 实验室:SSH 暴力破解与密码喷洒检测





**Splunk SIEM | 事件分诊 | MITRE ATT&CK | 自动化遏制**
## 概述
本项目模拟针对 Linux 服务器的真实 SSH 认证攻击,并演示了符合加拿大企业环境的端到端安全运营中心 (SOC) 工作流程。
## SOC 工作流程
```
Detection → Investigation → Classification → Containment → Validation → Documentation
```
## 使用技术
* Splunk Enterprise (SIEM)
* Splunk Universal Forwarder
* Kali Linux (Hydra)
* CentOS Linux
* Fail2Ban (自动化遏制)
## 实验架构
```
🌐 Internet (Attacker)
│
┌───────────────┐
│ Kali Linux │
│ 192.168.64.x │
└──────┬────────┘
│
(SSH Attack)
│
┌──────────────▼──────────────┐
│ CentOS Target Server │
│ 192.168.64.10 │
└──────────────┬──────────────┘
│
Log Forwarding (Port 9997)
│
┌──────────────▼──────────────┐
│ Splunk Enterprise SIEM │
│ 192.168.192.5 │
└──────────────┬──────────────┘
│
Detection & Alerts
│
┌──────────────▼──────────────┐
│ Fail2Ban Engine │
│ (Automated Containment) │
└─────────────────────────────┘
```
## 实验组件
| Component | Role |
| ------------------- | --------------------- |
| Kali Linux | 攻击模拟 |
| CentOS Server | 目标主机 |
| Splunk Enterprise | SIEM |
| Universal Forwarder | 日志采集 |
| Fail2Ban | 自动化遏制 |
## 监控日志
* `/var/log/secure`
* `/var/log/messages`
**转发端口:** `9997`
## 日志采集与 SIEM 配置
## 安装 Universal Forwarder
```
sudo rpm -ivh splunkforwarder-10.x.x.rpm
sudo /opt/splunkforwarder/bin/splunk start --accept-license
```
## 配置转发
```
sudo /opt/splunkforwarder/bin/splunk add forward-server 192.168.192.5:9997
sudo /opt/splunkforwarder/bin/splunk add monitor /var/log/secure
sudo /opt/splunkforwarder/bin/splunk add monitor /var/log/messages
```
## 验证连接性
```
sudo /opt/splunkforwarder/bin/splunk list forward-server
```
## 验证查询
```
index=* source="/var/log/secure"
```
# 事件 A — SSH 暴力破解 (T1110.001)
## 攻击模拟
```
sudo hydra -l root -P /usr/share/wordlists/rockyou.txt ssh://192.168.64.10 -t 4
```
## 观察到的指标
* 高频登录失败
* 单一账户目标
* 相同来源 IP (Same source IP)
* 基于时间的峰值
## 检测查询
```
source="/var/log/secure" "Failed password"
| timechart span=10s count
```
## MITRE ATT&CK 映射
* **战术:** 凭证访问
* **技术:** T1110 – 暴力破解
* **子技术:** T1110.001 – 密码猜测
# 事件 B — 密码喷洒 (T1110.003)
## 攻击模拟
```
sudo hydra -L users.txt -p Welcome123 ssh://192.168.64.10 -t 1
```
## 观察到的指标
* 重复使用相同密码
* 针对多个账户
* 单用户低频率
* 相同来源 IP (Same source IP)
## 检测工程
```
source="/var/log/secure" "Failed password"
| rex "for (?\w+)"
| rex "from (?\d+\.\d+\.\d+\.\d+)"
| stats dc(user) as unique_users count as attempts by src_ip
| where unique_users >= 3
```
### 结果
* `unique_users = 4`
* `attempts = 78`
* `src_ip = 192.168.64.11`
## MITRE ATT&CK 映射
* **战术:** 凭证访问
* **技术:** T1110 – 暴力破解
* **子技术:** T1110.003 – 密码喷洒
# 事件 C — SSH 侦察 (T1595)
## 检测查询
```
source="/var/log/secure" "Did not receive identification string"
| rex "from (?\d+\.\d+\.\d+\.\d+)"
| stats count by src_ip
```
## MITRE ATT&CK 映射
* **战术:** 侦察
* **技术:** T1595 – 主动扫描
# 自动化遏制 — Fail2Ban
## SSH Jail 配置
```
[sshd]
enabled = true
port = ssh
logpath = /var/log/secure
maxretry = 3
findtime = 300
bantime = 600
```
## 验证
```
sudo fail2ban-client status sshd
```
## 结果
* 封禁 IP: `192.168.64.11`
* 自动化遏制成功
## Splunk 验证
```
source="/var/log/secure" "fail2ban"
```
## 事件分诊工作流程
1. 因异常认证峰值触发告警
2. 验证日志源完整性
3. 提取来源 IP 和目标账户
4. 分类攻击类型 (暴力破解 vs 密码喷洒)
5. 将活动映射到 MITRE ATT&CK
6. 部署遏制措施
7. 验证 IP 封禁有效性
8. 记录发现结果与检测逻辑
## 误报考量
* 密码喷洒分类要求 ≥ 3 个唯一用户
* 使用基于时间的异常检测识别暴力破解
* 在升级前关联一致的来源 IP
## MITRE ATT&CK 覆盖范围摘要
| Incident | Tactic | Technique |
| ----------------- | ----------------- | --------- |
| SSH Brute Force | Credential Access | T1110.001 |
| Password Spraying | Credential Access | T1110.003 |
| SSH Recon | Reconnaissance | T1595 |
## 关键收获
* 使用 Splunk 构建真实世界的 SOC 检测逻辑
* 区分暴力破解与密码喷洒攻击
* 使用 Fail2Ban 实施自动化遏制
* 应用 MITRE ATT&CK 进行结构化威胁分析
* 模拟完整的 SOC 事件响应生命周期
标签:AMSI绕过, Cloudflare, Fail2Ban, Hydra, Linux 安全, MITRE ATT&CK, Python3.6, SOC 实验室, SSH 暴力破解, 威胁检测, 安全运营中心, 密码喷射, 网络安全, 网络安全审计, 网络映射, 自动化防御, 身份认证安全, 隐私保护