Gitlovess/network-security-monitoring-lab

GitHub: Gitlovess/network-security-monitoring-lab

该项目构建了一个三层网络安全监控实验室,集成 TShark、Zeek 和 Suricata 实现从原始流量捕获到协议分析再到入侵检测的完整 NSM 技术栈。

Stars: 0 | Forks: 0

# 🛡️ 网络安全监控 (NSM) 实验室 一个构建在虚拟化内部网络(`192.168.56.0/24`)上的三层网络安全监控技术栈,结合了原始数据包捕获、协议智能分析和主动威胁检测。 ## 🧪 实验室架构 ``` ┌─────────────────────────────────────────────┐ │ Host-Only Network: 192.168.56.0/24 │ │ │ │ ┌──────────────┐ ┌──────────────────┐ │ │ │Ubuntu Desktop│ │ Windows 10 │ │ │ │ (Attacker) │ │ (Target) │ │ │ └──────┬───────┘ └────────┬─────────┘ │ │ │ │ │ │ └──────────┬───────────┘ │ │ │ │ │ ┌──────────▼──────────┐ │ │ │ Ubuntu Server │ │ │ │ (Monitor - enp0s8) │ │ │ │ Promiscuous Mode │ │ │ │ ┌───────────────┐ │ │ │ │ │ TShark │ │ Layer 1 │ │ │ │ Zeek │ │ Layer 2 │ │ │ │ Suricata │ │ Layer 3 │ │ │ └───────────────┘ │ │ │ └─────────────────────┘ │ └─────────────────────────────────────────────┘ ``` 监控服务器的 `enp0s8` 接口被设置为 **混杂模式(允许虚机)**,以捕获终端节点之间的所有横向流量。 ## 🔧 工具与技术栈 | 层级 | 工具 | 用途 | |-------|------|---------| | 第 1 层 | **TShark** | 原始数据包捕获与取证 PCAP 记录 | | 第 2 层 | **Zeek** | 协议智能 — 结构化连接日志 | | 第 3 层 | **Suricata** | IDS — 基于特征的实时威胁检测 | ## 📋 命令参考 ### 系统设置 ``` # 通过 SSH 连接到监控服务器 ssh username@ # 更新系统仓库 sudo apt update ``` ### 第 1 层 — TShark(原始数据包捕获) ``` # 在 host-only 接口上捕获实时流量 sudo tshark -i enp0s8 # 仅捕获 ICMP (ping) 流量 sudo tshark -i enp0s8 -f "icmp" # 将流量记录到文件中持续 40 秒 sudo tshark -i enp0s8 -w /tmp/capture.pcapng -a duration:40 # 读取已保存的 capture 文件 sudo tshark -r /tmp/capture.pcapng # 在已记录的文件中过滤 ICMP 流量 sudo tshark -r /tmp/capture.pcapng -Y icmp ``` ### 第 2 层 — Zeek(协议智能) ``` # 将 capture 文件提供给 Zeek 进行离线分析 cd /tmp sudo /opt/zeek/bin/zeek -r capture.pcapng # 查看结构化连接日志 cat con.log # 以实时监控模式部署 Zeek sudo /opt/zeek/bin/zeekctl deploy # 检查 Zeek 运行状态 sudo /opt/zeek/bin/zeekctl status # 实时监控实时连接数据 sudo tail -f /opt/zeek/spool/zeek/con.log ``` ### 第 3 层 — Suricata(主动威胁检测) ``` # 安装 Suricata sudo apt install suricata # 启用开机自启动 sudo systemctl enable suricata # 拉取最新的 Emerging Threats ruleset(60,000+ 签名) sudo suricata-update # 验证 config 和自定义规则的语法错误 sudo suricata -t -c /etc/suricata/suricata.yaml # 重启 Suricata 以应用更改 sudo systemctl restart suricata # 实时查看警报 sudo tail -f /var/log/suricata/fast.log # 清除警报日志以进行全新测试 sudo truncate -s 0 /var/log/suricata/fast.log ``` ### 攻击者模拟(在 Ubuntu 桌面端运行) ``` # 生成 HTTP 流量以触发 User-Agent 检测 sudo apt install curl curl http:// # 针对 Windows VM 发起隐蔽的 TCP SYN 端口扫描 sudo apt install nmap sudo nmap -sS ``` ## ✍️ 自定义 Suricata 规则 位于 `/var/lib/suricata/rules/custom.rules` ### 规则 1 — 可疑 User-Agent 检测 ``` alert http any any -> any any ( msg:"Suspicious non-browser HTTP client detected"; content:"curl"; http_user_agent; sid:1000001; rev:1; ) ``` **逻辑:** 检查出站 HTTP `User-Agent` 头。当检测到 `curl` 时触发,表明使用了命令行工具而非合法浏览器 — 这是脚本化网络侦察或数据外泄的常见早期指标。 ### 规则 2 — 内部端口扫描检测 ``` alert tcp $HOME_NET any -> $HOME_NET any ( msg:"Internal Port Scan Detected (SYN Flood)"; flags:S; threshold:type threshold, track by_src, count 50, seconds 30; sid:1000002; rev:1; ) ``` **逻辑:** 跟踪所有内部到内部的 TCP SYN 数据包。如果单个主机在 30 秒内发送了 50 个以上的 SYN 请求,它将标记为一次活跃的端口扫描 — 这是横向移动和勒索软件前期侦察的核心技术。 ### 规则 3 — SMB 枚举探测 ``` alert tcp $HOME_NET any -> $HOME_NET 445 ( msg:"Potential Ransomware SMB Enumeration Probe"; flags:S; sid:1000003; rev:1; ) ``` **逻辑:** 在任何内部 TCP 尝试连接到端口 445 (SMB) 时触发。这是自传播勒索软件(例如 WannaCry)扫描内部易受攻击目标的关键指标。 ## 📁 仓库结构 ``` nsm-lab/ ├── README.md # This file ├── rules/ │ └── custom.rules # All custom Suricata detection rules ├── docs/ │ └── setup-notes.md # Extended lab setup documentation ├── captures/ │ └── .gitkeep # PCAP samples (add your own) └── screenshots/ └── .gitkeep # Evidence screenshots from detection tests ``` ## 🎯 展示技能 - 开启混杂模式的 Virtualbox 仅主机网络配置 - 使用 TShark/Wireshark 进行数据包捕获与取证分析 - 使用 Zeek 分析协议日志(`conn.log`、`dns.log`、`http.log`) - 使用 Suricata + Emerging Threats 规则集进行 IDS 部署与规则调优 - 编写自定义 Suricata 规则(阈值、内容匹配、标志检测) - 攻击者模拟:基于 curl 的 HTTP 探测、Nmap SYN 扫描 - 使用 `fast.log` 进行实时告警监控 ## 📌 参考 - [Suricata 文档](https://suricata.readthedocs.io/) - [Zeek 文档](https://docs.zeek.org/) - [Emerging Threats 开放规则集](https://rules.emergingthreats.net/) - [TryHackMe SOC Level 1 路径](https://tryhackme.com/path/outline/soclevel1)
标签:CTI, Metaprompt, Rootkit, Suricata, TShark, Zeek, 入侵检测系统, 安全实验环境, 安全数据湖, 攻击面映射, 现代安全运营, 网络安全监控, 驱动开发