LTU2, C/R parziali e perdita Stealth
Ciao a tutti,
leggendo un forum braziliano mi sono imbattuto oggi in una notizia interessante (che oltretutto sembra fare riferimento a uno studio fatto qualche mese fa da un utente di consolenet, il bravissimo Dark-G).
Mi scuso per il post che sara' chilometrico e tecnico, ma spero che questo suscitera' un po' di interesse in chi come me e' appassionato di reverse engineering, crittografia e compagnia bella :-)
Faccio una premessa tecnica per quello che conosco (e se qualcuno ha correzioni da fare sono bene accette)
Dentro la nand di ogni console c'e' una tabella chiamata FCRT.BIN che contiene una serie di domande e risposte (challenge/response) che vengono periodicamente inviate al lettore dvd per controllare che non sia stato modificato.
Questa tabella era stata introdotta con i primi lettori 16D4S ed i firmware iXtreme avevano trovato il modo per aggirarla senza memorizzarla usando la loro funzione stealth.
Con l'avvento dei lettori 16D5S si e' reso necessario estrarre la tabella dalla nand con il RGH per poi usarla dentro i vari dispositivi (LTU/LTU2 PCB, Matrix PCB, XKey e altri emulatori di drive, etc.).
In pratica questo utente brasiliano (Ubernerd) ha analizzato il modo in cui vengono memorizzate le tabelle challenge/response ed ha scoperto che nel caso degli LTU/2 le tabelle non vengono memorizzate completamente, ma solo in maniera parziale (sembrerebbe per problemi di spazio dentro il chip usato dagli LTU2).
Per dimostrare tutto cio' ha anche pubblicato un programma con tanto di sorgente che mostra la conversione dalla tabella FCRT memorizzata nella nand, alla tabella che invece viene memorizzata nel firmware LTU2 e spiega nei dettagli come durante questa conversione, per risparmiare spazio molti dei dati vengono buttati via rendendo quindi il firmware facilmente riconoscibile da MS.
Il sorgente pubblicato e' pieno di commenti (in inglese) che spiegano nei dettagli il tutto (e sono una vera manna per chi come me gode a scoprire i segreti tecnici dei vari hack :-)
Quello che si capisce dai commenti del sorgente :
Nei files FCRT ci sono 502 coppie di domande/risposte. Ogni coppia e' costituita da una domanda di 16 bytes e da una risposta corrispondente, sempre di 16 bytes.
In pratica la console ogni tanto prende una coppia a caso, invia la domanda da 16 bytes al lettore dvd e controlla che questo risponda con i 16 bytes giusti. Se questo avviene, il lettore viene riconosciuto come originale, altrimenti il lettore e' stato modificato.
Il problema degli LTU2 sembra essere che non memorizzano la domanda completa, ma solo i primi due bytes e l'ultimo.
Quando la console invia la domanda da 16 bytes, il lettore controlla che i primi due bytes e l'ultimo corrispondano a quelli che ha memorizzato internamente e se questo avviene allora manda la risposta corrispondente.
In condizioni normali questo e' sufficiente perche' tutte le domande/risposte sono differenti e 3 bytes corrispondono a circa 16 milioni di combinazioni, quindi tre bytes bastano a riconoscere una delle 500 domande differenti.
Tutto sembrerebbe filare liscio, ma qui entra il brasiliano che fa vedere come questo sia pero' un grosso problema :
Se il drive puo' controllare solo 3 bytes su 16 (perche' gli altri 13 non li ha memorizzati), esisteranno milioni di challenge differenti a cui il drive rispondera' sempre nello stesso modo (e chi si intende di crittografia capira' subito che questo e' un grosso problema).
In pratica lui dice :
- la console sceglie una domanda a caso tra le 502 e la manda al lettore.
- Il lettore rispondera' con i 16 bytes corretti.
- a questo punto la console puo' cambiare uno qualsiasi dei 13 bytes non memorizzati (o cambiarli tutti) e rimanda la domanda cosi' modificata al drive.
- un drive originale rispondera' con una risposta diversa dalla precedente, perche' la domanda inviata e' divesa. Un lettore con LTU2 pensera' invece che la domanda ricevuta sia uguale alla precedente (perche' confronta solo 3 bytes su 13) e rispondera' sempre allo stesso modo.
A questo punto l'xbox sa che sta parlando con un drive moddato.
Il modo per riconoscere il drive e' tanto semplice quanto geniale :-)
Mi farebbe veramente piacere un commento di Dark-G sull'argomento visto che sembrerebbe che dal suo lavoro fatto, sia partito il tutto!
P.S. Il topic in questione (dal quale scaricare programma e sorgenti) e' questo : [URL="http://forum.outerspace.terra.com.br/index.php?threads/t%C3%93pico-oficial-discuss%C3%A3o-t%C3%A9cnica-sobre-reset-glitch-hack-rgh-possivel-em-qualquer-phat-slim.244863/page-1070#post-9207551"]forum outerspace[/URL] e chi non parla portoghese puo' usare google translate :D