Il developer yellows8 ha rilasciato un nuovo exploit per console Nintendo 3DS, fruibile attraverso il titolo Super Smash Bros, o la demo dello stesso gioco.
L’exploit può essere attivato eseguendo la scansione della sessione in multiplayer locale, anche se a volte questo potrebbe portare al crash del sistema, bisogna tentare più volte in tal caso.
Il developer stesso ha definito poco affidabile l’hack, e uno dei motivi è perché il layout non sempre riesce a prevedere lo stato, ma principalmente il ROP potrebbe fallire sul recv.
Versioni supportate
- Super Smash Bros Demo: USA & EUR supportato e testato. Non c’è alcuna differenza tra la demo regolare e la “Demo Special” con questo hack. Questa era l’unica versione di Smash-3ds inizialmente supportate da questo Hax, fino al rilascio della versione USA.
- Super Smash Bros v1.0.0. USA: Supportato e testato. “gameother”: supportato e testato.
- Super Smash Bros v1.0.2. USA: Supportato, non testato.
- Super Smash Bros v1.0.4. USA: Supportato e testato. “gameother”: Supportato, non testato.
- Super Smash Bros v1.0.5. USA: “supportato”. L’indirizzo ha un mucchio di destinazione per sovrascrivere l’oggetto di destinazione, quindi questo hax in realtà non funziona correttamente con questa versione.
- Super Smash Bros v1.1.0. USA: Supportato e testato. “gameother”: supportato e testato.
Questo non potrà essere completamente bloccato dall’applicazione principale senza un possibile aggiornamento del sistema, anche se sostanzialmente un aggiornamento via app potrebbe risolvere il problema, basterebbe dunque rinominare, qualunque sia il titolo dell’aggiornamento nella scheda SD.
Questa soluzione andrà a forzare il sistema per non utilizzare gli aggiornamenti del gioco (potrete ripristinare il nome della directory in un secondo momento, nel caso in cui non dovreste più utilizzare l’hack.
Ad ogni modo la directory citata sopra si trova nella posizione seguente sulla scheda SD: “/Nintendo 3DS/{ID0}/{ID1}/title/0004000e/{TIDHigh}”. Per TIDHigh abbiamo invece gli aggiornamenti del titolo elencati in basso.
- USA: 000edf00
- EUR: 000ee000
- JPN: 000b8b00
Building
Richiede il tool ctr-wlanbeacontool che potrete scaricare dal seguente indirizzo: https://github.com/yellows8/ctr-wlanbeacontool
Crea il params:
- “INPCAP={path}” Questo è lo smash-beacon utilizzato come base. Se si sceglie di utilizzarlo, il beacon specificato viene usato al posto di quella del default (“smashdemo_beacon_modbase.pcap”).
- “PAYLOADURL={url}” URL HTTP per scaricare dal payload.
- “PAYLOADPATH={sdpath}” Path SD per caricare il payload, per esempio: “PAYLOADPATH = / smashpayload.bin”.
- “ADDITONALDATA_SIZE1={val}” Usa il valore specificato come valore grezzo formato nel beacon additionaldata, al posto di quella di default. Ad esempio, con un valore elevato potrebbe essere utilizzato per costruire pcaps vuln-test.
- “BEACON_BYTEID={val}” Ignora l’ID U8 utilizzato nel networkstruct (di default è 0x0 per regolare il multiplayer Smash). 0x1 è smash-run (che funziona bene con questo HAX). 0x55 è comms WiiU: la funzione vulnerabile di Smash-3ds non viene mai eseguito con questo però.
Nota: Dovrete specificare nel params solo uno dei Payload.
Utilizzo
Ricordare sempre di trasmettere il beacon sullo stesso canale specificato all’interno del beacon stesso (canale 6 con la base pcap di default). I seguenti dati non devono essere modificati nel frame beacon mentre viene inviato: Gli indirizzi MAC host/BSSID e tutti i tag beacon. L’indirizzo MAC con la base di default è pcap: 59:EE:3f:2:37:E0.
Il beacon incorporato all’interno del pcap HAX si trova sotto “pcap_out/”. Nei nomi dei file “vXYZ” significa game-versione “Vx.yz”. Gioco Full-USA per i nomi di file include “gameusa”, mentre le altre regioni i nomi dei file comprendono “gameother”.
Un modo per inviare il beacon è con aireplay-ng, ma ciò richiede una patch, vedere aireplay-ng.patch. Ad esempio, per inviare il beacon con aireplay-ng: aireplay-ng –interactive -r {beaconpcap_path} -h {host mac from pcap} -x 10 {wifi interface}.
Questo può essere usato con l’homebrew payload Otherapp-launcher per avviare hbmenu. Tuttavia, così facendo viene eseguito solo su New 3DS al momento della scrittura (con il supporto di Old 3DS HB-launcher da questo richiederebbe grandi cambiamenti).
Con la versione del gioco 1.1.0, il primo payload Otherapp GFX non viene visualizzato correttamente (quando in home il menu acquisizione è stato fatto), tuttavia questo è un bene (probabilmente potrebbe essere fixato tramite un aggiornamento nel payload HB-launcher).
Subito dopo lo stack iniziale di arm11code, essa andrà a cancellare il framebuffers nella VRAM con junk, per indicare che il codice viene eseguito. In origine questo era destinato per la schermo superiore, ma con la versione 1.1.0 su new 3DS questo finisce solo per scrivere i framebuffer sul fondo dello schermo.
La baseaddr per il payload è 0x00111000, la dimensione massima è 0xA000-byte. Ogni volta che si andrà a caricare il payload, e non riesce ad eseguirlo, la arm11code non farà altro che eseguire un ciclo infinito.
Homebrew Launcher Payload
Con il rilascio della build l’hack carica il payload dalla scheda SD come “/smashpayload.bin”, questo dovrebbe per altro contenere la hb-launcher (https://smealum.github.io/3ds/) payload Otherapp. Ma fino a quando non ci sarà un vero e proprio selettore del payload Otherapp dal sito hb-launcher questo potrà essere scaricato dal seguente indirizzo:
- “https://smealum.github.io/ninjhax2/Pvl9iD2Im5/otherapp/{PAYLOADNAME}.bin“ dove {PAYLOADNAME} è: “FIRMVER_REGION_MENUVER_MSETVER”.
I valori del FIRMVER (senza virgolette):
- “POST5” = non-New3DS
- “N3DS” = New3DS
I valori per REGION (senza virgolette):
- “U” = USA
- “E” = EUR
- “J” = JPN
I valori per MENUVER(senza virgolette):
- “11272”: Non-JPN, system-version v9.0.
- “12288”: System-version v9.2.
- “13330”: System-version v9.3.
- “14336”: System-version v9.4.
- “15360”: System-version v9.5.
- “16404”: System-version v9.6.
- “17415”: System-version v9.7.
- “20480_usa”: USA, system-versions v9.9-v10.0.
- “19456”: Non-USA, system-versions v9.8-v10.0.
i valori per MSETVER (senza virgolette):
- “8203”: System-versions below v9.6.
- “9221”: System-versions starting with v9.6.
Per esempio, l’indirizzo URL del payload per New 3DS USA 9.9.0-X e 10.0.0-X è: https://smealum.github.io/ninjhax2/Pvl9iD2Im5/otherapp/N3DS_U_20480_usa_9221.bin
Guida per l’uso
- Scaricate l’archivio.
- Scaricate il payload Otherapp dalla SD “/smashpayload.bin”, come descritto nella sezione “Homebrew Launcher Payload”.
- Determinare quali pcap nella directory “pcap_out” utilizzare (per questo vedere la sezione “Utilizzo”).
- Iniziare a trasmettere il pcap sul canale 6 con l’indirizzo MAC “59:EE:3f:2a:37:e0”, con il beacon viene inviato almeno 10 volte al secondo.
- Sul sistema 3DS di destinazione, avviate Super Smash Bros, e portatevi su “Smash” -> “Gruppo”.
- Vedrete dunque l’esecuzione dell’hack.
DOWNLOAD: SMASHBROSHX