[Tecnico] Reset Glitch Xploit

Saludos a los que me conocen y a los que no

Ok, no puedo dejar pasar esto asi que manos a la obra, esto pretende ser la descripcion tecnica del exploit traducida al castellano como muchas otras traducciones que he hecho...

INTRODUCCION//DATOS IMPORTANTES

Tmbinc escribió:Todas las aproximaciones lógicas que puedas pensar para la ejecución de código sin firmar en la Xbox 360, en la mayoría de casos, simplemente no funcionan, pues la arquitectura de la misma fue diseñada para ser segura desde el punto de vista del software.


Durante la secuencia de inicio de la Xbox 360, el procesador Inicia la carga de un código ROM también conocido como 1BL, el cual se encarga a su vez de cargar cierto código firmado con RSA y cifrado bajo RC4 desde la NANC (el CB).

El CB se encarga, en gran parte, de inicializar las tareas de seguridad den procesador, entre las que se incluye el cifrado y la verificación Hash de la memoria DRAM, en tiempo real, por lo que conocemos se utiliza un cifrado AES128 y una "colchon de seguridad" (Toeplitz?) bastante robusto. La encriptación es diferente en cada booteo, pues depende al menos de:

-Un hash del set de eFuses de la consola
-El reloj interno del CPU
-Un valor completamente aleatorio generado por un generador basado en Hardware, dicho generador puede ser apagado, peroexiste un control de "aleatoreidad" (a cargo de 1 bit, de hecho) en el CB, que espera hasta obtiene lo que parece ser un valor aleatorio correcto.


En el CB funciona un motor logico basado en bytecode, con la simple tarea de iniciarlizar la DRAM, posteriormente el CB procede a cargar el gestor de arranque (CD) desde la NAND, y lo ejecuta.

En pocas palabras, el CD carga un kernel desde NAND, lo parchea y procede a ejecutarlo.

Este kernel contiene un pequeño segmento de código con privilegios (hypervisor), cuando la consola esta encendida, es el único código que tiene los permisos suficientes para ejecutar código sin firmar.

En los Kernel 4532/4548, Aparece una falla crítica en el hypervisor, y es por eso que todos los hacks conocidos requieren utilizar en cierta medida estos kernels y aprovechar esta vulnerabilidad para ejecutar código no firmado.

En las consolas actualizadas, el CD contiene un valor hash de estos dos kernels y detiene el proceso de arranque si intenta cargar alguno de ellos.

El hipervisor es una pieza relativamente pequeña de código, por lo que es muy sencillo localizar una falla, y no parece probable que aparezca una nueva versión que contenga algo que autorice la ejecución de código sin firmar.

Sin embargo, Por otro lado, tmbinc dijo que la XBOX 360 no fue diseñada para soportar ciertos ataques via hardware, tales como el Timming Attack y el "glitching".

En el Glitching La acción es básicamente forzar cierto bugs a nivel de procesador mediante electrónica.

Esa es la forma en que solía ser capaz de ejecutar código sin firmar.


EL Reset Glitch Xploit en pocas palabras

Descubrimos que al enviar pequeños pulsos al procesador mientras estaba inicando, este no se reiniciaba, por el contrario, cambiar la forma en que el código se ejecuta. Parece que esto es muy efectivo con las funciones que comparan dos valores de memoria en los bootloader pues siempre devuelven "no hay diferencia". La función de comparación de la memoria se utilizan entre otras cosas, para comparar el hash SHA del bootloader con los Hash almacenados, y si son idénticos, lo ejecuta.

Podemos introducir un bootloader que no pase la verificación hash de la NAND, sin embargo gracias al Glitch, se le dará por valido y procederá a su ejecución inmediata


Detalles para el HACK en Consolas FAT

En las consolas FAT, el bootloader al que aplicaremos el glitch es el CB con el fin de lanzar el CD que queremos.

Cjak descubrió que enviando la señal CPU_PLL_BYPASS, fuerza a la CPU a ralentizarse bastante y hay un punto de prueba en la placa base que trabaja a una fracción de la velocidad de la CPU, es de 200Mhz cuando el Dashboard está en funcionamiento, 66,6 MHz cuando se inicia la consola y cuando la señal CPU_PLL_BYPASS esta activa es de 520Khz.

Asi que se procede de la siguiente manera:

- Activamos CPU_PLL_BYPASS código POST 36 (hex).
- Esperamos a que se inicie el codigo POST 39 (POST 39 es la comparación de la memoria entre el hash base y el hash almacenado en la imagen), e inicializamos un contador.
- Cuando el contador llegue a un valor específico (a menudo alrededor del 62% del progreso total del POST 39), se envía un pulso de 100 ns de CPU_RESET.
- Esperamos un momento y luego desactivamos CPU_PLL_BYPASS.
- La velocidad de la CPU vuelve a la normalidad, y con un poco de suerte, en lugar de obtener un error POST AD, continúa el proceso de arranque y el CB es el ejecutado con nuestro CD.


La NAND tiene un CB con "paridad a zero" Nuestra carga de un CD modificado requiere de un SMC modificado también.

Una glitch como este, por su naturaleza, es poco confiable, nosotros utilizamos un SMC Modificado, que se reinicie infinitas veces (en comparación con el SMC que lo hace cinco veces y luego reinicia la consola con RROD) hasta que la consola haya iniciado correctamente.
En la mayoría de los casos, la consola se iniciará en menos de 30 segundos después de encenderla.


Detalles para el HACK en Consolas SLIM

El bootloader al que aplicamos el glitch es el CB_A, de esta manera se puede iniciar el CB_B que queremos.

En las consolas SLIM, no fuimos capaces de encontrar una pista en la placa madre que activase el CPU_PLL_BYPASS.

Nuestra primera idea fue remover el el reloj interno maestro de 27Mhz , y generar nuestro propio reloj en su lugar, pero fue un cambio complejo, que no dio resultados.

Luego buscamos otras maneras de disminuir la velocidad de la CPU y se descubrió que el chip HANA posee registros PLL configurables de 100MHz que fuerzan la CPU y la GPU.

Al parecer, estos registros son escritos por el SMC a través del bus I2C, El bus I2C es de libre acceso desde el punto (J2C3).
Por lo tanto el chip HANA es nuestra arma para reducir la velocidad de la CPU (tmbinc lo sentimos, no siempre se puede estar en lo cierto, no es aburrido y de hecho es un bus de interés) :P

Asi que se procede de la siguiente manera:
- Le enviamos un comando por i2c hacia HANA para frenar la CPU u obtener un codigp POST D8.
- Esperamos aparesca un codigo POST DA (POST DA es la comparación de la memoria entre el hash base y el hash almacenado en la imagen), e inicializamos un contador.
- Cuando el contador llegue a un valor específico, se envía un pulso de 20ns de CPU_RESET.
- Esperamos un momento y luego enviamos un comando via i2c hacia HANA para que el reloj de la CPU vuelva a la normalidad.
- La velocidad de la CPU vuelve a la normalidad, y con un poco de suerte, en lugar de obtener un error POST F2, continúa el proceso de arranque y CB_A ejecuta nuestro CB_B modificado.

Cuando CB_B se inicia, la DRAM no se ha inicializado, por lo que debemos aplicar los siguientes parches para permitir la ejecucion de cualquier CD:

- Activación permanente de modo "paridad Zero" con el fin de utilizar un SMC modificado.
- No des-encriptar ningun CD y recibir un CD normal de la NAND.
- No detener el proceso de arranque si el CD no tiene un hash correcto.

El CB_B está cifrado con RC4, la clave viene privada viene de la CPU-KEY, cómo obtener la clave de cifrado sin tener la CPU-KEY?

El Cifrado RC4 es mas o menos:

texto cifrado = texto normal xor flujo de numeros pseudoaleatorios

Así que si conocemos el texto normal y el cifrado, podemos conocer el flujo de numeros pseudoaleatorios, y con el, podemos cifrar nuestro propio código. Trabaja como esto:

flujo numeros pseudoaleatorios = texto normal xor texto cifrado

nueva encriptacion = flujo numeros pseudoaleatorios xor texto normal modificado

Usted puede pensar que esto es un problema muy facil, pero ¿cómo se obtiene el texto normal en el primer lugar?

Fácil: conocemos el texto normal del CB de las consolas de FAT, y que supone que los primeros bytes del código son los mismos que el CB_B nuevo, asi pues hemos sido capaces de cifrar una pequeña pieza de código para desifrar la CPU-KEY y desencriptar el CB_B!

Nuestra NAND ahora contiene el CB_A, un CB_B modificado, un CD sin cifrar y modificado, y un SMC modificado.

El SMC se modifica para permitir un número infinito de reinicio del sistema, y para evitar emitir órdenes sobre el bus I2C, mientras que realizamos nuestros envíos.

puede que aun no se haya dado cuenta pero el CB_A no contiene ningún tipo de verificación sobre la revocación eFuses, este Xploit no es parcheable.


ADVERTENCIAS


Nada es perfecto, hay algunas advertencias sobre este hack:

- A pesar de la falla se encuentra en lugar adecuado (tasa de éxito del 25% por ensayo en promedio), puede tomar unos minutos para que la consola arranque y ejecute código sin firmar.
- La tasa de éxito está relacionado con el has del bootloader modificado que se desea ejecutar (para FAT CD y para SLIM CB_B).
- Se requiere un material rápido y preciso para enviar el pulso de reset.


Nuesto Equipamiento Actual

Utilizamos un CPLD Xilinx CoolRunner II (xc2c64a), ya que es rápido, preciso, reprogramable, barato y funciona con dos niveles de tensión diferentes al mismo tiempo.

Usamos la un reloj de 48 MHz para el contador del glitch. Para la Slim 96MHz
El Código CPLD está escrito en VHDL.
Tenemos que saber el código POST actual, nuestra primera implementación utilizaba los 8 bits del puerto para este propósito, pero ahora estamos en condiciones de detectar cambios de un solo bit del POST hacer el montaje más fácil .


Conclusion

-No incluimos software de MS en el paquete para realizar el hack.
-El objetivo de este hack es ejecutar Xell y otros programas libres, yo (GliGli) NO promuevo BAJO NINGUNA CIRCUNSTANCIA, la piratería o cualquier cosa que semejante a ella, sólo quiero la oportunidad de hacer lo que quiera y pueda con el equipo que compre, incluida la carga de mi propio codigo en el.


Agradecimientos

GliGli, Tiros: Ingeniería inversa y desarrollo del hack
cOz: ingeniería inversa, betatesting.
Razkar, tuxuser: betatesting
Cjak, Redline99, SeventhSon, tmbinc, y todos los que he olvidado ...: Ingeniería inversa anterior y/o actual en la XBOX 360.


FAQ

Celduques escribió:me lo parece si tengo que estar constantemente reiniciandola haciendo pruebas varias, puede llegar a desesperar

Creo que no habeis entendido lo de los reset....

Durante en arranque normal de una consola xbox 360, Si falla algo durante las comprobaciones de la cadena de confianza

1BL ---> CB ----> CD ------> DASH

El SMC reinicia automaticamente la consola y repite el proceso hasta un maximo de 5 veces, en dado caso de que falle la comprobación la 5ta vez el SMC fuerza a la consola a mostrar un codigo de error y a su vez muestra 3 Luces Rojas

Lo que ha cambiado Gli Gli, es que el SMC siga reiniciando la consola indefinidamente, hasta que el pulso que se envía al procesador de por valida la comprobacion, y arranque la consola con el CD Modificado.
Gracias por traducirlo y por todos los aportes que hiciste cuando empezo todo esto del JTAG.

Saludos!
Muy buen trabajo VDF_Demon, como siempre. Gracias por todo lo que aportas
lynde escribió:Muy buen trabajo VDF_Demon, como siempre. Gracias por todo lo que aportas


Gracias...


TERMINADO
¿Hay que estar reiniciando la consola asta que el exploit arranque?¿o esperar mas tiempo asta que arranque?
esperar a que arranque
se ve muy bueno, tengo mi slim flasheada (0225) yo mismo lo hice. se q con el jtag se hacen muchas cosas, pero no se si banean con este nuevo metodo, q creen? se podra cargar ambos dashboard, el de microsoft y este?? [poraki]
duban escribió:se ve muy bueno, tengo mi slim flasheada (0225) yo mismo lo hice. se q con el jtag se hacen muchas cosas, pero no se si banean con este nuevo metodo, q creen? se podra cargar ambos dashboard, el de microsoft y este?? [poraki]


eventualmente portaran el rebooter para el dash de microsoft o uno alternativo, pero es ban instantaneo al conectarse a live
Parece que el CPLD ese se puede resetear infinitas veces, mientras el de la consola 5 y se reinicia. Con qué programador se podrá usar? Qué mirando por la red el chisme ese sólo cuesta 3€
gracias pr traducir la informacion es muy intersante
VDF_Demon escribió:esperar a que arranque



Entonces al encender siempre esta el xploit no?, esque habia leido que al encender unas veces funcionaba y otras no.

Tambien te leo que puede tardar minutos... crees que esto podra pulirse hasta que el encendido sea como ahora, o no hay margen de mejora?


Salu2
Muchas gracias por tu trabajo, se agradece [beer]
tengo una duda, ya con el cpu-key podemos desencriptar la nand de nuestras consolas y poner un jtag? o algo por el estilo
se podria usar dlc con el nuevo exploits??
Gracias por el post
Se agradece ;)
gnando escribió:tengo una duda, ya con el cpu-key podemos desencriptar la nand de nuestras consolas y poner un jtag? o algo por el estilo



estas mal , primero tienes la nand de la consola, despues obtienes todo lo demas. osea cpukey . kv. orig, etc etc etc. todas las aplicaciones como el xell o xellous o es su caso instalar el freboot se necesita tener todo lo necesario osea nandcompleta y cpukey.

ademas con solo poder instalar xell hasta ahora, es un gran avanze ya solo seria que modifiquen .xex para que sean compatibles con este nuevo xell y creo que alli ya estariamos listos para poder instalar aplicaciones jejejeje esto esta de perlas

y la explicacion esta mas que clara, aqui jejeje gracias por la traduccion
Siempre es de agradecer este tipo de post.

SAludos.
Gracias como siempre VDF_Demon por el aporte :)
me pueden dar la logica de esto? no entiendo muy bien como se hace o de q trata, yo llegue hacer 3 jtag de los antiguos dicen q nesesito este chip reprogramable xc2c64a con el que hago ? no es q lo quiera hacer ahorita si no q quiero ver la logica de esto baje un tutorial en pdf y habla de daler corriente con el cable de alimentacion de la lectora con 2 cables y tiene los puntos de donde soldar, si llegara conseguir el xc2c64a en una tienda de electronica lo compro o me espero ? saludos
Hace falta un tutorial bien explicadito, para los que nos cuesta mas, para entenderlo todo mejor. Pero aun asi esto tiene muy buena pinta.
salu2 vdf_demon!!

lo unico k espero d este hack es la recuperacion de la llave de algunos ekipos k llegan daniados, mas alla de lo normal..

buena traduccion!!!
gracias!! [beer]
JaRaBcN escribió:Gracias como siempre VDF_Demon por el aporte :)


Graacias!

En Estos dias me pongo a hacer esto, tengo una jasper muerta de risa por que se le quemo el lente y no he conseguido reemplazo
Gracias por esta gran aportacion
gran noticia preveo un incremento de la scene de la 360
Volvemos los viejos roqueros [oki] Gracias!
con este exploit se puede conseguir la key del dvd?
en el video de la noticia se muestra una Slim mostrando la CPUKey y DVDKey...
si es asi le voy a ir quitando las telarañas a mi falcon sin dvdkey XD
Vuelvo de PS3 a estos lares de nuevo, estaré muy pendiente de todo esto....
Lastima que no tenga una Slim y tiempo ahora mismo, sinó ya lo habría hecho al igual que el el primer jtag.

XD XD XD XD
buen curro VDF_Demon Y gracias por tu esferzo.

un saludo.
Como estais???

La verdad muy agradecido por su trabajo la verdad se lo curraron!!!

Ahora las consultas!

Podrían decirme todo el equipamiento a comprar recomendado para realizar este trabajo! así hoy mismo hago los pedidos!!!

Saludos y nuevamente gracias.
ViggoM
tuninger escribió:con este exploit se puede conseguir la key del dvd?
en el video de la noticia se muestra una Slim mostrando la CPUKey y DVDKey...
si es asi le voy a ir quitando las telarañas a mi falcon sin dvdkey XD


pregunto lo mismo, aver si las ke estan muertas por ahy, se pueden recuperar

me confirman ke si ke se puede
pero si el tutorial se entiende bien. lo unico que tiene es que esta en otro idioma.

Respecto a los del chip que se instala es necesario ya la explicacion esta en este hilo que es lo que hace.

sigo emocionado jajaja que buena pinta a :) :) :) :) :)

para los que no entienden nada del tema les aconsejo primero pasar por el hilo oficial del xploit completo alli esta detallado todo sobre este hermoso tema
Siempre al pie del cañón. :)
Yo tambien me quiero poner a ello rapidamente jeje alguien que me pueda ayudar a donde puedo conseguir todo lo que hace falta?? :)
Gracias por el info en español, siempre estas cuando se te necesita ;)
me estan consiguiendo el XILINX - XC2C64A me dicen esto: ¿quieres el módulo que tienes pines similares al DIP40? el que se programa con Phyton ? por lo que veo en la guia si utilizan phyton entonses lo compro me espero q hago? espero que alguien me responda rapidin por q me estan esperando
Demon puedo preguntaste algo?
Cuantas propuestas de matrimonio te han hecho por estos lares?
Podes hacer campito para la mía? XD

Una duda, que software se ha podido cargar con este hack? El xell o el xellous.?
Chuky Master escribió:Demon puedo preguntaste algo?
Cuantas propuestas de matrimonio te han hecho por estos lares?
Podes hacer campito para la mía? XD

Una duda, que software se ha podido cargar con este hack? El xell o el xellous.?


LOL ahora que lo mencionas como 4 o 5 XD, pero soy muy exigente :P
Chuky Master escribió:Una duda, que software se ha podido cargar con este hack? El xell o el xellous.?

Ninguno de los 2, es la nueva versión de Xell, Xell Reloaded (code name: 2 Stages) y se ha mejorado bastante al parecer, creado por Cancerous, [cOz], Ced2911,GliGli, RedLine99 y Tuxuser.
A quienes si veo esperanzados es a aquellos que perdieron su DVDKey en el pasado.
(aunque en el hipotetico caso de un rebooter y Freestyle seria innecesario)

Demon, yo soy buen mozo. JAJAJAJAJA
Buen trabajo,Gracias

salu2
Celduques está baneado por "utilizar clon para saltarse baneo de subforo y querer tomar el pelo a la administración"
Buen curro de traducción, se agradecen estos aportes!
Me uno a la pregunta de si esto tiene margen de mejora, no es que me parezca lento esperar 1 o 2 minutos a que se inicie la consola... pero sí me lo parece si tengo que estar constantemente reiniciandola haciendo pruebas varias, puede llegar a desesperar xD

A parte de esperar a un tutorial para "tontos" también creo que esperaré a ver si sacan alternativas a ese chip, a parte me gustará ver los mods que se curra la peña para coger ideas [carcajad]
Creo que no habeis entendido lo de los reset.... lo pongo aca y lo anexo al articulo principal

Durante en arranque normal de una consola xbox 360, Si falla algo durante las comprobaciones de la cadena de confianza

1BL ---> CB ----> CD ------> DASH


El SMC reinicia automaticamente la consola y repite el proceso hasta un maximo de 5 veces, en dado caso de que falle la comprobacion la 5ta vez el SMC fuerza a la consola a mostrar un codigo de error y a su vez muestra 3 Luces Rojas



Lo que ha cambiado Gli Gli, es que el SMC siga reiniciando la consola indefinidamente, hasta que el pulso que se envía al procesador de por valida la comprobacion, y arranque la consola con el CD Modificado.


NO HAY QUE ESTAR REINICIANDO LA CONSOLA MANUALMENTE
VDF_Demon escribió:Creo que no habeis entendido lo de los reset.... lo pongo aca y lo anexo al articulo principal

Durante en arranque normal de una consola xbox 360, Si falla algo durante las comprobaciones de la cadena de confianza

1BL ---> CB ----> CD ------> DASH


El SMC reinicia automaticamente la consola y repite el proceso hasta un maximo de 5 veces, en dado caso de que falle la comprobacion la 5ta vez el SMC fuerza a la consola a mostrar un codigo de error y a su vez muestra 3 Luces Rojas



Lo que ha cambiado Gli Gli, es que el SMC siga reiniciando la consola indefinidamente, hasta que el pulso que se envía al procesador de por valida la comprobacion, y arranque la consola con el CD Modificado.


NO HAY QUE ESTAR REINICIANDO LA CONSOLA MANUALMENTE


Entonces si entiendo bien, si alguna consola, tiene luces rojas por algun otro motivo... digamos que nunca las mostraria y quedaria iniciando infinitamente?
kubo escribió:
VDF_Demon escribió:Creo que no habeis entendido lo de los reset.... lo pongo aca y lo anexo al articulo principal

Durante en arranque normal de una consola xbox 360, Si falla algo durante las comprobaciones de la cadena de confianza

1BL ---> CB ----> CD ------> DASH


El SMC reinicia automaticamente la consola y repite el proceso hasta un maximo de 5 veces, en dado caso de que falle la comprobacion la 5ta vez el SMC fuerza a la consola a mostrar un codigo de error y a su vez muestra 3 Luces Rojas



Lo que ha cambiado Gli Gli, es que el SMC siga reiniciando la consola indefinidamente, hasta que el pulso que se envía al procesador de por valida la comprobacion, y arranque la consola con el CD Modificado.


NO HAY QUE ESTAR REINICIANDO LA CONSOLA MANUALMENTE


Entonces si entiendo bien, si alguna consola, tiene luces rojas por algun otro motivo... digamos que nunca las mostraria y quedaria iniciando infinitamente?



No, por que las las luces rojas que muestra en otro caso, supongamos una falla de hardware, son comprobadas por el procesador justo despues de cargar el 1BL pero antes de cargar el CB... algo parecido al arranque de un pc, en el que si falla algo (procesador, memoria, placa de video) la Placa Madre envia una serie de pitidos, analogos a las luces rojas de la Xbox 360, si pasa la comprobación de hardware pero falla el arranque del SO, la BIOS muestra un mensaje en pantalla, que vendrian a ser el analogo en la consola de las luces rojas luego de 5 reinicios solicitados por el SMC
Yo deje una zephyr RRoD despues de los mentados reset del SMC por alla en el 2007, en un fallido intento de JTAG.
ahi alguna manera de revertir eso? porque por alli esta debajo de mi cama.
Chuky Master escribió:Yo deje una zephyr RRoD despues de los mentados reset del SMC por alla en el 2007, en un fallido intento de JTAG.
ahi alguna manera de revertir eso? porque por alli esta debajo de mi cama.


si con la NAND Original y sin el jTAG bootea correctamente, si
VDF_Demon escribió:
Chuky Master escribió:Yo deje una zephyr RRoD despues de los mentados reset del SMC por alla en el 2007, en un fallido intento de JTAG.
ahi alguna manera de revertir eso? porque por alli esta debajo de mi cama.


si con la NAND Original y sin el jTAG bootea correctamente, si

chanfle...no recuerdo si tengo un dump de esa nand...bueno...buscare mas tarde porque tengo que ir a unilago a compar unas cosas para una laptop que algun imbecil rompio y tiro ala basura... unas piecitas y laptop nueva!!
Imagen
Chuky Master escribió:
VDF_Demon escribió:
Chuky Master escribió:Yo deje una zephyr RRoD despues de los mentados reset del SMC por alla en el 2007, en un fallido intento de JTAG.
ahi alguna manera de revertir eso? porque por alli esta debajo de mi cama.


si con la NAND Original y sin el jTAG bootea correctamente, si

chanfle...no recuerdo si tengo un dump de esa nand...bueno...buscare mas tarde porque tengo que ir a unilago a compar unas cosas para una laptop que algun imbecil rompio y tiro ala basura... unas piecitas y laptop nueva!!
Imagen


Voy hoy a unilago tambien ;) hablamos mas tarde
Eh! si ves a alguien con el cabello rojo fuego, ese soy yo... y si, aparento 15 años cuando tengo 21

imposible que no me veas..
Una pregunta, no se puede comprar el USB SPI Programmer como el del tuto?

Imagen
73 respuestas
1, 2