ahmedel-bar/ioc_checker
GitHub: ahmedel-bar/ioc_checker
一款面向安全运营人员的多源威胁情报聚合 CLI 工具,能够并发查询多个安全平台并为各类 IOC 提供统一的风险评分。
Stars: 0 | Forks: 0
# IOC Checker — 威胁情报聚合 CLI
一款专为 SOC 分析师和威胁猎人设计的单命令行工具。只需向其提供任何妥协指标(IOC,包括 IP、域名、URL 或哈希值),它就会并发查询多个威胁情报提供商,然后将结果汇总为一个风险评分和判定结论。
```
python ioc_checker.py 8.8.8.8
```
## 提供商
提供商的查询是基于检测到的 IOC 类型动态执行的——只有实际支持该类型的提供商才会被查询和显示。
| 提供商 | 环境变量 | 需要 Key | 支持的 IOC 类型 |
|-----------------|----------------------------|--------------|----------------------------------------|
| VirusTotal (v3) | `VT_API_KEY` | 是 | IPv4, Domain, URL, MD5, SHA1, SHA256 |
| AlienVault OTX | `OTX_API_KEY` | 是 | IPv4, Domain, URL, MD5, SHA1, SHA256 |
| ThreatFox | `THREATFOX_API_KEY` | 是 | IPv4, Domain, URL, MD5, SHA1, SHA256 |
| AbuseIPDB | `ABUSEIPDB_API_KEY` | 是 | 仅 IPv4 |
| URLhaus | `URLHAUS_API_KEY` | 否 (公开) | 仅 URL |
| MalwareBazaar | `MALWAREBAZAAR_API_KEY` | 否 (公开) | MD5, SHA1, SHA256 |
| Pulsedive | `PULSEDIVE_API_KEY` | 是 (免费) | IPv4, Domain, URL |
提供商的选择完全由每个提供商各自的 `SUPPORTED_TYPES` 声明驱动(参见 `providers/manager.py`)——没有硬编码的 if/else 链来决定哪种 IOC 类型运行哪个提供商。
要添加新的提供商:创建实现 `BaseProvider` 的 `providers/.py`,将其 key 添加到 `config.py` 中,并在 `providers/manager.py` 中进行注册。
## 支持的 IOC 类型
类型会自动检测——您无需手动指定:
- IPv4
- Domain
- URL
- MD5 / SHA1 / SHA256 文件哈希
## 安装说明
```
git clone
cd ioc_checker
pip install -r requirements.txt
cp .env.example .env
# 然后编辑 .env 并添加你的 API keys
```
## 使用说明
```
python ioc_checker.py 8.8.8.8
python ioc_checker.py google.com
python ioc_checker.py https://evil.com/login
python ioc_checker.py 44d88612fea8a8f36de82e1278abb02f
```
示例输出包括:
1. ASCII banner + 版本信息
2. IOC 信息面板(值、检测到的类型、长度、时间戳)
3. 在并发查询提供商时显示的临时进度指示器
(扫描完成后会自动清除)
4. 结果表(每个提供商的判定、置信度及详情)
5. 总体评估面板(风险评分、查询/匹配的来源、建议)
6. API 警告部分 - 仅在本次扫描期间有一个或多个提供商失败时出现
(取代了旧版始终显示的 API 状态表)
7. 页脚(执行时间、使用的提供商)
## API 健康 / 警告
不再在每次运行时都显示持久的“API 状态”表。如果每个查询的提供商都成功,则不会打印任何额外内容。如果某个提供商失败(缺少/无效的 key、速率限制、超时、意外响应),将在“总体评估”之后出现一个紧凑的 `⚠ API 警告` 面板,仅列出实际失败的提供商及其原因。
## 风险评分
| 信号 | 分数 |
|--------------------------------|--------|
| VirusTotal 恶意 | +40 |
| VirusTotal 可疑 | +20 |
| AlienVault OTX 有 pulses | +30 |
| ThreatFox 匹配成功 | +30 |
| AbuseIPDB 评分 ≥ 75 | +40 |
| AbuseIPDB 评分 25–74 | +20 |
| URLhaus URL 在线 | +30 |
| URLhaus URL 离线 | +15 |
| MalwareBazaar 匹配成功 | +30 |
| Pulsedive 风险 critical | +40 |
| Pulsedive 风险 high | +30 |
| Pulsedive 风险 medium | +20 |
| Pulsedive 风险 low | +10 |
| 评分区间 | 总体评估 |
|-------------|----------------------|
| 0–20 | CLEAN |
| 21–50 | SUSPICIOUS |
| 51–100 | HIGH RISK |
## 项目布局
```
ioc_checker/
├── ioc_checker.py # CLI entry point
├── config.py # .env / API key loading
├── detector.py # IOC type detection
├── utils.py # Logging + unified ProviderResult/Verdict types
├── ui.py # Rich-based presentation layer
├── requirements.txt
├── .env.example # change it's name to .env and fill it
└── providers/
├── __init__.py # BaseProvider interface (+ SUPPORTED_TYPES)
├── manager.py # Provider registry / dynamic selection
├── virustotal.py
├── otx.py
├── threatfox.py
├── abuseipdb.py
├── urlhaus.py
├── malwarebazaar.py
└── pulsedive.py
```
## 错误处理
如果某个提供商失败(key 错误、超时、速率限制、意外响应),其所在行将直接显示 `ERROR` 及简短原因——扫描会针对其余的提供商继续进行,且工具绝不会崩溃。
## 日志
所有请求和错误都会记录到工作目录下的 `ioc_checker.log` 文件中。
标签:Python, SOC分析, 威胁情报, 安全运营, 开发者工具, 扫描框架, 文档结构分析, 无后门, 逆向工具