strawberry-09/CLI-osint-tool
GitHub: strawberry-09/CLI-osint-tool
一款聚合七大威胁情报平台的命令行IOC自动化分诊工具,支持IP、域名、URL和文件哈希的批量查询与结构化报告输出。
Stars: 0 | Forks: 0
# IOC Hunter 🔍
用于自动化 IOC 分诊的 CLI 工具 —— 可查询 VirusTotal、Shodan、AbuseIPDB、URLScan.io、GreyNoise、AlienVault OTX 和 MalwareBazaar,并附带 IP 地理定位功能,最终输出结构化的威胁情报报告。
## 支持的 IOC 类型
| IOC 类型 | 查询来源 |
|----------|----------------|
| IPv4 地址 | GeoIP, VirusTotal, AbuseIPDB, Shodan, GreyNoise, AlienVault OTX |
| 域名 | VirusTotal, URLScan.io, AlienVault OTX |
| URL | VirusTotal, URLScan.io, AlienVault OTX |
| MD5 / SHA1 / SHA256 哈希 | VirusTotal, MalwareBazaar, AlienVault OTX |
## 设置
### 1. 安装依赖
```
pip install -r requirements.txt
```
### 2. 配置 API 密钥
```
cp config.ini.example config.ini
nano config.ini
```
编辑 `config.ini` 并填入你的 API 密钥:
```
[API_KEYS]
VIRUSTOTAL_API_KEY = your_key_here
ABUSEIPDB_API_KEY = your_key_here
SHODAN_API_KEY = your_key_here
URLSCAN_API_KEY = your_key_here
GREYNOISE_API_KEY = your_key_here
OTX_API_KEY = your_key_here
```
所有密钥均为免费层级 —— 无需信用卡:
| 平台 | 免费层级限制 | 注册 URL |
|----------|-----------------|-------------|
| VirusTotal | 4 次请求/分钟,500 次/天 | https://www.virustotal.com/gui/join-us |
| AbuseIPDB | 1,000 次请求/天 | https://www.abuseipdb.com/register |
| Shodan | 1 次请求/秒(免费计划受限) | https://account.shodan.io/register |
| URLScan.io | 100 次请求/小时 | https://urlscan.io/user/signup |
| GreyNoise | 50 次请求/天(社区密钥) | https://www.greynoise.io/signup |
| AlienVault OTX | 无限制(免费账户) | https://otx.alienvault.com |
## 用法
### 单个 IOC
```
python3 ioc_hunter.py [options]
```
```
# 调查 IP 地址
python3 ioc_hunter.py 185.220.101.45
# 调查 domain
python3 ioc_hunter.py malicious-domain.ru
# 调查 URL
python3 ioc_hunter.py https://phishing-site.xyz/login
# 调查 file hash
python3 ioc_hunter.py 44d88612fea8a8f36de82e1278abb02f
# 仅打印到终端,不保存报告
python3 ioc_hunter.py 8.8.8.8 --no-save
# 将报告保存到自定义目录
python3 ioc_hunter.py 8.8.8.8 --output-dir ~/cases/case-001
```
### 批量模式
提供一个 `.txt` 文件,每行包含一个 IOC。空行和 `#` 注释将被忽略。
```
python3 ioc_hunter.py --batch iocs.txt
```
`iocs.txt` 示例:
```
# 来自 firewall logs 的可疑 IP
185.220.101.45
194.165.16.72
# 来自 EDR 警报的 hash
44d88612fea8a8f36de82e1278abb02f
```
每个 IOC 都会生成各自的报告文件。请求之间设有 2 秒的延迟,以防止触发速率限制。
### 所有选项
```
positional arguments:
ioc Single IOC to investigate (IP, domain, URL, or hash)
options:
--batch FILE Path to a .txt file with one IOC per line
--config CONFIG Path to config file (default: config.ini)
--output-dir DIR Directory to save reports (default: reports/)
--no-save Print to terminal only, do not save reports
```
## 输出
结果将打印到终端,并附带颜色编码的风险指示器:
- 🟢 **绿色** —— 干净 / 低风险 / 未发现
- 🟡 **黄色** —— 少量检测 / 轻度可疑 / 互联网噪音
- 🟠 **橙色** —— 中等风险
- 🔴 **红色** —— 高风险 / 被广泛标记为恶意
报告将以两种格式保存到 `reports/` 目录中:
- `__.json` —— 完整的结构化数据
- `__.txt` —— 人类可读的纯文本
## 项目结构
```
osint-tool/
├── ioc_hunter.py # Main CLI entrypoint (single + batch mode)
├── config.ini.example # API key template — copy to config.ini
├── requirements.txt
└── modules/
├── detect.py # IOC type auto-detection
├── config.py # Config/API key loader
├── geoip.py # IP geolocation (ip-api.com, no key needed)
├── virustotal.py # VirusTotal v3 API
├── abuseipdb.py # AbuseIPDB v2 API
├── shodan.py # Shodan host API
├── urlscan.py # URLScan.io search API
├── greynoise.py # GreyNoise community API
├── otx.py # AlienVault OTX API
├── malwarebazaar.py # MalwareBazaar / abuse.ch (no key needed)
└── report.py # Terminal output + JSON/TXT file saving
```
## 添加更多来源
每个来源都是 `modules/` 目录中的一个独立模块。要添加新的 CTI 平台:
1. 创建 `modules/newsource.py`,包含一个 `query_newsource(ioc, ioc_type, api_key)` 函数
2. 在 `ioc_hunter.py` 的 `investigate()` 函数中,将其导入并在对应的 IOC 类型条件下调用
3. 在 `modules/report.py` 的 `print_report()` 函数中添加渲染块
4. 将 API 密钥字段添加到 `config.ini.example` 中
## 注意事项
- **Shodan** 免费计划支持基本的 IP 查询。付费计划可解锁完整的 banner 历史记录。
- **GreyNoise** 社区密钥限制为 50 次请求/天。`RIOT` 结果表示该 IP 是已知良性服务(Google、Cloudflare 等)—— 有助于快速排除误报。
- **URLScan.io** 仅搜索历史扫描记录。可以通过 `modules/urlscan.py` 中的 `/scan/` 端点添加新扫描提交功能。
- **VirusTotal** 免费层级允许 4 次请求/分钟 —— 该工具对每个 IOC 仅发起一次请求,因此交互式使用完全在限制范围内。
- **MalwareBazaar** 和 **ip-api.com** 不需要 API 密钥,并且始终处于激活状态。
- VirusTotal 免费层级限制为 4 次请求/分钟 —— 该工具对每个 IOC 仅查询一个端点,因此对于交互式使用而言完全在限制范围内。
标签:AbuseIPDB, Ask搜索, DAST, ESC4, GreyNoise, HTTP/HTTPS抓包, IOC自动化分类, IP 地址批量处理, IP地理定位, IP查询, MalwareBazaar, OSINT, Python, URLScan.io, URL扫描, VirusTotal, 入侵指标, 哈希分析, 域名查询, 威胁情报, 安全运营, 密码管理, 库, 应急响应, 开发者工具, 态势感知, 恶意软件分析, 扫描框架, 文档结构分析, 无后门, 网络安全, 逆向工具, 隐私保护, 黑名单检查