timothytate/viper
GitHub: timothytate/viper
VIPER 是一个基于浏览器的轻量级可视化工具,用于在网络拓扑图上记录和回放威胁狩猎与事件响应调查活动。
Stars: 0 | Forks: 0
# VIPER
**VIPER** 代表 **Visual Infrastructure Picture & Endpoint Response**。它是一个轻量级的、基于浏览器的公共操作画面 (COP),用于在网络拓扑图上记录和可视化网络威胁狩猎或事件响应活动。
VIPER 旨在帮助分析师在一个可视化的工作空间中,将基础设施、攻击步骤、MITRE ATT&CK 技术、事件详情、威胁指标和叙述性备注连接起来,从而保留调查上下文。
## VIPER 的功能
VIPER 提供了一个单页界面,用于在网络拓扑图上构建和审查调查时间线。它可以用于:
- 构建或导入网络拓扑。
- 添加主机、路由器、防火墙、服务器、OT 设备、云/外部节点以及其他基础设施。
- 通过日期、时间、MITRE 战术、技术、受影响节点、叙述性备注和原始指标记录攻击步骤。
- 将活动可视化为本地下发执行、发现、内部移动、过渡暂存、外部命令与控制、数据渗出或远程操作。
- 记录特定事件的详细信息,例如进程、网络、文件、身份验证、账户、服务、注册表和进程注入数据。
- 通过基于地图的回放视图或按时间顺序的账目视图来审查活动。
- 利用可观测对象和标签创建调查报告。
- 将调查结果导出为 VIPER 项目 JSON 文件。
- 导出 STIX 2.1 样式的数据包,用于下游分析或共享。
## 为什么开发此工具
VIPER 作为一个威胁狩猎研究项目的一部分而被创建,该项目旨在研究:与传统非结构化笔记相比,结构化的案例管理工作流和公共操作画面能否提高分析师的态势感知能力、指标识别能力和事件界定能力。
该工具并非旨在取代 SIEM、数据包捕获平台、EDR 或案例管理系统。相反,它作为一个轻量级的可视化层,用于保留分析师所了解的信息、事件与基础设施的关联方式,以及事件随时间的演变过程。
## 仓库内容
推荐的仓库结构:
```
.
├── VIPER_v0.2.html
├── day4research_VIPER_Project.json
├── day6research_VIPER_Project.json
└── README.md
```
### `VIPER_v0.2.html`
VIPER 的主应用程序。它是一个独立的 HTML 文件,可以直接在浏览器中打开,或者通过 GitHub Pages 托管。
### `day4research_VIPER_Project.json`
基于 Day 4 研究场景的 VIPER 演示项目。此文件已针对 VIPER 导入进行了格式化,包含:
- 38 个基础设施节点。
- 40 个记录在案的攻击步骤。
- 2026 年 6 月 19 日的场景时间线。
- 活动包括初始 Sandcat RAT 执行、远程系统发现、横向移动以及跨多个主机的额外远程操作。
- MITRE ATT&CK 参考,例如 `T1018`、`T1021.002`、`T1550.003`、`T1569.002`、`T1059.003` 和 `T1071.001`。
### `day6research_VIPER_Project.json`
基于 Day 6 研究场景的 VIPER 演示项目。此文件已针对 VIPER 导入进行了格式化,包含:
- 38 个基础设施节点。
- 29 个记录在案的攻击步骤。
- 2026 年 6 月 26 日的场景时间线。
- 活动包括 Sandcat RAT 初始访问、基于 SMB 的工具传输、横向移动、用于持久化的服务创建以及进程注入。
- 网络、服务和进程注入事件记录。
## 快速开始
### 方式 1:本地打开
1. 下载或克隆此仓库。
2. 在现代浏览器(例如 Chrome、Edge 或 Firefox)中打开 `VIPER_v0.2.html`。
3. 使用 **Import Project** 加载其中一个演示 JSON 文件。
无需服务器、数据库或安装。
### 方式 2:使用 GitHub Pages 托管
1. 将 `VIPER_v0.2.html` 和演示 JSON 文件推送到 GitHub 仓库。
2. 在 GitHub 中,转到 **Settings** > **Pages**。
3. 选择包含该 HTML 文件的分支和文件夹。
4. 在浏览器中打开发布的 GitHub Pages URL。
5. 使用 **Import Project** 从本地计算机加载演示 JSON 文件。
## 如何导入演示项目
1. 在浏览器中打开 `VIPER_v0.2.html`。
2. 点击右上角菜单中的 **Import Project**。
3. 选择以下之一:
- `day4research_VIPER_Project.json`
- `day6research_VIPER_Project.json`
4. VIPER 将加载基础设施地图和攻击时间线。
5. 使用 **Map View** 可视化地回放活动。
6. 使用 **Previous Step** 和 **Next Step** 遍历攻击序列。
7. 使用 **Ledger View** 按时间顺序审查所有步骤。
8. 如果您进行了更改并希望保存新副本,请使用 **Export Project**。
导入项目会替换浏览器中当前加载的工作空间。如果您希望保留更改,请在导入另一个项目之前导出当前项目。
## 基本工作流
### 1. 构建基础设施
1. 打开 **Infrastructure** 标签页。
2. 添加主机名和主要 IP 地址。
3. 可选添加:
- 其他 IP 或别名。
- 设备类型/图标。
- 操作系统。
- 关联的 CVE。
- 设备备注。
4. 点击 **Save / Add Node**。
### 2. 添加攻击步骤
1. 打开 **Attack Steps** 标签页。
2. 添加步骤标题。
3. 输入日期和时间。
4. 选择 MITRE 战术。
5. 输入技术或操作,例如 `T1021.002` 或 `SMB Share Tool Transfer`。
6. 选择主要节点,并在相关时选择次要节点。
7. 选择动作的可视化类型。
8. 选择事件类型并填写特定事件的字段。
9. 添加描述或叙述性备注。
10. 可选添加原始日志或指标。
11. 点击 **Add Step**。
### 3. 审查场景
使用主导航控件:
- **Map View**:显示网络拓扑图和逐步的可视化活动。
- **Ledger View**:以时间顺序列表的形式显示调查步骤。
- **Reports**:为分析师备注、可观测对象、标签和 markdown 导出提供工作空间。
- **Previous Step / Next Step**:遍历攻击序列。
- **Reset View**:重置地图的缩放和平移位置。
### 4. 创建报告
1. 点击 **Reports**。
2. 点击 **Create Report**。
3. 添加报告标题。
4. 添加可观测对象或标签,例如 IP、主机名、用户或指标。
5. 在实时文档编辑器中撰写报告。
6. 使用 **Download Doc (.md)** 将报告导出为 Markdown。
报告可以使用可观测对象进行标记,以便将它们与相关的基础设施节点关联起来。
### 5. 导出您的工作
使用 **Export Project** 将当前的 VIPER 工作空间保存为 JSON 文件。此文件以后可以通过 **Import Project** 再次导入。
使用 **Export STIX** 生成 STIX 2.1 样式的 JSON 数据包。VIPER 将基础设施节点、IP 地址、漏洞、观察到的数据和关系映射到 STIX 样式的对象中,以供外部审查或实验。
## VIPER 项目 JSON 格式
VIPER 项目文件使用简单的 JSON 结构:
```
{
"nodes": [],
"steps": [],
"reports": []
}
```
### 节点
节点代表地图上的基础设施。一个节点可以包含如下字段:
```
{
"id": "node_123",
"host": "example-host",
"ip": "10.0.0.10",
"os": "Windows 10",
"icon": "icon-laptop",
"x": "50",
"y": "50",
"other_ips": [],
"cves": [],
"notes": ""
}
```
### 步骤
步骤代表场景时间线中由分析师记录的活动。一个步骤可以包含如下字段:
```
{
"id": "step_123",
"title": "SMB Share Tool Transfer",
"date": "2026-06-26",
"time": "15:15:44",
"tactic": "Lateral Movement",
"action": "T1021.002",
"desc": "Tool transfer over SMB",
"raw": "",
"nodes": ["source_node_id", "destination_node_id"],
"type": "remote_action",
"eventType": "Network",
"eventData": {
"SrcIP": "10.0.0.10",
"DstIP": "10.0.0.20",
"Port": "445",
"Protocol": "SMB"
}
}
```
### 报告
报告代表分析师的备注,可以包含标题、标签、HTML 内容和锁定状态:
```
{
"id": "report_123",
"title": "Incident Summary",
"tags": ["10.0.0.10", "example-host"],
"content": "
Analyst notes go here.
", "isLocked": false } ``` ## 演示思路 ### Day 4 演示 加载 `day4research_VIPER_Project.json`,然后使用 **Next Step** 遍历场景,从 `hr-wks-02` 上最初的 Sandcat RAT 活动开始,到发现、横向移动以及跨多个主机的后续执行。使用 **Ledger View** 来展示如何将同一事件作为结构化的时间线来审查,而不仅仅是作为地图动画。 ### Day 6 演示 加载 `day6research_VIPER_Project.json`,然后重点关注该工具如何表示 SMB 传输、服务创建、持久化和进程注入。此演示非常适合展示特定事件字段如何保留那些在非结构化笔记中容易丢失的细节。 ## 注意事项与局限性 - VIPER 是一个独立的浏览器工具。 - 它不需要后端数据库。 - 它不提供身份验证或多用户同步功能。 - 刷新浏览器可能会清除未保存的工作,因此请经常使用 **Export Project**。 - 包含的 JSON 文件包含实验室场景数据、主机名、IP 地址和攻击步骤详情。如果需要公开发布,请在发布前进行审查和脱敏处理。 - 当前的演示项目不包含预置报告;请使用 **Reports** 视图创建您自己的演示备注。 ## 建议的用例 - 威胁狩猎演练记录。 - 事件响应桌面推演或靶场演练可视化。 - 分析师培训和事后回顾。 - 对比非结构化笔记与基于结构化 COP 的分析的研究演示。 - 将场景调查结果转换为可共享的项目记录。 ## 许可证 默认未指定许可证。如果您打算让其他人使用、修改或重新分发 VIPER,请向仓库添加许可证文件。标签:Homebrew安装, HTTP/HTTPS抓包, IP 地址批量处理, Mutation, 事件调查, 可视化, 后端开发, 多模态安全, 安全, 库, 应急响应, 态势感知, 数据可视化, 超时处理