Wow ... tale ostilità contro di me solo perché ho detto che uno dei miei progetti futuri stava cercando di adattare l'exploit btldr di hardware in modo siamo in grado di incidere (ad esempio l'esecuzione di codice non firmato) su tutte le console. Penso di meritare l'opportunità di spiegare me stesso prima di iniziare a dubitare di me.
Ciò significa che il rilascio del btldr exploit (che patchable) prima degli altri sviluppatori possono anche controllare se la sua distanza possibile, ma è l'unico modo per ottenere il rimborso in modo cominciamo ...
IL DUMPING BOOTLDR
Come sapete il bootldr è uno dei due caricatori firmati per console ed era l'unica parte del sistema che non sono stati attaccati.
Una volta che si carica allo stesso modo metldr (via SigNotify) sarebbe comincia a chiedere indirizzi diversi che noi non controlliamo. Potete dare un'occhiata alla mia pagina utente alla sequenza dma che lo produce.
Come potete vedere, accedere a un sacco di indirizzi diversi e non abbiamo il controllo di una di esse in modo che il primo obiettivo è stato quello di controllare l'input / output.
La sandbox:
L'obiettivo era quello di reindirizzare i flussi di dati per i nostri buffer controllati in modo da sapere ciò che è scritto o letto. Per ottenere che un driver è stato creato.
Questo driver svolge due funzioni:
- La prima è la creazione di lv1 peek / Poke utilizzando il lv114 patch che viene fornito con OtherOS + + e altri CFW.
- La seconda riserva è un blocco di memoria consecutive che potrebbe essere utilizzato come HTAB.
La SPU viene detto di utilizzare il nostro HTAB che si trasforma in reindirizzamenti ai nostri Tamponi. Per ottenere l'indirizzo fisico ... le pagine degli utenti sono bloccati sulla memoria e quindi utilizzando un vecchio trucco trovato da geohot il loro vero indirizzo viene recuperato.
A questo punto abbiamo il controllo di ciò che la legge SPU MA se consecutivi accessi piccoli sono fatto non abbiamo alcun controllo se vogliamo cambiare qualcosa in mezzo.
Il primo exploit:
Chiamo questo un exploit, ma è in realtà una cattiva attuazione di una causa funzionalità dovrebbe essere disabilitata su isolamento. La funzione si chiama MFCLSACMP. In pratica è un registro sul spu che viene controllato prima di fare un op dma.
Se la sorgente / indirizzo di destinazione sul SPU è all'interno della maschera definita da questo registro dma poi viene arrestato e viene segnalato un'interruzione. Fino a quando questo allarme viene cancellato il dma non è stato avviato.
Grande, quindi controllare ciò che si legge e quando viene letto ... il primo obiettivo è stato raggiunto il controllo totale di I / O. Questo è ciò che si può vedere nella mia pagina utente su wiki.
Tuttavia questo tutto così mi ha permesso di trovare il più grande problema sull'utilizzo del booldr come un oracolo .... l'anello di configurazione.
L'anello config è una serie di bit che SYSCON invia alla cella durante la prima accensione .... In questa implementazione cella l'anello di configurazione è accessibile dall'interno della spu come una lettura, una volta canale.
Quindi, a meno che non riuscivo a trovare un modo per riempire il canale del bootldr non poteva essere utilizzato come oracolo. Come se non bastasse, a questo punto non sapevo come l'anello di configurazione è stato letto (anche se un canale non documentato era in cima alla lista).
Ho trascorso un paio di settimane cercando di capire il problema. Infine ho postato il log nel wiki in cerca di aiuto. Ovviamente qualche approccio. Ci siamo scambiati informazioni. Ho dato poi gli strumenti e mi hanno dato i mezzi di convalidare la mia ipotesi (quelle del registro)
Abbiamo lavorato un sacco di tempo su questo. Ricorda che stavo cercando di ottenere un oracolo non è un exploit così riempire il config era un must ... cosa che molti sono stati processati, ma nessuno ha funzionato.
Dopo un mese o giù di lì ho cominciato a controllare altri progetti pensando a cosa fare. Poi, dopo qualche mese ho deciso di cercare di sfruttare invece di usarlo .... dato il registro il punto di ingresso è stato chiaro ...
Il bootldr sfruttare:
Se viene visualizzato il registro vedrete un sacco di scambio di dati tra la spu e SYSCON. graf aveva descritto la sua bibbia così era conosciuto ... ma il registro ha anche detto che i dati sono stati letti due volte, una volta a leggere l'intestazione e una volta per leggere i dati + header.
Sulla testata era una lunghezza variabile. Così ho deciso di cambiare la len tra le due letture .... non ha funzionato fino a quando ho corretto anche il chksum ... e poi BINGO! comportamento imprevisto ... possibile un exploit è stato trovato.
Il vantaggio di questo exploit è che ci ha dato un sacco di punti da verificare. Informazioni è stata condivisa e noi due amichevole corso uno contro l'altro a trovare la possibilità corretta.
Ho vinto la gara di trovare il punto di esecuzione, anche se ho perso quella per lo scarico. Il vincitore è stato 0x20 comando che è un messaggio di info ... casualmente il messaggio di errore di configurazione ... così la loro stessa protezione ci aveva dato il bootldr.
Questa è la storia di exploit ... si è poi deciso che ho avuto l'ultima decisione di rilasciare l'exploit e ognuno di noi potrebbe perdere le chiavi ... tuttavia mi hanno chiesto anche tenerla fino a quando Sony ha reagito alla conversione dex e ho detto loro che non li rilascia finché non ho avuto le chiavi appldr da me.
Suppongo che passavano le chiavi agli altri e loro a un certo punto le chiavi, probabilmente arrivati a EXETrimAll e N0DRM (non credo che sfruttavano trublue ...). Nel frattempo ero nel bel mezzo delle mie vacanze e quando torno stavano rilasciando non-stop quindi non ho visto che era necessario a perdere loro.
Purtroppo anche trapelare un mascalzone che vendono la chiave per discblu.
Che ha costretto qualcuno che ha la chiave di renderlo pubblico.
Lei ha detto che io sono una persona arrabbiata causa perdite la chiave ... Nope. Ero arrabbiato con discblu ... e con qualche hacker che riapparve solo per dire che sapeva già come fare. Come si può vedere il metodo è completamente software e non usa il bug della firma (tranne che per l'installazione del CFW ... ma poi tutte le applicazioni devono accreditare loro). Se insisti ti dico che questo può essere fatto anche su un 3,15 con exploit geohot impulsi.
Il codice:
[Url =
http://www.sendspace.com/file/wvknol] Download bootldrexploit.rar da Sendspace.com - inviare file di grandi dimensioni in modo rapido [/ url]
Ho allegato il codice di una versione funzionante per gli ultimi sottile sfruttabili. So che funziona anche su altre versioni, ma non so quali. E 'valido solo per le console NOR causa, si attende una piena NOR flash come uno dei parametri.
Ha due programmi. Uno è un modulo del kernel, quindi deve essere carico con insmod.
Il secondo è un programma utente che prende come parametro il speID (mi consiglia di utilizzare 0 che è in genere abilitata), il file flash e il file di output.
Il dump viene spostata di come un effetto collaterale del bug. Per me è stato 0x800 byte ... ma altri ottenuto risultati diversi. La funzione di avvio deve essere 0x400 una volta spostamento viene corretto
BTW il codice è brutto e c'è un sacco di dati che non viene utilizzata, quindi se qualcuno ha domande non esitate a chiedere a me (su questo o altre cose ps3 correlate) ... Sarò a disposizione fino a domenica ... allora io sicuramente lasciare.
Ora ti spiego la mia idea per la soluzione hardware.
Migliorare l'exploit
Di seguito è riportato TUTTI teorica e probabilmente non funzionerà (non sono un esperto di hardware e che è la parte più difficile)
In questo caso l'obiettivo non è il dump del bootldr ma ottenere l'esecuzione di codice. L'utilizzo di un piccolo carico utile di un programma verrà copiato spu. Tale programma sarà solo copiare una patch in chiaro lv0 alla memoria e raccontare la PPU che il codice è stato caricato con successo.
Con il raggiungimento di che avremmo avuto il pieno controllo del sistema. Il nostro lv0 patch, verrà caricato un lv1ldr originale (necessario per ottenere le chiavi ATA) che caricare un originale lv1, ma prima di dare il controllo al nostro level1 level0 lo patchare quindi abbiamo ancora il controllo. Stessa cosa con LV2 e VSH.
Come ho detto sostanzialmente bug consistono nell'inversione len risposta tra la prima lettura e il secondo. Questo è fatto facilmente se controlli il buffer in cui si trovano i dati (console sfruttabili). Ma noi vogliamo fare questo prima di tutto viene caricato
Quindi abbiamo bisogno di cambiare il comm tra SYSCON e cellula prima di qualsiasi software al di fuori della cellula viene caricato ... l'unica opzione è un intercettore hardware. Questo hardware intercettare le comunicazioni e modificarlo in modo che l'exploit viene attivato (Questo è chiamato un uomo in the middle). Il carico sarà inviato come parte della risposta di comando 0x20 ... se il bug è grilletto correttamente sappiamo che il nostro carico avrà inizio intorno 0x3E010.
Oltre a questo vi consiglio di aggiungere un secondo chip flash che conterrà il firmware modificato. Ciò consentirà all'utente di passare da patch a ufficiale con un interruttore
Come potete vedere il dispositivo che propongo non è un dispositivo drm ... si innesca in realtà un exploit simile al dispositivo di ODE che cosa è che ha annunciato (a proposito, che sono fatti alla perfezione con le informazioni che glevand pubblicato).
Le domande è: E 'possibile tutto questo ...? bene da parte del software sono abbastanza sicuro, ma non so se l'hardware può essere costruire o se il costo sarà troppo.
In ogni caso, se è possibile, c'è abbastanza informazioni su questo post per farlo ...
Purtroppo c'è anche una abbastanza informazioni per patchare il bug (se non lo facessero già). Tuttavia sarebbe solo patchable in fabbrica ...