sanasimran1403-jpg/threat-intel-dashboard

GitHub: sanasimran1403-jpg/threat-intel-dashboard

基于 Flask 的轻量级威胁情报仪表板,可并行查询三大威胁源并对 IP、域名、哈希和 URL 进行综合风险评级。

Stars: 0 | Forks: 0

# 威胁情报仪表板 一个基于 Flask 的威胁情报仪表板,可跨三个实时威胁情报源(AbuseIPDB、VirusTotal 和 AlienVault OTX)分析 IP、域名、文件哈希和 URL。具有 IOC 监视列表、完整的扫描历史记录和深色主题 PDF 报告功能。 ## 概述 威胁情报是 SOC 的核心能力——将多个来源的失陷标据 (IOC) 进行关联,可以让分析师全面了解特定的 IP、域名或文件哈希是否为恶意的。此工具演示了完整的 IOC 扩展 pipeline: 1. **查询** —— 同时跨三个威胁情报 API 查询任何 IP、域名、文件哈希或 URL 2. **关联**结果 —— AbuseIPDB 置信度分数、VirusTotal 引擎命中数、AlienVault OTX pulse 数量 3. **风险评级** IOC —— 基于综合信号评定为 CRITICAL / HIGH / MEDIUM / CLEAN / UNKNOWN 4. **监视列表** —— 跟踪感兴趣的 IOC 并即时重新分析 5. **报告** —— 将任何查询导出为专业的深色主题 PDF 所有查询均针对已知的真实恶意 IOC(Tor exit nodes、恶意软件域名、EICAR 哈希)进行了验证。 **环境:** - 平台:Windows 11 + Python 3.11 - API:AbuseIPDB、VirusTotal v3、AlienVault OTX - 框架:Flask 3.0 ## 功能覆盖范围 — 4/4 | # | 功能 | 技术 | 结果 | |---|---|---|---| | 1 | IOC 查询 | 并行查询 AbuseIPDB + VirusTotal + OTX | 综合风险判定 | | 2 | 风险评级 | 跨三个来源的加权评分 | 在 Tor exit node 上确认为 CRITICAL | | 3 | IOC 监视列表 | 带有标签的基于 SQLite 的监视列表 | 添加/删除/跟踪 IOC | | 4 | PDF 导出 | 带有 S&S 品牌的每次查询深色主题 PDF | 专业的威胁报告 | ## 设置 ``` pip install -r requirements.txt cp .env.example .env # 在 .env 中添加你的 API keys ``` **.env 格式:** ``` ABUSEIPDB_KEY=your_key_here VIRUSTOTAL_KEY=your_key_here OTX_KEY=your_key_here ``` **免费 API 密钥:** - AbuseIPDB — https://www.abuseipdb.com/api(每天免费 1,000 次查询) - VirusTotal — https://www.virustotal.com(每天免费 500 次请求) - AlienVault OTX — https://otx.alienvault.com(无限免费) ## 用法 ``` # 启动 dashboard python app.py # 在浏览器中打开 http://localhost:5000 ``` ## 1. IOC 查询 导航到 Lookup 标签页,输入任何标据,选择类型(IP / Domain / Hash / URL),然后点击 Analyze。所有三个 API 将并行查询,并在几秒钟内显示结果。 **已测试的 IOC — 已知的 Tor Exit Node:** ``` IOC : 185.220.101.45 Type : IP Address ``` **结果:** ``` AbuseIPDB Confidence : 98 / 100 AbuseIPDB Reports : 847 reports VT Malicious : 12 / 92 engines OTX Pulse Count : 50 pulses Country : Germany Overall Risk : CRITICAL ``` ## 2. 风险评级引擎 风险是根据所有三个来源的加权组合计算得出的: | 来源 | 信号 | 权重 | |---|---|---| | AbuseIPDB | 置信度分数 (0-100) | 高 | | VirusTotal | 恶意引擎数量 | 高 | | AlienVault OTX | pulse 数量(威胁活动) | 中 | **风险级别:** | 级别 | 标准 | |---|---| | CRITICAL | AbuseIPDB > 80 或 VT 恶意数 > 10 或 OTX pulse 数 > 20 | | HIGH | AbuseIPDB > 50 或 VT 恶意数 > 5 或 OTX pulse 数 > 5 | | MEDIUM | AbuseIPDB > 20 或 VT 恶意数 > 1 | | CLEAN | 所有来源报告为干净 | | UNKNOWN | 没有任何来源的数据 | ## 3. IOC 监视列表 将任何 IOC 添加到监视列表中,并可选择附加标签。被加入监视列表的 IOC 存储在 SQLite 中,可随时从 Watchlist 标签页重新分析。 ``` IOC : 185.220.101.45 Type : IP Label : Tor Exit Node — Monitor Added : 2026-06-06 ``` ## 4. PDF 导出 每次查询都会生成一个可下载的 PDF,其中包含完整的 IOC 档案——风险判定、所有三个来源的结果、OTX pulse 列表、国家/ASN 信息,以及带有水印的 S&S 品牌。 ## 仓库结构 ``` threat-intel-dashboard/ ├── app.py ├── requirements.txt ├── README.md ├── .env.example ├── core/ │ ├── config.py │ ├── abuseipdb.py # AbuseIPDB API integration │ ├── virustotal.py # VirusTotal v3 API integration │ ├── otx.py # AlienVault OTX API integration │ ├── database.py # SQLite scan history + watchlist │ └── reporter.py # Dark-themed PDF report generator ├── static/ │ ├── css/style.css │ ├── js/main.js │ └── logo.png └── templates/ └── index.html ``` ## 技术栈 | 工具 | 版本 | 用途 | |---|---|---| | Python | 3.11 | 核心语言 | | Flask | 3.0.0 | Web 框架 | | requests | 2.31 | 对威胁情报源进行 API 调用 | | python-dotenv | 1.0.0 | API 密钥管理 | | ReportLab | 4.1.0 | 深色主题 PDF 报告 | | SQLite | 内置 | 扫描历史 + 监视列表存储 | ## 主要经验教训 - 查询三个具有不同响应 schema 的威胁情报 API,并将结果归一化为统一的风险模型 - 设计一个加权风险评分系统,该系统考虑了每个 API 提供的不同置信度信号 - 构建一个具有实时 API 调用和动态结果渲染且无需重新加载页面的 Flask 仪表板 - 妥善管理 API 速率限制 —— AbuseIPDB(每天 1,000 次)、VirusTotal(每天 500 次)—— 并使用 SQLite 缓存来避免冗余查询 - 了解 SOC 分析师在实际的事件响应工作流程中如何使用像 AbuseIPDB 和 OTX 这样的威胁情报平台 ## 已知限制 - VirusTotal 免费层级限制为每天 500 个请求和每分钟 4 次查询——大规模批处理分析需要高级密钥 - OTX pulse 数据反映了社区提交的威胁情报,对于像 youtube.com 这样的知名域名可能会包含误报 - 文件哈希查询要求该哈希必须已存在于 VirusTotal 的数据库中——尚未实现直接的文件上传分析 - 该仪表板是单用户的——Web 界面未实现身份验证 ## 作者 **Sana Simran** GitHub: [@sanasimran1403-jpg](https://github.com/sanasimran1403-jpg)
标签:Flask, IOC分析, Python, Web看板, 威胁情报, 安全运营, 开发者工具, 扫描框架, 无后门, 逆向工具