amirzyazid/threat-intel-api
GitHub: amirzyazid/threat-intel-api
一款面向 SOC 的轻量级威胁情报富化 API,聚合多源情报并提供标准化风险评分与 MITRE ATT&CK 映射。
Stars: 0 | Forks: 0
# SOC 威胁情报富化 API
一个用于通过威胁情报、风险评分和 MITRE ATT&CK 技术映射来富化可观测数据(IP、域名、URL)的 API。该工具聚合来自多个威胁情报源的数据,以提供全面的安全风险评估。
## 功能
- **IP 地址分析** - 分析 IPv4 地址的恶意活动
- **URL 和域名分析** - 提交完整的 URL 或域名以提取并分析域名
- **风险评分** - 从多个来源聚合威胁情报,并提供标准化的 0-100 风险评分
- **MITRE ATT&CK 映射** - 将威胁映射到 MITRE ATT&CK 技术和战术
- **威胁行为者归属** - 识别相关的威胁行为者及其所在国家/地区
- **多源情报** - 聚合来自 VirusTotal、AlienVault 和 APT 数据库的数据
## 快速开始
### 前置条件
- Python 3.8+
- pip (Python 包管理器)
### 安装
1. 克隆仓库:
```
git clone
cd threat-intel-api
```
2. 安装依赖:
```
pip install -r requirements.txt
```
### 运行 API
启动开发服务器:
```
python -m app.main
```
API 将在 `http://localhost:8000` 处可用
**交互式 API 文档:** 访问 `http://localhost:8000/docs` 查看 Swagger UI
## API 端点
### 1. 分析 IP 地址
分析 IPv4 地址的恶意活动和威胁指标。
**端点:** `GET /api/v1/analyze/ip/{ip_address}`
**参数:**
- `ip_address` (路径参数):有效的 IPv4 地址(例如,`192.168.1.1`)
**请求示例:**
```
curl http://localhost:8000/api/v1/analyze/ip/8.8.8.8
```
**响应示例:**
```
{
"observable": "8.8.8.8",
"observable_type": "ip",
"overall_risk_score": 0,
"severity": "Low",
"sources": [
{
"source_name": "VirusTotal",
"malicious_votes": 0,
"total_votes": 10,
"tags": []
}
],
"mitre_ttps": [],
"associated_actors": [],
"summary": "IP address appears to be safe based on current threat intelligence."
}
```
### 2. 分析 URL 或域名
分析 URL 或域名的恶意活动。API 会自动从完整的 URL 中提取域名。
**端点:** `GET /api/v1/analyze/url/{url:path}`
**参数:**
- `url` (路径参数):完整的 URL(例如,`https://example.com/path`)或域名(例如,`example.com`)
**请求示例:**
```
# 分析完整 URL
curl http://localhost:8000/api/v1/analyze/url/https://example.com/path/to/resource
# 直接分析域名
curl http://localhost:8000/api/v1/analyze/url/example.com
```
**响应示例:**
```
{
"observable": "example.com",
"observable_type": "domain",
"overall_risk_score": 15,
"severity": "Low",
"sources": [
{
"source_name": "VirusTotal",
"malicious_votes": 2,
"total_votes": 45,
"tags": ["phishing", "malware-distribution"]
}
],
"mitre_ttps": [
{
"id": "T1566.002",
"name": "Phishing: Spearphishing Link",
"url": "https://attack.mitre.org/techniques/T1566/002/"
}
],
"associated_actors": [
{
"name": "Lazarus Group",
"country": "North Korea",
"description": "Suspected state-sponsored APT group"
}
],
"summary": "Domain has been associated with phishing campaigns. Low to medium risk."
}
```
## 响应结构
所有威胁分析端点都返回一个 `RiskReport` 对象:
```
{
"observable": "string - The IP, domain, or URL analyzed",
"observable_type": "string - Type: 'ip', 'domain', or 'hash'",
"overall_risk_score": "integer - Risk score from 0 (Safe) to 100 (Critical)",
"severity": "string - One of: 'Low', 'Medium', 'High', 'Critical'",
"sources": [
{
"source_name": "string - Name of threat intelligence source",
"malicious_votes": "integer - Number of sources flagging as malicious",
"total_votes": "integer - Total sources voting on this observable",
"tags": ["string - Tags or categories (e.g., 'malware', 'phishing')"]
}
],
"mitre_ttps": [
{
"id": "string - MITRE ATT&CK technique ID (e.g., 'T1566.002')",
"name": "string - Technique name",
"url": "string - Link to MITRE ATT&CK page"
}
],
"associated_actors": [
{
"name": "string - Threat actor name",
"country": "string - Country of origin",
"description": "string - Description of the actor"
}
],
"summary": "string - Human-readable summary of the threat assessment"
}
```
## 风险评分解释
API 使用标准化的 0-100 风险评分:
| 评分范围 | 严重性 | 解释 |
|-------------|----------|-----------------|
| 0-25 | 低 | 安全,风险极低 |
| 26-50 | 中 | 检测到可疑活动 |
| 51-75 | 高 | 存在明确的入侵指标 |
| 76-100 | 严重 | 已确认为恶意,建议立即采取行动 |
## 风险评分算法
总体风险评分通过聚合来自多个威胁情报源的数据来计算:
1. **VirusTotal** - 根据检测率最高计 60 分
2. **AlienVault OTX** - 根据 pulse 数据最高计 30 分
3. **APT 威胁行为者** - 如果与已知 APT 组织相关,最高计 10 分
4. **最终得分** - 上限为 100(最高风险)
## 已知安全 IP
以下 IP 被识别为安全,并返回风险评分 0:
- `8.8.8.8` (Google DNS)
- `1.1.1.1` (Cloudflare DNS)
- `8.8.4.4` (Google DNS 备用)
## 已知恶意 IP
以下 IP 被标记为恶意:
- `185.159.231.1`
- `103.149.208.57`
- `94.156.71.115`
## 架构
该 API 使用 FastAPI 构建,并遵循分层架构:
```
app/
├── main.py # API routes and endpoint definitions
├── models/
│ └── schemas.py # Pydantic data models and enums
└── services/
├── analyzer.py # Core threat analysis logic
├── utils.py # Utility functions (URL parsing, domain extraction)
└── integrations/
└── dummy_intel.py # Mock threat intelligence data sources
```
### 关键组件
- **analyzer.py**:包含 `analyze_ip()` 和 `analyze_url()` 函数,用于协调威胁情报聚合
- **utils.py**:实用函数,包括用于解析 URL 的 `extract_domain_from_url()`
- **dummy_intel.py**:带有确定性数据的模拟威胁情报源,用于测试和开发
- **schemas.py**:定义 API 请求/响应结构的 Pydantic 模型
## 错误处理
API 返回相应的 HTTP 状态码:
| 状态码 | 含义 |
|------------|---------|
| 200 | 成功 - 可观测数据成功分析 |
| 400 | 错误请求 - 无效的可观测数据格式 |
| 500 | 内部服务器错误 |
**错误响应示例:**
```
{
"detail": "Invalid IPv4 address format."
}
```
## 开发
### 项目结构
```
threat-intel-api/
├── README.md # This file
├── requirements.txt # Python dependencies
├── .gitignore # Git ignore rules
└── app/
├── __init__.py
├── main.py
├── models/
│ └── schemas.py
└── services/
├── analyzer.py
├── utils.py
└── integrations/
└── dummy_intel.py
```
### 运行测试
目前,该项目包含用于开发的模拟威胁情报数据。可以使用以下命令运行测试:
```
# 注意:正式的 test suite 即将推出
python -m pytest
```
## 未来增强计划
- [ ] 域名到 IP 地址的 DNS 解析
- [ ] 特定域名的威胁情报
- [ ] 哈希分析 (MD5, SHA-1, SHA-256)
- [ ] 真实威胁情报源集成 (VirusTotal API, AlienVault OTX API)
- [ ] 用于性能优化的缓存层
- [ ] 速率限制和身份验证
- [ ] 历史趋势分析
- [ ] 告警生成和 Webhook
## 依赖项
- **fastapi** (0.111.0) - 用于构建 API 的现代 Web 框架
- **uvicorn** (0.30.1) - 用于运行 FastAPI 应用的 ASGI 服务器
- **pydantic** (2.7.4) - 数据验证和序列化
- **httpx** (0.27.0) - 用于异步请求的 HTTP 客户端
## CORS 配置
该 API 为开发环境启用了宽松设置的 CORS。在生产环境中,请更新 `app/main.py` 中的 `CORSMiddleware` 配置,以限制允许的来源。
## 许可证
[在此处添加您的许可证信息]
## 贡献
[在此处添加贡献指南]
## 支持
如有问题或功能请求,请在 GitHub 仓库中开启一个 issue。
标签:AES-256, AlienVault, API, Ask搜索, Cloudflare, HTTP/HTTPS抓包, IP分析, MITRE ATT&CK, Python, Sigma 规则, Swagger, URL分析, VirusTotal, 域名分析, 威胁情报, 威胁情报丰富, 威胁指标, 安全运营中心, 开发者工具, 态势感知, 情报聚合, 攻击归因, 无后门, 漏洞评估, 网络安全, 网络映射, 运行时操纵, 逆向工具, 隐私保护, 风险评分