H3NRYBAIT/threatpivot
GitHub: H3NRYBAIT/threatpivot
一款纯 Python 安装的多源 IOC 富化与威胁情报研判 CLI,让分析师在终端几秒内完成单指标或批量指标的多源查询与加权判定。
Stars: 0 | Forks: 0
# threatpivot
[](https://badge.fury.io/py/threatpivot)
[](https://www.python.org/downloads/)
[](https://opensource.org/licenses/MIT)
## 为什么开发 threatpivot
每位 CTI 和 SOC 分析师都熟悉这样的工作流:收到一个可疑域名,
打开八个浏览器标签页,将 IOC 复制粘贴到每个工具中,手动整合
结果,然后写出结论。每个 IOC 需要 10–15 分钟。
`threatpivot` 在终端中不到 5 秒即可完成所有这些操作。
它是为分析师个人构建的——而不是为那些能负担得起共享
IntelOwl 服务器的团队构建的。`pip install`,添加你的免费 API 密钥,每次 IOC 查询
都会并行运行 8 个来源,并提供加权置信度结论和
可以直接粘贴到工单中的完整报告。
## 安装
```
pip install threatpivot
```
## 快速开始
```
# Single IOC — 自动检测类型
pivot lookup evil-domain.com
pivot lookup 185.220.101.45
pivot lookup 44d88612fea8a8f36de82e1278abb02f
# Defanged IOCs 原生支持
pivot lookup 'login-microsoft[.]com'
pivot lookup 'hxxps://evil[.]com/payload.exe'
# 输出格式
pivot lookup evil.com --output markdown
pivot lookup evil.com --output json
pivot lookup evil.com --output html --save report.html
pivot lookup evil.com --output stix --save bundle.json
# 从文件批量 enrichment(每行一个 IOC)
pivot batch iocs.txt
pivot batch iocs.txt --output csv --save results.csv
# Campaign 模式 — 将 IOC 分组到单个调查中
pivot campaign new "phishing-campaign-2024"
pivot campaign add "phishing-campaign-2024" evil.com
pivot campaign add "phishing-campaign-2024" 185.220.101.45
pivot campaign report "phishing-campaign-2024" --output html
# 以交互方式配置 API keys
pivot configure
# 查看哪些 sources 处于活跃状态
pivot providers
# Pipeline 模式 — 如果为恶意则返回退出代码 1
pivot lookup "$IOC" --fail-on-malicious
```
## 来源
| 来源 | IOC 类型 | 是否需要密钥 | 免费层级 |
|--------|-----------|--------------|-----------|
| VirusTotal | 全部 | 是 | 500次/天 |
| AbuseIPDB | IP | 是 | 1,000次/天 |
| ThreatFox | 全部 | 是 | 无限制 |
| urlscan.io | 域名, URL | 否 | 无限制公开 |
| AlienVault OTX | 全部 | 是 | 无限制 |
| Shodan | IP | 是 | 有限 |
| GreyNoise | IP | 是 | 社区层级 |
| crt.sh | 域名 | 否 | 无限制 |
| URLhaus | 全部 | 否 | 无限制 |
所有来源都是免费的。没有专业版。没有付费墙的提供商。
## 置信度评分的工作原理
`threatpivot` 并不只是简单地计算有多少来源标记了某个 IOC。
每个来源都有基于其可靠性和信号强度的权重:
| 来源 | 权重 | 理由 |
|--------|--------|-----------|
| VirusTotal | 35% | 70+ AV 引擎,信号最强 |
| ThreatFox | 25% | 社区验证的 C2 数据 |
| AbuseIPDB | 20% | 海量滥用报告 |
| OTX | 10% | 社区质量参差不齐 |
| urlscan | 5% | 被动型,置信度较低 |
| 其他 | 5% | 上下文/枢纽价值 |
最终判定阈值:
| 分数 | 结论 |
|-------|---------|
| ≥ 0.65 | MALICIOUS |
| ≥ 0.30 | SUSPICIOUS |
| > 0.00 | CLEAN |
| 0.00 | UNKNOWN |
## 隐私与安全
- 私有和保留 IP(RFC1918、loopback、link-local)**绝不**
发送给外部 API
- API 密钥存储在 `~/.config/threatpivot/config.toml` 中,并且
**绝不**会出现在输出、日志或 `--json` 模式中
- 所有外部请求均使用 HTTPS 并进行证书验证
- 防御性输入在重新激活前会进行验证,以防止注入
## 退出代码
| 代码 | 含义 |
|------|---------|
| 0 | 成功 — 结论可能是 clean、suspicious 或 unknown |
| 1 | 设置了 `--fail-on-malicious` 且结论为 MALICIOUS |
| 2 | 错误输入 — 无法识别的 IOC 类型或配置错误 |
| 3 | 设置了 `--fail-on-error` 且至少有一个来源未返回答案 |
将两个标志结合使用可实现严格的安全门控:
```
pivot lookup "$IOC" --fail-on-malicious --fail-on-error
```
## 添加来源
每个来源都是一个独立的类。继承 `BaseSource`,实现
`_query()` 和 `confidence_weight()`,在 `sources/__init__.py` 中注册,
然后提交 PR。详情请参阅 [CONTRIBUTING.md](CONTRIBUTING.md)。
## 贡献
欢迎贡献。GitHub 跟踪器中标记了适合新手的 issue。
我们尚未涵盖的来源:MalwareBazaar、SecurityTrails、Censys。
## 许可证
MIT — 请参阅 [LICENSE](LICENSE)。
标签:IOC富化, Python, Python安全, 威胁情报, 开发者工具, 文档结构分析, 无后门, 逆向工具