Nayanathaara/Network-Intrusion-Detection-Packet-Analysis-Suricata
GitHub: Nayanathaara/Network-Intrusion-Detection-Packet-Analysis-Suricata
基于 Suricata 的网络入侵检测与数据包分析实验项目,演示了自定义 IDS 规则开发、攻击流量捕获及分析师风格的调查报告全流程。
Stars: 0 | Forks: 0
# 使用 Suricata 进行网络入侵检测与数据包分析
## 项目概述
本项目演示了如何部署和使用 **Suricata** 作为网络入侵检测系统 (NIDS),以在受控的家庭实验室环境中监控网络流量。通过从 Kali Linux 攻击机向 Metasploitable 目标机发起模拟攻击,生成了基于网络的安全事件。
我们开发了自定义的 Suricata 检测规则,用于识别 **Nmap 网络扫描** 和 **SQL injection 尝试**。在每次攻击期间,使用 **tcpdump** 捕获网络流量,随后在 **Wireshark** 中进行分析,以验证检测到的活动并检查底层的网络数据包。
本项目展示了完整的操作流程,包括生成攻击流量、检测恶意网络活动、捕获数据包、验证告警以及执行数据包级别的分析。
## 展示技能
* 网络入侵检测 (NIDS)
* Suricata 规则开发
* 使用 tcpdump 进行数据包捕获
* 使用 Wireshark 进行数据包分析
* TCP/IP 协议分析
* Nmap 检测
* SQL Injection 检测
* 网络流量分析
* MITRE ATT&CK 映射
## 目标
* 将 Suricata 部署为网络入侵检测系统。
* 创建基础的自定义 Suricata 规则,以检测侦察和 Web 攻击活动。
* 从 Kali Linux 攻击机向存在漏洞的 Metasploitable 目标机模拟网络攻击。
* 在每次攻击期间使用 tcpdump 捕获网络流量。
* 在 Wireshark 中通过数据包级别的分析验证 Suricata 的检测结果。
* 记录调查过程,并将观察到的活动映射到 MITRE ATT&CK 框架。
## 实验架构
本项目在受控的家庭实验室环境中实施,包含相互独立的攻击系统、目标系统和监控系统。
### 环境
| 组件 | 角色 |
| ----------------- | ----------------------------------------------------------------- |
| Kali Linux VM | 用于执行 Nmap 扫描和 SQL injection 攻击的攻击机 |
| Metasploitable VM | 存在漏洞的目标系统 |
| Ubuntu Server VM | 承载 Suricata IDS 的主机 |

*图 1. 用于网络入侵检测和数据包分析的家庭实验室架构。*
## 使用的工具
| 工具 | 用途 |
| ------------------------------------ | ----------------------------------- |
| Suricata | 网络入侵检测系统 (NIDS) |
| Kali Linux | 攻击模拟 |
| Metasploitable | 存在漏洞的目标机 |
| tcpdump | 网络数据包捕获 |
| Wireshark | 数据包分析 |
| Nmap | 网络侦察 |
| DVWA / Metasploitable Web Application | SQL injection 测试 |
## 准备阶段
在执行攻击场景之前,通过配置 Suricata 以检测恶意网络活动,完成了监控环境的准备工作。
准备工作包括:
- 在 Ubuntu Server VM 上安装 Suricata。
- 配置 Suricata 将告警记录到 **eve.json**。
- 为以下内容创建自定义检测规则:
- Nmap TCP 端口扫描。
- SQL injection 尝试。
创建了两条自定义 Suricata 特征规则,用于检测模拟的攻击场景。
- **LAB Potential TCP Port Scan** – 检测 TCP SYN 端口扫描活动。
- **LAB SQL Injection** – 检测包含 SQL injection 模式的 HTTP 请求。

*图 2. 为检测 Nmap 扫描和 SQL injection 尝试而开发的自定义 Suricata 规则。*
- 配置 **tcpdump** 以捕获网络流量,用于数据包分析。

*图 3. 配置 tcpdump 以捕获 Nmap 网络流量,用于离线数据包分析。*

*图 4. 配置 tcpdump 以捕获 SQL injection 网络流量,用于离线数据包分析。*
## 攻击场景
模拟了两个攻击场景,以评估 Suricata 检测恶意网络活动的能力,并通过数据包分析验证生成的告警。
### 场景 1 – 网络侦察 (Nmap 扫描)
Kali Linux 攻击机对 Metasploitable 目标执行了 **TCP SYN (`-sS`)** 和 **TCP ACK (`-sA`)** 扫描,以模拟网络侦察活动。

*图 5. 从 Kali Linux 对 Metasploitable 目标执行的 Nmap 扫描 (TCP SYN)。*

*图 6. 从 Kali Linux 对 Metasploitable 目标执行的 Nmap 扫描 (TCP ACK)。*
### 场景 2 – SQL Injection
对托管在 Metasploitable 机器上的存在漏洞的 Web 应用程序执行了 SQL injection 攻击。该攻击包括使用 **`' OR 1=1 --`** 绕过身份验证,以及使用 **`UNION SELECT 1,2,3`** 进行注入,以模拟数据提取技术。

*图 7. 针对存在漏洞的 Web 应用程序的 SQL injection 尝试。*

*图 8. 针对存在漏洞的 Web 应用程序的 SQL injection 尝试。*
**开发了自定义 Suricata 检测规则以识别这两次攻击。在攻击期间,使用 **tcpdump** 捕获网络流量,同时 Suricata 将生成的告警记录在 **eve.json** 中。随后在 **Wireshark** 中对捕获的 PCAP 进行分析,以验证检测到的侦察活动。**
## 完整调查报告
下方提供了详细的调查记录,包括对这两个攻击场景的告警分析、数据包检查、证据收集和调查结果。
**[查看完整调查报告 - Nmap 扫描 ](Network-Recon-Incident-Report.md)**
**[查看完整调查报告 - SQL Injection 攻击 ](SQLI-Incident-Report.md)**
## 经验总结
- 获得了将 Suricata 部署和配置为网络入侵检测系统的实践经验。
- 加深了对开发自定义 IDS 规则以检测侦察和 Web 应用程序攻击的理解。
- 巩固了使用 tcpdump 和 Wireshark 进行数据包分析的技能。
- 学会了将 IDS 告警与捕获的网络流量进行关联,以验证恶意活动。
- 通过数据包级别的检查加深了对 TCP/IP 协议的理解。
- 获得了将检测到的网络攻击映射到 MITRE ATT&CK 框架的实践经验。
标签:CISA项目, DOE合作, Metaprompt, Suricata, Wildcard支持, Wireshark, 句柄查看, 插件系统, 现代安全运营, 网络安全, 隐私保护