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, 入侵指标, 哈希分析, 域名查询, 威胁情报, 安全运营, 密码管理, 库, 应急响应, 开发者工具, 态势感知, 恶意软件分析, 扫描框架, 文档结构分析, 无后门, 网络安全, 逆向工具, 隐私保护, 黑名单检查