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

12 KiB

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:

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:

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:

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:

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:

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:

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, github.com e release-assets.githubusercontent.com para o resolvedor configurado, permitindo o catálogo, ícones e downloads HTTPS do homebrew store e o catálogo oficial do PS5 Payload Manager;
  • 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:

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 quatro 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.

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:

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:

    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:

ssh net-utils01
cd /opt/relapse-exploit-docker
docker compose ps
docker compose logs -f

Reiniciar:

docker compose restart

Parar e iniciar:

docker compose down
docker compose up -d

Atualizar o wrapper Docker:

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:

docker compose ps
curl -I http://127.0.0.1:8000/
ss -ltn | grep ':8000'

De outro equipamento da LAN:

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:

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:

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:

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. 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.