aryanmalto9/Network-Intrusion-Detection-Engineering-using-Snort
GitHub: aryanmalto9/Network-Intrusion-Detection-Engineering-using-Snort
基于 Snort 的网络入侵检测工程项目,涵盖自定义规则编写、攻击模拟、检测指标量化和 MITRE ATT&CK 映射,用于构建可验证的 SOC 检测工作流。
Stars: 0 | Forks: 0
# 使用 Snort 进行网络入侵检测工程
一个检测工程项目实战:基于 Snort 的网络入侵检测系统 (NIDS),包含自定义规则、攻击模拟脚本(用于测试你*自己的*实验室)、检测验证工具、误报分析以及 MITRE ATT&CK 映射。
## 1. 项目概述
本项目模拟了一个小型的 SOC 检测工程工作流:
1. 在实验室网络中将 Snort 部署为 NIDS。
2. 为常见攻击技术(扫描、暴力破解、Web 攻击、C2/信标指标等)编写和调优自定义规则。
3. 在实验室中生成匹配的攻击流量,以验证每条规则都能成功触发。
4. 解析 Snort 的告警日志,并根据带有标签的基线和攻击流量计算检测指标(精确率/召回率/误报率)。
5. 将每条规则映射到 MITRE ATT&CK 技术,并生成覆盖率矩阵。
## 2. 架构
```
flowchart LR
A[Attacker VM] -->|Simulated Attacks| B[Network Tap / Span Port]
C[Normal Traffic Gen] --> B
B --> D[Snort Sensor]
D -->|alert log| E[Log Parser - Python]
E --> F[Metrics Engine]
E --> G[MITRE Mapping]
F --> H[Coverage / FP Report]
G --> H
H --> I[Markdown / CSV Reports]
```
## 3. 目录结构
```
Network-Intrusion-Detection-Engineering/
├── README.md
├── LICENSE
├── requirements.txt
├── setup.sh
├── report/
│ └── Performance_Report.md
├── snort/
│ ├── local.rules
│ ├── snort.conf
│ └── classification.config
├── attacks/
│ ├── nmap_scan.sh
│ ├── hydra_attack.sh
│ ├── metasploit_demo.md
│ ├── ping_flood.sh
│ └── port_scan.py
├── pcaps/
├── scripts/
│ ├── traffic_generator.py
│ ├── log_parser.py
│ ├── alert_statistics.py
│ ├── benchmark.py
│ ├── mitre_mapping.py
│ └── false_positive_analysis.py
├── docs/
│ ├── Installation.md
│ ├── Rule_Writing_Guide.md
│ ├── Testing.md
│ ├── Detection_Logic.md
│ └── MITRE.md
└── screenshots/
```
## 4. 使用工具
Ubuntu/Kali Linux, Snort 2.9.x, Python 3.10+, Wireshark/tcpdump, Nmap, Hydra, hping3, Metasploit (实验室使用), Git。
## 5. 快速开始
```
git clone
cd Network-Intrusion-Detection-Engineering
sudo bash setup.sh
sudo snort -c snort/snort.conf -i eth0 -A console -l /var/log/snort
```
在第二个终端中,生成实验室流量并进行验证:
```
bash attacks/nmap_scan.sh
python3 scripts/log_parser.py /var/log/snort/alert
python3 scripts/mitre_mapping.py
python3 scripts/false_positive_analysis.py --alerts alerts.csv --baseline baseline.csv
```
## 6. 示例告警输出
```
[**] [1:1000001:1] SCAN Nmap TCP SYN Scan Detected [**]
[Classification: Attempted Information Leak] [Priority: 2]
07/27-10:14:22.981223 10.0.0.5:51422 -> 10.0.0.10:22
TCP TTL:64 TOS:0x0 ID:41221 IpLen:20 DgmLen:44
******S* Seq: 0xA1B2C3D4 Ack: 0x0 Win: 0x1000
```
## 7. 检测规则
涵盖扫描、暴力破解、Web 攻击和 C2 指标的 30 条自定义规则位于 [`snort/local.rules`](snort/local.rules) 中,文档记录在 [`docs/Rule_Writing_Guide.md`](docs/Rule_Writing_Guide.md) 中。
## 8. MITRE ATT&CK 映射
完整表格见 [`docs/MITRE.md`](docs/MITRE.md),由 [`scripts/mitre_mapping.py`](scripts/mitre_mapping.py) 程序化生成。
## 9. 性能/指标
请参阅 [`report/Performance_Report.md`](report/Performance_Report.md) — 包含精确率、召回率、误报率的方法论及示例结果。
## 10. 后续工作
- Suricata 移植,用于多线程检测。
- 集成 ELK/Wazuh,用于告警聚合和仪表盘展示。
- Docker Compose 实验室(传感器 + 靶机 + 攻击者容器),实现一键复现。
- CI 任务:针对 `local.rules` 重放带有标签的 pcap 语料库,并在出现回归(精确率/召回率阈值)时使构建失败。
## 11. 许可证
MIT — 见 [`LICENSE`](LICENSE)。
## 12. 免责声明
仅供经授权的实验室/教育用途使用。你有责任遵守所有适用的法律,并且仅对你拥有或获得明确授权的系统进行测试。
标签:CTI, Python, 云计算, 安全, 应用安全, 无后门, 网络流量分析, 规则引擎, 超时处理