
Sliver C2フレームワーク用のクロスプラットフォームElectron GUI。セッションおよびビーコンのダッシュボード、ペイロード生成、リスナー、ルート、クラウドデプロイ管理を提供します。
Sliver GUI は、Sliver 向けのクロスプラットフォームな Electron デスクトップアプリケーションです。バックエンド接続、ライブステータスビュー、専用ワークスペース、ネイティブな Sliver コンソールを、HeroUI、HeroUI Pro、Font Awesome で構築された React インターフェースに統合しています。
GUI は上流のすべてのコマンドやオプションを実装しているわけではありません。オペレーター接続は mTLS を使用します。WireGuard オペレーター設定は認識されますが、接続することはできません。追跡されている対応範囲についてはオペレーターパリティレポートを、具体的な境界については以下の機能ドキュメントを参照してください。
npm run setup:rdp は固定された Rust 1.94.1 ツールチェーンとプラットフォームターゲットをインストールします。サポートされているバージョンとロックされた依存関係は、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 setup:rdp
npm run dev
HeroUIのログイン/インストール手順は初期のワークステーションセットアップに必要です。インストール用にHEROUI_AUTH_TOKENがすでに設定されている場合はスキップできます。認証情報は追跡対象ファイルに含めないでください。
npm run devは、本番用のコンテンツセキュリティポリシーを使用して、静的アプリケーションをsliver://app/index.htmlでビルドおよび起動します。また、固定されたIronRDPフォークからホストRDPヘルパーもビルドします。通常のTypeScriptビルドとユニットテストでは、Rustのコンパイルは不要です。ソース変更後はコマンドを再起動してください。このワークフローでは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はソース設定をコピーまたは削除しません。
リモートデスクトッププロファイルとエンドポイント証明書ピンはgui/rdp.jsonに保存されます。パスワードはデフォルトで省略されますが、アプリ終了まで保持するか、オペレーティングシステムのセキュアストレージで暗号化できます。Linuxが暗号化されていないキーストアを選択した場合、永続パスワードは利用できません。クリップボード転送は明示的かつテキストに限定されます。RDPタブを閉じると、リモートのWindowsアカウントからログオフせずに切断されます。
Settings → General → Appearance → Disable window transparencyを有効にすると、アプリ全体でネイティブのウィンドウガラス効果が即座に無効になります。このスイッチはデフォルトでオフのため、サポートされている環境では透明効果が有効のままです。他のアプリケーション設定とともに保存され、ターミナルの透明効果よりも優先されます。
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 | Electronをビルドし、renderer、preload、IPCを通じてテストします。 |
npm run protocol:check | 固定されたクライアント、アップストリームのベースライン、パリティ成果物を検証します。 |
npm run build | 型チェックを行い、dist/にアプリケーション出力をビルドします。 |
npm run build:console | 固定されたネイティブSliverコンソールをビルドします。 |
npm run build:rdp:host | このマシン用のRDPヘルパーをビルドおよび検証します。 |
npm run build:rdp | 両方のmacOSスライスを含むRDPパッケージングターゲットをビルドします。 |
npm run test:rdp:native | Rustランタイムテストを実行します。 |
npm run package | release/配下に未パッケージのアプリケーションを作成します。 |
npm run dist | release/配下にプラットフォームインストーラーを作成します。 |
npm run test:e2e:packaged | 既存の未パッケージアプリケーションをローカルフィクスチャに対して検証およびテストします。 |
ユニットテストとコンポーネントテストはソースファイルの隣に配置されます。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 によって無視されます。native/rdp/bin/ 配下の生成された RDP 実行ファイル、来歴、Cargo ライセンスインベントリも同様に無視されます。ヘルパーのソースとロックファイルは追跡されます。
CI パッケージングマトリクスは次のとおりです:
| プラットフォーム | パッケージ | 自動更新 |
|---|---|---|
| macOS ユニバーサル | DMG および ZIP | インストール済みアプリが ZIP 更新をダウンロードします。 |
| Windows x64 | NSIS インストーラーおよびポータブル EXE | NSIS インストールのみ。ポータブルビルドは手動で更新します。 |
| Linux x64 | AppImage および DEB | AppImage のみ。DEB パッケージは手動で更新します。 |
サポート対象のパッケージは、GitHub Releases を確認し、バックグラウンドで更新をダウンロードし、Restart to update または通常のアプリケーション終了時にインストールするように設定されています。安定版ビルドはプレリリース更新を受け入れません。GitHub トークンはアプリケーションに埋め込まれていません。
最初の v0.0.1 リリースでは、永続的な自己署名コード署名証明書を使用します。macOS の Check for Updates は、最初の更新チェック前にネイティブの証明書信頼ダイアログを表示します。アプリはまず Gatekeeper を通過して起動を許可される必要があります。Windows インストールでは、宛先マシン上で公開署名証明書が信頼されている必要があります。信頼のブートストラップ、公開フィンガープリント、リリースキーポリシーについては、自己署名のインストールと更新を参照してください。
ビルドターゲットと最小ランタイム認定は別個のものです。ランタイム要件、認定状況、署名/更新ポリシーについては、プラットフォームサポート ADRを参照してください。
Electron メインプロセスは、バックエンドクライアント、オペレーター設定のシークレット、ネイティブプロセス、ファイルシステムアクセスを所有します。サンドボックス化されたレンダラーは、狭いスコープの型付き preload API を使用します。IPC は呼び出し元のドキュメントと所有ウィンドウを検証します。
本番 CSP はインラインスクリプトとレンダラーのネットワーク接続をブロックしつつ、バンドルされたワーカーとローカル WebAssembly ランタイムを許可します。アプリケーションドキュメントは sliver://app 経由で提供され、外部ドキュメントとクラウドサインインはシステムブラウザで開きます。破壊的操作はメインプロセスでの検証とレビューフローを維持します。開発のためにこれらの境界を弱めないでください。