ouaffaqoussama/siem-ids-detection-lab
GitHub: ouaffaqoussama/siem-ids-detection-lab
基于 Splunk 和 Snort 构建的 SIEM+IDS 检测流水线实验室,在四种模拟攻击场景下实现 100% 检测率并附带完整事件响应手册。
Stars: 0 | Forks: 0
# SIEM + IDS 检测流水线 — Splunk Enterprise & Snort
**端到端攻击检测实验室:自定义 IDS 规则、实时 SIEM 关联,以及完整的事件响应手册 —— 在 4 种模拟攻击类型中实现了 100% 的检测率。**
## 架构
位于隔离子网的三虚拟机环境:
| 角色 | 操作系统 | 软件 |
|---|---|---|
| Web 服务器 (靶机 + IDS 主机) | Windows Server 2016 | IIS 10, Snort 2.9.20, Splunk Universal Forwarder |
| SIEM 服务器 | Windows Server 2016 | Splunk Enterprise 9.x |
| 攻击者 | Kali Linux | Hydra v9.6, Nmap 7.98 |
**检测数据流:**
```
Kali attack → Web Server NIC → Snort IDS (packet inspection)
→ alert.ids log → Splunk Universal Forwarder (TCP 9997)
→ Splunk index (csa271_logs) → Real-time SPL alerts → Triggered Alerts dashboard
```
所有虚拟机时钟均通过 NTP 同步(`w32tm /resync /force`)—— 准确的时间戳对于跨源事件关联和事件时间线重建至关重要。
## 我构建的内容
**1. 自定义 Snort 检测规则 (`local.rules`)**
编写了基于 TCP flag 行为而非工具名称的签名规则:
- **SYN 扫描** — 针对仅设置了 SYN flag 的 TCP 数据包(`flags:S`)进行告警,这是半开扫描的标志
- **Xmas 扫描** — 针对 FIN+PSH+URG flag 组合进行告警
- **UDP 扫描** — 针对扫描受保护子网的 UDP 数据报进行告警
- **TCP connect 扫描** — 通过 Snort 的 stream 预处理器识别已完成握手的端口扫描来进行检测
**2. 日志转发流水线**
在 Web 服务器上配置了 Splunk Universal Forwarder(`inputs.conf` / `outputs.conf`),用于追踪 Snort 的告警日志、IIS HTTP/FTP 日志、Windows 安全事件以及 Windows 防火墙日志,并将其汇聚到专用的 Splunk index 中。
**3. 五个实时 SPL 关联告警**
保存的搜索关联了 Windows EventCode(登录失败激增)、FTP 状态码异常(`sc_status=530` 重复 → 暴力破解)以及 Snort sourcetype 事件 —— 每一项都会作为高严重性的触发告警实时发出。
**4. 攻击模拟与验证**
从 Kali 执行了四种攻击类型 —— FTP 暴力破解(Hydra + rockyou.txt)、SYN 扫描(`nmap -sS`)、TCP connect 扫描(`nmap -sT`)、UDP 扫描(`nmap -sU`)—— 实现了 **100% 检测率:18 个高严重性告警,零漏报**。这些扫描还揭示了一个真实发现:目标机器上 **WinRM (端口 5985) 暴露**,已被标记待强化。
**5. 事件响应手册**
编写了一份涵盖五种事件类型(HTTP 暴力破解、FTP 暴力破解、SYN/TCP/UDP 扫描)的完整手册,每种类型均包含:
- 检测逻辑与手动 SPL 调查查询
- **检测 → 遏制 → 根除 → 恢复 → 事件后(Post-Incident)** 流程
- 针对每种攻击类型的 PowerShell 遏制命令
- 升级与通知矩阵,以及证据保全清单
## 展现的技能
`Splunk (SPL)` · `Snort IDS` · `检测工程` · `日志转发与索引` · `Windows Server 2016` · `IIS` · `Nmap` · `Hydra` · `事件响应(NIST 生命周期)` · `PowerShell` · `网络流量分析`
## 在生产环境中我会如何改进
- 部署 Snort 3.x(或 Suricata),在自定义规则之下叠加社区规则集
- 通过 TLS 传输日志,并增加一层 heavy forwarder 以实现大规模解析
- 根据基线流量调整阈值,在发出告警前控制误报率
- 添加 SOAR 式自动遏制,而不是使用手动 PowerShell 响应
*完整的配置报告和手册可应要求提供(已脱敏)。*
标签:AI合规, CTI, 安全实验环境, 安全运营, 库, 应急响应, 扫描框架, 插件系统, 红队行动