pekulic-crypto/suricata-detection-lab

GitHub: pekulic-crypto/suricata-detection-lab

一个基于双虚拟机环境的 Suricata IDS 自定义检测规则实验室,针对五类常见攻击手法编写并验证了从默认规则集中缺失的检测能力。

Stars: 0 | Forks: 0

# Suricata 检测实验室 一个专注于编写和测试自定义 Suricata IDS 规则的家庭实验室项目。 通过使用双虚拟机设置(Kali 作为攻击者,Ubuntu 作为受监控主机),本项目 证明了默认的 Suricata 规则集(ET Open)在快速、低延迟的本地网络中会漏掉 常见的攻击模式——并展示了如何针对不同的技术和协议层编写有针对性的 检测规则以弥补这一漏洞。 ## 架构 - **防御端虚拟机:** Ubuntu Server 24.04,IP 192.168.137.134,运行 Suricata IDS - **攻击者虚拟机:** Kali Linux,IP 192.168.137.138 - **网络:** VMware NAT(两台虚拟机位于同一网段) - **Hypervisor:** VMware Workstation ## 仓库结构 - `setup/` — Suricata 配置和自定义规则说明 - `attacks/` — 用于模拟每次攻击的命令,包含结果和调试说明 - `logs/` — 从 Suricata 的 `fast.log` 中提取的检测证据 ## 检测规则摘要 | SID | 规则 | 技术 | 协议 / 层级 | |---|---|---|---| | 1000001 | SSH 爆破 | 连接阈值 | TCP | | 1000002 | 端口扫描 | 连接阈值 | TCP | | 1000003 | ICMP Ping 扫描 | 数据包阈值 | ICMP | | 1000004 | 可疑 User-Agent | 内容匹配 | HTTP(应用层) | | 1000005 | SQL 注入尝试 | 内容匹配 | HTTP(应用层) | 这五条规则全部从零开始编写,添加到了 `local.rules` 中,并通过 在防御虚拟机上逐一触发并在 `fast.log` 中捕获生成的警报,确认其能够正常工作。 ## 结果 ### SSH 爆破 (Hydra) - 命令:`hydra -L users.txt -P passwords.txt ssh://192.168.137.134` - 默认的 ET Open 规则没有现成的 SSH 爆破规则 - 自定义规则 (sid 1000001):60秒内对端口 22 发起 5 次以上连接 - 结果:成功触发警报 ### 端口扫描 (Nmap) - 命令:`nmap -sS -T5 -p- 192.168.137.134` - 默认的 ET Open 规则未能检测到快速的本地扫描 - 自定义规则 (sid 1000002):10秒内对不同端口发起 20 次以上连接 - 结果:成功触发警报 ### ICMP Ping 扫描 - 命令:`ping -c 15 -i 0.2 192.168.137.134` - 有趣的发现:`nmap -sn` 在同一本地网段中使用 ARP 请求(而非 ICMP) 进行主机发现,因此改用直接的快速 ping 来可靠地触发基于 ICMP 的检测 - 自定义规则 (sid 1000003):5秒内产生 10 次以上 ICMP 回显请求 - 结果:成功触发警报 ### 可疑 User-Agent - 设置:在防御虚拟机上运行简单的 Python HTTP 服务器 (`python3 -m http.server 8080`) - 命令:`curl http://192.168.137.134:8080` - 自定义规则 (sid 1000004):标记带有 `curl` User-Agent 字符串的 HTTP 请求 - 结果:成功触发警报 ### SQL 注入尝试 - 命令:`curl "http://192.168.137.134:8080/?id=1%20UNION%20SELECT%20username,password%20FROM%20users"` - 自定义规则 (sid 1000005):标记 URI 中包含 `UNION` + `SELECT` 的 HTTP 请求 - 结果:成功触发警报——并同时触发了 User-Agent 规则 (sid 1000004), 这说明了分层检测能够从多个角度捕获同一个请求 - 调试说明:该规则最初由于拼写错误(将协议关键字 `http` 误写为 `htpp`)导致加载失败。Suricata 的配置测试标志 (`suricata -T`) 在服务重启前就轻松捕获了这个问题——这是在部署任何自定义规则之前 非常有用的验证步骤
标签:CISA项目, CTI, Suricata, 威胁检测规则, 插件系统, 现代安全运营, 网络安全, 网络流量分析, 虚拟化实验环境, 隐私保护