marez8505/threat-intel-dashboard
GitHub: marez8505/threat-intel-dashboard
一款基于React+Express的SOC风格威胁情报富化仪表板,聚合VirusTotal、AbuseIPDB和ip-api.com免费API对IOC进行快速信誉查询。
Stars: 0 | Forks: 0
# 🛡️ 威胁情报仪表板
一个深色主题的 SOC 风格 Web 应用程序,用于针对多个免费威胁情报来源对入侵指标(IOC)进行丰富分析。为 **Devpost 规范驱动开发黑客松 2026** 构建。



## 功能说明
将以下任何内容粘贴到搜索栏中,即可在几秒钟内获取丰富的威胁情报:
- **IP 地址** — 地理位置、ISP、滥用报告、AV 引擎检测结果
- **域名** — VirusTotal 信誉和检测率
- **文件哈希** — MD5、SHA1、SHA256 — 来自 VirusTotal 的 70+ AV 引擎结果
**数据来源:**
| 来源 | 提供内容 | 需要认证 |
|---|---|---|
| [VirusTotal](https://www.virustotal.com) | AV 引擎检测(70+ 引擎) | 免费 API 密钥 |
| [AbuseIPDB](https://www.abuseipdb.com) | 滥用置信度分数、报告历史 | 免费 API 密钥 |
| [ip-api.com](https://ip-api.com) | 地理位置、ISP、ASN | 无需认证 |
## 快速开始
### 前置条件
- Node.js 18+
- Git
### 1. 克隆仓库
```
git clone https://github.com/marez8505/threat-intel-dashboard.git
cd threat-intel-dashboard
```
### 2. 配置 API 密钥
```
cp backend/.env.example backend/.env
```
编辑 `backend/.env` 并添加您的免费 API 密钥:
- **VirusTotal**:在 https://www.virustotal.com/gui/my-apikey 获取免费密钥
- **AbuseIPDB**:在 https://www.abuseipdb.com/account/api 获取免费密钥
### 3. 启动后端
```
cd backend
npm install
npm start
```
后端运行在 **http://localhost:3001**
### 4. 启动前端(新终端)
```
cd frontend
npm install
npm run dev
```
前端运行在 **http://localhost:5173**
### 5. 打开应用
在浏览器中访问 [http://localhost:5173](http://localhost:5173)。
## 功能特性
- **IOC 自动检测** — 自动识别 IPv4、域名、MD5、SHA1、SHA256
- **24 小时缓存** — 对相同 IOC 的重复查询从 SQLite 提供,节省 API 配额
- **威胁评分** — 0–100 综合评分,附带明确判定:安全 / 可疑 / 恶意
- **查询历史** — 本地存储最近 50 条丰富记录,点击任意一条可重新加载完整结果
- **导出** — 将所有历史记录下载为 CSV 或 JSON,用于事件报告
- **优雅降级** — 如果某个来源失败或未配置,其他来源仍可正常显示
- **深色 SOC 主题** — 为低光环境下的分析师设计
## 项目结构
```
threat-intel-dashboard/
├── docs/ # Spec-driven planning artifacts (Devpost requirement)
│ ├── scope.md # What we're building and what's explicitly out of scope
│ ├── requirements.md # User stories and acceptance criteria
│ ├── technical-spec.md # Architecture decisions and API design
│ └── build-checklist.md # Step-by-step build tracking
├── backend/ # Node.js + Express REST API
│ ├── server.js
│ ├── db.js # SQLite initialization
│ ├── routes/ # enrich, history, export
│ ├── services/ # VirusTotal, AbuseIPDB, Geolocation wrappers
│ └── utils/ # IOC type detection
├── frontend/ # React + Vite + Tailwind
│ └── src/
│ ├── App.jsx
│ ├── components/ # SearchBar, ResultCard, HistoryPanel, etc.
│ └── api/ # Axios client
└── README.md
```
## API 端点
| 方法 | 端点 | 描述 |
|---|---|---|
| `POST` | `/api/enrich` | 提交 IOC 进行丰富分析 |
| `GET` | `/api/history` | 获取最近 50 条查询 |
| `GET` | `/api/history/:id` | 获取特定查询的完整结果 |
| `DELETE` | `/api/history` | 清除所有历史记录 |
| `GET` | `/api/export/csv` | 将历史记录下载为 CSV |
| `GET` | `/api/export/json` | 将历史记录下载为 JSON |
| `GET` | `/api/health` | 检查服务器和 API 密钥状态 |
## 学习心得(Devpost 提交说明)
本项目采用**规范驱动开发**构建——这是一种在构建前与 AI 规划工作流程,产生真实工件而非仅仅通过提示词完成开发。
**流程:**
1. **先定范围** — 定义应用的功能,以及更重要的是,不做的功能
2. **需求即用户故事** — 在编写代码前编写验收标准
3. **技术规范先行** — 选择技术栈、设计 API 契约、定义数据库架构
4. **构建清单** — 将每个文件视为复选框项目,而非临时步骤
**与"随意开发"相比的变化:**
- 零重写。每个组件在编码前都有清晰的接口定义。
- 优雅降级行为(各来源独立失败)是在规范中设计的,而非在调试中发现。
- 缓存策略来自规范的速率限制部分,而非事后想法。
## 为...而构建
[Devpost 规范驱动开发黑客松 2026](https://devpost.com)
## 许可证
MIT — 自由使用,自由修改,但请勿将其用于转售威胁情报服务。
## 作者
Edward Marez — 奥斯汀社区学院网络安全学生,未来的 DFIR 分析师。
GitHub:[@marez8505](https://github.com/marez8505)
标签:AbuseIPDB, API集成, APT防御, Ask搜索, Express, IOC分析, IP情报, MITM代理, React, SQLite, Syscalls, VirusTotal, 可观测性, 哈希分析, 域名查询, 威胁情报, 安全运营, 开发者工具, 扫描框架, 网络安全, 自定义脚本, 隐私保护, 黑暗主题