higiphysical-maker/HiGI-IDS
GitHub: higiphysical-maker/HiGI-IDS
HiGI-IDS 是一个基于无监督学习的网络入侵检测引擎,通过几何异常检测从原始流量中识别未知攻击并生成可解释的取证报告。
Stars: 0 | Forks: 0
# HiGI IDS — 无监督网络异常检测引擎
## 概述
## 项目概览
- 🛡 构建了一个完全无监督的 IDS,能够从原始 PCAP 流量中检测未知的网络攻击
- ⚡ 亚分钟级检测延迟(端到端 < 1 分钟)
- 🎯 在 DoS/DDoS 上达到 100% 召回率(基于 CIC-IDS2017 受控基准测试)
- 🧠 无需标签 — 自动学习正常流量基线
- 📊 生成可解释的取证报告(映射至 MITRE ATT&CK)
## 实时流水线 / 演示
从训练到取证报告生成的完全可复现端到端流水线。(提取 → 训练 → 检测 → 取证报告)
- Notebook: [DEMO_NOTEBOOK.ipynb](./DEMO_NOTEBOOK.ipynb)
- 技术深入解析: [docs/technical_deep_dive.md](./docs/technical_deep_dive.md)
## 招聘者注记
本项目作为以下能力的端到端展示而构建:
- 统计异常检测与无监督学习。
- 机器学习工程与可复现工作流。
- 数据工程流水线 (Polars, PCAP 处理)。
- 可解释机器学习系统 (XAI) 与取证报告。
- 从数据接入到基准测试验证的端到端系统设计。
本代码库包含可复现的流水线、演示 Notebook、在 CIC-IDS2017 上的基准测试结果、[可解释的取证输出](./reports/forensic_wednesday/Wednesday_Victim_50_results_FORENSIC.md) 以及 [完整的技术文档](./docs/)。
[](https://www.python.org/)
[](./LICENSE)
[](https://peps.python.org/pep-0008/)
[](./reports/benchmarks/)
[](https://github.com/higiphysical-maker/HiGI-IDS/actions/workflows/ci.yml)
## 为什么这很重要
大多数入侵检测系统 (IDS) 都是围绕签名构建的:它们只能
标记已知的内容。这对于已知威胁很有效,但对于任何新事物都存在
盲区 — 一种新型攻击、一次微妙的探测,或者
一次在雷达之下潜伏的缓慢数据外泄。
HiGI 选择了不同的路径。它不再追逐签名,而是学习
正常流量的模样,并监视任何偏离该
基线的行为。当网络行为发生具有统计学意义的变化时,
系统就会将其标记出来 — 无需带标签的攻击数据,无需重新训练,也
不假设明天的威胁会像昨天一样。
## 我的贡献
- 从零开始设计了完整的无监督检测架构
- 实现了针对原始 PCAP 流量的特征工程流水线
- 构建了集成异常检测系统 (GMM, Isolation Forest, k-NN, velocity gating)
- 开发了带有 MITRE ATT&CK 映射的可解释取证引擎
- 在 CIC-IDS2017 基准上验证了系统
## 核心结果
- 在 DoS/DDoS 攻击上达到 100% 检测率 (CIC-IDS2017)
- 在正常流量基线上达到 0 误报
- 最多可提前 21 分钟检测到攻击信号
## 性能表现 (CIC-IDS2017 基准测试)
| 指标 | 数值 |
|------|------|
| 精确率 | **1.000** *(在正常控制日上无可报告的误报)* |
| 召回率 | **0.875–1.000** *(取决于周四会话中边缘情况的分类)* |
| F1-score | **0.933 (保守估计)** |
| 误报 | **0 (事件级别,正常日)** |
| 检测延迟 | **≤ 1 分钟** |
| 攻击前预检测 | **21 分钟早期信号 (侦察阶段)** |
**数据集:** CIC-IDS2017 (UNB)
**训练数据:** 仅周一的正常流量
**评估数据:** 未见过的攻击日 (周三/周四)
## 运营影响
| 运营指标 | 测量值 | 运营含义 |
|---|---|---|
| **可报告的误报 (8小时正常时段)** | **0** | 在完整的正常监控会话期间无虚假升级 |
| **抑制的阈值下瞬时事件** | **266** | 由稳定层吸收的事件,无需分析师干预 |
| **事件级 F1** | **0.933 (保守估计)** | 所有报告事件的精确率 Precision = 1.000 的检测可靠性 |
| **检测延迟** | **≤ 1 分钟** | 涵盖所有攻击类别,包括低速向量 |
| **攻击前检测窗口** | **21 分钟** | 在首次破坏性动作之前标记侦察活动 (周三) |
| **DoS/DDoS 召回率** | **100%** | 检测到所有四个周三的 DoS 变体;0 遗漏事件 |
## 项目结构
本代码库将研究、运行时工件和生产流水线分离开来:
- `src/` → 核心检测引擎
- `models/` → 训练好的统计基线
- `reports/` → 取证输出(可审计的结果)
- `data/` → 原始和处理后的网络流量
- `docs/` → 技术文档
## 核心架构
HiGI 是一个建立在正常流量统计建模基础上的**多层无监督检测系统**。
```
graph TD
A[Raw PCAP] --> B["Feature Extraction (36 features)"]
B --> C[Data Conditioning]
C --> D[Ensemble Detectors]
D --> E[Consensus Decision Layer]
E --> F[Temporal Stabilization]
F --> G[Forensic Engine]
G --> H["SOC Report (MITRE #43; XAI)"]
```
## 流水线概述
### 1. 特征提取
* 来自 1 秒网络窗口的 36 个流级别特征
* 基于 Polars 的流式接入 (PCAP → 特征矩阵)
### 2. 数据条件化
* Yeo-Johnson 幂变换(方差稳定性处理)
* 对每个特征家族进行分块 PCA
* 白化处理 → 使欧几里得距离 ≈ 马氏距离
### 3. 检测集成
**第一层 — 几何检测器**
* 从基线流形计算 k-NN BallTree 距离
**第二层 — 概率检测器**
* 贝叶斯高斯混合模型
* Isolation Forest(结构性异常值)
**第三层 — 特征级哨兵**
* 针对单个特征的异常评分
* 方向性指标(SPIKE / DROP)
* 高灵敏度检测 + 可解释性
**第四层 — Velocity Gate**
* 检测高速率洪泛 (DoS/DDoS)
* 捕获几何方法失效的情况(压缩方差攻击)
### 4. 共识决策层
加权集成投票:
* GMM + IForest + BallTree + Velocity 信号
* 通过校准阈值做出最终异常决策
### 5. 取证引擎 (XAI 层)
每个事件包含:
* 罪魁祸首特征(按重要性排序)
* 严重性评分
* MITRE ATT&CK 映射
* 面向分析师的结构化报告 (PDF + JSON + Markdown)
## 特征家族
| 家族 | 含义 |
| ---------- | ------------------------------ |
| Volume | 流量强度 (bytes, PPS) |
| Payload | 负载结构和密度 |
| Flags | TCP/ICMP 状态信号 |
| Protocol | 传输分布 |
| Connection | 图结构 + 时序行为 |
## 基准测试结果 (CIC-IDS2017)
### 星期三 — DoS/DDoS
| 攻击 | 检测 | 关键信号 |
| ------------ | -------- | ------------------------- |
| Slowloris | ✅ | 连接耗尽 |
| Slowhttptest | ✅ | ICMP + 会话压力 |
| Hulk | ✅ | 负载崩溃 |
| GoldenEye | ✅ | 极端负载偏差 |
### 核心洞察
HiGI 通过**偏离基线流量结构的统计偏差**来检测攻击,而不是依赖负载签名。
## 输出示例(取证引擎)
```
Incident #29 | Severity: CRITICAL
Features:
[Connection] unique_dst_ports +45.84 SPIKE
[Flags] syn_ratio +9.8 SPIKE
MITRE ATT&CK:
T1499.001 — Resource Exhaustion Flood
Decision:
BallTree ✔ | GMM ✔ | IForest ✔ | Sentinel ✔
```
## 技术栈
* Python 3.11+
* scikit-learn (GMM, IsolationForest, BallTree)
* Polars (高性能接入)
* NumPy / Pandas
* Matplotlib (分析与报告)
* ReportLab (PDF 取证报告)
* PyYAML (配置驱动架构)
## 快速开始
```
git clone https://github.com/higiphysical-maker/HiGI-IDS
cd higi-ids
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt
```
### 训练基线
```
python main.py train --source data/raw/Monday.pcap --bundle models/baseline.pkl
```
### 检测攻击
```
python main.py detect \
--source data/raw/Wednesday.pcap \
--bundle models/baseline.pkl
```
### 生成取证报告
```
python main.py report \
--results data/processed/results.csv \
--bundle models/baseline.pkl \
--output-dir reports/
```
## 局限性
HiGI **不**检测:
* 语义层 Layer 7 攻击 (SQLi, XSS, injection)
* 加密负载内容异常
* 在没有基线刷新的高度非平稳环境下的异常
## 未来工作
* 实时流式接入 (AF_PACKET / scapy)
* 针对非平稳网络的自适应基线
* 主动响应集成 (iptables / nftables)
* 多数据集验证 (UNSW-NB15, CIC-IDS2019)
## 延伸阅读
获取完整的技术深入解析(理念、完整架构、详细局限性以及 Docker 部署),**[请参阅技术 README](./docs/technical_deep_dive.md)**。
**[docs/](./docs/)** 目录中提供了英文和西班牙文的额外手册。
## 许可证
MIT License — 完整条款请参见 [`LICENSE`](./LICENSE)。开放用于研究和生产实验。
*HiGI IDS — 由 Pablo Aguadero 创建和开发,2026 年。架构迭代、代码审查和文档起草使用了 AI 辅助工具 (Gemini, Claude, GitHub Copilot)。所有设计决策、特征工程和验证协议均为作者的原创工作。*
*基于 CIC-IDS2017 验证。参考:Engelen, G., Rimmer, V., & Joosen, W. (2021). Troubleshooting an Intrusion Detection Dataset: the CICIDS2017 Case Study. IEEE EuroS&PW. doi:10.1109/EuroSPW54576.2021.00015*
标签:Apex, 异常检测, 恶意代码分类, 数字取证, 机器学习, 网络安全, 网络流量分析, 自动化脚本, 逆向工具, 防御绕过, 隐私保护