Ham0091/Threat-Intelligence-Dashboard

GitHub: Ham0091/Threat-Intelligence-Dashboard

一个聚合多源威胁情报的 Flask Web 应用,提供 IP、域名、URL 的综合威胁评分与多维信息查询。

Stars: 0 | Forks: 0

# 威胁情报仪表板 一个 Flask Web 应用,用于查询多个威胁情报 API 以获取给定的 IP、域名或 URL,并返回综合威胁评分。 ## 功能介绍 输入 IP 地址、域名或 URL,该应用程序将并行查询所有已配置的来源,然后返回原始结果以及 0 到 100 的加权威胁评分。结果会在本地 SQLite 数据库中缓存一小时,并且扫描历史记录会在重启后保留。前端会在每个来源响应时流式传输结果,以便您实时查看数据。 ## 数据来源 | 来源 | 提供内容 | 免费层级 | |---|---|---| | VirusTotal | 恶意检测计数,来自安全厂商扫描的信誉评分 | 是 (4 次查询/分钟) | | AbuseIPDB | IP 的滥用置信度评分和总报告数 | 是 (1,000 次检查/天) | | GreyNoise | IP 噪声分类 (良性/恶意/未知),IP 是否为互联网扫描器流量 | 是 | | CrowdSec | 社区来源的 IP 信誉、攻击行为、整体评分 | 是 | | URLhaus | URL 是否出现在 URLhaus 恶意 URL 数据库中 | 是 (无需密钥) | | IPInfo | IP 的地理位置、主机名、ASN 和组织 | 是 (50,000 次请求/月) | | WHOIS | 域名注册商、创建日期、到期日期、名称服务器 | 无需密钥 | | DNS | 域名的 A、AAAA、MX、NS、TXT、SOA 记录 | 无需密钥 | | SSL | 域名的证书主题、颁发者和有效期 | 无需密钥 | | crt.sh | 来自证书透明度日志的子域名枚举 | 无需密钥 | ## 威胁评分 评分在 `calculate_threat_score()` 中计算,上限为 100。 VirusTotal 贡献 30%:单项来源评分为 `min(100, malicious_detections × 3 + abs(reputation) × 2)` —— 在加权前上限为 100 —— 然后乘以 0.30。 AbuseIPDB 贡献 30%:原始 `abuse_confidence_score` (0–100) 乘以 0.30。 GreyNoise 增加固定分值:如果 IP 被归类为恶意,+20 分;如果被标记为互联网背景噪声,+10 分。 CrowdSec 增加固定分值:如果 IP 具有不良信誉标记,+25 分;如果其整体评分超过 50,+15 分。 URLhaus 贡献 10%:如果 URL 被列为威胁,则为 100,否则为 0,乘以 0.10。 WHOIS、DNS 和 SSL 各自根据缺失的记录或证书贡献较小的调整(总计低于 1.5 分)。 ## 设置 1. 需要 Python 3.8+ 和 pip。 2. 克隆仓库: git clone https://github.com/Ham0091/Threat-Intelligence-Dashboard.git cd Threat-Intelligence-Dashboard 3. 安装依赖项: pip install -r requirements.txt 4. 复制 env 模板并填入您的 API 密钥: cp .env.example .env 5. 获取各密钥的地址: - VirusTotal: https://www.virustotal.com/gui/settings/api - AbuseIPDB: https://www.abuseipdb.com/api - GreyNoise: https://www.greynoise.io/ - CrowdSec: https://app.crowdsec.net/ - IPInfo: https://ipinfo.io/ 6. 运行应用: python app.py 在浏览器中打开 http://localhost:5001。 ## API 密钥:必需与可选 VirusTotal 和 AbuseIPDB 实际上是获得有用评分所必需的。如果没有这些密钥,应用程序将继续运行,但会跳过这些来源,导致威胁评分中高达 60% 的部分未被加权。这些来源的结果面板将显示错误。 GreyNoise、CrowdSec 和 IPInfo 会优雅降级:这些结果面板将显示错误,但其余结果仍会返回。URLhaus 无需密钥即可工作(默认值为 `public`)。 WHOIS、DNS、SSL 和 crt.sh 无需密钥且始终运行。 ## 已知限制 - VirusTotal 免费层级限制为每分钟 4 次查询。快速连续查询将达到速率限制。 - AbuseIPDB 免费层级允许每天 1,000 次检查。大量使用会迅速耗尽配额。 - GreyNoise 和 CrowdSec 仅针对 IP 返回有用数据。针对域名和 URL 的查询会跳过它们。 - URLhaus 仅针对 URL 输入进行查询。它不检查裸 IP 或域名。 - 威胁评分不考虑误报。知名 CDN IP 上的高 VirusTotal 检测计数仍将产生高评分。 - 1 小时缓存意味着重新扫描最近检查过的指标会返回陈旧数据。 - crt.sh 偶尔会返回 503 错误,并且没有可用性 SLA 保证。 ## 项目结构 ``` Threat-Intelligence-Dashboard/ ├── app.py ├── requirements.txt ├── .env.example ├── .gitignore ├── README.md ├── static/ │ ├── style.css │ └── script.js ├── templates/ │ └── index.html └── tests/ ``` ## 许可证 MIT
标签:AbuseIPDB, API集成, Ask搜索, CrowdSec, DNS记录, ESC4, Flask, GitHub, GreyNoise, HTTP/HTTPS抓包, IP信誉查询, OSINT, Python, SOC辅助, SQLite, SSL证书, Threat Intelligence, URL扫描, VirusTotal, WHOIS查询, 协议探测, 可观测性, 域名安全检测, 威胁分析, 威胁情报, 子域名枚举, 实时处理, 开发者工具, 异步查询, 态势感知, 恶意评分, 情报仪表盘, 数据可视化, 无后门, 系统安全, 网络安全, 自动化侦查工具, 调试辅助, 资产测绘, 逆向工具, 隐私保护