
PoC 视频:点击这里
John Hammond 制作的精彩小视频 点击这里
感谢 @MSNIGHTMARE2000 的灵感 - 请给他一份工作并给他发邮件!
向 Tookie、Hazetick、belogen 和 bet3rd 致敬,你们是最棒的兄弟。
你还欠我一场 Overwatch 或 Starlight Princess 的游戏局 lusilly,喵 :3
BrokenPipe 演示了通过 Steam 客户端服务从标准 Windows 账户本地提权至
NT AUTHORITY\SYSTEM。该 PoC 在未请求管理员凭据或显示 UAC 提示的情况下启动一个交互式 SYSTEM
命令提示符。
NT AUTHORITY\SYSTEM 身份运行。whoami /user 返回了 Local System SID,S-1-5-18。Steam 客户端服务(steamservice.exe)始终以 SYSTEM 身份运行,它接受调用者控制的安装根目录,而该目录并不在
正版 Valve 签名的安装脚本 VDF 的签名覆盖范围内。BrokenPipe 利用这一签名覆盖缺口,
使特权服务从重定位路径以 SYSTEM 身份执行包含的启动器。它
并未伪造、修改或绕过 VDF 签名。
流程:
与 Steam 客户端服务建立 IPC 连接(无需管理员权限)
|
v
IClientInstallUtils::AddInstallScriptToWhiteList
|
| 正版 Valve 签名的 VDF
| 调用者控制的安装根目录 <------ 缺陷存在于此。
| 重定位的启动器被加入白名单 <---------ˡ
v
IClientInstallUtils::RunInstallScript
|
| 服务处理运行 VDF
| 白名单中的启动器被选中
v
Steam 客户端服务以 SYSTEM 身份启动可执行文件
|
| BrokenPipe 收到一个交互式
| NT AUTHORITY\SYSTEM 命令提示符
v
IClientInstallUtils::GetInstallScriptExitCode
|
| 可选的轮询或结果收集
v
清理并生成回执
该 PoC 已在最新版本的 Windows 10 和 Windows 11 x64 上针对当前版本的 Steam 10.96.30.42 进行了验证。
要求:
在项目目录中打开 PowerShell 并运行:
powershell.exe -NoProfile -ExecutionPolicy Bypass -File .\build.ps1
生成的可执行文件输出至:
x64\Release\BrokenPipe.exe
构建脚本会查找 MSBuild、验证嵌入载荷的哈希、重新构建 x64 Release 配置,并打印最终可执行文件路径和 SHA-256。
你也可以在 Visual Studio 中打开 BrokenPipe.sln,选择 Release | x64,然后选择
生成 > 重新生成解决方案。
BrokenPipe.exe,无需提权。whoami 或 whoami /user 或你想运行的任何其他命令验证新的 SYSTEM 提示符。exit 或关闭 SYSTEM 提示符。无需命令行参数或外部运行时文件。载荷 ZIP 已编译进
可执行文件中。该 PoC 不创建持久化,仅启动规范的
C:\Windows\System32\cmd.exe,并将提权进程树放入一个关闭即终止的 Windows 作业中。
JSON 回执写入 C:\Users\Public\BrokenPipe。
如果你想调整所使用的载荷,它位于 payloads 文件夹中,名称为 BrokenPipePayload.zip
BrokenPipe\
assets\
brokenpipe-system-shell.png
payload\
BrokenPipePayload.zip
BrokenPipe-Bootstrap.ps1
BrokenPipe.cpp
BrokenPipe.rc
BrokenPipe.sln
BrokenPipe.vcxproj
build.ps1
resource.h
README.md
嵌入的载荷必须保持在 payload\BrokenPipePayload.zip,除非其资源路径也在
BrokenPipe.rc 中更新。
Q: 这是什么
A: 一个标准用户 -> SYSTEM 的本地提权
Q: 它是如何工作的?
A: 查看 Payload\BrokenPipePayload.zip,解压并阅读代码。
Q: 它是不是没用?
A: 对你来说,也许吧,对其他人来说,可能不是。
Q: 它有什么危害
A: 你获得了 SYSTEM 权限,它比 Administrator(你右键选择的那一个)高一级,比 TRUSTEDINSTALLER 低一级,而你实际上从一开始就不是管理员。如果你不理解这一点,去 Google 一下(或者问问你友好的邻居 LLM,比如 Grok、ChatGPT 或 Siri,哈哈)
Q: 为什么?
A: 因为 VALVE 从三月份就已经知道这件事了,他们没有修复,仅仅是因为我不在乎 Steam 或任何 VALVE 游戏,尤其是当 CS2 充斥着作弊者和利用者时。他们应该修复它并查看那份 5 个月前的报告。
Q: 某个愚蠢的标准管理员安装问题或某人提出的让我脑细胞略微死亡的什么问题……
A: 即使你的杀毒软件在安装时也需要管理员权限,首次安装 Steam 当然也需要管理员权限。之后它就以 SYSTEM 身份运行服务,即使对标准用户也是如此。别问我,问 VALVE 去。
本项目仅供授权的安全研究和防御性验证使用。请仅在你拥有或获得明确评估许可的 系统上进行测试。