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, 安全防御评估, 漏洞靶场, 版权保护, 现代安全运营, 网络安全, 防御检测, 隐私保护