GUI Electron multiplataforma para o framework C2 Sliver, oferecendo painéis de sessão e beacon, geração de payload, listeners, loot e gerenciamento de implantação em nuvem.
O Sliver GUI é uma aplicação desktop Electron multiplataforma para o Sliver. Ele combina conexões de backend, visualizações de status em tempo real, workspaces dedicados e um console Sliver nativo em uma interface React construída com HeroUI, HeroUI Pro e Font Awesome.
A GUI não implementa todos os comandos ou opções do upstream. As conexões de operador usam mTLS; configurações de operador WireGuard são reconhecidas, mas não podem conectar. Consulte o relatório de paridade de operador para cobertura rastreada e os documentos de funcionalidades abaixo para limites específicos.
As versões suportadas e dependências travadas estão registradas em package.json e package-lock.json. O código da aplicação usa TypeScript estrito; os auxiliares de build usam módulos ES do Node.js.
npm ci --strict-allow-scripts
npx heroui-pro login
npx heroui-pro install --yes
npm run dev
As etapas de login/instalação do HeroUI são necessárias para a configuração inicial da estação de trabalho; elas
podem ser ignoradas quando HEROUI_AUTH_TOKEN já está configurado para instalação.
Mantenha credenciais fora de arquivos rastreados.
npm run dev compila e inicia a aplicação estática em
sliver://app/index.html, usando a política de segurança de conteúdo de produção.
Reinicie o comando após alterações no código-fonte; este fluxo de trabalho não usa HMR.
O cliente TypeScript é instalado a partir do pacote npm sliver-script fixado.
Um checkout adjacente do cliente não é necessário. O desenvolvimento comum da aplicação
não requer um checkout do código-fonte do Sliver; compilar o console nativo sim.
O diretório raiz padrão do cliente Sliver é ~/.sliver-client; SLIVER_CLIENT_ROOT_DIR
pode selecionar outra raiz. As preferências da aplicação, incluindo opções do grafo
Overview, são salvas em gui/application-settings.json; o zoom do workspace é salvo em
gui/workspace-zoom.json, e as preferências do editor de texto em
gui/text-editor-settings.json sob essa raiz. A GUI descobre configurações de operador
existentes em configs/ e atualiza o
seletor aberto quando uma configuração válida é salva lá. Ela salva configurações selecionadas
por meio de Import como referências de arquivo privadas em gui/operator-configs.json.
Import e Forget não copiam nem excluem as configurações de origem.
Cores de terminal compatíveis com Ghostty são configuradas em Settings → Terminal e
salvas em gui/ghostty/config. Temas personalizados pertencem a gui/ghostty/themes/;
temas nativos do Ghostty instalados são descobertos automaticamente. Consulte
aparência do terminal e temas do Ghostty para compartilhamento de configuração,
o editor Monaco, suporte de transparência por plataforma e limites de tempo de execução.
| Comando | Propósito |
|---|---|
npm run typecheck | Verifica os projetos TypeScript de main/preload e renderer. |
npm test | Executa testes de unidade e de componente do Vitest. |
npm run test:watch | Executa o Vitest interativamente. |
npm run test:e2e:electron | Compila e exercita o Electron por meio de seu renderer, preload e IPC. |
npm run protocol:check | Verifica o cliente fixado, a linha de base do upstream e os artefatos de paridade. |
npm run build | Verifica tipos e compila a saída da aplicação em dist/. |
npm run build:console | Compila o console Sliver nativo fixado. |
npm run package | Cria uma aplicação descompactada em release/. |
npm run dist | Cria instaladores de plataforma em release/. |
npm run test:e2e:packaged | Verifica e testa uma aplicação descompactada existente contra um fixture local. |
Testes de unidade e de componente ficam ao lado dos arquivos-fonte; cenários do Electron ficam em
src/e2e/. Testes com servidor real são verificações separadas e opcionais que exigem
infraestrutura descartável configurada. Um teste de fixture não estabelece compatibilidade com servidor ativo ou
pacote instalado.
A verificação de protocolo usa Go e busca o código-fonte upstream fixado em um diretório temporário. Consulte a documentação de protocolo para verificações de proveniência e uso de uma linha de base local selecionada explicitamente.
Builds de console e distribuição exigem Go 1.27.1 e um checkout limpo do Sliver
no commit e na árvore registrados em
proveniência do console. Coloque-o em
sliver/ ou defina SLIVER_SOURCE_DIR. O build do console valida o código-fonte;
ele não busca nem modifica esse checkout.
O build desabilita a troca automática de toolchain do Go. Coloque o binário Go necessário
no PATH ou defina SLIVER_GO_BINARY com seu caminho absoluto. Builds universais do console para macOS
exigem macOS e /usr/bin/lipo.
npm run package e npm run dist preparam o runtime nativo, o console e
o inventário de licenças antes do empacotamento. A saída gerada em dist/, release/,
native/sliver-console/ e .e2e-dist/ é ignorada pelo Git.
A matriz de empacotamento do CI é:
| Plataforma | Pacotes | Atualizações automáticas |
|---|---|---|
| macOS universal | DMG e ZIP | O aplicativo instalado baixa a atualização ZIP. |
| Windows x64 | Instalador NSIS e EXE portátil | Apenas instalações NSIS; builds portáteis atualizam manualmente. |
| Linux x64 | AppImage e DEB | Apenas AppImage; pacotes DEB atualizam manualmente. |
Os pacotes suportados são configurados para verificar GitHub Releases, baixar atualizações em segundo plano e instalar em Restart to update ou na saída normal da aplicação. Builds estáveis não aceitam atualizações de pré-lançamento. Nenhum token do GitHub é incorporado à aplicação.
A versão inicial v0.0.1 usa certificados persistentes de assinatura de código autoassinados.
O Check for Updates do macOS oferece o diálogo nativo de confiança de certificado antes
da primeira verificação de atualização; o aplicativo deve primeiro ter permissão para iniciar por meio do
Gatekeeper. Instalações do Windows precisam que o certificado público de assinatura seja confiável
na máquina de destino. Consulte instalação e atualizações autoassinadas
para o bootstrap de confiança, impressões digitais públicas e política de chaves de versão.