跨平台 Electron GUI,用于 Sliver C2 框架,提供会话与 beacon 仪表盘、payload 生成、监听器、loot 以及云部署管理。
Sliver GUI 是一个跨平台的 Electron 桌面应用程序,用于 Sliver。它将后端连接、实时状态视图、专用工作区以及原生 Sliver 控制台整合在一个使用 HeroUI、HeroUI Pro 和 Font Awesome 构建的 React 界面中。
该 GUI 并未实现所有上游命令或选项。操作员连接使用 mTLS;WireGuard 操作员配置可被识别但无法连接。有关已跟踪的覆盖范围,请参阅操作员对等报告;有关具体边界,请参阅下方的功能文档。
支持的版本和锁定依赖记录在 package.json 和 package-lock.json 中。应用程序代码使用严格 TypeScript;构建辅助工具使用 Node.js ES 模块。
npm ci --strict-allow-scripts
npx heroui-pro login
npx heroui-pro install --yes
npm run dev
HeroUI 登录/安装步骤是初始工作站设置所必需的;如果安装时已配置 HEROUI_AUTH_TOKEN,则可跳过这些步骤。请勿将凭据保留在受跟踪的文件中。
npm run dev 会构建并在 sliver://app/index.html 启动静态应用程序,使用生产内容安全策略。源代码更改后需重新启动该命令;此工作流不使用 HMR。
TypeScript 客户端从固定的 sliver-script npm 包安装。无需相邻的客户端检出。普通应用程序开发不需要 Sliver 源代码检出;构建原生控制台则需要。
默认的 Sliver 客户端根目录为 ~/.sliver-client;SLIVER_CLIENT_ROOT_DIR 可选择其他根目录。应用程序首选项(包括 Overview 图形选项)保存在该根目录下的 gui/application-settings.json 中;工作区缩放保存在 gui/workspace-zoom.json 中,文本编辑器首选项保存在 gui/text-editor-settings.json 中。GUI 会发现 configs/ 中现有的操作员配置,并在有效配置保存到该处时更新打开的配置选择器。通过 Import 选择的配置会作为私有文件引用保存在 gui/operator-configs.json 中。Import 和 Forget 不会复制或删除源配置。
Ghostty 兼容的终端颜色在 Settings → Terminal 中配置,并保存到 gui/ghostty/config。自定义主题应放在 gui/ghostty/themes/ 中;已安装的原生 Ghostty 主题会被自动发现。有关配置共享、Monaco 编辑器、平台透明度支持和运行时限制,请参阅终端外观与 Ghostty 主题。
| 命令 | 用途 |
|---|---|
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/ 中。实际服务器测试是独立的、需选择性启用的检查,需要配置一次性基础设施。fixture 测试不能确立与实时服务器或已安装包的兼容性。
协议检查使用 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 忽略。
CI 打包矩阵为:
| 平台 | 包 | 自动更新 |
|---|---|---|
| macOS universal | DMG 和 ZIP | 已安装的应用程序下载 ZIP 更新。 |
| Windows x64 | NSIS 安装程序和便携式 EXE | 仅限 NSIS 安装;便携式构建需手动更新。 |
| Linux x64 | AppImage 和 DEB | 仅限 AppImage;DEB 包需手动更新。 |
支持的包已配置为检查 GitHub Releases、在后台下载更新,并在 Restart to update 或正常退出应用程序时安装。稳定版构建不接受预发布更新。应用程序中未嵌入 GitHub token。
初始 v0.0.1 版本使用持久性自签名代码签名证书。macOS 的 Check for Updates 会在首次更新检查前提供原生证书信任对话框;必须先允许该应用通过 Gatekeeper 启动。Windows 安装需要在目标机器上信任公共签名证书。有关信任引导、公共指纹和发布密钥策略,请参阅自签名安装与更新。
构建目标与最低运行时认证是分开的。有关运行时要求、认证状态以及签名/更新策略,请参阅平台支持 ADR。
构建工作流运行协议与一致性检查、Electron E2E 和原生包作业。应用程序作业需要 HEROUI_AUTH_TOKEN Actions 密钥;公共 fork 的拉取请求仅运行非密钥的协议/一致性作业。原生作业针对回环 mTLS fixture 测试未打包的应用程序。
稳定版发布从当前 origin/main 提交处的已签名附注 vX.Y.Z 标签开始。无凭据的标签工作流会在 main 上分派发布工作流;发布签名密钥仅从其仅限 main 的 GitHub 环境中可用。发布要求公共仓库启用不可变发布、与固定公共证书匹配的有效 macOS 和 Windows 签名,以及在通过草稿发布发布之前验证资产。此自签名配置文件明确跳过 Apple 公证;单独的 Developer ID 配置文件保留其 Apple 签名要求。拉取请求、main 和手动分派的非发布构建会产生 CI 产物。有关签名输入和发布门禁,请参阅该工作流;有关单独的更新集成测试,请参阅私有更新器工作流。
Electron main 拥有后端客户端、操作员配置密钥、原生进程和文件系统访问权限。沙盒化的 renderer 使用范围狭窄的、类型化的 preload API;IPC 会验证调用文档和所属窗口。
生产 CSP 阻止内联脚本和 renderer 网络连接,同时允许捆绑的 worker 和本地 WebAssembly 运行时。应用程序文档通过 sliver://app 提供;外部文档和云登录在系统浏览器中打开。破坏性操作保留主进程验证和审查流程。请勿在开发中削弱这些边界。
Sliver GUI 根据 GPL-3.0-or-later 许可。第三方组件(包括 HeroUI Pro)保留其自身条款。有关署名和分发限制,请参阅许可说明。