s-shahzad/Universal-NIDS

GitHub: s-shahzad/Universal-NIDS

一个混合机器学习网络入侵检测研究平台,融合多引擎检测与证据留存,提供从数据摄取到分析师报告的完整工作流。

Stars: 0 | Forks: 0

# 通用 NIDS **混合网络入侵检测,附带经证据支持的实验室验证。** Universal NIDS 是一个以研究为先的入侵检测工作区,它将实时数据包捕获、离线 PCAP 重放、可选的 Suricata/Zeek 适配器摄取、静态工件分析、多引擎检测、留存证据以及面向分析师的报告统一在一个代码库中。它的构建旨在展示的不仅是它能检测到什么,还包括它在实际条件下的行为表现以及其当前的边界在哪里。 ## 架构 ``` +--------------------+ +--------------------+ +---------------------------+ | INPUT SOURCES | ---> | INGEST LAYER | ---> | PARSE / NORMALIZE | |--------------------| |--------------------| |---------------------------| | Live NIC capture | | Live capture | | Packet parsing | | Offline PCAP replay| | Offline replay | | Flow normalization | | Suricata JSON | | Adapter ingest | | Event shaping | | Zeek JSON | | Artifact intake | | Common schema output | | Artifact / file | +--------------------+ +-------------+-------------+ +--------------------+ | v +---------------------------+ | FEATURE EXTRACTION | +-------------+-------------+ | v +-------------------------------------------+ | DETECTION ENGINES | |-------------------------------------------| | Signature rules (YAML) | | Statistical anomaly (EWMA / z-score) | | Supervised ensemble (RF + ET + HGB + XGB)| | Unsupervised (IsolationForest + AE) | | Fusion engine (combined risk score) | +-------------------+-----------------------+ | v +-----------------------------------------------+ | SUPPRESSION + RETENTION | |-----------------------------------------------| | Alert suppression with audit log | | SQLite (nids.db) + JSONL (alerts / flows) | +-------------------+---------------------------+ | v +---------------------------------------------------+ | ANALYTICS + REPORTING | |---------------------------------------------------| | Live dashboard (WebSocket + HTTP fallback) | | Offline graphs and visual analytics | | Incident / SLA / threshold tuning reports | | AI-assisted triage (local LLM, no data egress) | +---------------------------------------------------+ ``` ## 功能 | 领域 | 支持内容 | |------|-------------------| | **摄取** | 实时网卡捕获,离线 PCAP 重放,Suricata/Zeek JSON 适配器 | | **工件分析** | 无需文件执行的静态分诊 — PE, PDF, Office, 脚本 | | **检测** | 签名规则,统计异常 (EWMA/z-score/DNS 突发),监督式集成 (RF + ET + HGB + XGB),可选的无监督 (IsolationForest + 自编码器),融合评分 | | **留存** | SQLite,每次运行的 JSONL (警报、流、指标),训练好的模型 pickle | | **仪表盘** | 实时 WebSocket 仪表盘,支持事件确认/抑制操作,传感器比较,异常趋势带,漂移警报,URL 持久化过滤器 | | **报告** | 事件报告,每周 SLA 摘要,阈值调优指南,可视化分析 | | **AI 分诊** | 针对现有运行文件夹的本地 LLM 分诊 — 数据不会离开本机 | | **实验室** | 通过 `adversary_lab` 进行对抗重放场景(可选,GPL 许可 — 参见 [许可协议](#licensing)) | ## 快速开始 ### 前置条件 - Python 3.10+ - Linux 或 Windows(实时捕获需要适当的权限) ### 安装 ``` git clone https://github.com//nids.git cd nids python -m venv .venv # Linux/macOS source .venv/bin/activate # Windows .venv\Scripts\activate pip install -r requirements.txt ``` ### 针对 PCAP 目录运行离线检测 ``` python -m nids run --pcap-dir pcaps --rules rules/rules.yml ``` ### 运行实时捕获 ``` # Linux(需要提升权限以进行 packet capture) sudo python -m nids run --interface eth0 --rules rules/rules.yml ``` ### 运行完整的混合堆栈(签名 + 异常 + 监督式 + 无监督) ``` python -m nids run --pcap-dir pcaps --labels pcaps/labels.csv --unsupervised ``` ### 打开实时仪表盘 ``` python -m nids dashboard --from-db output/nids.db --host 127.0.0.1 --port 8000 ``` 然后在浏览器中打开 `http://127.0.0.1:8000/dashboard`。 ### 生成事件报告 ``` python -m nids report --from-db output/nids.db --out reports/summary.md ``` ### 在现有的运行文件夹上运行 AI 辅助分诊(本地 LLM,无网络流出) ``` # Windows .\nids-triage.cmd "output\" # 输出:同一文件夹中的 triage_.json + triage__report.md ``` ### 训练并评估监督式集成模型 ``` python -m nids train --from-db output/nids.db --out models/model.pkl python -m nids evaluate --from-db output/nids.db --model models/model.pkl --out reports/ml_evaluation.json ``` ## 验证概览 本项目将验证视为一等输出。当前的基线: | 指标 | 结果 | |---------|-------:| | 收集的测试套件 | 152 | | 默认套件结果 | 144 个通过,8 个取消选择 | | 活跃的 pytest 警告 | 0 | | 代码覆盖率 | 79.16% | | 覆盖率底线(强制执行) | 72% | | 最新离线实验室场景通过数 | 5 | | 最新预备环境通过数 | 17 个清单中的 10 个 | | 良性压力测试(已调优) | 1,416 个流 — 0 警报 | | 试运行压力测试 | 4,742 个流 — 0 警报,900 秒试运行中重启延迟为 13.3 秒 | **精选预备环境亮点:** - `PREP-ENV-003` — 留存的队列深度和丢包证据(压力下 99.7% 丢包率,已正确计算) - `PREP-ENV-005` — 误报判定:应用了有针对性的无监督调优更改,重新运行 1,416 个良性流,达到 0 警报 - `LAB-SCN-005` — 结合网络与工件证据:7 个流,1 个网络警报,4 个工件行,2 个被隔离的高风险工件 ## 本代码库不包含什么 这是一个研究和作品集项目,而不是生产级安全产品。具体来说: - 未经验证是否可用于零停机的生产环境运行 - 尚未在生产级流量下进行全时长的良性压力测试验证 - 没有企业级支持或商业维护 - 实时仪表盘和 API 设计为**仅供本地使用** (127.0.0.1) — 在未添加身份验证中间件的情况下,请勿将其暴露给外部 ## 文档 | 文档 | 描述 | |----------|-------------| | [项目单页简介](docs/project_one_pager.md) | 摘要、架构和指标 | | [展示故事](docs/showcase_story.md) | 是什么让它有别于典型的 IDS 演示 | | [验证主记录](docs/testing_validation_master.md) | 完整的测试和场景证据 | | [误报分析](docs/false_positive_analysis.md) | 调优决策和判定日志 | | [部署就绪检查清单](docs/deployment_readiness_checklist.md) | 当前的就绪门状态 | | [证据清单](docs/evidence_inventory.md) | 存在哪些证据及其位置 | | [论文大纲](docs/paper_outline.md) | 研究论文规划 | ## 路线图 - [ ] 全时长良性压力测试验证 - [ ] 更广泛的良性流量判定语料库 - [ ] 针对抑制功能的实时证据运行 - [ ] 维护工作流决策(热重载 vs 重启) - [ ] 公开演示资产(精选截图、示例运行输出) ## 许可协议 核心 NIDS 检测引擎和 API(`src/NIDS/`,但不包含 `adversary_lab/`)采用 **MIT License** 授权 — 参见 [LICENSE](LICENSE)。 `src/NIDS/adversary_lab/` 组件依赖于 [Scapy](https://scapy.net) (仅限 GPL-2.0),因此采用 **GPL-2.0-or-later** 授权 — 参见 [src/NIDS/adversary_lab/LICENSE](src/NIDS/adversary_lab/LICENSE)。此组件是可选的,运行核心检测 pipeline 并不需要它。 ## 安全 要报告漏洞,请参阅 [SECURITY.md](SECURITY.md)。
标签:Apex, CatBoost, Metaprompt, Rootkit, Suricata, Zeek, 入侵检测系统, 安全数据湖, 机器学习, 现代安全运营, 网络安全, 网络流量分析, 逆向工具, 防御绕过, 隐私保护