Home Homebrew Rilasciato PS5 JAR Loader v2.0.0

[Scena PS5] Rilasciato PS5 JAR Loader v2.0.0

31
0

Pubblicato un nuovo aggiornamento per PS5 JAR Loader, lo strumento sfrutta vulnerabilità nel livello BD-J del firmware PS5 fino alla versione 7.61. Questo loader consente di eseguire file JAR sulla console, eseguendo la loro classe principale.

Ciò semplifica la masterizzazione del disco BD-R con il caricatore una sola volta e quindi la possibilità di eseguire nuove versioni del codice sperimentale.

L’aggiornamento ha raggiunto uno stato stabile sulla versione 1.02 del firmware, con il controllo che torna al JAR loader dopo l’esecuzione di UMTX, permettendo l’esecuzione di altri payload con accesso permanente in lettura/scrittura al kernel.

Sono state implementate correzioni per il vmspace, migliorando la stabilità, e sono stati stampati l’indirizzo di allproc e le informazioni per sconfiggere KASLR.

Alcuni miglioramenti, come lo spray dei file descriptor, sono stati aggiunti basandosi su consigli esterni, sebbene non testati su firmware 3.xx.

Il payload UMTX dovrebbe installare un accesso permanente in lettura/scrittura al kernel e permettere ulteriori payload, come il jailbreak (ancora in lavorazione).

Tra i problemi riscontrati, una volta che BD-J è fuori dalla sandbox, la JVM non riesce a trovare alcune classi nel percorso /app0, rendendo necessario un lavoro di reverse engineering per risolvere il problema.

La stabilità non è ancora perfetta, con possibili kernel panic dopo un certo periodo e crash frequenti del processo BD-J.

Prerequisiti

  • JDK 11 (PS5 utilizza Java 11 come runtime).
  • Apache Maven.
  • IntelliJ IDEA Community Edition (opzionale, ma consigliato).

Struttura

Il progetto è composto dai seguenti componenti:

  • Il file pom.xml definisce le proprietà comuni e la configurazione del plugin Maven per tutti i progetti.
  • Il sotto-progetto assembly crea la directory che deve essere masterizzata su un disco BD-R.
  • Il sotto-progetto bdj-tools non deve essere modificato e contiene utility da HD Cookbook integrate nel processo di compilazione del filesystem del disco BD-R.
  • Il sotto-progetto stubs contiene lo script di build per scaricare i file di classe BD-J da HD Cookbook e organizzarli per l’uso con JDK 11 locale.
  • Il sottoprogetto sdk contiene classi di supporto che semplificano l’invocazione nativa nel codice eseguito.
  • Il sotto-progetto xlet contiene il codice dell’Xlet che si avvia quando il disco BD-R viene lanciato sulla PS5.
  • Il sotto-progetto xploit contiene il codice da inviare per l’esecuzione sulla PS5.

Configurazione

Le seguenti proprietà in pom.xml possono essere modificate prima di compilare e masterizzare il JAR Loader su disco:

  • loader.port – Porta su cui il caricatore JAR ascolterà i dati.
  • loader.resolution.width, loader.resolution.height – Risoluzione dello schermo da impostare in vari file.
  • remote.logger.host – Indirizzo IP dove visualizzare i messaggi mostrati su schermo.
  • remote.logger.port – Porta su cui il logger remoto invierà i messaggi di stato.
  • remote.logger.timeout – Numero di millisecondi da attendere prima di interrompere i tentativi di connessione al logger remoto.

Utilizzo

  1. Assicurarsi che la variabile di ambiente JAVA_HOME punti alla radice di JDK 11. Aggiungere la directory ${JAVA_HOME}/bin${PATH}.
  2. Assicurarsi inoltre che MAVEN_HOME punti alla radice dell’installazione di Apache Maven. Aggiungere la directory ${MAVEN_HOME}/bin${PATH}.
  3. Creare un payload da eseguire su PS5 aggiungendo l’implementazione al sottomodulo xploit. Non è necessario modificare alcun file esistente (anche se sei il benvenuto se lo desideri). Aggiungere semplicemente la classe di payload nel pacchetto org.ps5jb.client.payloads e specificare il suo nome come parametro durante la compilazione del progetto (vedere il passaggio successivo).
  4. Eseguire mvn clean package -Dxploit.payload=[payload classname] dalla radice del progetto. Dovrebbe produrre i seguenti artefatti:
    • La directory assembly/target/assembly-[version] contiene tutti i file che devono essere masterizzati sul BD-R.
    • Il file xploit/target/xploit-[version].jar contiene il codice che può essere inviato ripetutamente alla PS5 una volta distribuito il caricatore. Per evitare di dover specificare ogni volta il payload con uno switch -D (anche allo step 8), potete anche modificare la proprietà xploit.payload nel pom.xml del progetto xploit.
  5. Masterizzare il disco BD-R (meglio ancora BD-RE), quindi inseriscirlo nella PS5 e avviare “PS5 JAR Loader” da Media/Disc Player.
  6. Un messaggio sullo schermo dovrebbe informare del caricatore in attesa del JAR.
  7. Inviare il file JAR utilizzando il comando: java -jar xploit/target/xploit-[version].jar <ps5 ip address>`. La PS5 dovrebbe informare sullo schermo sullo stato del caricamento e dell’esecuzione.
  8. Una volta completata l’esecuzione, il caricatore attenderà un nuovo file JAR. Apportare le modifiche necessarie al progetto xploit, ricompilare utilizzando mvn package e rieseguire il passaggio #7 per riprovare tutte le volte necessarie.

Note

  1. Per utilizzarlo con IntelliJ, basta puntare la finestra di dialogo File -> Open alla radice del progetto.
  2. Se uno dei POM viene modificato, è necessario eseguire Maven -> Reload Project in IntelliJ per sincronizzare i file del progetto. La sincronizzazione del progetto Maven purtroppo modifica .idea/compiler.xml in modo che contenga percorsi assoluti di sistema. È sufficiente sostituirli nuovamente con la macro $PROJECT_DIR$. IntelliJ modifica anche i percorsi di classe dei moduli definiti in vari file *.iml. Anche queste modifiche dovrebbero essere in gran parte annullate.
  3. Per generare i Javadoc, utilizzare mvn verify piuttosto che mvn package. I Javadoc sono abilitati per i moduli sdk, xlet e xploit e sono generati nella cartella target/site/apidocs di ciascun modulo.
  4. Il JAR nel modulo xploit accede ad alcune classi interne del JDK tramite reflection. Questo comporta degli avvertimenti che possono essere tranquillamente ignorati. Per disattivare gli avvisi, aggiungere la seguente opzione dopo l’eseguibile java quando si invia il JAR: --add-opens java.base/jdk.internal.loader=ALL-UNNAMED.
  5. Se il file JAR di xploit non ha dipendenze specifiche per PS5, può essere testato localmente. L’importante è che xlet, gli stub e i JAR di xploit siano tutti nella stessa cartella. Maven crea automaticamente questa disposizione nella cartella xploit/target, quindi il comando è molto simile a quello che invia il file JAR alla PS5: java -jar xploit/target/xploit-[version].jar. Quando viene eseguita localmente, la classe Status stampa su standard output/error, anziché su Screen.
  6. Attualmente ci sono due numeri di versione separati utilizzati dal progetto:
    • La versione xlet è indipendente e viene incrementata solo quando è necessario masterizzare un nuovo disco con le classi JAR aggiornate del caricatore. Se la PS5 mostra una versione diversa da quella prodotta dal codice di questo progetto, non viene garantita la compatibilità dei payload, quindi è meglio masterizzare un nuovo disco loader. Non si prevede che questa versione venga incrementata spesso, poiché il caricatore è piuttosto stabile. Per incrementare questa versione, cambiare il valore della proprietà xlet.version in pom.xml.
    • Il resto dei moduli utilizza la versione del POM genitore. Questa versione verrà incrementata con la nuova release e riflette che l’SDK o i payload sono cambiati. Se la versione del caricatore rimane invariata, le nuove versioni dei payload possono essere inviate al caricatore JAR senza dover masterizzare nuovamente il disco. Questa versione può essere incrementata eseguendo mvn versions:set -DnewVersion=[version], quindi aggiornando il progetto IntelliJ Maven come descritto al punto 2.

Changelog

Framework per accesso permanente in lettura/scrittura al kernel.

Nota: le versioni precedenti del JAR loader non eseguiranno JAR compilati con questa versione.

Passaggi:

  1. Compilare il progetto e masterizzare il contenuto della cartella assembly/target/assembly-2.0.0 su un disco BD-RE. Disponibile anche una ISO precompilata. Facoltativamente, compilare con il parametro -Dremote.logger.host=[IP del server di logging] per visualizzare l’output su schermo su un host remoto.
  2. Inserire il disco nella PS5 ed eseguire il JAR Loader.
  3. Inviare un payload: java -jar <payload.jar> <IP della PS5>.

Esempi:

  • Server FTP (in modalità sandbox).
  • Esempio di mini-gioco di tennis.
  • Stampa delle proprietà di sistema.
  • Dump del classpath corrente della JVM, incluso il modulo java.base (potrebbe non funzionare su tutti i firmware).
  • Implementazioni del bug UMTX di flat_z e Cryptogenic, adattate a questo SDK. Nota che la stabilità non è garantita, e sono previsti crash del processo BD-J o eventuali kernel panic. Alcuni passaggi di post-exploitazione sono attualmente implementati solo su firmware 1.02 e l’exploit potrebbe non funzionare affatto su firmware 3.xx+.

Download: PS5 JAR Loader v2.0

Download: dumpclasspath-1.0-SNAPSHOT.jar

Download: ftpserver-1.0-SNAPSHOT.jar

Download: minitennis-1.0-SNAPSHOT.jar

Download: printsysprops-1.0-SNAPSHOT.jar

Download: umtx-bug-1.0-SNAPSHOT.jar

Download: Source code PS5 JAR Loader v2.0

Fonte: github.com

LASCIA UN COMMENTO

Per favore inserisci il tuo commento!
Per favore inserisci il tuo nome qui

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.