Document PS5 setup and DNS blocking
This commit is contained in:
@@ -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.
|
||||
Reference in New Issue
Block a user