ryuk27/ioc-threat-intel
GitHub: ryuk27/ioc-threat-intel
一款集成多源威胁情报API的IOC自动化分析工具,支持IP、域名、URL和文件哈希的风险评分与MITRE ATT&CK映射。
Stars: 2 | Forks: 0
# IOC 威胁情报引擎
面向安全团队和 SOC 分析师的自动化威胁情报富化工具。
针对 **5 个独立威胁情报源**分析 IP、域名、URL 和文件哈希,并将发现结果映射到 **MITRE ATT&CK 技术**,以进行情境化的威胁评估。
```
Input: Single IOC or file of IOCs
↓
Detection: Automatic type identification (IPv4, IPv6, domain, URL, hash)
↓
Enrichment: Query 5 threat feeds simultaneously
├─ VirusTotal (AV engine aggregator)
├─ AbuseIPDB (IP reputation)
├─ AlienVault OTX (threat pulses)
├─ Feodo Tracker (botnet C2 tracker)
└─ URLhaus (malware URL database)
↓
Scoring: Composite risk score (0-100)
↓
Mapping: MITRE ATT&CK technique & tactic
↓
Report: Markdown or JSON output
```
## 功能特性
**多 IOC 支持**
分析 IPv4、IPv6、域名、URL 和文件哈希(MD5、SHA1、SHA256、SHA512)
**5 个独立威胁源**
- VirusTotal(多引擎 AV 扫描结果)
- AbuseIPDB(IP 信誉与滥用报告数据库)
- AlienVault OTX(威胁脉冲与众包情报)
- Feodo Tracker(实时僵尸网络 C2 阻断列表)
- URLhaus(恶意软件 URL 数据库)
**自动 IOC 类型检测**
零用户配置的智能验证和类型分类
**综合风险评分**
结合所有来源信号的加权评分算法(0-100 分制,含 5 个严重级别)
**MITRE ATT&CK 映射**
针对所有检测结果的自动技术及战术映射 —— 将发现结果与已知攻击模式关联
**批量处理**
通过单条命令处理 10、100 或 1000 个 IOC
**专业报告**
清晰的 Markdown 报告,包含摘要统计、风险细分和可操作建议
**生产级**
速率限制、错误处理,以及单个源失败时的优雅降级
## 安装说明
### 前置条件
- Python 3.8+
- pip
### 设置
```
# Clone 或 download repository
cd ioc-threat-intel
# Install dependencies
pip install -r requirements.txt
# Copy .env.example 到 .env 并添加 API keys
cp .env.example .env
# Edit .env 填入你的 credentials
# Required keys: VT_API_KEY, ABUSEIPDB_API_KEY, OTX_API_KEY
# Optional: SHODAN_API_KEY
```
### 所需 API 密钥
| 服务 | 密钥 | 免费套餐 | 注册地址 |
|---------|-----|-----------|---------|
| VirusTotal | `VT_API_KEY` | 是(有限制) | https://www.virustotal.com |
| AbuseIPDB | `ABUSEIPDB_API_KEY` | 是(有限制) | https://www.abuseipdb.com |
| AlienVault OTX | `OTX_API_KEY` | 是 | https://otx.alienvault.com |
| Shodan | `SHODAN_API_KEY` | 是 | https://www.shodan.io |
| **Feodo Tracker** | 不需要 | 是(无需认证) | https://feodotracker.abuse.ch |
| **URLhaus** | 不需要 | 是(无需认证) | https://urlhaus.abuse.ch |
## 使用方法
### 单个 IOC 分析
```
python main.py --ioc 8.8.8.8
# Output:
# Type: ipv4
# Risk Score: 10/100 — CLEAN
# VirusTotal: 0 malicious, 0 suspicious
# AbuseIPDB: Confidence 0%, 0 reports
# Feodo Tracker: Not listed
# MITRE: T1071 — Application Layer Protocol (Command and Control)
# Verdict: [+] CLEAN — No immediate action recommended
```
### 批量文件处理
```
# Process 多个 IOCs (来自文件)
python main.py --file iocs.txt --output report.md
# Input file 格式 (每行一个):
# 8.8.8.8
# malware.example.com
# d41d8cd98f00b204e9800998ecf8427e
# https://evil-site.net/malware
```
### 抑制控制台输出
```
python main.py --file iocs.txt --output report.md --quiet
```
## 示例输出
### 控制台输出
```
[1] IOC: 185.220.101.1
Type: IPv4 Address
Risk Score: 95/100 — CRITICAL
Threat Intelligence:
[+] VirusTotal: 45 malicious, 3 suspicious
[+] AbuseIPDB: Confidence 94%, 312 reports
[!] Feodo Tracker: LISTED — Known Botnet C2 (Emotet)
MITRE ATT&CK:
Technique: T1071.001 — Web Protocols
Tactic: Command and Control
Verdict: [!] MALICIOUS — Recommend immediate block
```
### Markdown 报告
```
# IOC Threat Intelligence Report
Generated: 2026-03-16 14:32:11 UTC
## [1] IOC: 185.220.101.1
Type: ipv4
Risk Score: 95/100 — CRITICAL
### Threat Intelligence
**VirusTotal:**
- Malicious: 45/72
- Suspicious: 3/72
- Categories: Trojan.Generic, Botnet, C2
**AbuseIPDB:**
- Confidence Score: 94%
- Total Reports: 312
- ISP: Hosting Provider X
**Feodo Tracker:**
- [!] LISTED — Known Botnet C2
- Malware: Emotet/Trickbot variant
- Status: Active
---
# Summary
Total IOCs Analyzed: 3
Critical: 1 | High: 1 | Medium: 0 | Low: 0 | Clean: 1
## Recommendations
[!] IMMEDIATE ACTION REQUIRED
- Block detected malicious IOCs at perimeter
- Alert security team for incident response
- Isolate affected endpoints
```
## 项目结构
```
ioc-threat-intel/
├── main.py # Entry point
├── ioc_intel/
│ ├── __init__.py
│ ├── validator.py # IOC type detection & validation
│ ├── enricher.py # API integration (all 5 sources)
│ ├── scorer.py # Risk scoring algorithm
│ ├── mitre_mapper.py # MITRE ATT&CK mapping
│ └── reporter.py # Report generation & formatting
├── tests/
│ ├── test_validator.py # IOC detection tests
│ ├── test_scorer.py # Risk scoring tests
│ └── test_mitre_mapper.py # MITRE mapping tests
├── samples/
│ ├── sample_iocs.txt # Example IOC file
│ └── sample_report.md # Example report output
├── docs/
│ └── case-study.md # Real-world investigation scenario
├── .env.example # Template for API keys
├── .gitignore
├── requirements.txt
└── README.md
```
## 评分原理
风险评分由多个加权信号计算得出:
| 信号 | 权重 | 最大分值 |
|--------|--------|------------|
| VirusTotal 恶意检测数 (≥5) | 80 | 80 |
| VirusTotal 可疑检测数 | 2 | 20 |
| AbuseIPDB 置信度评分 | 0.8 | 80 |
| AbuseIPDB 总报告数 | 0.5 | 20 |
| Feodo Tracker 列入名单 | +30 | 30 |
| URLhaus 列入名单 | +25 | 25 |
| OTX 脉冲数 | 5 | 30 |
| Shodan 漏洞 | 10 | 25 |
| | | **最大值: 100** |
### 严重级别
| 级别 | 分值 | 行动 |
|-------|-------|--------|
| 🔴 **危急 (CRITICAL)** | 80-100 | 立即拦截,进行调查 |
| 🟠 **高危 (HIGH)** | 60-79 | 升级处理,尽可能拦截 |
| 🟡 **中危 (MEDIUM)** | 40-59 | 监控,调查 |
| 🔵 **低危 (LOW)** | 15-39 | 记录日志,监控 |
| ✅ **安全 (CLEAN)** | 0-14 | 批准使用 |
## MITRE ATT&CK 覆盖范围
| 技术 ID | 技术名称 | 战术 |
|---|---|---|
| T1071 | 应用层协议 | 命令与控制 |
| T1071.001 | Web 协议 | 命令与控制 |
| T1566 | 钓鱼 | 初始访问 |
| T1204 | 用户执行 | 执行 |
| T1041 | 经 C2 通道渗出 | 渗出 |
| T1020 | 自动渗出 | 渗出 |
| T1189 | 路过式入侵 | 初始访问 |
## 测试
运行单元测试以验证功能:
```
# Install pytest (如果尚未安装)
pip install pytest
# Run 所有 tests
pytest tests/ -v
# Run 特定 test 文件
pytest tests/test_validator.py -v
# Run 并附带 coverage
pytest tests/ --cov=ioc_intel
```
**当前状态:** ✅ 47 项测试通过
## 案例研究
请参阅 [docs/case-study.md](docs/case-study.md) 查看展示该工具实际运作的真实事件调查场景。
### 场景亮点
- C2 回连检测
- 多源威胁验证
- MITRE 技术映射
- 8 分钟内完成事件遏制
## 性能
- **单个 IOC 分析:** 约 2-3 秒(取决于 API)
- **批量处理(10 个 IOC):** 约 15-30 秒(受速率限制)
- **报告生成:** <1 秒
- **零外部依赖:** 所有威胁源查询仅使用公共/商业 API
## 错误处理
该工具可优雅处理以下情况:
- API 密钥缺失 → 跳过该源,继续使用其他源
- 网络超时 → 使用可用数据返回部分结果
- 无效 IOC → 标记为未知,处理剩余项
- 速率限制 → 带退避机制的自动重试
- 文件未找到 → 清晰的错误提示并退出
## 安全说明
[!] **重要**
- 切勿将包含真实 API 密钥的 `.env` 文件提交到版本控制
- `.env` 默认已添加到 `.gitignore` 中
- 请使用包含占位符值的 `.env.example` 模板作为参考
- 定期轮换 API 密钥
- 如果您的威胁源提供商支持,请考虑使用短期令牌
## 作者
由 **Ryuk27** 构建 —— 威胁情报安全工程师
**找我:**
- [GitHub](https://github.com/ryuk27)
- [LinkedIn](https://www.linkedin.com/in/ram0912/)
## 路线图
计划中的增强功能:
- 更多威胁源集成(URLScan、Censys、AbuseIPDB API v2)
- 自定义风险评分规则和阈值
- Slack/Teams 集成以实现自动告警
- 历史追踪和趋势分析
- 针对企业级规模的批量 API 优化
## 许可证
本工具按“原样”提供,用于教育和安全研究目的。
## 资源
- **MITRE ATT&CK 框架:** https://attack.mitre.org/
- **VirusTotal API:** https://developers.virustotal.com/
- **AbuseIPDB API:** https://docs.abuseipdb.com/
- **AlienVault OTX:** https://otx.alienvault.com/
- **Feodo Tracker:** https://feodotracker.abuse.ch/
- **URLhaus:** https://urlhaus.abuse.ch/
**最后更新:** 2026年3月
**状态:** 积极开发中
标签:AMSI绕过, ATT&CK映射, DAST, IOC分析, IP信誉检测, Python安全工具, SOC工具, URL安全检测, 威胁情报, 威胁检测, 安全脚本, 开发者工具, 异常检测, 恶意软件分析, 情报丰富, 沙箱集成, 漏洞发现, 病毒扫描, 结构化查询, 网络安全, 自动化安全, 逆向工具, 速率限制处理, 隐私保护, 风险评分