sanasimran1403-jpg/threat-intel-dashboard
GitHub: sanasimran1403-jpg/threat-intel-dashboard
基于 Flask 的轻量级威胁情报仪表板,可并行查询三大威胁源并对 IP、域名、哈希和 URL 进行综合风险评级。
Stars: 0 | Forks: 0
# 威胁情报仪表板
一个基于 Flask 的威胁情报仪表板,可跨三个实时威胁情报源(AbuseIPDB、VirusTotal 和 AlienVault OTX)分析 IP、域名、文件哈希和 URL。具有 IOC 监视列表、完整的扫描历史记录和深色主题 PDF 报告功能。
## 概述
威胁情报是 SOC 的核心能力——将多个来源的失陷标据 (IOC) 进行关联,可以让分析师全面了解特定的 IP、域名或文件哈希是否为恶意的。此工具演示了完整的 IOC 扩展 pipeline:
1. **查询** —— 同时跨三个威胁情报 API 查询任何 IP、域名、文件哈希或 URL
2. **关联**结果 —— AbuseIPDB 置信度分数、VirusTotal 引擎命中数、AlienVault OTX pulse 数量
3. **风险评级** IOC —— 基于综合信号评定为 CRITICAL / HIGH / MEDIUM / CLEAN / UNKNOWN
4. **监视列表** —— 跟踪感兴趣的 IOC 并即时重新分析
5. **报告** —— 将任何查询导出为专业的深色主题 PDF
所有查询均针对已知的真实恶意 IOC(Tor exit nodes、恶意软件域名、EICAR 哈希)进行了验证。
**环境:**
- 平台:Windows 11 + Python 3.11
- API:AbuseIPDB、VirusTotal v3、AlienVault OTX
- 框架:Flask 3.0
## 功能覆盖范围 — 4/4
| # | 功能 | 技术 | 结果 |
|---|---|---|---|
| 1 | IOC 查询 | 并行查询 AbuseIPDB + VirusTotal + OTX | 综合风险判定 |
| 2 | 风险评级 | 跨三个来源的加权评分 | 在 Tor exit node 上确认为 CRITICAL |
| 3 | IOC 监视列表 | 带有标签的基于 SQLite 的监视列表 | 添加/删除/跟踪 IOC |
| 4 | PDF 导出 | 带有 S&S 品牌的每次查询深色主题 PDF | 专业的威胁报告 |
## 设置
```
pip install -r requirements.txt
cp .env.example .env
# 在 .env 中添加你的 API keys
```
**.env 格式:**
```
ABUSEIPDB_KEY=your_key_here
VIRUSTOTAL_KEY=your_key_here
OTX_KEY=your_key_here
```
**免费 API 密钥:**
- AbuseIPDB — https://www.abuseipdb.com/api(每天免费 1,000 次查询)
- VirusTotal — https://www.virustotal.com(每天免费 500 次请求)
- AlienVault OTX — https://otx.alienvault.com(无限免费)
## 用法
```
# 启动 dashboard
python app.py
# 在浏览器中打开
http://localhost:5000
```
## 1. IOC 查询
导航到 Lookup 标签页,输入任何标据,选择类型(IP / Domain / Hash / URL),然后点击 Analyze。所有三个 API 将并行查询,并在几秒钟内显示结果。
**已测试的 IOC — 已知的 Tor Exit Node:**
```
IOC : 185.220.101.45
Type : IP Address
```
**结果:**
```
AbuseIPDB Confidence : 98 / 100
AbuseIPDB Reports : 847 reports
VT Malicious : 12 / 92 engines
OTX Pulse Count : 50 pulses
Country : Germany
Overall Risk : CRITICAL
```
## 2. 风险评级引擎
风险是根据所有三个来源的加权组合计算得出的:
| 来源 | 信号 | 权重 |
|---|---|---|
| AbuseIPDB | 置信度分数 (0-100) | 高 |
| VirusTotal | 恶意引擎数量 | 高 |
| AlienVault OTX | pulse 数量(威胁活动) | 中 |
**风险级别:**
| 级别 | 标准 |
|---|---|
| CRITICAL | AbuseIPDB > 80 或 VT 恶意数 > 10 或 OTX pulse 数 > 20 |
| HIGH | AbuseIPDB > 50 或 VT 恶意数 > 5 或 OTX pulse 数 > 5 |
| MEDIUM | AbuseIPDB > 20 或 VT 恶意数 > 1 |
| CLEAN | 所有来源报告为干净 |
| UNKNOWN | 没有任何来源的数据 |
## 3. IOC 监视列表
将任何 IOC 添加到监视列表中,并可选择附加标签。被加入监视列表的 IOC 存储在 SQLite 中,可随时从 Watchlist 标签页重新分析。
```
IOC : 185.220.101.45
Type : IP
Label : Tor Exit Node — Monitor
Added : 2026-06-06
```
## 4. PDF 导出
每次查询都会生成一个可下载的 PDF,其中包含完整的 IOC 档案——风险判定、所有三个来源的结果、OTX pulse 列表、国家/ASN 信息,以及带有水印的 S&S 品牌。
## 仓库结构
```
threat-intel-dashboard/
├── app.py
├── requirements.txt
├── README.md
├── .env.example
├── core/
│ ├── config.py
│ ├── abuseipdb.py # AbuseIPDB API integration
│ ├── virustotal.py # VirusTotal v3 API integration
│ ├── otx.py # AlienVault OTX API integration
│ ├── database.py # SQLite scan history + watchlist
│ └── reporter.py # Dark-themed PDF report generator
├── static/
│ ├── css/style.css
│ ├── js/main.js
│ └── logo.png
└── templates/
└── index.html
```
## 技术栈
| 工具 | 版本 | 用途 |
|---|---|---|
| Python | 3.11 | 核心语言 |
| Flask | 3.0.0 | Web 框架 |
| requests | 2.31 | 对威胁情报源进行 API 调用 |
| python-dotenv | 1.0.0 | API 密钥管理 |
| ReportLab | 4.1.0 | 深色主题 PDF 报告 |
| SQLite | 内置 | 扫描历史 + 监视列表存储 |
## 主要经验教训
- 查询三个具有不同响应 schema 的威胁情报 API,并将结果归一化为统一的风险模型
- 设计一个加权风险评分系统,该系统考虑了每个 API 提供的不同置信度信号
- 构建一个具有实时 API 调用和动态结果渲染且无需重新加载页面的 Flask 仪表板
- 妥善管理 API 速率限制 —— AbuseIPDB(每天 1,000 次)、VirusTotal(每天 500 次)—— 并使用 SQLite 缓存来避免冗余查询
- 了解 SOC 分析师在实际的事件响应工作流程中如何使用像 AbuseIPDB 和 OTX 这样的威胁情报平台
## 已知限制
- VirusTotal 免费层级限制为每天 500 个请求和每分钟 4 次查询——大规模批处理分析需要高级密钥
- OTX pulse 数据反映了社区提交的威胁情报,对于像 youtube.com 这样的知名域名可能会包含误报
- 文件哈希查询要求该哈希必须已存在于 VirusTotal 的数据库中——尚未实现直接的文件上传分析
- 该仪表板是单用户的——Web 界面未实现身份验证
## 作者
**Sana Simran**
GitHub: [@sanasimran1403-jpg](https://github.com/sanasimran1403-jpg)
标签:Flask, IOC分析, Python, Web看板, 威胁情报, 安全运营, 开发者工具, 扫描框架, 无后门, 逆向工具