Sliver GUI 深度上手:把 Sliver C2 装进 Electron 图形界面,渗透测试告别纯命令行
玩过 Sliver C2 的人大概都有同感:这个由 Bishop Fox 开源的对抗模拟框架功能凶猛,mTLS、HTTP(S)、DNS、WireGuard 样样齐全,但一切操作都压在命令行里,会话、信标、监听器、隧道来回切换,新手很容易被劝退。Sliver GUI 的出现恰好补上了这块短板——它是一个跨平台的 Electron 桌面应用,把后端连接、实时状态视图、专用工作区和原生 Sliver 控制台整合进同一个可视化界面,前端基于 HeroUI、HeroUI Pro 和 Font Awesome 构建,颜值与效率兼得。对依赖 Sliver C2 开展授权渗透测试和红队演练的操作手来说,这款图形界面工具几乎把"看图操作"这件事做到了像素级。
![]()
先搞清楚:Sliver GUI 到底是什么
Sliver GUI 是 Sliverarmory 组织维护的开源项目,仓库地址为 github.com/sliverarmory/sliver-gui。它没有另起炉灶重写一套 C2 逻辑,而是在官方 Sliver 客户端协议之上套了一层现代化桌面外壳:后端连接、多窗口工作区、实时拓扑、原生控制台,全部收进一个 Electron 应用里。
有两点边界需要提前知道。操作员连接走 mTLS 双向认证,WireGuard 类型的操作员配置虽然能被识别,但当前版本还无法直接建立连接;另外,这个 GUI 并没有覆盖上游的全部命令和选项,具体支持范围可以查阅仓库中的 operator parity report(操作员对等报告)以及各功能文档。
核心功能:一个窗口,接管整条作战链路
打开 Sliver GUI,最先击中你的是那块 Overview 拓扑视图——会话、信标、基础设施的实时关系一目了然,比盯着终端里滚动的文本直观太多。围绕它铺开的是一整套仪表板与专用工作区:
- 多窗口与多配置:支持同时开启多个应用窗口,操作员配置可以保存复用,匹配同一配置的窗口共享后端连接,每个工作区的状态彼此独立、互不干扰。
- Sessions / Beacons 仪表板:交互式会话与异步信标分两栏呈现,状态变化实时刷新。
- 目标交互工作区:选中目标后进入专用面板,Files(文件)、Processes(进程)、Environment(环境变量)、Registry(注册表)、Activity(活动记录)五个分区把高频操作做成了图形化入口。
- 生成与运营视图:Implant 生成、构建历史与配置文件、作业与监听器、Loot(战利品)和 Credentials(凭据)均有独立页面。
- 原生控制台与 SSH 窗口:内置专用 Sliver 控制台和受管理的 SSH 窗口,终端采用标签式 Ghostty 终端,多任务并排不打架。
- Armory / Network / Cloud Deployment:扩展库、网络管理、云部署各自独立成窗,其中云部署已集成 AWS 与 Azure 账户。
- 云端 DNS 管理器:面向 Route 53 和 Azure DNS 的解析记录管理,支持单区域与全区域记录视图,还能直接在界面中编辑记录。
- 个性化设置:键盘快捷键、应用外观、更新行为均可自定义。
技术优势:好看之外,工程底子同样扎实
图形界面项目最容易被诟病"壳厚芯虚",Sliver GUI 在工程上做了几件硬事。
严格 TypeScript 与固定协议基线。应用代码全部使用严格模式 TypeScript,构建辅助脚本走 Node.js ES 模块;TypeScript 客户端来自固定版本的 sliver-script npm 包,不需要相邻的客户端源码检出。协议检查会把固定的上游源代码拉到临时目录做一致性校验,防止客户端与上游悄悄漂移。
沙盒与最小权限边界。Electron 主进程握着后端客户端、操作员配置密钥、原生进程和文件系统访问权;渲染进程则关进沙盒,只暴露范围极窄、带类型约束的 preload API,每次 IPC 调用都要校验参数文档和所属窗口。生产环境 CSP 直接封死内联脚本和渲染进程的网络连接,同时放行打包好的 worker 与本地 WebAssembly 运行时。应用文档走私有 sliver://app 协议,外部文档和云登录一律跳系统浏览器打开;破坏性操作保留主进程验证与审查流程,开发阶段也不允许削弱这些边界。
签名、信任与自动更新一条龙。应用内不嵌入任何 GitHub token,更新检查对接 GitHub Releases,后台下载完成后在"Restart to update"或正常退出时安装;稳定版构建不会接收预发布更新。
本地跑起来:环境要求与部署教程
动手之前先备好三样东西:Node.js 24.15 或更高版本(限 24.x 系列),或者 Node.js 26 及以上;npm 11.19 及以上;以及 HeroUI Pro 许可证(含其包产物的身份验证)。具体支持的版本与锁定依赖都记录在 package.json 和 package-lock.json 中。
克隆仓库后,依次执行:
npm ci --strict-allow-scripts
npx heroui-pro login
npx heroui-pro install --yes
npm run dev
HeroUI 的登录与安装步骤只在首次配置工作站时必需;如果环境里已经配好 HEROUI_AUTH_TOKEN,这两步可以直接跳过。注意不要把凭据写进任何被 Git 跟踪的文件里。
npm run dev 会构建应用并在 sliver://app/index.html 启动,此时启用的是生产内容安全策略。需要留意的是这个工作流不带 HMR——改了源码得重新执行该命令才能看到效果。另外,普通界面开发不需要 Sliver 源码检出,只有构建原生控制台时才需要。
配置文件落在哪
Sliver GUI 默认使用 \~/.sliver-client 作为客户端根目录,想换地方就设置 SLIVER_CLIENT_ROOT_DIR 环境变量。根目录下的 gui/ 子目录装着各类偏好:
- gui/application-settings.json:应用级偏好,包括 Overview 图形选项
- gui/workspace-zoom.json:工作区缩放
- gui/text-editor-settings.json:文本编辑器偏好
- gui/operator-configs.json:通过 Import 引入的操作员配置,以私有文件引用形式保存
- gui/ghostty/config 与 gui/ghostty/themes/:Ghostty 终端配色与自定义主题,已安装的原生 Ghostty 主题会被自动发现
GUI 会自动发现 configs/ 目录里已有的操作员配置,新配置保存进去后,打开中的配置选择器会实时更新。Import 和 Forget 只增删引用,不会复制或删除源配置文件,这个设计对多人共用配置目录的场景很友好。
开发常用命令一览
| 命令 | 用途 |
|---|---|
| npm run typecheck | 检查 main/preload 与 renderer 三个 TypeScript 项目 |
| npm test | 运行 Vitest 单元测试与组件测试 |
| npm run test:watch | 交互式运行 Vitest |
| npm run test:e2e:electron | 经 renderer、preload、IPC 构建并测试 Electron |
| npm run protocol:check | 校验固定的客户端、上游基线与一致性产物 |
| npm run build | 类型检查并在 dist/ 输出构建结果 |
| npm run build:console | 构建固定的原生 Sliver 控制台 |
| npm run package | 在 release/ 下生成未打包应用 |
| npm run dist | 在 release/ 下生成平台安装包 |
| npm run test:e2e:packaged | 针对本地 fixture 验证并测试未打包应用 |
单元测试和组件测试与源文件同目录存放,Electron 场景测试在 src/e2e/ 下。协议检查依赖 Go,会把固定的上游源码取到临时目录;想使用显式选择的本地基线,详见协议文档。
打包、分发与更新:三平台矩阵全梳理
控制台与分发构建需要 Go 1.27.1,以及一份干净、处于来源所记录提交状态的 Sliver 检出——放在 sliver/ 目录下,或用 SLIVER_SOURCE_DIR 指向它。构建过程会校验源码,但不会获取或修改这份检出,且会禁用 Go 工具链自动切换:把目标版本的 Go 二进制放进 PATH,或者用 SLIVER_GO_BINARY 指定其绝对路径。通用 macOS 控制台构建还要求 macOS 环境与 /usr/bin/lipo。
npm run package 与 npm run dist 会先准备原生运行时、控制台与许可证清单,产物落在 dist/、release/、native/sliver-console/ 和 .e2e-dist/,这些目录均被 Git 忽略。
| 平台 | 包格式 | 自动更新 |
|---|---|---|
| macOS universal | DMG 与 ZIP | 已安装应用通过下载 ZIP 更新 |
| Windows x64 | NSIS 安装程序与便携 EXE | 仅 NSIS 安装版;便携版需手动更新 |
| Linux x64 | AppImage 与 DEB | 仅 AppImage;DEB 需手动更新 |
首个 v0.0.1 版本使用了持久化自签名代码签名证书。macOS 用户在首次更新检查前会触发原生证书信任对话框,必须先允许应用通过 Gatekeeper 启动;Windows 安装则需要在目标机器上信任公共签名证书。信任引导、公共指纹与发布密钥策略详见仓库的自签名安装与更新文档。构建目标与最低运行时认证是分开管理的,细节记录在平台支持 ADR 中。
持续集成与发布流程
构建工作流包含协议与一致性检查、Electron E2E 以及原生打包作业。应用类作业需要 HEROUI_AUTH_TOKEN 这个 Actions 密钥,公共 fork 的拉取请求只会运行无密钥的协议/一致性作业;原生作业则拿未打包应用对回环 mTLS fixture 做测试。
稳定版发布从 origin/main 当前提交处的签名附注标签 vX.Y.Z 开始:无凭据的标签工作流会在 main 上派发发布工作流,发布签名密钥只在仅限 main 的 GitHub 环境中可用。正式发布要求公共仓库开启不可变发布(immutable releases)、macOS 与 Windows 签名同固定公共证书匹配且有效,资产验证通过后才会经草稿发布放出。这套自签名配置明确跳过了 Apple 公证,而独立的 Developer ID 配置仍保留 Apple 签名要求。拉取请求、main 分支与手动触发的非发布构建只会产生 CI 产物。
谁适合把它装进工具箱
Sliver GUI 最对味的是这几类人:正在做授权红队演练与对抗模拟、希望降低团队协作门槛的操作组;想把 Sliver C2 引入教学环境、让学员"先看懂再动手"的安全培训机构;以及频繁在 AWS / Azure 上起 Redirector、管理 DNS 记录的云上渗透手。图形界面把会话关系、任务输出、凭据战利品摊开在同一个屏幕里,复盘和交接报告时能省掉大量翻终端回滚的时间。
不过也要泼一盆冷水:GUI 再华丽,底层连接的仍是真实的 C2 能力,用它就意味着你对目标环境负有完全责任。
写在最后
从命令行到图形界面,Sliver GUI 把 Sliver C2 的整套操作体验往上抬了一档:HeroUI 驱动的现代化界面、标签式 Ghostty 终端、直连 AWS / Azure 的云部署窗口,再叠加 mTLS、CSP、签名更新这些工程细节,让它不只是"能看",而是"敢用"。项目完全开源,仓库位于 github.com/sliverarmory/sliver-gui,Releases 页提供 macOS、Windows、Linux 三平台安装包,下载即用;想二次开发或定制行为,照着上面的部署教程几分钟就能在本地跑起来。
免责声明
Sliver GUI 属于攻击性安全工具,仅面向授权场景。请只在你拥有或已获得书面明确授权的系统上使用,任何未经授权的访问与测试行为均可能触犯法律。本文仅作技术介绍与学习交流,不构成任何操作建议;因使用本工具产生的全部后果由使用者自行承担。