Files
relapse-exploit-docker/docs/PS5_SETUP.md
T

311 lines
9.0 KiB
Markdown

# Guia de instalação e utilização na PS5
Este documento descreve o deployment do Relapse Exploit em Docker, a configuração
da PS5, opções de DNS para bloquear PSN/updates e os cuidados operacionais.
Use exclusivamente numa consola que lhe pertença ou para a qual tenha autorização.
O exploit modifica memória do kernel, remove o sandbox e executa payloads com
privilégios elevados. Pode provocar kernel panic, perda de dados ou banimento.
## Estado desta instalação
Na rede onde este projeto foi inicialmente instalado:
- servidor: `net-utils01`;
- IP LAN: `192.168.20.30`;
- diretório: `/opt/relapse-exploit-docker`;
- URL: `http://192.168.20.30:8000/`;
- imagem: `relapse-exploit:local`;
- porta interna: `8080`;
- porta publicada: `8000`.
- DNS local: `192.168.20.30:53` (UDP e TCP);
- gateway do Guia: `192.168.20.30:80` e `192.168.20.30:443`.
A porta 8080 do host já pertence ao UniFi e não deve ser reutilizada.
## Instalar no servidor
O repositório está disponível por HTTP no Gitea local:
```sh
git clone --recurse-submodules \
http://192.168.20.20:3000/TinyBacklog/relapse-exploit-docker.git \
/opt/relapse-exploit-docker
cd /opt/relapse-exploit-docker
docker compose up -d --build
```
O build verifica o SHA-256 dos cinco payloads antes de criar a imagem. Se algum
hash divergir, o build deve falhar em vez de incluir silenciosamente o binário.
Confirmar o serviço:
```sh
cd /opt/relapse-exploit-docker
docker compose ps
docker compose logs --tail=100
curl -I http://127.0.0.1:8000/
```
O container deve aparecer como `healthy`. A partir de outra máquina da LAN:
```sh
curl -I http://192.168.20.30:8000/
```
## Preparar a PS5
### Compatibilidade
Esta versão do Relapse declara suporte para firmware 7.00 a 13.60. Não atualizar a
consola para tentar obter compatibilidade. Confirmar primeiro o firmware instalado.
### Desativar atualizações automáticas
Na PS5, abrir:
`Definições > Sistema > Software do sistema > Atualização e definições do software do sistema`
Desativar:
- transferência automática de ficheiros de atualização;
- instalação automática de ficheiros de atualização.
Em:
`Definições > Sistema > Poupança de energia > Funcionalidades disponíveis no modo de repouso`
desativar temporariamente `Permanecer ligado à Internet`.
Estas opções são uma camada adicional; isoladamente não garantem que uma atualização
não seja transferida.
## DNS e bloqueio da PSN
Editar a ligação ativa em:
`Definições > Rede > Definições > Configurar ligação à Internet`
Selecionar a rede, carregar em `Options` e abrir `Definições avançadas`:
- endereço IP: automático;
- nome do host DHCP: não especificar;
- DNS: manual;
- MTU: automático;
- proxy: não utilizar.
### Opção 1: bloquear toda a resolução DNS
É a opção mais conservadora quando só é necessário aceder ao servidor por IP:
```text
DNS primário: 127.0.0.1
DNS secundário: 127.0.0.1
```
O teste de Internet pode falhar, mas a ligação à LAN permanece disponível. Abrir o
exploit diretamente em:
```text
http://192.168.20.30:8000/
```
Esta opção pressupõe que já existe uma forma de abrir o browser oculto e introduzir
ou clicar no endereço local.
### Opção 2: DNS público recomendado pelo upstream
O README do Relapse recomenda atualmente:
```text
DNS primário: 45.56.67.85
DNS secundário: 0.0.0.0
```
Não configurar Google, Cloudflare, o router ou outro resolvedor normal como DNS
secundário: a consola pode usá-lo e contornar o bloqueio.
Um DNS público implica confiar no respetivo operador. Pode ficar indisponível,
alterar o destino do Guia do Utilizador ou ser contornado por um ISP que intercepte
DNS. Confirmar sempre a página e o endereço apresentados antes de executar.
### Opção 3: DNS local (configuração instalada)
O Compose inclui um DNS controlado no `net-utils01` que:
- bloqueie domínios PlayStation/PSN e servidores de atualização;
- responda `manuals.playstation.net` com `192.168.20.30`;
- devolva `NXDOMAIN` para todos os restantes nomes, bloqueando PSN, updates,
telemetria e acesso geral à Internet por DNS;
- registe as consultas nos logs do container;
- apresente um gateway HTTPS local e redirecione o browser para o exploit em
`http://192.168.20.30:8000/`.
Nesse cenário, a PS5 usaria:
```text
DNS primário: 192.168.20.30
DNS secundário: 0.0.0.0
```
Depois de guardar o DNS na PS5, reiniciar completamente a consola se o Guia continuar
a usar uma resolução antiga. Abrir o Guia e aceitar o aviso de certificado não
confiável: o certificado é self-signed para `manuals.playstation.net` e existe apenas
para permitir que o Guia chegue ao redirecionamento local.
O gateway liga-se por defeito apenas ao endereço `192.168.20.30`. Para outra rede,
definir `GATEWAY_BIND_IP`, `GATEWAY_IP` e `GUIDE_REDIRECT_URL` antes de executar o
Compose. Também é possível bloquear o acesso WAN da PS5 no router, mantendo apenas
a comunicação LAN; esta continua a ser uma camada adicional mais forte do que DNS.
## Abrir pelo Guia do Utilizador
Com um DNS que redirecione o manual:
1. abrir `Definições`;
2. abrir `Guia do Utilizador, saúde e segurança e outras informações`;
3. abrir `Guia do Utilizador`;
4. confirmar que aparece a página Relapse esperada;
5. aceitar o aviso de certificado self-signed, se aparecer;
6. confirmar nos logs que o cliente `192.168.10.26` consultou o DNS e abriu o
gateway;
7. confirmar que o destino final é `192.168.20.30:8000`.
Ver os logs do gateway:
```sh
docker compose logs -f ps5-guide-gateway
```
## Executar o exploit
1. Abrir `http://192.168.20.30:8000/` na PS5.
2. Aguardar a etapa WebKit e a criação da primitiva de memória.
3. Aguardar a exploração do kernel e a escalada de privilégios.
4. Confirmar no ecrã mensagens equivalentes a:
```text
ARW ready
Kernel: privileges ready
elfldr is listening on port 9021
```
5. Apenas depois de o ELF loader estar pronto, carregar em `R2` para enviar:
- `kstuff.elf`;
- `shadowmountplus.elf`;
- `etaHEN.elf`.
O exploit pode precisar de várias tentativas. Se o browser bloquear ou ocorrer
kernel panic, reiniciar completamente a consola antes de repetir. Não assumir que
uma mensagem genérica de conclusão prova que todas as etapas terminaram corretamente.
## Portas e serviços posteriores
- `8000/TCP` no servidor: página Relapse;
- `53/UDP` e `53/TCP` no servidor: DNS local restritivo;
- `80/TCP` e `443/TCP` no servidor: gateway do Guia do Utilizador;
- `9021/TCP` na PS5: ELF loader;
- `10101/TCP` na PS5: API HTTP do ShadowMount+, por defeito em loopback.
Manter os serviços de administração e carregamento de payloads limitados a loopback
ou à LAN confiável. Nunca publicar estas portas na Internet. O ShadowMount+ suporta
operações como mount, unmount, copy, move e uninstall.
## Operação no net-utils01
Estado e logs:
```sh
ssh net-utils01
cd /opt/relapse-exploit-docker
docker compose ps
docker compose logs -f
```
Reiniciar:
```sh
docker compose restart
```
Parar e iniciar:
```sh
docker compose down
docker compose up -d
```
Atualizar o wrapper Docker:
```sh
cd /opt/relapse-exploit-docker
git pull --ff-only
git submodule update --init --recursive
docker compose up -d --build
```
Não atualizar manualmente o submodule para o commit mais recente sem rever as
alterações e atualizar conscientemente `payloads.sha256`.
## Diagnóstico
### A página não abre
No servidor:
```sh
docker compose ps
curl -I http://127.0.0.1:8000/
ss -ltn | grep ':8000'
```
De outro equipamento da LAN:
```sh
curl -I http://192.168.20.30:8000/
```
Confirmar que a PS5 está na mesma rede e que isolamento de clientes Wi-Fi/AP não
impede comunicação com `192.168.20.30`.
### O Guia do Utilizador abre a página oficial ou outro host
Confirmar que o DNS primário da PS5 é `192.168.20.30`, que não existe um DNS
secundário normal e que o gateway está saudável:
```sh
docker compose ps
docker compose logs --tail=100 ps5-guide-gateway
```
Depois reiniciar completamente a consola para limpar resoluções antigas. Se não
existir qualquer consulta proveniente do IP da PS5, verificar regras entre as VLANs
`192.168.10.0/24` e `192.168.20.0/24`, incluindo UDP/TCP 53 e TCP 80/443/8000.
### O build falha nos hashes
Não ignorar o erro. Confirmar o commit do submodule e investigar os binários:
```sh
git submodule status
sha256sum app/payloads/*
cat payloads.sha256
```
### O exploit bloqueia ou reinicia a consola
É comportamento possível numa race/UAF de kernel. Desligar completamente a PS5,
voltar a ligar e tentar novamente. Evitar várias tentativas consecutivas sem reboot
depois de uma falha no kernel.
## Limites de segurança
O container reduz a exposição do servidor: corre como UID/GID 65532, usa filesystem
read-only, não tem capabilities Linux, aplica `no-new-privileges`, bloqueia listagens
e não inclui `.git`.
Estas proteções não tornam os payloads seguros. Os ELF incluídos são binários
pré-compilados, executados depois de obter acesso privilegiado à consola. Manter a
PS5 numa rede isolada, não usar a conta principal e conservar backups dos dados.