Share on Google+Share on FacebookTweet about this on Twitter

En el post anterior indicábamos brevemente lo que se está cociendo estos días.

Está claro que el iPhone 3G es el punto fuerte, dado que por ahroa no se ha logrado liberar. Por otro lado el iPod Touch nuevo permanece aun sin JB. Se cree que al realizar el JB al iPod Touch nuevo, tambien abriría algunas puertas a la liberación del iPhone 3G, por ello siguen sendas similares.

Por ahora no hay nada concluyente.

Está claro que una vez que se crease una firmware personalizada parcheada y se introdujese en el dispositivo, problema resuelto. El problema es crear esa imagen personalizada y parchear los archivos en cuestión, sin que el kernel del iPod Touch nuevo lo rechace. Para que no rechace la nueva firmware es necesario saltarse la protección de firma del kernel. Para todo ello hace falta saltare ciertas protecciones.

La primera es evidentemente obtener las keys que nos dejarán tener acceso a las rutinas de arranque del sistema (por así decirlo, aunq no es del todo cierto). En el dispositivo todas las rutinas importantes están encriptadas. Son desencriptadas o por certificados o por AES, de una u otro forma son tramitadas internamente en el hardware del dispositivo. Al no tener esas llaves y necesitar el contenido de ciertas zonas de la memoria, no queda otra que obtenerlas desde el dispositivo una vez que están desencriptadas. Esto se puede hacer, pero antes de poder hacerlo de nuevo, hace falta poder ejecutar código no firmado… es la pescadilla que se muerde la cola.

Se ha visto que el modo DFU es similar en el iPod Touch nuevo. Luego lo primero que se ha intentado (Sin éxito por ahora) era el método de Pwnage. El problema es que el Hardware AES del dispositivo es nuevo, y tiene una nueva Key GID. La clave GID como ya hemos dicho en otro lado, es una clave compartida por todos los dispositivos. Para todos es la misma… hasta la fecha. Antes no hacía falta saber la Key, dado que la key se usaba conjuntamente con otra cadena para dar como resultado la Key 0x837. Esta Key última es la que se usaba y se usa para la encriptación de muchas de las rutinas antes comentadas, así como de los archivos IMG2/3. Ahora mismo, hasta la fecha, aun no se conoce siquiera la AES GID Key de los iPhone y los iPod Touch viejos, y en todos es la misma. Pero si que sabemos que la GID Key en los Touch nuevos es diferente, luego aun cuando nada más hubiese cambiado, la Key 0x837 habría sido modificada, y sin tener acceso a ella…

Como no tenemos la GID Key ni la Key 0x837 en el dispositivo nuevo, la única forma de poder desencriptar el contenido es directamente en el mismo iPod Touch. Es decir, sabemos que el dispositivo puede “invocar” el motor AES y realizar la desencriptación en él. Esto es lo que se ha intentado. El problema es que para poder realizar dicha invocación se debe de permitir código no firmado. Hay que comprender que todo lo que se realiza es al final para lo mismo: Poder ejecutar código no firmado en el dispositivo, y así poder hacer y deshacer lo que deseemos. Como decía antes la pescadilla que se muerde la cola.

Mucho es ir repitiendo, lo sé, pero mejor ir poco a poco para intentar más o menos ir explicándolo.

Sabiendo todo esto el proceso que se ha intenado llevar a cabo (repito, sin éxito) ha sido el siguiente:

Indudir el dispositivo en DFU (no hay problema con esto)

Enviar el archivo de iniciado iBBS (Todas las firmwares tienen un archivo iBBS que se carga nada más poner el dispositivo en uno de sus modos, existe uno para cada modo de operación. Es digamos un archivo que incluye toda la secuencia de iniciado del sistema… un archivo descriptor del proceso a realizar.

Una vez el iPod Touch nuevo acepta el modo DFU se podría en teoría también subir un archivo IBBS de una versión antigua de iPod Touch viejo, en particular la versión beta 4 de la 2.0. Por qué esta versión? porque después de esta apareció el IMG3 y el sistema se complicó. Hay que tener en cuenta que lo primero es lograr un acceso, sea cual sea, una vez se consiga se podrían obtener keys y sistemas mejores. Esto se pensó que sería posible dado que se hizo lo mismo con el iPhone 3G y funcionó bien, es decir, si al iPhone 3G le envias un IBBS del iPhone antiguo de la versión 1.1.4, comienza la inicialización también.

Una vez que el dispositivo se encontrase iniciado con el IBBS de restauración de la versión 2.0 beta 4 del iPod antiguo, se podría usar una herramieta creada por Cwm (si, el creador de Winpwn) gracias al trabajo de George Hotz, para tener acceso interactivo del iboot. El iboot es por asi decirlo como un pequeño programa de iniciación que se coloca para hablar con los sistemas de restauración, ejecución del sistema… etc. Al cargar el IBBS el iboot sería accesible con esta herramienta. Por ejemplo el antiguo iPhuc se trataba de esta herramienta, aunq menos sofisticada. Igualmente gracias a esta herramienta sería posible usar un sistema para invocar el uso del hardware AES para poder desencriptar los archivos necesarios.

Lo siguiente sería por lo tanto subir el archivo que deseamos desencriptar usando el hardware AES. Pero para poder subir un archivo y ejecutar código ya hemos dicho que no es posible. Existe un método antiguo, un exploit (que llamaremos “diag”) que no se comentó mucho (yo no lo conocía) que permitía también ejecutar código sin firmar. Este exploit se corrigió en la versión 2.0, de ahí la importancia también de usar una firmware antigua. Una vez se subiese el archivo en cuestión (posible por el exploit) se podría invocar el hardware AES (gracias a iboot) y desencriptar en el mismo iPod el archivo necesario.

Una vez se tuviese por fin esa desencriptación se podría proceder por lo tanto al parcheo de los archivos necesarios, los archivos IMG3, la reconstrucción de la firmware… etc.

Todo esto evidentemente se quedó en teoría. No ha sido posible hacerse. Para empezar no fue posible enviar el IBBS del iPod Touch viejo…

Por otro lado, de poderse hacer todo lo citado, dado que se estaba usando el exploit “diag”, este exploit deja de tener efecto una vez que el sistema se reinicia, se restaura, se apaga… con lo que habría que comenzar todo de nuevo. Es decir, de poder hacerse y todo hubiese sido perfecto, tan solo duraría un corto período de tiempo.

De todos modos como digo no ha sido posible al final realizarlo de este modo. La principal prioridad sigue siendo dos:

1º. Poder desencriptar el KBAG (digamos que es algo así como partes de los archivos IMG3). Y para desencriptar esto solo hay dos opciones: Hacerlo desde el mismo iPod usando su propio hardware AES o extrañendo las Keys de algún modo.

2º. Lograr ejecutar código sin firmar, dado que conseguir los certificados de firma de Apple sería imposible

Frente a las dos cuestiones, la primera se ha intentado de una forma, y ahroa se intentará de la segunda. Esto es, intentado acceder directamente al hardware e intentar extraer por métodos hardware la GID Key.

Frente a la segunda cuestión, lograr los certificados será imposible. Lograr un sistema para saltarse el chequeo es la solución, pero para ello lo primero son las Keys igualmente. Una vez se tengan las Keys AES se podrá pensar en la solución de lo segundo.

Comprendo que es un poco complicado comprender todo esto… y parte de la información que he escrito es incompleta e imprecisa en algunos puntos. Tan solo quiero decir con todo esto que no es nada facil la “lucha” que se lleva a cabo. Tampoco sabemos si Apple ha puesto otras medidas de seguridad que desconocemos.

Por ahora hay investigaciones, pero cuando parece estar la solución cerca… se aleja un poco más, ya que se van agotando cartuchos. Quizás un nuevo exploit abra las puertas al sistema o quizás la solución venga por algo más simple que todo esto.

Ya veremos que sucede