siva404e/IOC_AUTOMATION
GitHub: siva404e/IOC_AUTOMATION
自动化 IOC 威胁情报聚合器,从 29 个开源情报源收集并标准化威胁指标,生成适配 Sumo Logic SIEM 的 STIX 2.1 格式以支持企业威胁检测。
Stars: 0 | Forks: 0
# IOC 威胁情报聚合器



**自动化的 IOC 威胁情报聚合器**,从 **29 个开源威胁情报源**收集、标准化、去重并导出威胁指标,生成适配 Sumo Logic SIEM 的 STIX 2.1 CSV 格式,用于企业威胁检测。
**聚合数据源:** AlienVault OTX、PhishTank、ThreatFox、Feodo、Spamhaus、URLhaus、MalwareBazaar、Pulsedive、Hybrid Analysis、CAPE Sandbox、OpenPhish、FireHOL、Botvrij、ThreatView、C2IntelFeeds、C2Tracker、DataPlane、AbuseSSL、IPsum、CINScore、PhishingArmy、VXVault、URLAbuse、TweetFeed、VirusShare、MISP CERT-FR、Blocklist.de、EmergingThreats 等。
## 📊 SOC 背景
威胁情报分析师**每周**运行此聚合器,从 29 个情报源拉取最新的 IOC 并上传至 Sumo Logic,以便 L1 分析师在这些指标出现在实时日志中时获得**自动告警**。这填补了威胁情报源发现与 SIEM 检测之间的空白,实现了对已知恶意基础设施的快速响应。
## 🎯 核心功能
| 功能 | 详情 |
|---------|---------|
| **并行抓取** | 29 个威胁情报源,使用 10 个并发线程提升速度 |
| **置信度评分** | 基于情报源声誉的单源信任评分(范围 65–95) |
| **IOC 去重** | 自动去重并保留置信度最高的威胁类型 |
| **5 周滚动窗口** | 主 CSV 维护滚动历史记录;自动归档最旧的一周 |
| **时间戳刷新** | 重新发现的 IOC 会延长有效期,防止在 Sumo Logic 中过期 |
| **STIX 2.1 导出** | 兼容 Sumo Logic 的 10 列 CSV 格式,无表头 |
| **智能拆分** | 每个输出文件最多包含 9,999 行,以确保兼容 SIEM |
| **自动归档** | 第 6 周及以后的 IOC 移至永久存档 Archive_IOC.csv |
| **跨平台** | 可在 Windows(任务计划程序)和 Linux(Cron)上运行 |
| **多 IOC 类型** | IP 地址、域名、URL、MD5/SHA-1/SHA-256 哈希值 |
## 🗺️ MITRE ATT&CK 覆盖范围
该聚合器支持跨多个攻击阶段的检测:
| 威胁类别 | 情报源 | MITRE ID | 战术 | 应用场景 |
|-----------------|---------|----------|--------|----------|
| **C2 基础设施** | Feodo, C2IntelFeeds, C2Tracker | T1071 | 命令与控制 | 阻断与已知 C2 服务器的出站通信 |
| **钓鱼 URL** | PhishTank, OpenPhish, PhishingArmy | T1566.002 | 初始访问 | 访问钓鱼着陆页时触发告警 |
| **恶意软件哈希值** | MalwareBazaar, Hybrid Analysis, CAPE | T1204.002 | 执行 | 根据文件哈希检测恶意软件执行 |
| **僵尸网络 IP** | Spamhaus, FireHOL, DataPlane | T1583.005 | 资源开发 | 阻断来自僵尸网络源 IP 的流量 |
| **恶意软件域名** | URLhaus, Botvrij, ThreatView | T1566.002 | 初始访问 | 阻断对恶意软件域名的 DNS 请求 |
## 📦 威胁情报源
| # | 情报源 | IOC 类型 | 威胁类别 | 置信度 | 需要 API Key? |
|---|--------|-----------|-----------------|------------|----------|
| 1 | **Feodo** | IP | C2 | 95 | 否 |
| 2 | **PhishTank** | URL / 域名 | 钓鱼 | 90 | 否 |
| 3 | **C2IntelFeeds** | IP | C2 | 90 | 否 |
| 4 | **OpenPhish** | URL / 域名 | 钓鱼 | 88 | 否 |
| 5 | **MalwareBazaar** | SHA-256 哈希 | 恶意软件 | 88 | 否 |
| 6 | **ThreatFox** | IP / 域名 / URL / 哈希 | 恶意软件 | 85 | 否 |
| 7 | **URLhaus** | URL / 域名 | 恶意软件 | 85 | 否 |
| 8 | **AbuseSSL** | IP / 哈希 | 恶意软件 | 83 | 否 |
| 9 | **MISP CERT-FR** | 哈希 | 恶意软件 | 83 | 否 |
| 10 | **Spamhaus** | IP | 僵尸网络 | 80 | 否 |
| 11 | **OTX (AlienVault)** | IP / 域名 / URL / 哈希 | 恶意软件 | 70 | **是** |
| 12 | **Pulsedive** | IP / 域名 / URL | 恶意软件 | 65 | **是** |
| 13 | **Hybrid Analysis** | 哈希 | 恶意软件 | 82 | **是** |
| 14 | **CAPE Sandbox** | 哈希 | 恶意软件 | 80 | **是** |
| 15 | **Botvrij** | IP / 域名 / URL / 哈希 | 恶意软件 | 70 | 否 |
**以及其他 14 个情报源**,包括 FireHOL、Blocklist.de、C2Tracker、DataPlane、ThreatView (5 个情报源)、Bazaar、IPsum、CINScore、PhishingArmy、VXVault、URLAbuse、TweetFeed、VirusShare、Botvrij Hashes
## 🚀 快速开始
### 前置条件
- **Python:** 3.10 或更高版本
- **操作系统:** Windows 10+ 或 Ubuntu 20.04+
- **互联网:** 需要连接(从 29 个外部源获取数据)
- **磁盘:** 主文件 + 归档 + 每周 CSV 需约 500 MB
### 安装说明
```
# 1. 克隆 repository
git clone https://github.com/siva404e/IOC_AUTOMATION.git
cd IOC_AUTOMATION
# 2. 安装 Python 依赖
pip install -r requirements.txt
# 3. 从模板创建 config 文件
cp config.ini.example config.ini
# 4. 添加你的 API 密钥(可选,但推荐)
# 编辑 config.ini 并填写:
# - otx_api_key (AlienVault OTX)
# - pulsedive_api_key (Pulsedive)
# - hybrid_analysis_api_key (Hybrid Analysis)
# - cape_api_token (CAPE Sandbox)
# 5. 运行 aggregator
python final_ioc_weekly_split.py
```
### 首次运行输出
```
19:12:40 INFO Config loaded from : /IOC_Scripts/config.ini
19:12:40 INFO Output directory : /home/analyst/IOC_Output
19:12:40 INFO Starting IOC aggregator — 29 sources configured
19:12:47 INFO [+] ThreatFox fetched
19:12:50 INFO [+] PhishTank fetched (56294 rows)
19:12:52 WARNING [-] CAPE skipped — CAPE_API_TOKEN not set
19:13:28 INFO Total unique IOCs fetched: 438977
19:13:31 INFO Master updated — 343349 new | 95628 re-seen | 438977 total
19:13:34 INFO IP 39379 rows → 4 part file(s)
19:13:34 INFO Domain 273135 rows → 28 part file(s)
19:13:34 INFO URL 20912 rows → 3 part file(s)
19:13:34 INFO Hash 9923 rows → 1 part file(s)
```
## 📂 项目结构
```
IOC_AUTOMATION/
├── final_ioc_weekly_split.py ← Main aggregator script (1200+ lines)
├── config.ini ← Your API keys (git ignored)
├── config.ini.example ← Configuration template
├── requirements.txt ← Python dependencies
├── README.md ← This file
├── SOP_IOC_ThreatIntelligence_Aggregator.md ← Complete operational guide
├── .gitignore ← Prevents API key leaks
└── LICENSE ← MIT License
```
## 📊 输出文件
聚合器生成适配 Sumo Logic 的 STIX 2.1 CSV 文件:
| 文件 | 格式 | 更新频率 | 用途 |
|------|--------|---------|---------|
| **Master_IOC.csv** | CSV (8 列) | 每次运行 | 带有 WeekTag 的 5 周 IOC 滚动历史记录 |
| **Archive_IOC.csv** | CSV (8 列) | 第 6 周及以后 | 被移出批次的永久存档 |
| **IOC_Weekly_IP_PartN_.csv** | CSV (10 列) | 每次运行 | IPv4 地址(每个文件最多 9,999 行) |
| **IOC_Weekly_Domain_PartN_.csv** | CSV (10 列) | 每次运行 | 域名(每个文件最多 9,999 行) |
| **IOC_Weekly_URL_PartN_.csv** | CSV (10 列) | 每次运行 | 恶意软件/钓鱼 URL(每个文件最多 9,999 行) |
| **IOC_Weekly_Hash_PartN_.csv** | CSV (10 列) | 每次运行 | MD5/SHA-1/SHA-256 哈希值(每个文件最多 9,999 行) |
### CSV 格式 (Sumo Logic STIX 2.1)
```
id,indicator,type,source,validFrom,validUntil,confidence,threatType,actors,killChain
0001,192.0.2.1,ipv4-addr,Feodo,2026-03-18T13:00:00.000Z,2027-03-18T13:00:00.000Z,95,malicious-activity,,command-and-control
0002,evil.com,domain-name,PhishTank,2026-03-18T13:00:00.000Z,2027-03-18T13:00:00.000Z,90,malicious-activity,,delivery
0003,https://malware.xyz/pay.html,url,URLhaus,2026-03-18T13:00:00.000Z,2027-03-18T13:00:00.000Z,85,malicious-activity,,initial-access
```
## 🔄 5 周滚动窗口架构
主文件自动维护一个滚动窗口:
| 周次 | 主文件包含内容 | 归档操作 |
|------|-----------------|-----------------|
| 1 | W01 | — |
| 2 | W01–W02 | — |
| 3 | W01–W03 | — |
| 4 | W01–W04 | — |
| 5 | W01–W05 | — |
| 6 | W02–W06 | **W01 → 归档** |
| 7 | W03–W07 | **W02 → 归档** |
每个 IOC 都会获得一个 `WeekTag`(例如 `2026-W11`),以确保移出过程是确定性的。**重新发现的 IOC 会进行时间戳刷新**,防止在 Sumo Logic 中过期。
## ⏱️ 定时执行
### Windows(任务计划程序)
```
Program: C:\Python310\python.exe
Arguments: C:\IOC_Scripts\final_ioc_weekly_split.py
Start in: C:\IOC_Scripts
Trigger: Weekly, Monday 07:00
```
### Linux(Cron)
```
crontab -e
# 添加行:
0 7 * * 1 cd /path/to/IOC_Scripts && python3 final_ioc_weekly_split.py >> ~/IOC_Scripts/cron.log 2>&1
```
## 📤 上传至 Sumo Logic
1. 运行聚合器 → 在 `IOC_Output/` 中生成 CSV 文件
2. 登录 **Sumo Logic** → **Security** → **Threat Intelligence**
3. 点击 **Add Source** → **Manual Upload** → **CSV**
4. 上传每一个 `IOC_Weekly__Part.csv` 文件
5. Sumo Logic 自动检测指标并创建检测规则
**验证:** Sumo Logic 中的行数与您的 CSV 文件行数是否一致。
## 📖 完整文档
有关详细的设置、故障排除和操作流程,请参阅:
**👉 [SOP_IOC_ThreatIntelligence_Aggregator.md](./SOP_IOC_ThreatIntelligence_Aggregator.md)**
涵盖内容:
- 系统概述与架构
- 前提条件与依赖
- 初始设置流程
- 运行与计划任务 (Windows + Linux)
- 监控与日志解读
- 29 个威胁情报源的详细信息
- 主文件滚动窗口
- Sumo Logic 上传步骤
- 故障排除指南
## ⚠️ 限制
- **依赖互联网:** 需要能够连接到所有 29 个情报源的 URL
- **速率限制:** 免费 API 层级存在速率限制;如果被限流可能会跳过部分情报源
- **仅限批量处理:** 为每周批量聚合,而非实时情报源更新
- **手动上传:** Sumo Logic 上传需要手动导入 CSV(可通过 API 实现自动化)
- **API Key:** OTX、Pulsedive、Hybrid Analysis、CAPE 需要免费注册才能使用完整功能
## 🔮 未来改进
- [ ] **GitHub Actions** – 每周定时运行并自动上传
- [ ] **AbuseIPDB 集成** – 增加 IP 信誉评分
- [ ] **Sumo Logic API** – 通过 API 自动上传(无需手动导入 CSV)
- [ ] **Slack 告警** – 任务完成后附带统计摘要通知 SOC
- [ ] **数据库后端** – 使用 PostgreSQL 进行历史查询
- [ ] **Web 面板** – 实时查看情报源状态与 IOC 分析数据
- [ ] **Elasticsearch 导出** – 作为 Sumo Logic 之外的替代方案
## 🛠️ 故障排除
### 问题:`FileNotFoundError: config.ini not found`
**解决方案:** 将 `config.ini.example` 复制为 `config.ini`,并将其放置在与脚本相同的目录中。
### 问题:`ModuleNotFoundError: No module named 'requests'`
**解决方案:** 运行 `pip install -r requirements.txt`
### 问题:`[-] failed: Connection error`
**解决方案:** 检查网络连接。单个情报源失败属于非致命错误,其他情报源会继续运行。
### 问题:`No IOCs fetched — aborting`
**解决方案:** 检查网络连接,并确保防火墙允许出站 HTTPS 请求。
如需了解更多故障排除信息,请参阅 **[SOP_IOC_ThreatIntelligence_Aggregator.md#11-troubleshooting](./SOP_IOC_ThreatIntelligence_Aggregator.md#11-troubleshooting)**
## 📊 典型每周统计数据
```
Total IOCs fetched: 438,977
- New IOCs: 343,349
- Re-seen IOCs: 95,628
- Unique IOCs: 438,977 (after dedup)
Breakdown by type:
- IP addresses: 39,379 (4 part files)
- Domains: 273,135 (28 part files)
- URLs: 20,912 (3 part files)
- Hashes: 9,923 (1 part file)
Confidence distribution:
- 95 (Critical): 12,450 (Feodo, C2Intel)
- 85-90 (High): 187,234 (PhishTank, ThreatFox, URLhaus)
- 70-82 (Medium): 239,293 (OTX, Hybrid Analysis, others)
Processing time: ~2-3 minutes
Archive size: ~2.5 GB (cumulative)
```
## 📝 许可证
本项目基于 **MIT License** 授权 — 详见 [LICENSE](./LICENSE)。
## 👤 作者
**Sivamuthu Selvadurai M**
- GitHub: [@siva404e](https://github.com/siva404e)
- 代码库: [IOC_AUTOMATION](https://github.com/siva404e/IOC_AUTOMATION)
## 🙏 致谢
- **威胁情报源:** AlienVault OTX、abuse.ch、MalwareBazaar、Spamhaus、PhishTank 以及 23+ 个开源情报源
- **第三方库:** requests、pandas、beautifulsoup4、python-whois
- **SIEM 集成:** 合 Sumo Logic STIX 2.1 格式规范
**最后更新:** 2026 年 5 月
**版本:** 1.0
**状态:** ✅ 生产就绪 (Production Ready)
标签:IOC收集, Python, SIEM集成, 威胁情报, 开发者工具, 无后门, 逆向工具