justin-pitt/threatscout

GitHub: justin-pitt/threatscout

一款威胁情报聚合查询工具,可同时调用多个免费API对IP、域名、URL、哈希和CVE进行统一分析并生成增强报告。

Stars: 0 | Forks: 0

# threatscout 一款威胁情报工具,可同时查询多个免费 API,并针对任何指标(IP 地址 (IPv4/IPv6)、域名、URL、文件哈希或 CVE)返回统一且经过增强的报告。 | 扫描 | 报告 | |------|--------| | ![Scan page](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/28c327bec0144654.png) | ![Report page](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/93cf9512b6144656.png) | | 仪表盘 | 历史记录 | |-----------|---------| | ![Dashboard](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/af87e5a30e144658.png) | ![History](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/835466c0cd144701.png) | ## 快速开始 **前置条件:** Python 3.10+ ### 1. 安装 ``` git clone https://github.com/justin-pitt/threatscout.git cd threatscout pip install -e ".[web]" ``` ### 2. 配置 API Keys ``` cp .env.example .env ``` 编辑 `.env` 并添加你的密钥: ``` # 完整覆盖所需 VIRUSTOTAL_API_KEY=your-key-here ABUSEIPDB_API_KEY=your-key-here OTX_API_KEY=your-key-here # 可选 — 有 key 具有更高速率限制;无 key 也可工作 NVD_API_KEY=your-key-here # 可选 — 免费社区 key GREYNOISE_API_KEY=your-key-here # 可选 — 付费计划 SHODAN_API_KEY=your-key-here ``` 部分来源无需任何密钥即可使用:MalwareBazaar、URLScan.io、WHOIS 和 CISA KEV。 ### 3. 设置数据库 ``` cd web python manage.py migrate ``` ### 4. 运行服务器 ``` python manage.py runserver ``` 在浏览器中打开 **http://localhost:8000** —— 就这么简单。 ## 功能介绍 - **扫描** (`/`) — 输入任何 IP、域名、URL、文件哈希或 CVE。结果通过加载遮罩层异步加载。 - **报告** (`/report//`) — 详细结果,包含判定横幅、摘要统计和可折叠的各来源卡片。恶意/可疑的发现默认展开。 - **仪表盘** (`/dashboard/`) — 随时间变化的扫描量、判定分布和查询最多的指标。 - **历史记录** (`/history/`) — 分页的扫描历史,支持全文搜索和判定过滤。 ## 支持的来源 | 来源 | 提供内容 | 指标类型 | 是否需要密钥 | |---|---|---|---| | [VirusTotal](https://virustotal.com) | 来自 70 多个 AV 引擎的恶意软件扫描结果 | IP, domain, URL, hash | 免费 (4 次/分钟) | | [AbuseIPDB](https://abuseipdb.com) | IP 滥用报告和置信度评分 | IP | 免费 (1,000 次/天) | | [AlienVault OTX](https://otx.alienvault.com) | 社区威胁 Pulses 和 IOC 上下文 | IP, domain, URL, hash | 免费 (无限制说明) | | [NVD / NIST](https://nvd.nist.gov) | 官方 CVE 数据库及 CVSS 评分 | CVE | 可选 (有密钥速率更高) | | [CISA KEV](https://www.cisa.gov/known-exploited-vulnerabilities-catalog) | 已知被利用漏洞目录 | CVE | 无需密钥 | | [MalwareBazaar](https://bazaar.abuse.ch) | 恶意软件哈希查询,包含家族和文件类型 | Hash | 无需密钥 | | [URLScan.io](https://urlscan.io) | URL/域名/IP 扫描历史和恶意标记 | IP, domain, URL | 无需密钥 | | [WHOIS](https://pypi.org/project/python-whois/) | 域名注册时间、注册商、名称服务器 | Domain | 无需密钥 | | [GreyNoise](https://greynoise.io) | 互联网背景噪音分类 | IP | 免费社区密钥 | | [Shodan](https://shodan.io) | 开放端口、暴露服务和已知 CVE | IP | 付费密钥 | ## 获取 API Keys - **VirusTotal** — [virustotal.com](https://www.virustotal.com/gui/join-us) → 免费:4 次/分钟,500 次/天 - **AbuseIPDB** — [abuseipdb.com](https://www.abuseipdb.com/register) → 免费:1,000 次/天 - **AlienVault OTX** — [otx.alienvault.com](https://otx.alienvault.com/accounts/register) → 免费,无限制说明 - **NVD** — [nvd.nist.gov](https://nvd.nist.gov/developers/request-an-api-key) → 免费:有密钥 50 次/30秒,无密钥 5 次/30秒 - **GreyNoise** — [viz.greynoise.io](https://viz.greynoise.io/signup) → 免费社区密钥 - **Shodan** — [account.shodan.io](https://account.shodan.io) — 主机查询需付费计划 ## DNS 增强 ThreatScout 会自动对指标进行双向增强: - **Domain/URL → IP:** 将域名解析为其 IP,并针对该 IP 查询基于 IP 的来源(AbuseIPDB、VirusTotal 等)。 - **IP → Hostname:** 执行反向 DNS 查询,并针对解析出的主机名查询基于域名的来源。 增强后的结果显示在报告的一个单独标记区域中。 ## 数据库 默认情况下,Web UI 使用 SQLite (`web/db.sqlite3`)。如果使用 PostgreSQL,请在 `.env` 中添加以下内容: ``` DJANGO_SECRET_KEY=your-secret-key DB_ENGINE=django.db.backends.postgresql DB_NAME=threatscout DB_USER=your-user DB_PASSWORD=your-password DB_HOST=localhost DB_PORT=5432 ``` ## REST API 还提供基于 FastAPI 的 API 用于程序化访问。 ``` uvicorn threatscout.api:app --reload ``` ### `POST /scan` ``` curl -X POST http://localhost:8000/scan \ -H "Content-Type: application/json" \ -d '{"indicator": "198.51.100.42"}' ``` | 字段 | 类型 | 描述 | |---|---|---| | `indicator` | string (必填) | 要扫描的值 | | `indicator_type` | string 或 null | 显式指定类型:`ip`、`domain`、`url`、`hash`、`cve`。省略则自动检测。 | | `sources` | list 或 null | 仅查询这些来源。省略则使用全部。 | | `exclude` | list 或 null | 跳过这些来源。 | ### `GET /health` 返回 API 状态和已加载来源的数量。 交互式文档位于 `http://localhost:8000/docs`。Python 示例请参见 [`examples/api_example.py`](examples/api_example.py)。 ## CLI ThreatScout 还提供 CLI 用于终端操作: ``` # 自动检测指示器类型 threatscout scan 198.51.100.42 # 显式类型 threatscout ip 198.51.100.42 threatscout domain malicious-example.com threatscout url "https://malicious-example.com/payload" threatscout hash d41d8cd98f00b204e9800998ecf8427e threatscout cve CVE-2021-44228 # 输出为 JSON 或 CSV threatscout ip 198.51.100.42 --format json threatscout ip 198.51.100.42 --format csv # 保存到文件 threatscout ip 198.51.100.42 --output report.json # 筛选来源 threatscout ip 198.51.100.42 --sources virustotal,abuseipdb threatscout ip 198.51.100.42 --exclude shodan,greynoise # 最低风险等级 threatscout ip 198.51.100.42 --min-risk suspicious ``` ## 运行测试 ``` pip install -e ".[dev]" pytest tests/ -v ```
标签:AbuseIPDB, Ask搜索, CVE漏洞查询, DAST, Django, ESC4, File Hash, IP地址查询, OSINT, Python, VirusTotal, Web安全, 商业软件, 域名信誉, 威胁情报, 安全仪表盘, 安全态势感知, 开发者工具, 开源情报工具, 恶意软件分析, 无后门, 测试用例, 网络安全, 网络测绘, 自动化安全检测, 蓝队分析, 逆向工具, 隐私保护