diff --git a/README.md b/README.md index e82106a..06db1d3 100644 --- a/README.md +++ b/README.md @@ -8,6 +8,9 @@ Use this only on consoles you own or are authorized to test. The exploit can pan the console, corrupt kernel state, expose administrative services, and execute arbitrary code with elevated privileges. +For the complete PS5, DNS, deployment, operation, and troubleshooting guide, see +[docs/PS5_SETUP.md](docs/PS5_SETUP.md). + ## Clone and build ```sh diff --git a/docs/PS5_SETUP.md b/docs/PS5_SETUP.md new file mode 100644 index 0000000..fd3d7c7 --- /dev/null +++ b/docs/PS5_SETUP.md @@ -0,0 +1,290 @@ +# 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`. + +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 + +A solução preferível a longo prazo é um DNS controlado na LAN, por exemplo no +`net-utils01`, que: + +- bloqueie domínios PlayStation/PSN e servidores de atualização; +- encaminhe as restantes consultas apenas se isso for desejado; +- redirecione `manuals.playstation.net` para o host de exploit apropriado; +- registe consultas para permitir auditoria. + +Nesse cenário, a PS5 usaria: + +```text +DNS primário: 192.168.20.30 +DNS secundário: 0.0.0.0 +``` + +O serviço DNS não faz parte deste Compose e deve ser instalado e auditado +separadamente. Também é possível bloquear o acesso WAN da PS5 no router, mantendo +apenas a comunicação LAN; esta é uma camada de proteção mais forte do que DNS. + +DNS só traduz nomes para endereços IP; não redireciona portas. Para servir o Guia do +Utilizador a partir do host local, é também necessário disponibilizar o site nas +portas HTTP/HTTPS esperadas pelo manual ou colocar um reverse proxy à frente da +porta 8000. O Compose atual publica apenas HTTP em `8000`. + +## 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. se for importante usar a instalação local, confirmar que o destino é + `192.168.20.30:8000` e não um host público inesperado. + +O DNS público pode abrir diretamente uma página de exploit própria. Isso não prova +que a página veio do container local. + +## 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; +- `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 + +O DNS configurado não está a redirecionar `manuals.playstation.net` para o destino +esperado, ou o ISP/router está a interferir com DNS. Isto é independente do container +HTTP. Usar o URL local diretamente ou instalar um DNS local controlado. + +### 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.