eyweiss/threat-intel-tip
GitHub: eyweiss/threat-intel-tip
一个基于 Next.js 的威胁情报搜索与知识图谱探索原型,支持跨实体关联导航和别名解析,以无后端的纯前端方式展示情报关系网络。
Stars: 0 | Forks: 0
# 威胁情报平台 — eSentire PM 作业
这是一个演示威胁情报搜索和知识图谱探索的工作原型,作为 eSentire 的 PM 作业构建。
**在线演示:** [threat-intel-tip.vercel.app](https://threat-intel-tip.vercel.app) · **仓库:** [eyweiss/threat-intel-tip](https://github.com/eyweiss/threat-intel-tip)
## 功能简介
该平台允许用户跨四种实体类型进行搜索——威胁行为者、CVE、攻击活动和行业——并在相关实体之间进行跳转,以探索它们之间的关联。
**核心流程:**
1. **支持别名解析的搜索** —— 输入“Nobelium”,系统会自动解析为 APT29
2. **筛选结果**,可按实体类型、置信度级别(已确认 / 疑似)以及行业进行筛选
3. **实体档案** 会展示所有已知关系,并按动词(利用、开展、针对、重叠)进行分组,每项关系都附有置信度徽章和来源引用
4. **跳转导航** —— 点击任何关联的实体即可跳转至其档案;面包屑会记录探索路径
5. **空状态的透明度** —— 没有数据的区域会明确显示“暂无数据”,而不是将其隐藏,从而区分“缺乏记录”与“缺乏事实”
**任务书中的示例路径:**
搜索“Nobelium” → APT29 档案 → Log4Shell(被 5 个行为者利用) → APT28(疑似与 APT29 重叠) —— 面包屑会显示完整的轨迹
## 领域模型
| 实体 | 核心字段 |
|--------|-----------|
| **ThreatActor** | name, aliases[], attribution, motivation, status |
| **Vulnerability** | CVE id, commonName, CVSS score, severity, exploitationStatus |
| **Campaign** | name, timeline, attributedTo (actor), attributionConfidence |
| **TargetSector** | name, description |
关系(每项均包含 `confidence` 和 `source`):
`exploits` · `runs` · `targets` · `overlaps` · `usedIn`
**种子数据:** 5 个行为者 · 4 个 CVE · 5 个攻击活动 · 7 个行业 · 30 个关系
## 技术栈
| 层级 | 选型 |
|-------|--------|
| 框架 | Next.js 16 App Router + TypeScript |
| 样式 | Tailwind CSS v4 + shadcn/ui (Base UI) |
| 数据 | 静态 JSON 文件 (`src/data/intel.json`) —— 无后端 |
| 字体 | Inter + JetBrains Mono 通过 `next/font/google` |
| 部署 | Vercel |
无数据库、无身份验证、无 API 路由。
## 本地运行
```
git clone https://github.com/eyweiss/threat-intel-tip.git
cd threat-intel-tip
npm install
npm run dev
```
打开 [http://localhost:3000](http://localhost:3000)。
## 项目结构
```
src/
├── app/
│ ├── page.tsx # Landing page
│ ├── search/page.tsx # Search — typeahead, filters, results
│ └── entity/[type]/[id]/
│ └── page.tsx # Entity profile — header + relationship sections
├── components/
│ ├── AppShell.tsx # Sticky nav header + footer
│ ├── EntityBadge.tsx # Purple/rose/teal/gray type badge
│ └── ConfidenceBadge.tsx # Emerald (confirmed) / amber (suspected) pill
├── data/
│ └── intel.json # All entities and relationships
└── lib/
├── types.ts # TypeScript interfaces (Entity, Relationship, …)
└── queries.ts # getEntity, searchEntities, resolveAlias, getRelationships
```
## 范围边界
特意排除在范围之外的功能:身份验证、真实数据库、多跳图谱可视化、创建/编辑功能、深色模式。
所有数据仅用于演示说明,不代表 eSentire 实际掌握的情报资产。
标签:原型设计, 威胁情报, 开发者工具, 网络安全, 自动化攻击, 隐私保护