akrishnash/anomaly-detection

GitHub: akrishnash/anomaly-detection

一个结合 Isolation Forest 与 GPT-4o 的 AI 网络安全代理,用于对真实僵尸网络流量进行无监督异常检测并生成带有 CVE 和 MITRE ATT&CK 背景的威胁分析报告。

Stars: 0 | Forks: 0

# SecureAI Agent — 针对真实僵尸网络流量的 AI 威胁分诊 ## 交互式演示 一个交互式的 **Streamlit 应用**(`streamlit_app.py`)可让你探索检测器*为什么*会 遇到瓶颈:它实时在真实的 CTU-13 流量上运行 Isolation Forest,并展示正常与恶意得分的 重叠情况、KS 上限,以及当你移动阈值时召回率/精确率如何权衡—— 而 AUC 和 KS 则保持不变。 ``` pip install -r requirements.txt streamlit run streamlit_app.py ``` **▶ 在线应用:** [anomaly-detection-5e6hvdpv5q7dmmisymrpdh.streamlit.app](https://anomaly-detection-5e6hvdpv5q7dmmisymrpdh.streamlit.app/) ## 该 Agent 的功能 ``` PCAP / network logs │ ▼ ┌─────────────────────────────┐ │ agent.py (GPT-4o loop) │ bounded tool-calling loop, full audit trail └──────┬───────────────┬──────┘ │ │ ▼ ▼ analyze_traffic() lookup_cve() (Isolation Forest) (CVE + MITRE ATT&CK KB) │ │ ▼ ▼ ┌─────────────────────────────┐ │ Grounded threat report: │ │ findings · severity · CVEs │ │ · ATT&CK · mitigations │ └─────────────────────────────┘ ``` 该 Agent **仅提供建议** —— 它绝不会采取自动化操作。每一次工具调用都会被 记录;人工审查始终是最终步骤。 ## 快速开始 ``` git clone https://github.com/akrishnash/anomaly-detection.git cd anomaly-detection pip install -r requirements.txt ``` ### 运行 Agent ``` export OPENAI_API_KEY=sk-... python agent.py ``` **本地 / 物理隔离模式** —— 在 `agent.py` 中替换两行代码,无需互联网连接: ``` # Cloud client = OpenAI() MODEL = "gpt-4o" # 通过 Ollama 进行 Local client = OpenAI(base_url="http://localhost:11434/v1", api_key="ollama") MODEL = "llama3.1" ``` ### 直接运行检测引擎 ``` python run_ctu13.py # 10-feature Isolation Forest on CTU-13 python run_ctu13_v2.py # all-features version (all CICFlowMeter columns) python compare_datasets.py # Attack vs Normal — Cohen's d, ROC, PR, threshold sweep python diagnose_overlap.py # score-overlap diagnosis (AUC + KS ceiling) python explain_isolation_forest.py # step-by-step IF walkthrough on toy data ``` 图表将保存到 `graphs/` 目录中。(请先将 CTU-13 CSV 文件放置在 `sample_logs/` 目录中 —— 来源: [imfaisalmalik/CTU13-CSV-Dataset](https://github.com/imfaisalmalik/CTU13-CSV-Dataset)。) ## 检测引擎 完全**无监督** —— 无需带标签的攻击数据。已在 CTU-13 上完成验证: ### `run_ctu13.py`(每类 6,000 个流,10 个特征) | 类别 | 精确率 | 召回率 | F1 | |---|---|---|---| | 正常 | 0.630 | 0.757 | 0.687 | | 攻击 | **0.695** | **0.555** | **0.617** | | 总体准确率 | | | **0.656** | ``` Confusion Matrix: TN = 4,541 FP = 1,459 FN = 2,671 TP = 3,329 ``` ### `compare_datasets.py`(每类 20,000 个流) | 指标 | 数值 | |---|---| | 攻击精确率 | 0.637 | | 攻击召回率 | 0.509 | | ROC-AUC | **0.706** | | 平均精确率 | 0.612 | ### 为什么隐蔽的攻击流量仍然会显示出攻击特征 CTU-13 主要是**僵尸网络 C&C** —— 故意保持静默和低流量。攻击流的中位数 字节率接近于零:这不是“没有发生任何事”,而是对于真实用户流量来说可疑地*过于 安静*。区分性信号(Cohen's d 效应量): | 特征 | Cohen's d | 方向 | 含义 | |---|---|---|---| | SYN Flag Count | **+0.86** | 攻击 > 正常 | 持续的连接尝试 —— 端口扫描 / C&C 建立 | | Packet Rate | **+0.63** | 攻击 > 正常 | 双峰分布:接近零的信标以及 DDoS 突发峰值 | | Fwd Pkts/s | **+0.63** | 攻击 > 正常 | 扫描阶段的高前向速率 | | FIN Flag Count | **+0.31** | 攻击 > 正常 | 许多被突然关闭的连接 | | Pkt Len Mean | **-0.19** | 正常 > 攻击 | 正常流量具有更大的数据包(HTTP/文件数据) | | Bwd Bytes | **-0.02** | 正常 > 攻击 | C&C 受害者以几乎为空的 ACK 进行回复 | Isolation Forest 会在**联合特征空间**中标记异常 —— 一个具有接近零 字节 + 偏高 SYN + 特定时序的流会处于一个孤立区域,随机树会将其迅速切断, 从而获得较低的(异常)得分。 ## 研究 该项目同时也是一个关于*为什么*无监督检测器会遇到瓶颈以及如何突破瓶颈的 活跃研究项目: - **`paper.md`** —— 工作论文:“异常 ≠ 恶意”,失败分解,以及 表示瓶颈实验。 - **`diagnose_overlap.py`** —— 核心诊断:正常与恶意得分分布, 包含 AUC 和 KS 距离上限。 - **`RESEARCH.md`** —— 四个方向(SHAP 可解释性、基准测试、联邦学习、流处理)。 - **`plan.md`** —— 1 个月的论文计划。 ## Isolation Forest 的工作原理 1. 构建 `n_estimators` 棵随机树,每棵树都基于随机特征子集构建。 2. 在每个节点上,随机选择一个特征和一个随机拆分值。 3. **异常点在靠近根节点处被隔离** —— 它们需要更少的拆分次数。 4. 异常得分 = 所有树中的平均路径长度(归一化后);路径越短 → 得分越低 → 被标记。 `explain_isolation_forest.py` 在一个包含 13 个点的玩具数据集上演示了这一过程,并提供了每个 树拆分的完整可视化。 ## 文件结构 ``` anomaly-detection/ │ ├── agent.py ← SecureAI Agent (OpenAI tool-calling loop) ├── cve_db.py ← CVE + MITRE ATT&CK knowledge base │ ├── run_ctu13.py ← Detection engine (10 features, 6K rows/class) ├── run_ctu13_v2.py ← All-features version ├── compare_datasets.py ← Attack vs Normal comparison (20K rows each) ├── diagnose_overlap.py ← Score-overlap diagnosis (AUC + KS ceiling) ├── explain_isolation_forest.py← IF explainability on toy data │ ├── graphs/ ← Output PNGs ├── requirements.txt ├── paper.md ← Draft research paper ├── plan.md ← 1-month paper plan ├── RESEARCH.md ← Research directions └── PROGRESS.md ← Experiment log ``` ## 数据集 **CTU-13** —— Sebastián García, Martin Grill, Jan Stiborek, Alejandro Zunino。 *“僵尸网络检测方法的实证比较”*,《Computers & Security》,2014 年。 [stratosphereips.org/datasets-ctu13](https://www.stratosphereips.org/datasets-ctu13) 包含 13 个真实僵尸网络流量场景(Neris、Rbot、Menti、Sogou、Murlo、NSIS.ay),捕获于 CTU 大学网络,并与正常的校园背景流量混合。
标签:AI智能体, AI风险缓解, AMSI绕过, CISA项目, IP 地址批量处理, Kubernetes, LLM工具调用, 威胁检测, 安全, 异常检测, 网络流量分析, 超时处理, 逆向工具, 防御绕过