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, 人工智能安全, 合规性, 多智能体系统, 威胁情报系统, 安全警报, 实时仪表盘, 异常检测, 插件系统, 无后门, 机器学习, 测试用例, 特征工程, 网络安全监控, 网络日志分析, 逆向工具, 驱动开发