aadov/network-analysis-lab
GitHub: aadov/network-analysis-lab
一个使用 Suricata IDS 与 Zeek NSM 检测 Web 应用攻击的 Docker 网络流量分析实验环境。
Stars: 0 | Forks: 0
# 网络分析实验室
使用 Suricata IDS 和 Zeek NSM 进行实践操作的网络流量分析实验室,用于实时检测 Web 应用程序攻击。
## 技术栈
- **Suricata 8.0.4** - IDS/IPS,基于特征的告警引擎
- **Zeek 7.x** - 网络安全监控器,协议分析与日志记录
- **DVWA** - Damn Vulnerable Web Application(攻击目标)
- **Docker Compose** - 部署
- **WSL2 Ubuntu 24.04** - 实验室环境
## 架构
```
[attacker container] --> [network-lab: 172.23.0.0/24] --> [DVWA 172.23.0.2:80]
|
[br-d5305e450180 bridge interface]
/
[Suricata IDS] [Zeek NSM]
signature alerts protocol logs
alerts/fast.log logs/http.log
alerts/eve.json logs/conn.log
```
## 方法论
1. 创建隔离的 Docker 网络 (172.23.0.0/24)
2. 以 host 网络模式部署 Suricata,监控 bridge 接口
3. 以 host 网络模式部署 Zeek,监控同一接口
4. 从攻击者容器向 DVWA 发起攻击
5. 收集并分析 Suricata 告警和 Zeek 日志
## 攻击场景与检测
### 攻击矩阵
| 攻击类型 | 工具 | Suricata 规则 | 告警 |
|-------------|------|---------------|-------|
| SQL 注入 (UNION SELECT) | curl | sid:1000001,1000002 | ET WEB_SPECIFIC SQL Injection |
| XSS (script 标签) | curl | sid:1000003 | ET WEB_SPECIFIC XSS Attempt |
| 目录遍历 | curl | sid:1000004,1000005 | ET WEB_SPECIFIC Directory Traversal |
| 命令注入 | curl | sid:1000006 | ET WEB_SPECIFIC Command Injection |
| 暴力破解登录 | curl loop | sid:1000007 | ET WEB_SPECIFIC Brute Force Login |
### Suricata 告警示例 (fast.log)
06/07/2026-10:16:34.032118 [] [1:1000001:2] ET WEB_SPECIFIC SQL Injection - UNION SELECT [] [Classification: Web Application Attack] [Priority: 1] {TCP} 172.23.0.3:32790 -> 172.23.0.2:80
06/07/2026-10:16:34.048041 [] [1:1000003:2] ET WEB_SPECIFIC XSS Attempt - script tag [] [Classification: Web Application Attack] [Priority: 1] {TCP} 172.23.0.3:32802 -> 172.23.0.2:80
06/07/2026-10:16:34.055554 [] [1:1000004:2] ET WEB_SPECIFIC Directory Traversal ../ [] [Classification: Web Application Attack] [Priority: 1] {TCP} 172.23.0.3:32818 -> 172.23.0.2:80
06/07/2026-10:16:34.063893 [] [1:1000006:2] ET WEB_SPECIFIC Command Injection passwd [] [Classification: Web Application Attack] [Priority: 1] {TCP} 172.23.0.3:32822 -> 172.23.0.2:80
06/07/2026-10:16:34.122916 [] [1:1000007:2] ET WEB_SPECIFIC Brute Force Login POST [] [Classification: Attempted Information Leak] [Priority: 2] {TCP} 172.23.0.3:32872 -> 172.23.0.2:80
### Zeek HTTP 日志示例 (http.log)
ts uid src_ip src_port dst_ip dst_port method uri
1780827350.37 CFY2HR2v5xERckN9bc 172.23.0.3 35348 172.23.0.2 80 GET /vulnerabilities/sqli/?id=1+union+select+1,2--&Submit=Submit
## 自定义 Suricata 规则
规则位于 `suricata/rules/local.rules` 中。所有规则均使用 `any any -> any any` 来捕获网络内部流量:
- 通过 URI 中的 `union`+`select` 关键字检测 SQL 注入
- 通过 URI 中的 `script` 关键字检测 XSS
- 通过 `../` 和 `etc/passwd` 模式检测目录遍历
- 通过请求体中的 `passwd` 检测命令注入
- 通过对 login.php 发送 POST 请求的阈值(10秒内 3 次请求)检测暴力破解
## Zeek 配置
Zeek 会记录所有 HTTP 请求,包括完整的 URI、方法、响应代码和 user agent。配置时使用了 `-C` 标志,以忽略虚拟化环境中的 TCP checksum offloading。
已加载的基础协议:HTTP、DNS、FTP、Notice framework。
## 展示的核心技能
- 网络 IDS 部署与配置 (Suricata 8.0.4)
- 编写自定义的兼容 Snort 的规则(7 条规则,5 个攻击类别)
- 使用 Zeek 进行网络安全监控(HTTP/DNS/conn 日志记录)
- Web 攻击模式识别(SQLi、XSS、LFI、CMDi、BruteForce)
- 用于隔离实验室环境的 Docker 网络架构
- 告警分类与日志关联(Suricata eve.json + Zeek http.log)
标签:CISA项目, Docker, Metaprompt, Rootkit, Suricata, Zeek, 安全防御评估, 漏洞靶场, 版权保护, 现代安全运营, 网络安全, 防御检测, 隐私保护