Daredevil-suburbs/Threat-Intelligence-Pipeline
GitHub: Daredevil-suburbs/Threat-Intelligence-Pipeline
一个从开源威胁情报源自动采集 IOC、富化分析、存储索引并可视化展示的全流程威胁情报管道。
Stars: 0 | Forks: 0
# 🛡️ 威胁情报管道
一个全自动化的网络安全项目,从开源威胁情报源收集 IOCs (Indicators of Compromise),通过 OSINT API 对其进行富化,将其存储在 SQLite 中,索引到 Elasticsearch,并在 Kibana 仪表盘中展示——同时具备自动化的 HTML 报告生成功能。
## 📐 架构
```
┌─────────────────────────────────────────────────────────┐
│ THREAT FEEDS │
│ URLhaus │ Feodo Tracker │ ThreatFox │ MalwareBazaar │
└──────────────────────┬──────────────────────────────────┘
│ HTTP (no auth needed)
▼
┌─────────────────────────────────────────────────────────┐
│ COLLECTOR (collector/) │
│ Fetches URLs, IPs, Domains, Hashes │
└──────────────────────┬──────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────┐
│ STORAGE (SQLite) │
│ Deduplication · Persistence · Querying │
└──────────────────────┬──────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────┐
│ ENRICHER (enricher/) │
│ VirusTotal API (optional) │
│ AbuseIPDB API (optional) │
└──────────────────────┬──────────────────────────────────┘
│
┌────────┴────────┐
▼ ▼
┌─────────────────┐ ┌──────────────────────┐
│ ELASTICSEARCH │ │ HTML REPORT │
│ + KIBANA │ │ reports/output/ │
│ localhost:5601 │ │ (auto-generated) │
└─────────────────┘ └──────────────────────┘
```
## 📂 项目结构
```
threat-intel-pipeline/
│
├── main.py ← Entry point (run this)
├── config.py ← All settings loaded from .env
├── requirements.txt
├── docker-compose.yml ← Elasticsearch + Kibana
├── .env.example ← Copy to .env and fill in
│
├── collector/ ← Feed fetchers (no API keys needed)
│ ├── urlhaus.py ← Malicious URLs (URLhaus)
│ ├── feodo.py ← Botnet C2 IPs (Feodo Tracker)
│ ├── threatfox.py ← Multi-type IOCs (ThreatFox)
│ └── malwarebazaar.py ← Malware hashes (MalwareBazaar)
│
├── enricher/ ← API enrichment (optional keys)
│ ├── virustotal.py ← VT scores for all IOC types
│ └── abuseipdb.py ← IP reputation scores
│
├── storage/
│ └── database.py ← SQLite: insert, dedup, query
│
├── elastic/
│ ├── ingest.py ← Bulk-index IOCs to Elasticsearch
│ ├── setup_kibana.py ← Auto-create index pattern in Kibana
│ └── kibana_objects.json ← Saved objects for import
│
├── pipeline/
│ └── runner.py ← Orchestrates all 5 stages
│
├── reports/
│ ├── generator.py ← HTML report builder
│ └── output/ ← Generated reports saved here
│
├── data/
│ └── threat_intel.db ← SQLite database (auto-created)
│
└── logs/
└── pipeline.log ← Log file (auto-created)
```
## 🚀 快速开始
### Windows
```
git clone
cd threat-intel-pipeline
setup_windows.bat
```
然后激活 venv 并运行:
```
venv\Scripts\activate
python main.py
```
### Linux / WSL
```
git clone
cd threat-intel-pipeline
chmod +x setup_linux.sh
./setup_linux.sh
```
然后运行:
```
source venv/bin/activate
python3 main.py
```
## 🔑 API 密钥(可选但推荐)
该管道使用 abuse.ch 情报源,**无需任何 API 密钥** 即可工作。
添加密钥可解锁富化功能(VT 评分、滥用置信度评分)。
### VirusTotal(免费)
1. 访问 https://www.virustotal.com/gui/join-us
2. 创建一个免费账号
3. 前往您的个人资料 → API Key
4. 添加到 `.env`:`VIRUSTOTAL_API_KEY=your_key_here`
5. 免费套餐:4 次请求/分钟,500 次/天
### AbuseIPDB(免费)
1. 访问 https://www.abuseipdb.com/register
2. 创建一个免费账号
3. 前往 Account → API → Create Key
4. 添加到 `.env`:`ABUSEIPDB_API_KEY=your_key_here`
5. 免费套餐:1,000 次 IP 检查/天
## 🖥️ 用法
```
# 运行一次完整 pipeline
python main.py
# 每 6 小时自动运行一次
python main.py --watch
# 基于现有数据生成 HTML 报告(不进行抓取)
python main.py --report
# 显示数据库统计信息
python main.py --stats
```
## 📊 Kibana 仪表盘设置
1. 确保 Docker 正在运行:
docker compose up -d
2. 至少运行一次管道以填充数据:
python main.py
3. 自动配置 Kibana:
python elastic/setup_kibana.py
4. 打开 Kibana:**http://localhost:5601**
5. 在 **Analytics → Visualize Library** 中构建可视化:
- **饼图**:按 `ioc_type.keyword` 拆分
- **柱状图**:按 `source.keyword` 拆分
- **指标**:总数
- **数据表**:`ioc_value`, `threat_type`, `confidence`
- **地图**:按 `country.keyword` 聚合
## 🗃️ 数据源
| 来源 | 类型 | 提供的 IOC | 需要认证 |
|--------|------|---------------|---------------|
| URLhaus (abuse.ch) | URLs | 恶意/钓鱼 URL | ❌ 免费 |
| Feodo Tracker (abuse.ch) | IPs | 僵尸网络 C2 服务器 | ❌ 免费 |
| ThreatFox (abuse.ch) | 混合 | IP、域名、URL、哈希 | ❌ 免费 |
| MalwareBazaar (abuse.ch) | 哈希 | 恶意软件 SHA256 哈希 | ❌ 免费 |
| VirusTotal | 富化 | 检测分数 | ✅ 免费密钥 |
| AbuseIPDB | 富化 | IP 信誉 | ✅ 免费密钥 |
## 🔧 配置(`.env`)
| 变量 | 默认值 | 描述 |
|---|---|---|
| `VIRUSTOTAL_API_KEY` | _(空)_ | 可选的 VT API 密钥 |
| `ABUSEIPDB_API_KEY` | _(空)_ | 可选的 AbuseIPDB 密钥 |
| `ES_HOST` | `http://localhost:9200` | Elasticsearch URL |
| `ES_INDEX` | `threat-intel-iocs` | 索引名称 |
| `DB_PATH` | `data/threat_intel.db` | SQLite 数据库路径 |
| `MAX_IOCS_PER_SOURCE` | `500` | 每次运行每个来源获取的 IOC 数量 |
| `RUN_INTERVAL_HOURS` | `6` | 监控模式间隔 |
| `LOG_LEVEL` | `INFO` | DEBUG / INFO / WARNING / ERROR |
## 🧠 您将从本项目中学习到的概念
- 通过公开的 OSINT 威胁情报源进行 **IOC 收集**
- 与 VirusTotal 和 AbuseIPDB 进行 **API 集成**
- 用于本地存储和去重的 **SQLite**
- **Elasticsearch** 索引和全文搜索
- 用于 SIEM 风格仪表盘的 **Kibana**
- 使用 **Docker Compose** 在本地运行生产级服务
- 带有模块化收集器/富化器的 **Python 项目架构**
- 使用 `schedule` 库的 **计划任务自动化**
## ⚠️ 免责声明
本项目仅用于 **教育和研究目的**。
所有的 IOC 情报源均来自公开的、社区维护的、免费的威胁情报平台。
请勿使用 IOC 扫描或探测您不拥有的系统。
*为学习蓝队 / 威胁情报基础知识而构建。*
标签:DAST, Elasticsearch, ELK技术栈, ESC4, Feodo Tracker, GitHub, HTML报告生成, HTTP工具, IOC提取, IP地址分析, MalwareBazaar, OSINT, Python, Sigma 规则, SQLite, ThreatFox, URLhaus, 仪表盘, 公开情报, 去重, 域名分析, 失陷标示, 威胁情报, 安全分析, 安全运营, 实时处理, 开发者工具, 开源威胁源, 恶意软件分析, 扫描框架, 数据富化, 数据泄露, 文件哈希分析, 无后门, 网络安全, 自动化收集, 自动化管道, 请求拦截, 越狱测试, 逆向工具, 隐私保护