shynsec/lumen-graph
GitHub: shynsec/lumen-graph
一款基于浏览器的单文件开源情报与威胁情报图谱编辑器,无需安装即可绘制实体关联关系并标注MITRE ATT&CK战术。
Stars: 0 | Forks: 0
# Lumen Graph
**一个独立的开源情报和威胁情报图谱编辑器,供调查人员使用。**
Lumen Graph 完全在浏览器中运行,是一个独立的 HTML 文件——无需安装、无需服务器、无需依赖项。打开即可开始绘图。
## 功能说明
Lumen Graph 可让您直观地映射调查中各实体之间的关系——IP 地址、域名、电子邮件地址、人员、组织——并随时记录您的情报。
它专为 **CTI 分析师、开源情报调查人员和 SOC 团队** 设计,这些人员需要构建和共享关联分析图谱,而无需搭建基础设施。
## 功能特性
### 核心图谱
- **6 种实体类型** — IP 地址、域名、电子邮件、人员、组织、通用
- **力导向布局**,支持手动拖拽定位
- **有向边**,带有关联标签
- **缩放、平移和小地图**导航
### 调查工作流
- **节点属性面板** — 备注、来源、观察日期、威胁评分 (1–10)、TLP 分类、置信度、分组分配
- **证据链接** — 附加到每个节点,仅验证 `https://`
- **MITRE ATT&CK 标记** — 搜索并标记每个节点的战术 ID,在画布上显示为标签
- **调查时间线** — 带日期的节点显示为时间顺序轨道
- **案例元数据** — 案例名称、分析师、TLP、描述以及草稿/已审核/已发布状态
### 分析工具
- **路径查找器** — 查找任意两个节点之间的最短连接路径
- **聚类检测** — 自动检测连通分量,用彩色环标识
- **搜索和筛选** — `⌘K` 搜索,使不匹配的节点变暗
- **图谱统计** — 连接最多的节点、最高威胁评分、聚类数量、日期范围
### 数据导入/导出
- **导出 JSON** — 完整保存图谱,包括所有元数据
- **导入 JSON** — 恢复已保存的图谱
- **导出 PNG** — 画布快照,包含必需的 TLP 颜色条和水印
- **导出 STIX 2.1** — 标准包,可导入 MISP、OpenCTI、QRadar
- **导入 CSV** — 从结构化文件批量导入节点和边
- **自动检测实体** — 粘贴原始文本(电子邮件头、WHOIS、Shodan 输出)并自动提取 IP、域名、邮箱、哈希值、CVE
### 完善功能
- **自动保存** — 通过 localStorage,图谱在页面刷新后仍然保留
- **撤销/重做** — 完整历史记录,支持 `⌘Z` / `⌘⇧Z`
- **演示模式** — 隐藏所有 UI 用于演示 (`F`)
- **深色/浅色模式** — 点击太阳图标切换,偏好设置已保存
- **键盘快捷键** — 按 `?` 查看完整参考
## 开始使用
```
git clone https://github.com/yourusername/lumen-graph.git
cd lumen-graph
open index.html
```
或者直接下载 `index.html`,在任何现代浏览器中直接打开。
无需 npm。无需构建步骤。首次加载后无需互联网连接(字体在首次打开时从 Google Fonts 加载)。
## CSV 导入格式
### 节点 (`nodes.csv`)
```
label,type,notes,source,date,score,tlp
185.220.101.47,IP,Tor exit node seen in honeypot,Shodan,2024-11-01,8,RED
evil-c2.net,Domain,C2 domain registered via privacy proxy,WHOIS,2024-11-03,7,AMBER
```
**`type`** 必须是以下之一:`IP`、`Domain`、`Email`、`Person`、`Org`、`Generic`
**`score`** 为 1–10
**`tlp`** 为 `WHITE`、`GREEN`、`AMBER` 或 `RED`
**`date`** 为 `YYYY-MM-DD`
### 边 (`edges.csv`)
```
source,target,label
185.220.101.47,evil-c2.net,resolves-to
evil-c2.net,attacker@proton.me,registered-by
```
示例 CSV 模板位于 [`/samples`](/samples) 目录中。
## 键盘快捷键
| 操作 | 快捷键 |
|---|---|
| 边模式 | `E` |
| 路径查找器 | `P` |
| 搜索节点 | `⌘K` |
| 图谱统计 | `S` |
| 演示模式 | `F` |
| 快捷键参考 | `?` |
| 撤销 | `⌘Z` |
| 重做 | `⌘⇧Z` |
| 取消/关闭 | `Esc` |
| 快速添加节点 | 右键点击画布 |
| 打开属性 | 点击节点 |
## 安全说明
Lumen Graph 是一个本地工具——它不会发出任何网络请求,仅将数据存储在浏览器的 localStorage 中。已实施以下安全措施:
- **内容安全策略** — 阻止注入脚本执行
- **URL 验证** — 证据链接必须是 `https://` 或 `http://`;拒绝 `javascript:` URI
- **导入清理** — 所有导入的 JSON 字符串字段在接触 DOM 之前都会剥离 HTML 标签
- **不使用 `innerHTML` 处理用户数据** — 所有用户提供的内容都通过 `textContent` 设置
## TLP 处理
TLP 分类在案例元数据面板中按案例级别设置。PNG 导出始终在图像顶部包含彩色 TLP 条。STIX 导出包含 TLP 标记定义。
TLP 不会限制工具内部的访问——它是一个标签和导出标记系统。
## 路线图
- [ ] 按威胁评分调整节点大小
- [ ] 时间图谱筛选(日期范围滑块)
- [ ] 归属模型(谁添加了什么)
- [ ] 攻击链视图(按 MITRE 战术的杀伤链布局)
- [ ] 离线字体打包
## 许可证
MIT — 见 [LICENSE](LICENSE)
## 版本
`v1.0.0` — 首次公开发布标签:Cloudflare, ESC4, MITRE ATT&CK, OSINT, STIX 2.1, TLP分类, 单文件工具, 可视化分析, 后端开发, 图编辑器, 多模态安全, 威胁情报, 威胁评分, 实体关系图, 开发者工具, 强制布局图, 数据可视化, 数据库接管, 无需安装, 时间线, 浏览器工具, 溯源分析, 网络威胁情报, 网络安全, 聚类分析, 节点属性, 调查工具, 路径分析, 链接分析, 隐私保护