SHAROZ221/ThreatIntel
GitHub: SHAROZ221/ThreatIntel
一个基于 Python Flask 的轻量级威胁情报聚合平台,帮助 SOC 分析师集中管理、查询、富化与导出各类失陷指标(IOC)。
Stars: 7 | Forks: 0
# 🔍 ThreatIntel 聚合器
### 多源威胁情报与 IOC 管理平台





*一个基于 Python 的威胁情报平台,可聚合 IOC,查询实时信誉 API,并提供一个 Web dashboard,用于搜索、添加、管理和导出威胁指标——专为 SOC 分析师工作流而构建。*
## 🔍 什么是 ThreatIntel Aggregator?
在安全运营中心 (SOC) 中,分析师需要不断在多个来源中查询**失陷指标 (IOC)** —— 恶意 IP、域名和文件哈希 —— 以确定威胁风险。
该工具将此流程集中化。它将 IOC 存储在本地数据库中,允许您即时搜索和过滤它们,利用实时的 **AbuseIPDB** 信誉数据丰富 IP 信息,并通过简洁的 Web dashboard 展示所有内容。
这映射了现实世界中的 SOC 工具(如 MISP、OpenCTI 和 ThreatConnect)—— 但它是完全使用 Python 从头构建的。
## ⚙️ 工作原理
```
Analyst submits IOC (IP / Domain / Hash)
│
▼
Search threats.db ──► Found? ──► Display result + risk score
│
Not found?
│
▼
AbuseIPDB API Lookup (for IPs)
│
▼
Store result ──► Display enriched intelligence
│
▼
Export ──► Download full IOC list as CSV
```
所有 IOC 都会存储其类型、类别和风险评分。Dashboard 会显示实时统计数据,并允许分析师添加、搜索、删除或导出指标。
## 🧩 支持的 IOC 类型
| 类型 | 示例 | 用例 |
|------|---------|----------|
| IP 地址 | `192.168.1.1` | 恶意主机、C2 服务器 |
| 域名 | `evil-domain.xyz` | 钓鱼、恶意软件分发 |
| 文件哈希 | `d41d8cd98f00b204...` | 恶意软件样本识别 |
## 🚀 快速开始
**1. 克隆仓库**
```
git clone https://github.com/SHAROZ221/ThreatIntel.git
cd ThreatIntel
```
**2. 安装依赖**
```
pip install -r requirements.txt
```
**3. 设置您的 AbuseIPDB API key**
在根目录下创建一个 `.env` 文件:
```
ABUSEIPDB_API_KEY=your_api_key_here
```
在 [abuseipdb.com](https://www.abuseipdb.com/register) 获取免费的 API key
**4. 初始化数据库**
```
python init_db.py
```
**5. (可选) 填充示例数据**
```
python seed_data.py
```
**6. 运行应用**
```
python app.py
```
**7. 打开 dashboard**
```
http://localhost:5000/
```
## 📊 Dashboard 功能
Web dashboard 提供:
- **实时统计** —— 总 IOC 数量,按 IP / 域名 / 哈希进行细分
- **IOC 搜索** —— 查找任何指标,支持可选的类型过滤
- **添加新威胁** —— 提交指标、类型、类别和风险评分
- **删除指标** —— 移除已解决或误报的条目
- **近期威胁表** —— 按最近添加时间排序的完整 IOC 列表
- **IOC 类型图表** —— 显示 IP / 域名 / 哈希数量实时细分的环形图
- **风险分布图表** —— 显示低 / 中 / 严重范围内 IOC 数量的柱状图
- **导出为 CSV** —— 一键将完整的 IOC 列表下载为 `.csv` 文件
## 📤 导出功能
Dashboard 包含一个 **导出 CSV** 按钮,可在两处使用 —— 顶部导航栏和威胁表标题旁边。
点击它将立即下载一个名为 `threatintel-iocs-YYYY-MM-DD.csv` 的文件,其中包含当前所有指标,格式如下:
```
id,indicator,type,category,risk_score
1,"185.220.101.45",IP,C2 Server,92
2,"evil-phish-domain.xyz",Domain,Phishing,78
3,"d41d8cd98f00b204e9800998ecf8427e",Hash,Malware,85
```
这对于以下场景非常有用:
- 与其他分析师或团队共享 IOC 列表
- 导入到 SIEM 工具,如 Splunk 或 Microsoft Sentinel
- 保留威胁数据库的离线备份
- 在事件响应期间进行报告和记录
导出完全在客户端运行 —— 无需服务器请求。
## 📁 项目结构
```
ThreatIntel/
├── app.py → Flask web server, all routes & dashboard logic
├── init_db.py → Creates the SQLite threats database & schema
├── seed_data.py → Populates DB with sample IOCs for testing
├── view_data.py → CLI utility to inspect database contents
├── test.py → Test suite for core functionality
├── templates/
│ └── index.html → Web dashboard UI (with charts and CSV export)
├── threats.db → SQLite IOC database (auto-generated)
└── .env → API keys (not committed — see .gitignore)
```
## 🗄️ 数据库 Schema
```
CREATE TABLE threats (
id INTEGER PRIMARY KEY AUTOINCREMENT,
indicator TEXT NOT NULL, -- The IOC value (IP, domain, hash)
type TEXT NOT NULL, -- 'IP', 'Domain', or 'Hash'
category TEXT NOT NULL, -- e.g. 'Malware', 'Phishing', 'C2'
risk_score INTEGER NOT NULL -- 0–100 severity rating
)
```
## 🧰 构建技术
- **Flask** —— Web 框架和路由
- **SQLite3** —— 轻量级 IOC 存储(无需外部 DB)
- **AbuseIPDB API** —— 实时 IP 信誉和滥用分数查询
- **python-dotenv** —— 通过 `.env` 安全管理 API key
- **Chart.js** —— Dashboard 上的实时环形图和柱状图
- **Inter & JetBrains Mono** —— Dashboard UI 的简洁排版
- **HTML / CSS / JS** —— 带有 CSV 导出功能的 Dashboard 前端
## 🔐 安全说明
切勿提交您的 `.env` 文件或暴露您的 API key。`.gitignore` 默认配置为排除 `.env`。如果您不小心暴露了 key,请立即在 [abuseipdb.com](https://www.abuseipdb.com) 重新生成。
**Sharoz** · BCA 第三年 · 网络安全 (SOC 方向)
[github.com/SHAROZ221](https://github.com/SHAROZ221)
标签:Flask, IOC管理, Python, 后端开发, 威胁情报, 安全运营, 开发者工具, 扫描框架, 无后门, 逆向工具