hraven-1/ThreatCheck
GitHub: hraven-1/ThreatCheck
一款聚合五大威胁情报数据源的 IP 信誉分析 CLI 工具,支持从新闻、PDF 和 TAXII 源提取 IOC 并生成多格式报告。
Stars: 0 | Forks: 0
# ThreatCheck
一款多源 IP 信誉与威胁情报 CLI 工具。通过五个富化来源检查公共 IP,并生成裁定结果、HTML 报告、CSV 导出以及防泄露(Defanged)IOC 列表。支持从新闻源、PDF 和 TAXII 威胁情报集合中提取 IOC。
## 来源
| 来源 | 数据 | 是否需要密钥 |
|---|---|---|
| AbuseIPDB | 滥用报告、置信度评分、ISP、国家 | 是 |
| VirusTotal | AV 引擎检测结果、AS 所有者、信誉 | 是 |
| GreyNoise | 互联网噪音分类、RIOT、最后出现时间 | 是(提供免费额度) |
| Shodan (InternetDB) | 开放端口、CVE、标签、CPE、主机名 | 否 |
| IPInfo | 地理位置、ASN、组织、主机名、时区 | 否(令牌可选) |
## 要求
- Python 3.7+
- 无需强制依赖项 —— 核心功能仅使用标准库
扩展功能的可选依赖项:
```
pip install pdfplumber # PDF IOC extraction (--pdf)
pip install taxii2-client # TAXII feed integration (--taxii)
```
## 设置
1. 将 `config.json.example` 复制为 `config.json`
2. 将您的 API 密钥添加到 `config.json` 中
3. 运行程序
如果 `config.json` 不存在,首次运行时会自动保存 API 密钥。
## 用法
```
# 单一 IP
python threatcheck.py 8.8.8.8
# CIDR 范围 (自动扩展,上限为 256 台主机)
python threatcheck.py 192.168.1.0/24
# 批量文件 (每行一个 IP 或 CIDR)
python threatcheck.py --batch ips.txt
# 包含完整输出的批量模式
python threatcheck.py --batch ips.txt --report report.html --export results.csv --ioc iocs.txt
# 兼容管道的 JSON 输出
python threatcheck.py 8.8.8.8 --quiet --json
# Defanged 输出
python threatcheck.py 8.8.8.8 --defang
# Threat intel 新闻源
python threatcheck.py --news
python threatcheck.py --news --ioc-extract
python threatcheck.py --news --news-filter "ransomware,CVE" --news-since 48
# 新闻源到批处理再到 Enrichment pipeline
python threatcheck.py --news --ioc-extract --to-batch leads.txt
python threatcheck.py --news --ioc-extract --to-batch leads.txt --enrich
python threatcheck.py --news --ioc-extract --to-batch leads.txt --enrich --export results.csv
# PDF IOC 提取
python threatcheck.py --pdf advisory.pdf
python threatcheck.py --pdf advisory.pdf --to-batch leads.txt
python threatcheck.py --pdf advisory.pdf --to-batch leads.txt --enrich --export results.csv
# TAXII feed 集成
python threatcheck.py --taxii
python threatcheck.py --taxii --to-batch taxii_leads.txt
python threatcheck.py --taxii --to-batch taxii_leads.txt --enrich
python threatcheck.py --taxii --taxii-since 2026-04-29T00:00:00.000Z --to-batch leads.txt --enrich
# Cache 管理
python threatcheck.py --cache-stats
python threatcheck.py --cache-purge
```
## IOC 提取
ThreatCheck 可从新闻文章标题、PDF 文档和 TAXII 集合中提取失陷指标。提取出的 IOC 分为两类:
- **威胁 IOC** —— 可能属于恶意基础设施的 IP、CVE、哈希值和未知域名
- **参考提及** —— 白名单域名(供应商、政府机构、引用来源),它们出现在报告中但不属于 IOC
自动处理防泄露指标(`1.2.3[.]4` 和 `hXXps://`)。
## 输出模式
| 标志 | 描述 |
|---|---|
| `--report FILE` | 包含裁定摘要的 HTML 报告 |
| `--export FILE` | 包含每个 IP 所有富化字段的 CSV 文件 |
| `--ioc FILE` | 仅包含恶意 IP 的防泄露 IOC 列表 |
| `--json` | 输出整洁的 JSON 到标准输出以便管道传输 |
| `--defang` | 以 `1.2.3[.]4` 格式打印 IP |
| `--to-batch FILE` | 将从新闻/PDF/TAXII 提取的 IP 写入批处理文件 |
| `--enrich` | 立即对写入 `--to-batch` 的 IP 进行富化 |
## 选项
```
--batch FILE File with one IP/CIDR per line
--pdf FILE Extract IOCs from a PDF file
--taxii Pull IP indicators from configured TAXII collections
--taxii-since TIME Only fetch indicators added after this ISO timestamp
--days N AbuseIPDB lookback window in days (default: 90)
--no-cache Bypass cache, force fresh API calls
--cache-ttl N Cache TTL in seconds (default: 21600 = 6h)
--quiet Suppress terminal output (use with --json)
--ioc-extract Extract and display IOCs from news article titles
--to-batch FILE Write extracted IPs to batch file
--enrich Immediately enrich IPs from --to-batch
--abuse-key KEY AbuseIPDB key override (not saved)
--vt-key KEY VirusTotal key override (not saved)
--gn-key KEY GreyNoise key override (not saved)
--shodan-key KEY Shodan key override (not saved)
--ipinfo-token TOK IPInfo token override (not saved)
```
## 配置
密钥和 TAXII 服务器配置存储在 `config.json` 中。有关包含 `taxii_servers` 块的完整结构,请参阅 `config.json.example`。
## 日志
结果会自动保存到 `logs/threat_log.json`。
## 许可证
MIT
标签:AbuseIPDB, API安全, Ask搜索, CLI安全工具, CSR威胁检测, CVE漏洞检测, Defang处置, DNS枚举, GitHub, GreyNoise, HTTP/HTTPS抓包, IOC提取, IPInfo, IP信誉查询, IP 地址批量处理, JSON输出, Python安全工具, TAXII客户端, VirusTotal, 多源情报关联, 威胁情报, 开发者工具, 开放端口扫描, 态势感知, 情报报告生成, 数据泄露, 文档结构分析, 网络安全工具