Atharv675/Threat-Intelligence-SOC-
GitHub: Atharv675/Threat-Intelligence-SOC-
一款集 OSINT 威胁情报聚合、日志威胁检测、事件管理与交互式可视化于一体的安全运营平台。
Stars: 0 | Forks: 0
# 威胁情报聚合器
[](https://www.python.org/)
[](https://fastapi.tiangolo.com/)
[](https://www.mongodb.com/)
[](LICENSE)
## 概述
这是一个生产级别的威胁情报聚合平台,从 OSINT 来源收集 IOC,执行智能关联和 MITRE ATT&CK 映射,检测操作日志中的威胁,管理安全事件,并通过专业的交互式仪表板可视化威胁态势。
### 核心功能
# ✅ **OSINT 收集** - 整合来自 AlienVault OTX、Abuse.ch 和 OpenPhish 的威胁情报
✅ **9 阶段流水线** - 标准化 → 富化 → 关联 → MITRE 映射 → 风险评分 → 生成告警 → 汇总 → 存储
✅ **日志接入** - 使用严格的 schema 验证解析和验证 auth、nginx 和 DNS 日志
✅ **检测引擎** - 有状态的行为启发式检测(SSH 暴力破解、Web 主动扫描、DNS DGA 查询)以及带有置信度评分的静态 IOC 匹配
✅ **事件生命周期** - 完整的事件管理(创建、更新状态、添加注释、分配分析师)
✅ **交互式仪表板** - 专业的黑紫色 D3.js 力导向节点图,支持缩放、平移和点击交互
✅ **OWASP 安全性** - 速率限制、输入验证、数据清理、无 SQL 注入、结构化日志记录
✅ **MongoDB 仓储模式** - 清晰的架构,无直接数据库访问
-> **OSINT 收集** - 整合来自 AlienVault OTX、Abuse.ch 和 OpenPhish 的威胁情报
->**9 阶段流水线** - 标准化 → 富化 → 关联 → MITRE 映射 → 风险评分 → 生成告警 → 汇总 → 存储
-> **日志接入** - 使用严格的 schema 验证解析和验证 auth、nginx 和 DNS 日志
->**检测引擎** - 将日志事件与存储的 IOC 进行匹配并提供置信度评分
-> **事件生命周期** - 完整的事件管理(创建、更新状态、添加注释、分配分析师)
->**交互式仪表板** - 专业的黑紫色 D3.js 力导向节点图,支持缩放、平移和点击交互
-> **OWASP 安全性** - 速率限制、输入验证、数据清理、无 SQL 注入、结构化日志记录
->**MongoDB 仓储模式** - 清晰的架构,无直接数据库访问
## 架构
```
┌────────────────────────────────────────────────────────┐
│ OSINT Sources (AlienVault, Abuse.ch, OpenPhish) │
└──────────────────────┬─────────────────────────────────┘
│
┌──────────────────────▼─────────────────────────────────┐
│ Intelligence Pipeline (Stage 1) │
│ ┌──────┐ ┌────────┐ ┌──────────┐ ┌────────┐ │
│ │Collect│ → │Normalize│ → │Correlation│ → │MITRE │ │
│ └──────┘ └────────┘ └──────────┘ │Mapping │ │
│ └────┬───┘ │
│ ┌──────┐ ┌─────────┐ ┌──────┐ │ │
│ │Summary│ ← │Alerts │ ← │Risk │ ←───────┘ │
│ └───┬──┘ └─────────┘ │Score │ │
└──────┼────────────────────────────────────────────────┘
│
┌──────▼──────────────────────────────────────────────────┐
│ MongoDB (Repository Pattern) │
│ • events • alerts • detections • incidents │
└──────┬───────────────────────────────┬──────────────────┘
│ │
┌──────▼───────────────────┐ ┌───────▼─────────────────┐
│ Log Ingestion (Stage 2) │ │ Detection Engine │
│ • Auth logs │ │ • IOC matching │
│ • Nginx logs │ │ • Confidence scoring │
│ • DNS logs │ │ • Alert creation │
│ • Strict validation │ └───────┬─────────────────┘
└──────────────────────────┘ │
┌─────▼──────────────────┐
│ Incident Manager │
│ • Create incidents │
│ • Track status │
│ • Add notes │
│ • Assign analysts │
└─────┬──────────────────┘
│
┌───────────▼───────────────────┐
│ Interactive Dashboard │
│ (Stage 3) │
│ • Force-directed graph │
│ • Real-time status │
│ • Timeline view │
│ • Cluster details │
└───────────────────────────────┘
```
## 安全设计
### OWASP 合规性
- **速率限制**:所有 endpoint 上每个 IP 每分钟 60 次请求
- **输入验证**:使用带有 `extra="forbid"` 的严格 Pydantic schema
- **数据清理**:清理所有用户输入(检测 SQL/命令注入)
- **无密钥泄露**:仅通过环境变量进行配置
- **错误处理**:全局异常处理器防止堆栈跟踪暴露
- **仓储模式**:无直接数据库访问,强制实施抽象层
- **结构化日志记录**:仅记录 JSON 日志,无敏感数据泄露
### 架构原则
1. **模块化分离**:每个组件相互隔离(收集器、核心、存储、安全、接入、检测、可视化)
2. **只读可视化**:仪表板仅显示数据,从不进行修改
3. **依赖反转**:所有数据库操作均通过 repository 进行
4. **故障安全默认值**:拒绝格式错误的输入,不进行处理
## 安装说明
### 前置条件
- Python 3.8+
- MongoDB 7.0+(运行在 localhost:27017 上)
- Git
### 步骤 1:克隆代码库
```
git clone https://github.com/yourusername/threat-intelligence-aggregator.git
cd threat-intelligence-aggregator
```
### 步骤 2:创建虚拟环境
```
python -m venv venv
# Windows
venv\Scripts\activate
# Linux/Mac
source venv/bin/activate
```
### 步骤 3:安装依赖
```
pip install -r requirements.txt
```
### 步骤 4:环境配置
在项目根目录下创建 `.env` 文件:
```
# MongoDB 配置
MONGODB_URI=mongodb://localhost:27017
DATABASE_NAME=threat_intel
# API Keys(可选 - 部分来源无需 keys 即可工作)
ALIENVAULT_API_KEY=your_alienvault_otx_api_key
ABUSEDB_API_KEY=your_abuseipdb_api_key
# 应用设置
LOG_LEVEL=INFO
RATE_LIMIT_DEFAULT=60
```
**获取 API Key**(可选):
- **AlienVault OTX**:在 https://otx.alienvault.com/ 注册
- **AbuseIPDB**:在 https://www.abuseipdb.com/ 注册
## MongoDB 设置
### 安装 MongoDB
**Windows**:
```
# 从 https://www.mongodb.com/try/download/community 下载
# 或使用包管理器
choco install mongodb
```
**Linux/Mac**:
```
# Ubuntu/Debian
sudo apt-get install mongodb
# MacOS
brew install mongodb-community
```
### 启动 MongoDB
```
# Windows
mongod --dbpath=C:\data\db
# Linux/Mac
mongod --dbpath=/data/db
```
### 验证连接
```
mongosh
# 应成功连接
```
## 运行平台
### 选项 1:演示脚本(推荐用于测试)
#### 阶段 1:威胁情报收集
```
python demo.py
```
这将:
- 从 OSINT 来源收集 IOC
- 运行完整的 9 阶段流水线
- 将事件和告警存储在 MongoDB 中
- 显示汇总统计信息
#### 阶段 2:SOC 操作
```
python demo_soc.py
```
这将:
- 接入示例 auth/nginx/DNS 日志
- 运行检测引擎
- 创建测试事件
- 跟踪事件生命周期
- 显示统计信息
### 选项 2:FastAPI 服务器(生产环境)
```
uvicorn main:app --reload --host 0.0.0.0 --port 8000
```
### 选项 3:Docker 和 Docker Compose(容器化生产环境)
确保你已安装 Docker Desktop 和 Compose。
```
# 在后台启动 MongoDB 和 FastAPI 服务
docker-compose up -d
```
*注意:MongoDB 容器会自动将端口 `27017:27017` 转发到宿主机,确保选项 1 中的本地演示脚本仍能无缝连接和运行。*
### 🌐 访问平台
- **交互式仪表板**:http://localhost:8000/dashboard
- **API 文档**:http://localhost:8000/docs
- **健康检查**:http://localhost:8000/health
### API Endpoint
#### 威胁情报(阶段 1)
- `POST /api/v1/collect` - 触发收集流水线
- `GET /api/v1/alerts` - 列出告警(按严重程度/风险过滤)
- `GET /api/v1/events` - 列出威胁事件
#### 日志接入(阶段 2)
- `POST /api/v1/ingest/auth` - 接入 auth 日志
- `POST /api/v1/ingest/nginx` - 接入 nginx 日志
- `POST /api/v1/ingest/dns` - 接入 DNS 日志
#### 检测
- `GET /api/v1/detections` - 列出检测结果
- `GET /api/v1/detections/{id}` - 获取检测详情
#### 事件
- `POST /api/v1/incidents` - 创建事件
- `GET /api/v1/incidents` - 列出事件(按状态/严重程度过滤)
- `PUT /api/v1/incidents/{id}/status` - 更新状态
- `POST /api/v1/incidents/{id}/notes` - 添加注释
#### 仪表板(阶段 3)
- `GET /dashboard` - 交互式可视化
- `GET /dashboard/api/graph-data` - 图节点和边 (JSON)
- `GET /dashboard/api/timeline` - 时间轴事件
- `GET /dashboard/api/status` - 流水线状态
- `GET /dashboard/api/cluster/{id}` - 集群详情
## 仪表板功能
### 交互式节点图
- **力导向布局**:D3.js 物理模拟
- **节点大小**:基于风险评分 (0-10)
- **节点着色**:MITRE ATT&CK 战术映射
- **关联边**:关系强度可视化
- **点击交互**:点击节点查看集群详情
- **缩放和平移**:完整的图表导航
### 状态面板
- 总事件数、告警数、检测数、事件数
- 数据库健康监控
- **精简视图**:移除了冗余小部件,以实现清晰的操作关注
- 实时统计(每 30 秒自动刷新)
### 时间轴视图
- 按时间顺序排列的事件历史
- **统一侧边栏**:集成到右侧面板中以保持持久可见性
- IOC 接入、关联、检测、事件更新
- 事件类型过滤
- 时间戳显示
### 集群详情
- 带有置信度评分的 IOC 列表
- MITRE ATT&CK 技术
- 风险评分明细
- 告警解释
- 分析师汇总
## 项目结构
```
SOC/
├── collectors/ # OSINT data collectors
│ ├── alienvault.py
│ ├── abusedb.py
│ └── openphish.py
├── core/ # Intelligence pipeline
│ ├── normalizer.py
│ ├── enrichment.py
│ ├── correlation.py
│ ├── mitre_mapper.py
│ ├── risk_scoring.py
│ ├── alert_generator.py
│ ├── analyst_summary.py
│ └── incident_manager.py
├── ingestion/ # Log ingestion layer
│ ├── log_parser.py
│ └── event_ingestor.py
├── detection/ # Detection engine
│ └── detection_engine.py
├── storage/ # MongoDB repositories
│ ├── database.py
│ ├── models.py
│ └── repositories.py
├── security/ # OWASP controls
│ ├── rate_limiter.py
│ ├── validators.py
│ └── sanitizers.py
├── visualization/ # Dashboard (Stage 3)
│ ├── dashboard.py
│ ├── graph_view.py
│ ├── cluster_details_panel.py
│ ├── pipeline_status.py
│ ├── timeline_view.py
│ └── templates/
│ └── dashboard.html
├── utils/ # Shared utilities
│ ├── logger.py
│ └── config.py
├── main.py # FastAPI application
├── demo.py # Stage 1 demo
├── demo_soc.py # Stage 2 demo
├── requirements.txt # Python dependencies
├── .env # Environment variables (create this)
├── .gitignore
└── README.md
```
## 📈 性能
=======
**关键指标**:
- 3 个 OSINT 集成(AlienVault、Abuse.ch、OpenPhish)
- 4 个具有优化索引的 MongoDB 集合
- 20 个带有完整 OpenAPI 文档的 RESTful API endpoint
- 500 多个威胁节点的实时可视化
- 日志接入的亚秒级检测延迟
## 性能指标
- **收集速度**:来自 OSINT 来源的每分钟约 100 个 IOC
- **检测延迟**:每个日志事件 <100ms
- **图表渲染**:以 60 FPS 渲染 500+ 个节点
- **数据库查询**:使用索引时 p95 <50ms
- **API 响应时间**:p95 <200ms
## 测试
```
# 运行所有演示
python demo.py # Stage 1: Intelligence
python demo_soc.py # Stage 2: SOC Operations
# 测试 API
curl http://localhost:8000/health
```
## 故障排除
### MongoDB 连接失败
```
# 检查 MongoDB 是否正在运行
mongosh
# 启动 MongoDB
mongod --dbpath=./data
```
### 导入错误
```
# 重新安装依赖
pip install -r requirements.txt --force-reinstall
```
### 仪表板未加载
```
# 验证服务器是否正在运行
uvicorn main:app --reload
# 检查日志
tail -f logs/app.log
```
## 环境变量参考
| 变量 | 描述 | 默认值 | 是否必需 |
|----------|-------------|---------|----------|
| `MONGODB_URI` | MongoDB 连接字符串 | `mongodb://localhost:27017` | 是 |
| `DATABASE_NAME` | 数据库名称 | `threat_intel` | 是 |
| `ALIENVAULT_API_KEY` | AlienVault OTX API key | - | 否 |
| `ABUSEDB_API_KEY` | AbuseIPDB API key | - | 否 |
| `LOG_LEVEL` | 日志级别 (DEBUG/INFO/WARNING) | `INFO` | 否 |
| `RATE_LIMIT_DEFAULT` | 每分钟请求数 | `60` | 否 |
## 📄 许可证
MIT 许可证 - 有关详细信息,请参阅 [LICENSE](LICENSE) 文件。
## 致谢
- **MITRE ATT&CK** - 威胁框架
- **AlienVault OTX** - 开放威胁情报
- **Abuse.ch** - 恶意软件跟踪
- **OpenPhish** - 钓鱼数据源
- **D3.js** - 数据可视化
- **FastAPI** - 现代的 Python Web 框架
## 联系方式
如有问题或需要支持,请在 GitHub 上提交 issue。
标签:AV绕过, FastAPI, MongoDB, Python, 威胁情报, 密码管理, 开发者工具, 无后门, 请求拦截, 逆向工具