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, 云计算, 安全, 应用安全, 无后门, 网络流量分析, 规则引擎, 超时处理