marchana302005-cell/CTI-Dashboard

GitHub: marchana302005-cell/CTI-Dashboard

一个基于 Flask 的网络威胁情报仪表板,聚合 VirusTotal 与 AbuseIPDB 数据源,提供 IP/域名威胁查询、威胁等级分类及历史趋势可视化。

Stars: 0 | Forks: 0

# 🛡️ CTI-Dashboard - 网络威胁情报仪表板 ### **项目名称** CTI-Dashboard - 实时网络威胁情报仪表板 ### **目标** 构建一个实时网络威胁情报仪表板,汇集来自开放 CTI 来源的威胁情报。该仪表板允许用户输入 IP 地址或域名,通过 VirusTotal 和 AbuseIPDB 威胁数据库进行检测,对威胁等级进行分类,并利用 MongoDB 存储数据,随时间可视化威胁指标。 ### **使用工具** - **Backend**:Python、Flask Framework - **Frontend**:HTML、CSS、JavaScript、Chart.js - **Database**:MongoDB Atlas + PyMongo - **APIs**:VirusTotal API v3、AbuseIPDB API v2 - **其他**:Requests、python-dotenv、CSV module ### **实施步骤 - 迷你指南** **a. 从开放 CTI 来源和 API 拉取数据** 在 `app.py` 中使用 `requests` 库调用 VirusTotal `/ip_addresses/{ip}` 和 AbuseIPDB `/check` endpoints。为了安全起见,API keys 从 `.env` 文件中加载。 **b. 展示威胁等级、IOC 和趋势** IOC = 用户输入的 IP 地址。Backend 根据滥用评分和 VirusTotal 恶意计数计算 `HIGH/MEDIUM/LOW` 威胁等级。结果将展示在仪表板的卡片中。创建了一个 `/trends` 路由,使用 Chart.js 折线图可视化最近 10 次扫描。 **c. 允许用户输入 IP/域名并进行验证** 在 `index.html` 中添加了输入框和扫描按钮。使用 `FormData` 将数据发送到 `/scan` POST 路由。Backend 会验证输入,并根据两个威胁 APIs 对其进行检测。 **d. 随时间可视化威胁指标** 每次扫描都会带有时间戳存储在 MongoDB 的 `scans` 集合中。`/trends` 路由会获取最近的 10 条记录,并将它们绘制在折线图中,其中 X 轴为 IP 的末尾数字,Y 轴为 Abuse Score %。 **e. 添加标签和导出功能** 自动打标签:威胁等级 `HIGH/MEDIUM/LOW` 会被自动分配并存储在 MongoDB 中。 导出:创建了一个 `/export` 路由,用于生成并以 CSV 文件格式下载所有扫描历史记录。 *威胁分析输出* ✅ 威胁等级:HIGH 🔴 - 红色徽章 VirusTotal:14 个恶意 / 3 个可疑 / 45 个干净 ✅ AbuseIPDB 评分:100% ✅ 总报告数:92 ✅ 最后报告时间:2026-06-18 ✅ ### **交付成果** ✅ 具备威胁查询功能的实时 CTI 仪表板 ✅ 针对 VirusTotal + AbuseIPDB 的 IP/域名验证 ✅ 威胁等级分类:HIGH/MEDIUM/LOW ✅ 使用 Chart.js 进行威胁趋势可视化 ✅ 用于存储扫描历史的 MongoDB ✅ 将扫描结果导出为 CSV ✅ 深色主题的响应式 Web UI
标签:Flask, MongoDB, Python, 后端开发, 多模态安全, 威胁情报, 开发者工具, 数据可视化, 无后门, 逆向工具