ar0x4/tunnel-vision-toolkit
GitHub: ar0x4/tunnel-vision-toolkit
针对 Microsoft GSA 零信任网络访问方案的进攻性安全研究工具包,通过逆向隧道协议构建独立客户端以绕过设备合规检查并窃取认证令牌。
Stars: 49 | Forks: 4
# Tunnel Vision 工具包
针对 Microsoft Global Secure Access (GSA)(Microsoft 的 Zero Trust Network Access (ZTNA) 解决方案)的进攻性安全工具包。作为在 **x33fcon 2026** 上发表的研究成果的一部分而开发 —— *“Tunnel Vision:Microsoft Secure Edge 看不到什么”*。
## 概述
Microsoft Global Secure Access 是一项身份感知的云交付网络安全服务,旨在替代传统的 VPN。它通过 WFP 驱动程序在内核级别拦截流量,通过 Microsoft 的云边缘进行路由,并通过 connector 将其交付给本地资源。它强制执行设备合规性、条件访问和 per-app 策略。
这项研究对 GSA 的有线通信协议进行了逆向工程,并从零开始构建了一个完全独立的 tunnel 客户端。该自定义客户端可在 Linux 和 macOS 上运行,使用相同的基于 gRPC 的协议,并能建立可正常工作的 ZTNA tunnel。设备状态检查由客户端自行报告,无需服务端验证,自定义客户端便利用了这一点来提交任意的设备元数据。
## 组件
### 恶意客户端 (`rogue-client/`)
一个独立的 Python tunnel 客户端,可以从**任何操作系统**(Linux、macOS、Windows)连接到 GSA 边缘,并通过 ZTNA tunnel 路由任意流量。使用 TUN 接口实现透明网络集成。
**功能:**
- 建立与 Microsoft 边缘服务器经过身份验证的 gRPC tunnel
- 创建 TUN 设备并通过 tunnel 透明地路由流量
- 支持 per-flow 身份验证,并自动管理 flow 生命周期
- 伪装设备元数据,使其看起来像合法的 Windows 客户端
- 按 audience 从 TokenBroker 转储文件中解析 JWT token
有关设置和用法,请参阅 [`rogue-client/README.md`](rogue-client/README.md)。
### BOFs (`bofs/`)
适用于 [BRC4](https://bruteratel.com/) 的 Beacon Object Files(经过少量修改即可移植到 Cobalt Strike)。
#### GSA Token 窃取 (`bofs/gsa-token-theft/`)
适用于已加入 GSA 的 Windows 目标的两个 BOF:
| BOF | 描述 |
|-----|-------------|
| `gsa_enum` | 完整的 GSA 侦察 —— 安装情况、服务、进程、注册表、安全状态、转发 profile 以及 JSON 转储 |
| `gsa_tbres_steal` | 通过 DPAPI 解密从 TokenBroker `.tbres` 缓存文件中提取 GSA 身份验证 token |
有关构建说明,请参阅 [`bofs/README.md`](bofs/README.md)。
### 协议定义 (`proto/`)
重构的 ZTNA v2 protobuf 定义,从 `GlobalSecureAccessTunnelingService.exe` 中嵌入的描述符中提取。
## 架构
```
Rogue Client (any OS)
|
gRPC / TLS :443
|
v
┌────────────────────────────────┐
│ Microsoft GSA Edge │
│ *.globalsecureaccess.microsoft │
│ .com │
└───────────────┬────────────────┘
│
Outbound connector tunnel
│
v
┌────────────────────────────────┐
│ On-Premises Connector │
│ (customer network) │
└───────────────┬────────────────┘
│
v
Internal Resources
(DCs, file shares, apps)
```
## 构建与使用
1. 构建 Protocol Buffers:
cd proto
python3 -m grpc_tools.protoc -I. --python_out=../rogue-client --grpc_python_out=../rogue-client gsa_tunnel.proto
2. 运行 rogue client:
cd rogue-client
python3 gsa_tunnel.py --tenant --tokens
## 攻击流程
```
1. Land on GSA-enrolled Windows device
2. Run gsa_enum BOF → confirm GSA installation, dump forwarding profile
3. Run gsa_tbres_steal BOF → extract TUNNEL/PORTO/APS tokens from TokenBroker
4. Exfiltrate tokens to attacker machine
5. Run rogue client from attacker machine (Linux/macOS)
→ Full authenticated tunnel to internal network
→ Device posture spoofed, no compliance checks
→ Access persists until tokens expire (~75 min)
```
## 许可证
本项目仅针对**授权的安全测试和研究目的**发布。
## 待办事项
- [ ] 在 rogue client 中使用 refresh token 实现自动 token 刷新
- [ ] 添加对 Entra Internet Access (EIA) 的支持
## 作者
**Arshia Reisi** ([@_ar0x4](https://x.com/_ar0x4))
在 x33fcon 2026 上发表
标签:gRPC, Modbus, PE 加载器, Python, Python工具, ZTNA, 云资产清单, 内核驱动, 客户端加密, 无后门, 网络协议, 逆向工具, 逆向工程