scottycwilsono/threat-intel-toolkit
GitHub: scottycwilsono/threat-intel-toolkit
聚合AbuseIPDB、VirusTotal和Shodan三大情报源的IP威胁查询工具,同时提供命令行和Claude MCP两种使用方式,帮助安全团队快速完成IP信誉研判。
Stars: 1 | Forks: 0
# Threat Intel 工具包
一个用于查询威胁情报 API 以支持安全调查和事件响应的命令行工具和 Claude Desktop MCP 服务器。
目前支持:**AbuseIPDB**(IP 信誉) · **VirusTotal**(多引擎分析) · **Shodan**(主机丰富信息)
## 功能介绍
通过三个独立的威胁情报源查询 IP 地址,并返回综合判定结果:
**AbuseIPDB** — 众包滥用数据库:
- 滥用置信度评分(0–100)
- 社区报告总数
- 国家和 ISP
**VirusTotal** — 约 70+ 个杀毒软件和威胁情报引擎:
- 恶意 / 可疑 / 安全的引擎数量
**Shodan** — 主动互联网扫描器(真实主机数据):
- 开放端口和运行中的服务
- 操作系统(如检测到)
- 主机名
- 已知漏洞(CVE)
- 最近扫描日期
**综合判定** — MALICIOUS、SUSPICIOUS 或 CLEAN,对所有来源使用 OR 逻辑。任意来源均可提升判定等级;没有任何单一来源能够单独为 IP 洗白。
API 密钥的安全解析机制 — 优先使用 macOS Keychain,并以 `.env` 文件作为回退方案。密钥从不硬编码或提交至源代码控制系统。
## 环境要求
- Python 3.11+
- macOS(用于 Keychain 集成)或任何使用 `.env` 回退方案的操作系统
- 一个 [AbuseIPDB](https://www.abuseipdb.com) API 密钥 — 免费版包含每天 1,000 次查询
- 一个 [VirusTotal](https://www.virustotal.com) API 密钥 — 免费版包含每分钟 4 次请求
- 一个 [Shodan](https://www.shodan.io) API 密钥 — 免费版包含基本的主机查询
## 安装
```
git clone https://github.com/scottycwilsono/threat-intel-toolkit.git
cd threat-intel-toolkit
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt
```
## API 密钥配置
**选项 1 — macOS Keychain(推荐)**
密钥由操作系统加密存储,从不以明文形式写入磁盘:
```
# AbuseIPDB
security add-generic-password -s abuseipdb -a api_key -w YOUR_ABUSEIPDB_KEY
# VirusTotal
security add-generic-password -s threat-intel-toolkit -a virustotal -w YOUR_VT_KEY
# Shodan
security add-generic-password -s threat-intel-toolkit -a shodan -w YOUR_SHODAN_KEY
```
**选项 2 — `.env` 文件(回退方案)**
在项目根目录创建一个 `.env` 文件。该文件已通过 `.gitignore` 排除在 git 之外:
```
ABUSEIPDB_API_KEY=your_abuseipdb_key_here
VIRUSTOTAL_API_KEY=your_virustotal_key_here
SHODAN_API_KEY=your_shodan_key_here
```
## 使用方法
### CLI
```
python lookup.py --ip
```
**示例:**
```
python lookup.py --ip 185.220.101.45
```
### Claude Desktop (MCP)
完成配置(见下文)后,只需用纯英语向 Claude 提问即可:
Claude 将自动调用 `check_ip` 或 `check_ip_quick` 并内联返回结果。
## Claude Desktop 配置
`mcp_server.py` 将该工具包暴露为一个 MCP 服务器,以便 Claude Desktop 能够将您的查询函数作为工具调用。
**1. 找到您的 venv Python 路径**(在激活 venv 的情况下):
```
which python3
```
**2. 编辑 Claude Desktop 配置:**
```
vim ~/Library/Application\ Support/Claude/claude_desktop_config.json
```
将 `mcpServers` 块添加到任何现有键旁边:
```
{
"mcpServers": {
"threat-intel-toolkit": {
"command": "/path/to/your/venv/bin/python3",
"args": ["/path/to/threat-intel-toolkit/mcp_server.py"]
}
}
}
```
**3. 验证 JSON:**
```
python3 -m json.tool ~/Library/Application\ Support/Claude/claude_desktop_config.json
```
**4. 重启 Claude Desktop。**
该服务器将作为连接器显示在 Claude Desktop 中。连接成功后,只需用纯英语向 Claude 提问——它将自动调用 `check_ip` 或 `check_ip_quick`。
**故障排除:** 如果服务器未显示,请检查日志:
```
ls ~/Library/Logs/Claude/
```
常见原因:Python 路径错误、配置中的 JSON 语法错误、venv 中缺少 `mcp` 包。
## 输出示例
```
Querying AbuseIPDB, VirusTotal, and Shodan for 185.220.101.45...
IP: 185.220.101.45
════════════════════════════════════════════
ABUSEIPDB
Score: 100/100
Reports: 4,321
Country: DE
ISP: Franken-Backbone by Michael Bredel
VIRUSTOTAL
Malicious: 18/94 engines
Suspicious: 0/94 engines
Clean: 71/94 engines
SHODAN
Ports: 22, 80, 443
Services: OpenSSH, nginx
OS: Unknown
Hostnames: mail.example.com
Vulns: None detected
Last Seen: 2024-01-14
OVERALL VERDICT: MALICIOUS ⚠️
════════════════════════════════════════════
```
如果 Shodan 没有某个 IP 的扫描数据:
```
SHODAN
No data available
```
## 安全设计决策
| 决策 | 原因 |
|---|---|
| Keychain 优于 `.env` | API 密钥从不以明文形式写入磁盘 |
| 强制使用 HTTPS | 防止密钥以明文形式通过网络发送 |
| Shodan 密钥位于查询参数中 | Shodan 的 API 设计限制——已在代码中注明;TLS 仍在传输过程中对其加密 |
| 设置请求超时 | 防止在自动化事件响应工作流中发生脚本挂起 |
| 失败时返回退出码 | SOAR 剧本和 Shell 流水线依赖退出码运行 |
| 错误输出中不包含密钥片段 | 防止在日志中意外泄露机密 |
| Shodan 404 = 无数据,而非失败 | 缺少扫描数据属于正常信息反馈,而非错误 |
## 路线图
- [x] AbuseIPDB IP 信誉查询
- [x] VirusTotal 多引擎 IP 分析
- [x] Shodan 主机丰富信息
- [x] Claude Desktop MCP 服务器集成
- [ ] 从文件进行批量 IP 查询
- [ ] 用于 SIEM/SOAR 集成的 JSON 输出标志
## 许可证
MIT
标签:AbuseIPDB, API集成, Ask搜索, Claude Desktop, ESC4, IP信誉查询, MCP服务器, OSINT, Python, SOC工具, VirusTotal, 可观测性, 多源情报融合, 威胁情报, 安全运营, 密码管理, 开发者工具, 恶意IP检测, 扫描框架, 数据统计, 无后门, 漏洞发现, 端口扫描, 网络安全, 赛博安全, 隐私保护