[DUDA]Explicacion del funcionamiento del explot TIFF en psp.

Hola a todos, antes de nada deciros que no pretendo preguntar nada raro ni saltarme las normas ni molestar a nadie, solo tengo la curiosidad de el porque una simple imagen .TIFF fue capaz de aprovecharse para utilizar scene en la consola.
Me gustaria saber el como una imagen puede aprovecharse para eso, y que alguien me explicara su funcionamiento, ya que por mas que indago por internet no encuentro nada acerca del funcionamiento de ese exploit.

Pido disculpas si no es posible preguntar esto por algun motivo, pero simplemente quiero saber el funcionamiento de dicha imagen y como actua con la consola.
un saludo a todos compañeros XD
Parece que fue ayer que gracias a ese exploit libere mi psp 1004. Lo siento pero no tengo conocimientos de porque funcionaba ese exploit, solo se que funcionaba, al igual que el de las partidas guardadas (GTA,...) o los otros que han sido aprovechados posteriormente.
See, yo recuerdo cuando me regalaron la FAT que tenia, que tube que esperar al menos 1 año hasta que me dio por mirar y ya estaba ese xploit de la imagen xD me acojone bastante al ver que no salia, a la decima lo hizo, pero pensaba: ya veras tu como jodo mi queridisima PSP T_T
La verdad es que esa pregunta siempre me la hice yo tambien, claro que el formato TIFF no es una imagen normal no? no podia contener datos o no se que historia? al verse la imagen en la PSP (en rojo era no?) ya estaba ahi trabajando/modificando algo no? suposiciones vamos [+risas]
Sí, yo leí algo sobre eso, que los archivos tiff, aparte de la imagen, llevan datos insertados que son los que activan el exploit del save o algo parecido [risita]
Si mal no recuerdo, funcionaba mediante un stack overflow (desbordamiento de pila) al cargar la imagen TIFF. Esta imagen lleva código compilado en su interior, que se ejecuta cuando ocurre el desbordamiento (la teoría implica cambiar el contador de programa del procesador, asignandole la dirección de memoria en la que se inicia el código empotrado en el TIFF). De esta manera, es posible saltarse la limitación de no poder ejecutar código no firmado.

p.d.: repito, el funcionamiento exacto no lo conozco, pero la teoría es esa [+risas]
Exacto...
Yo tampoco lo conozco al detalle, pero la teoría de todo exploit es causar una especie de crash, y ahí en ese punto donde ¨peta¨ infiltrar código y hacerse con el control.
lo mas increible es como alguien le dio por probar eso y descubrirlo xDD
Busque la fuente de información, pero la pagina ya no existe, tristemente, el tiempo nos aleja poco a poco de todo este boom.

Resulta que todo sistema, cuando se ocasiona un error, trata de identificar que lo provoco y se tiene alguna instrucción interna para que ocurra "algo" después de ocurrido. De esta manera el sistema no queda bloqueado, si no que se resetea o apaga. Algo así como ocurre cuando una pantalla azul aparece en windows y se identifica el código de error. En este caso se busca ocasionar este problema en todos los módulos, por ejemplo: canciones dañadas, incompletas, datos cambiados a canciones (por poner el ejemplo en el reproductor del PSP), y así mismo, en todos los módulos. Si lo intentan, verán que les dice que la canción o archivo no se identifica, pero no se reinicia o apaga el equipo. Sin embargo, en el apartado de imágenes, el sistema trata de identificar todas las que tenemos en la carpeta donde se guarda el tiff. ¿Recuerdan que se podían poner, según recuerdo, X cantidad de imágenes (creo eran 5), que eran el mismo tiff, y se iba incrementando hasta que se ocasionaba el error? (algunos pusimos desde 7 hasta 15). Cuando el sistema no lograba identificar el contenido, se generaba un código de error (aunque no siempre, pero era algo similar al DSI que ocurre en las Wii, para quien tengan una, y asi saber que o donde radica el error) y esto ocasionaba el reset. Era aquí donde se inyectaba el código y cargaba el sistema liberado. Como el PSP no se apagaba, si no, solo reiniciaba, contenía información en la memoria que era inyectada por el código. Por eso, cuando el PSP, perdía la carga o se apagaba, se tenia que volver a ejecutar el proceso para cargar el exploid.

Repito, la pagina ya no existe, me hubiera gustado compartirla ya que explicaba como se han encontrado varios exploids, asi como los que funcionaron y los que no, por que hubo errores similares que no lograban cargar el código y, por tanto, no se publicaron, ya que el equipo se bloqueaba o apagaba (¿Recuerdan que cuando un juego o emulador se traba el sistema se apaga? ese también es un bug.)

Suerte y espero que alguien con mas conocimiento nos asesore mejor de lo que intente hacer.
SARG escribió:Busque la fuente de información, pero la pagina ya no existe, tristemente, el tiempo nos aleja poco a poco de todo este boom.

Resulta que todo sistema, cuando se ocasiona un error, trata de identificar que lo provoco y se tiene alguna instrucción interna para que ocurra "algo" después de ocurrido. De esta manera el sistema no queda bloqueado, si no que se resetea o apaga. Algo así como ocurre cuando una pantalla azul aparece en windows y se identifica el código de error. En este caso se busca ocasionar este problema en todos los módulos, por ejemplo: canciones dañadas, incompletas, datos cambiados a canciones (por poner el ejemplo en el reproductor del PSP), y así mismo, en todos los módulos. Si lo intentan, verán que les dice que la canción o archivo no se identifica, pero no se reinicia o apaga el equipo. Sin embargo, en el apartado de imágenes, el sistema trata de identificar todas las que tenemos en la carpeta donde se guarda el tiff. ¿Recuerdan que se podían poner, según recuerdo, X cantidad de imágenes (creo eran 5), que eran el mismo tiff, y se iba incrementando hasta que se ocasionaba el error? (algunos pusimos desde 7 hasta 15). Cuando el sistema no lograba identificar el contenido, se generaba un código de error (aunque no siempre, pero era algo similar al DSI que ocurre en las Wii, para quien tengan una, y asi saber que o donde radica el error) y esto ocasionaba el reset. Era aquí donde se inyectaba el código y cargaba el sistema liberado. Como el PSP no se apagaba, si no, solo reiniciaba, contenía información en la memoria que era inyectada por el código. Por eso, cuando el PSP, perdía la carga o se apagaba, se tenia que volver a ejecutar el proceso para cargar el exploid.

Repito, la pagina ya no existe, me hubiera gustado compartirla ya que explicaba como se han encontrado varios exploids, asi como los que funcionaron y los que no, por que hubo errores similares que no lograban cargar el código y, por tanto, no se publicaron, ya que el equipo se bloqueaba o apagaba (¿Recuerdan que cuando un juego o emulador se traba el sistema se apaga? ese también es un bug.)

Suerte y espero que alguien con mas conocimiento nos asesore mejor de lo que intente hacer.


Añado yo un poco mas a tu explicación, resulta que nosotros somo usuarios en el sistema PSP, pero sin privilegios de administrador, esto se entiende ahora bien con la moda de los smartphones y el root (Administrador) en Android, asi que paso de explicar la diferencia entre administrador y usuario normal.
A partir de tu explicación, cuando se ocasiona un error, el sistema operativo de PSP hace una llamada al sistema, es decir, pasa de modo usuario a modo nucleo (puede acceder a todo el sistema), es entonces cuando se aprovecha ese estado para ejecutar el código de un programa que requiera privilegios de administrador para su ejecución, sin saber la clave del usuario administrador. Y aquí me quedo.

Puede resultar un tanto confuso, ya que, no soy muy bueno explicando las cosas.
a ver si puedo resumirlo de un modo fácil de entender.
Dado que todos los datos se almacenan en binario, el ordenador solo ve un chorro de ceros y unos y lo que "hace" es interpretar esa información según un formato. Por ejemplo, 110000 puede significar "48" como número o "rojo" como color, todo depende de la interpretación.
El exploit se basa en un fichero que, a priori, la psp cree que es una imagen, ya que cada tipo de fichero sigue una serie de patrones que indican su contenido, por lo que intenta abrirla con el reproductor de imágenes. La jugada está en que la imagen, en cierto punto, presenta una incoherencia con el contenido típico de una imagen. Esta incoherencia es detectada demasiado tarde: el reproductor de imágenes ya está funcionando en modo kernel y no está preparado para manejar dicha incoherencia por lo que, en realidad, no la detecta y sigue cargando la imagen en memoria.
Con este jaleo se consigue que el reproductor de imágenes sobreescriba parte de la memoria de la PSP y modifique su funcionamiento normal.
¿Qué ha ocurrido al final? Lo que el reproductor de imágenes cree que ha metido en memoria es una imágen pero lo que el resto de la PSP interpreta es que es un programa, por lo que lo ejecuta al haber sido cargado en memoria y ale: scene.
crazy2k4 escribió:lo mas increible es como alguien le dio por probar eso y descubrirlo xDD

este tipo de exploits existe desde el jurásico de los PCs.
Hmmmm entonces porqué no se puede hacer en el resto de los consolas lo mismo? supongo que será porque lo habrán corregido pero qué diferencia este sistema de los protegidos?
El tema es que en PSP se podía escalar de xploit en xploit hasta llegar a los máximos privilegios, el modo kernel. El TIFF xploit era uno en modo usuario, un modo limitado en el que se ejecuta la gran mayoría del software en PSP. A través de ese xploit se alcanzó otro, invisible para el usuario, que era en modo kernel.

Creo que m0skit0, o alguien, lo explicó en algún foro. A ver si doy con el post.
(mensaje borrado)
crazy2k4 escribió:lo mas increible es como alguien le dio por probar eso y descubrirlo xDD



Así se liberaron muchos muchos cacharros en esa época, por ejemplo el iphone y el itouch. Te metías en una web pinchabas la imagen y se instalaba cydia si no recuerdo mal, era el ios 1 lo menos....

[mamaaaaa] viejo soy
Elyas escribió:Hmmmm entonces porqué no se puede hacer en el resto de los consolas lo mismo? supongo que será porque lo habrán corregido pero qué diferencia este sistema de los protegidos?


Completando lo que dice el compañero y explicado muy por encima, cuando se lee el TIFF cargado en memoria y se da el overflow al leerlo, se ha grabado en overflow una dirección de memoria que tenga el sitio suficiente como para grabar ahí "legalmente" el código del exploit. Entonces cuando la carga del TIFF falla no pasa nada, pero ya se ha grabado el payload en la memoria y lo único que hay que hacer es mover un apuntador a la dirección donde este.

Un ejemplo seria:

- Leer linia 300 del TIFF: AAAAAAAA=0x9999
- El programa no admite el carácter "igual" como carácter valido, aborta la lectura. Cada carácter representaría una posición de memoria y el 0x9999 la direccion donde hay el exploit grabado previamente. Las posiciones de memoria del 0x9999 no corresponden con la memoria asignada a la funcion que lee el TIFF
- Una funcion que lea las posiciones de memoria donde hay el apuntador a 0x9999 hará un salto hasta ahí y cargara el exploit sin querer.
- El exploit ya es código sin firmar así que ya todo va cargando

El truco esta en lograr grabar en memoria el 0x9999 puesto que hay que crear un desbordamiento en el buffer (Como sumar dos bits en binario 1+1 = 11 (2bits)) y por lo
general las nuevas consolas tienen partes encriptadas, las direcciones de memoria ya no estan tan accesibles, etc. És más complicado...

Saludos!
Da gusto darse una vuelta de vez en cuando por aquí y leer hilos tan instructivos como este. Gracias a todos, a unos por responder y a otro por preguntar.

Muy buenos dias a todos.
Bueno, no he podido evitar hecharle un vistazo al hilo, aquel xploit para psp 1.5 que instalaba una versión de psp 1.0 donde se podia ejecutar ese codigo sin firmar.

Tengo entendido que descubrieron el explit del tiff, porqué la versión que utilizaba la psp para visalizar dichos tiff contenia un bug, que versiones posteriores ya no lo poseen, y permitia ejecutar código desde un desbordamiento de buffer (el tiff desborda la memoria del sistema y salta el error). Además, creo recordar que si intentaba abrir ese tiff que todabia lo tengo por hay guardado, desde windows, decia que era un archivo corrupto y no lo abria. Y solo era un puntito "."

Saludos
16 respuestas