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分析, 威胁情报, 安全运营, 开发者工具, 扫描框架, 文档结构分析, 无后门, 逆向工具