Irsheidd/threat_intelligence

GitHub: Irsheidd/threat_intelligence

一个基于 Isolation Forest 异常检测和 CrewAI 多智能体编排的端到端网络威胁检测系统,从原始日志到可视化告警一站式覆盖。

Stars: 0 | Forks: 0

# 威胁情报系统 一个完整的多智能体威胁检测流水线,结合了机器学习异常检测、CrewAI 编排、Flask API 以及用于网络安全监控的交互式仪表盘。 ## 项目概述 该系统通过以下方式检测可疑网络活动: 1. **Detector Agent** — 使用 Isolation Forest 模型对传入的网络日志进行评分 2. **Analyzer Agent** — 用通俗易懂的语言解释可疑行为 3. **Reporter Agent** — 格式化结构化、可操作的警报 4. **仪表盘** — 实时可视化检测结果、警报和威胁严重程度 ## 项目结构 ``` ├── sources/ # Raw data │ └── network_logs.csv ├── data_prep/ # Feature engineering pipeline │ ├── feature_engineering.py # Parse logs → feature matrix │ ├── model.py # Train & save Isolation Forest │ ├── outputs/ │ │ ├── features_dataset.csv │ │ ├── anomaly_scores.csv │ │ └── models/isolation_forest.joblib │ └── schemas/create_table.sql ├── threat_intel/ # Shared detection logic │ ├── pipeline.py # Run model, score sessions, analyze │ └── alerts.py # Store and retrieve alerts ├── api/ # Flask API & Dashboard │ ├── app.py # REST endpoints + dashboard routes │ ├── test_api.py # Smoke tests │ ├── feature_extractor.py # Normalize incoming logs │ └── templates/dashboard.html # Interactive threat dashboard ├── test_crew/ # CrewAI multi-agent orchestration │ └── src/test_crew/ │ ├── main.py # Local runner (no LLM needed) │ ├── crew.py # Agent/task definitions │ ├── workflow.py # Deterministic workflow │ ├── config/agents.yaml # Detector/Analyzer/Reporter configs │ ├── config/tasks.yaml # Detection/Analysis/Reporting tasks │ └── tools/threat_tools.py # CrewAI-compatible tools ├── sample_logs.txt # Example network logs ├── requirements.txt # Root dependencies └── venv/ # Python virtual environment ``` ## 安装与设置 ### 1. 创建并激活虚拟环境 ``` python3 -m venv venv source venv/bin/activate ``` ### 2. 安装依赖项 ``` pip install -r requirements.txt ``` ### 3. (可选) 设置数据库 ``` export DATABASE_URL="postgresql://user:pass@host:5432/dbname" ``` ## 运行项目 ### 特征工程 (一次性设置) 将原始日志准备成特征工程数据集并训练模型: ``` venv/bin/python -m data_prep.feature_engineering venv/bin/python -m data_prep.model ``` 输出: - `data_prep/outputs/features_dataset.csv` — 清理后的特征矩阵 - `data_prep/outputs/models/isolation_forest.joblib` — 训练好的模型 - `data_prep/outputs/anomaly_scores.csv` — 检测结果 ### 选项 A:运行多智能体工作流 (不需要 LLM) 在示例日志上运行确定性的威胁工作流: ``` venv/bin/python test_crew/src/test_crew/main.py ``` 这将显示包含检测、分析和生成警报的结构化 JSON。 ### 选项 B:启动 Flask API 和仪表盘 启动交互式 Web 界面: ``` venv/bin/python api/app.py ``` 然后在浏览器中打开 `http://localhost:5002/dashboard`。 **可用端点:** - `GET /dashboard` — 交互式威胁仪表盘 - `POST /detect` — 分析日志并返回检测结果和警报 - `GET /api/alerts` — 检索带有严重性摘要的存储警报 - `GET /api/summary` — 获取警报统计信息 (critical、high、medium、low) ### 选项 C:运行 API 测试 验证检测流水线和警报生成: ``` venv/bin/python api/test_api.py ``` ## 核心组件 ### 共享威胁流水线 (`threat_intel/`) API 和 CrewAI 运行器都使用相同的确定性流水线: ``` from threat_intel.pipeline import run_threat_pipeline result = run_threat_pipeline(logs) # 返回: { # 'count': int, # 'suspicious_count': int, # 'detections': [...], # 'analyses': [...], # 'alerts': [...] # } ``` **流水线步骤:** 1. 解析并标准化日志条目 2. 提取特征 (IP 频率、登录失败次数、数据传输量等) 3. 使用 Isolation Forest 模型对会话进行评分 4. 根据评分阈值对异常进行分类 5. 生成威胁级别和建议 6. 存储结构化警报 ### CrewAI 智能体 三个专门的智能体负责处理威胁情报: - **Detector Agent** — 识别可疑会话和异常分数 - **Analyzer Agent** — 结合上下文分析发现的问题 (登录失败、异常国家/地区、数据流动) - **Reporter Agent** — 格式化带有严重级别和建议操作的警报 这三者都集成在 `test_crew/src/test_crew/crew.py` 中,并使用共享的威胁流水线以获得可重现的结果。 ### Flask API 和仪表盘 - **`/dashboard`** — 响应式 Web UI,显示警报历史记录、严重性细分和日志提交表单 - **`/detect`** — 用于程序化威胁分析的 JSON API - **`/api/alerts`** — 检索带有统计信息的警报历史记录 - 实时警报生成,存储在内存中 (重启后重置) ### 警报模式 每个生成的警报包括: ``` { "id": "alert-1", "session_id": "sess_025", "src_ip": "192.168.1.65", "dst_ip": "10.0.0.2", "timestamp": "2026-05-06T11:47:06.759086+00:00", "threat_level": "critical", "issue": "Suspicious network behavior", "description": "Clear explanation of detected activity", "recommended_action": "Specific steps for incident responders", "anomaly_score": -0.0998, "evidence": ["List", "of", "detection", "signals"] } ``` ## 威胁级别 - **Critical** — 多个高风险信号 (登录失败 + 大量传输 + 异常国家/地区) - **High** — 一个或多个高风险信号 - **Medium** — 检测到异常,但为低置信度信号 - **Low** — 常规活动 ## 开发说明 - 项目使用内存警报存储。重启 Flask 应用会清除警报历史记录。 - 对于持久化存储,可通过 `DATABASE_URL` 连接到 PostgreSQL。 - CrewAI 定义已为 detector/analyzer/reporter 工作流预先配置好,但不需要 LLM (以确定性方式运行)。 - 所有时间戳均为 ISO 8601 UTC 格式。 - 特征工程保留了每个会话的源/目标 IP,因此警报立足于实际的网络数据。
标签:Apex, CrewAI, Flask API, IP 地址批量处理, Isolation Forest, PyRIT, Python, REST API, 人工智能安全, 合规性, 多智能体系统, 威胁情报系统, 安全警报, 实时仪表盘, 异常检测, 插件系统, 无后门, 机器学习, 测试用例, 特征工程, 网络安全监控, 网络日志分析, 逆向工具, 驱动开发