# 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`. - IP estático atual da PS5: `192.168.40.14`. 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 dois 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: manter a configuração estática existente (`192.168.40.14`) nesta instalação; noutras redes, usar os parâmetros fornecidos pelo administrador; - 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`; - encaminhe apenas `homebrew.page`, `itsplk.github.io`, `store.spectrumlibrary.online`, `api.github.com`, `github.com` e `raw.githubusercontent.com`, `release-assets.githubusercontent.com`, `prosperopatches.com`, `cdn.prosperopatches.com`, `image.api.playstation.com` e `gmedia.playstation.com` para o resolvedor configurado, permitindo os destinos revistos do homebrew store, PS5 Payload Manager, Spectrum Library e BlackBox; - devolva `NXDOMAIN` para todos os restantes nomes, mantendo PSN, updates e telemetria bloqueados 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. O resolvedor upstream predefinido é `1.1.1.1`. Pode ser substituído por um endereço DNS controlado na rede através de `UPSTREAM_DNS`; o valor deve ser um endereço IP, não um hostname. A firewall deve permitir UDP e TCP `53` de `net-utils01` para esse resolvedor. A consola continua a precisar apenas de UDP/TCP `53` para `192.168.20.30`; não deve consultar diretamente um DNS público. O acesso WAN da consola pode ficar limitado a TCP `443` para os domínios permitidos. Não são necessárias regras WAN de entrada. Se faltarem ícones, consultar os logs da firewall: um URL de ícone apontado pelo catálogo para outro domínio será bloqueado até esse destino ser revisto e acrescentado explicitamente. O catálogo oficial do PS5 Payload Manager está em `https://itsplk.github.io/ps5-payloads-mirror/payloads.json`. No snapshot revisto em 2026-10-07, todos os URLs de payload começavam em `github.com` e redirecionavam para `release-assets.githubusercontent.com`. Repositórios personalizados podem apontar para qualquer host e permanecem bloqueados até os seus JSON, payloads, hashes e redirects serem revistos e o hostname exato ser acrescentado conscientemente. O repositório do Spectrum Library não publica código-fonte. A análise estática do ELF 1.4.8 identificou `store.spectrumlibrary.online` para catálogo/API e `api.github.com` para atualizações; os downloads de releases GitHub usam os dois hosts GitHub já permitidos. A API pode devolver URLs dinâmicos de capas, manifests e pacotes, que permanecem bloqueados se usarem outros hosts. Durante a revisão de 2026-10-07, o servidor Spectrum devolvia HTTP 502, uma falha upstream que o DNS local não consegue corrigir. O BlackBox v1.0.5 obtém o catálogo e manifests de atualização em `raw.githubusercontent.com`, descarrega as suas próprias releases através dos hosts GitHub já permitidos e usa Prosperopatches e os dois hosts de media PlayStation para capas. Embora o catálogo contenha links para Archive.org e Vikingfile, esses hosts não são permitidos: não são necessários para navegar no catálogo ou atualizar o BlackBox e dão acesso a ficheiros de jogos terceiros, frequentemente sem SHA-256. ## 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.40.14` 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. Quando o ELF loader estiver pronto, o fluxo incluído termina. Esta versão já não apresenta a opção `R2`: o upstream removeu etaHEN, KStuff e ShadowMount+ por questões de compatibilidade. Para executar outro ELF, rever o respetivo binário e enviá-lo separadamente para o endereço da PS5 na porta TCP `9021`, usando um payload sender externo. 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; Manter o carregamento de payloads limitado à LAN confiável. Nunca publicar a porta 9021 na Internet e não enviar um ELF que não tenha sido previamente revisto. Na instalação atual, um teste de ligação sem payload confirmou o caminho `192.168.20.30` (`net-utils01`) para `192.168.40.14:9021`. A regra entre VLANs deve permanecer limitada a essa origem, destino, protocolo e porta. As regras da instalação permitem ainda que a PS5 alcance apenas os serviços necessários no `net-utils01`: TCP `80`, `443` e `8000`, e DNS UDP/TCP `53`. O restante acesso da PS5 à rede `192.168.20.0/24` está bloqueado. Outros hosts não podem alcançar o ELF loader da PS5 em TCP `9021`. As exceções específicas devem ser avaliadas antes dos bloqueios gerais na firewall. Está prevista uma exceção da PS5 para TCP `8001` no `net-utils01` apenas para a fase 5 do payload manager. Manter essa exceção desativada até existir um serviço revisto que precise efetivamente da porta. ## 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.40.0/24` e `192.168.20.0/24`, incluindo UDP/TCP 53 e TCP 80/443/8000. Para testar apenas se o servidor consegue alcançar o ELF loader, sem enviar um payload: ```sh ssh net-utils01 nc -vz -w 5 192.168.40.14 9021 ``` Executar o teste apenas quando a PS5 apresentar que o loader está à espera na porta `9021`. Um timeout indica normalmente filtragem ou ausência de caminho; uma ligação bem-sucedida confirma apenas a conectividade TCP, não valida um payload. ### 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 dois binários incluídos são pré-compilados e executados no processo de obter acesso privilegiado à consola. Manter a PS5 numa rede isolada, não usar a conta principal e conservar backups dos dados. ## Evidência do teste Y2JB / Relapse O teste controlado em PS5 Pro 13.20, incluindo versões e hashes, caminhos FTP, regras temporárias, resultado e limitações, está em [`Y2JB_TEST_2026-10-02.md`](Y2JB_TEST_2026-10-02.md). Em especial, o teste confirmou o ELF loader na porta 9021, mas não comprovou estabilidade prolongada nem a segurança ao fechar YouTube neste firmware. Reiniciar normalmente antes de repetir a cadeia de exploit.