0xh1tesh/cyberthreat-visualizer

GitHub: 0xh1tesh/cyberthreat-visualizer

一个融合多源 OSINT 数据并由 AI 驱动分类的全栈实时 3D 网络威胁情报可视化仪表板,帮助安全运营人员直观感知和分析全球攻击态势。

Stars: 2 | Forks: 0

🌐 网络威胁可视化工具

由多源 OSINT API 和 AI 分类驱动的实时 3D 网络威胁情报仪表板

Node.js React Vite License

## 📖 描述 网络威胁可视化工具是一个全栈 SOC(安全运营中心)仪表板,它汇集了来自多个 OSINT 源(AbuseIPDB、AlienVault OTX、Shodan 和 IPInfo)的实时威胁情报,并将数据呈现在交互式 3D 地球仪上。传入的威胁事件会通过由 Gemini AI 或 OpenAI 层增强的基于规则的评分引擎,自动分类到相应的攻击类别(DDoS、Malware、Port Scan)中。仪表板的界面包括地球仪上的实时弧线动画、威胁信息流面板、分析级别的详细卡片,以及由 AI 驱动的威胁报告生成器。 ## 🛠 技术栈 | 层级 | 技术 | |---|---| | 前端框架 | React 18 + Vite 5 | | 3D 地球仪 | Globe.gl + Three.js | | 样式 | Tailwind CSS v4 | | 图表 | Recharts | | 后端 | Node.js + Express | | 威胁情报 API | AbuseIPDB, AlienVault OTX, Shodan, IPInfo | | AI 分类 | Google Gemini AI / OpenAI(可配置) | | HTTP | node-fetch | | 环境 | dotenv | ## ✅ 前置条件 - **Node.js** `>= 18.x`([下载](https://nodejs.org/)) - **npm** `>= 9.x`(随 Node.js 一起提供) - 至少一个威胁情报提供商的 API 密钥(参见下方的[环境变量](#-environment-variables)) ## 🚀 安装说明 ``` # 克隆 repository git clone https://github.com/your-username/cyberthreat-visualizer.git cd cyberthreat-visualizer # 安装 frontend 依赖 npm install # 安装 backend 依赖 cd server && npm install && cd .. # 创建您的 environment 文件 cp server/.env.example server/.env # 打开 server/.env 并填入您的 API keys # (参见下方的 Environment Variables 章节) ``` ## ▶️ 本地运行 前端和后端是独立的进程,必须在两个终端窗口中**同时**运行。 **终端 1 — 前端(Vite 开发服务器,端口 5173):** ``` npm run dev ``` **终端 2 — 后端(Express API 服务器,端口 5000):** ``` node server/index.js ``` 然后在浏览器中打开 [http://localhost:5173](http://localhost:5173)。 ## 🔑 环境变量 将 `server/.env.example` 复制到 `server/.env` 并填写以下值。`.env` 文件**永远不会被提交**到版本控制中。 | 变量 | 必填 | 描述 | 获取途径 | |---|---|---|---| | `PORT` | 否 | Express 服务器监听的端口(默认:`5000`) | — | | `ABUSEIPDB_API_KEY` | 推荐 | 通过 AbuseIPDB 进行 IP 信誉查询 | [abuseipdb.com/account/api](https://www.abuseipdb.com/account/api) | | `IPINFO_API_KEY` | 推荐 | IP 地理位置和 ASN 数据 | [ipinfo.io/account/token](https://ipinfo.io/account/token) | | `OTX_API_KEY` | 可选 | AlienVault OTX 威胁脉冲(在无密钥的公共模式下也可工作) | [otx.alienvault.com](https://otx.alienvault.com/api) | | `SHODAN_API_KEY` | 可选 | 暴露的服务和 banner 数据 | [account.shodan.io](https://account.shodan.io) | | `AI_PROVIDER` | 否 | AI 后端:`auto` \| `gemini` \| `openai` \| `off`(默认:`auto`) | — | | `GEMINI_API_KEY` | 可选 | Google Gemini 威胁分类和报告生成 | [aistudio.google.com/app/apikey](https://aistudio.google.com/app/apikey) | | `OPENAI_API_KEY` | 可选 | OpenAI 分类回退 (GPT-4o-mini) | [platform.openai.com/api-keys](https://platform.openai.com/api-keys) | | `GEMINI_MODEL` | 否 | 要使用的 Gemini 模型(默认:`gemini-2.5-flash`) | — | | `AI_MODEL` | 否 | 要使用的 OpenAI 模型(默认:`gpt-4o-mini`) | — | | `AI_CLASSIFIER_TIMEOUT_MS` | 否 | 回退前等待 AI 的最长时间(毫秒)(默认:`800`) | — | | `AI_REPORT_TIMEOUT_MS` | 否 | 等待 AI 报告生成的最长时间(毫秒);`0` = 无超时 | — | 有关高级 AI 调优参数的完整列表,请参见 `server/.env.example`。 ## ✨ 功能 - **多源威胁融合** — 在单个 pipeline 中汇总来自 AbuseIPDB、OTX、Shodan 和 IPInfo 的事件,并进行去重 - **AI 驱动的分类** — Gemini 和/或 OpenAI 将模糊的威胁信号分类为 DDoS、Malware 或 Scan 类别;当 AI 不可用时,回退到基于规则的评分 - **3D 交互式地球仪** — 使用 Globe.gl 和 Three.js 实时渲染动画攻击弧线;点击任意弧线可检查完整的威胁记录 - **SOC 仪表板面板** — 实时威胁信息流、严重性热力图、类别分布图、顶级攻击者表格和国家/地区细分 - **回退链** — 优雅降级:实时 API → 部分数据 → 仿真模式;降级数据在 UI 中会有明确的徽章标记 - **仿真模式** — 完全离线工作,使用逼真的合成数据;无需 API 密钥即可探索 UI - **AI 报告生成器** — 一键使用 Gemini 汇总活跃威胁的分析师报告 ## 🏗 架构概述 ``` ┌──────────────────────────────────────────────────────────────┐ │ External APIs │ │ AbuseIPDB │ AlienVault OTX │ Shodan │ IPInfo │ └──────────────────────┬───────────────────────────────────────┘ │ HTTP ▼ ┌──────────────────────────────────────────────────────────────┐ │ Express Backend (server/index.js) │ │ • Aggregates & deduplicates events │ │ • Rule-based scoring engine │ │ • AI classification layer (Gemini / OpenAI / off) │ │ • REST endpoints: /api/threats /api/report │ └──────────────────────┬───────────────────────────────────────┘ │ JSON over HTTP ▼ ┌──────────────────────────────────────────────────────────────┐ │ React Frontend (src/) │ │ • Globe.gl 3D arc visualization │ │ • SOC dashboard panels (Recharts) │ │ • Threat detail drawer & AI report panel │ └──────────────────────────────────────────────────────────────┘ ``` ## ⚠️ 已知限制 - **API 速率限制** — 免费层级的密钥(尤其是 AbuseIPDB 和 Shodan)施加了严格的速率限制。当达到限制时,受影响的来源将被跳过,并且事件在 UI 中会被标记为 `DEGRADED`。 - **AI 分类需要有效的密钥** — 当设置 `AI_PROVIDER=auto` 且未配置有效的 Gemini 或 OpenAI 密钥时,系统会自动回退到基于规则的评分。不会抛出任何错误,但分类深度会降低。 - **仿真模式使用静态数据** — 当所有实时来源均不可用时,应用会在本地生成合成的威胁事件。这些事件会被明确标记为模拟的,并不代表真实世界的攻击。 - **无身份验证** — Express 后端没有保护其 endpoint 的 API 密钥或身份验证层。不要将其直接暴露在公共互联网上;请在本地运行或置于反向代理之后。 - **单服务器架构** — 后端是一个单 Node.js 进程,没有集群或持久化存储。它没有经过生产环境的强化。 ## 📄 许可证 该项目基于 **MIT License** 授权。详情请参阅 [LICENSE](LICENSE)。
标签:3D可视化, AI分类, GNU通用公共许可证, MITM代理, Node.js, React, Syscalls, Web可视化, 威胁情报, 安全运营中心, 开发者工具, 网络映射, 自定义脚本