Cómo funciona Evasi0n, el jailbreak más elaborado hasta la fecha

COMPARTIR 0 TWITTEAR

El jailbreak de evad3rs es el fenómeno del momento. A la altura de los grandes lanzamientos, con miles de personas pendientes de un grupo de cuatro personas que han puesto en jaque la seguridad de iOS. A partir de ahora los usuarios de un iPhone 5 o un iPad mini ya pueden personalizar sus aparatos a su antojo. Hoy os contamos como funciona paso a paso evasi0n explicado por uno de sus desarrolladores.

Jailbreak por evad3rs

El fenómeno de esta semana sin duda ha sido evasi0n, el nuevo jailbreak para los dispositivos Apple de última generación con iOS 6. Han sido unos seis meses de mucha espera y al final se ha vivido el evento con gran expectación. El montaje ha sido digno de los grandes lanzamientos, con un sitio web con un buen diseño, momento de lanzamiento más o menos claro, mirrors estables…

Para que os hagáis una idea de la envergadura del proyecto, los días antes de lanzamiento la página de evasi0n tuvo unos 3 millones de visitantes únicos, con 17 millones de impresiones. Y durante el lanzamiento, su página tuvo picos de casi 300.000 usuarios activos en un momento dado, y hasta 1TB de tráfico en 10 minutos en un solo mirror, teniendo en cuenta que la aplicación ocupa unos 10MB y que hay dos mirrors más. Según el administrador de Cydia, evasi0n se ha usado como mínimo 800.000 veces en las primeras seis horas.

Evidentemente con cada nuevo dispositivo y nueva actualización de software Apple va poniendo más trabas a este tipo de desarrollos. Por esa razón, lanzamiento a lanzamiento, el jailbreak se va volviendo más elaborado y sofisticado, y a la vez más fácil para el usuario final, como os contamos la semana pasada. Según David Wang, integrante del evad3rs team, evasi0n se aprovecha de hasta cinco agujeros de seguridad distintos en iOS. A continuación os mostramos como funciona evasi0n, paso a paso:

– Evasi0n empieza ejecutando libimobiledevice, un programa que substituye a iTunes como medio de comunicación con dispositivos iOS utilizando el mismo protocolo que usa iTunes de Apple. Usando esta herramienta, evasi0n se aprovecha de un bug en el sistema de copias de seguridad de iOS para lograr el acceso a ciertos ajustes que normalmente no deberíamos tener acceso, concretamente al archivo que indica la zona horaria del dispositivo.

– El programa de jailbreak inserta un enlace simbólico –o symbolic link– en ese archivo de zona horaria, un atajo de un lugar del sistema operativo a otro. En este caso el link redirige a un socket concreto, un canal de comunicación restringido entre diferentes programas que Wang lo describe como “el teléfono rojo a Moscú”. Evasi0n altera el socket que permite a los programas comunicarse con otro programa llamado Launch Daemon, launchd abreviado, un proceso que se carga cada vez que encendemos un dispositivo iOS y que puede lanzar aplicaciones que requieren privilegios root, un paso más allá en el control del sistema operativo en el que los usuarios tienen concedido el acceso por defecto. Eso significa que cuando se ejecuta una copia de seguridad de un iPhone o iPad automáticamente concede acceso a todos los programas al archivo de zona horaria, y gracias al enlace simbólico, acceso también a launchd.

– iOS tiene otra protección que normalmente evitaría que cualquier aplicación tuviera acceso a launchd: el código firmado. Esta restricción requiere que todo el código que se ejecute en un dispositivo sea aprobado por una firma infalsificable de Apple. Entonces evasi0n lanza una nueva aplicación que parece que no tenga ni código firmado ni no firmado. Pero cuando un usuario toca el icono de la aplicación, evasi0n usa un truco de Unix llamado shebang que hará creer al programa que queremos ejectutar un intérprete, pero realmente estaremos metiendo nuestro programa en el script. En este caso lanza launchd y ejecuta un comando de remount que cambia los ajustes de memoria de solo lectura a escritura.

– Ahora que en el sistema de archivos raíz se puede escribir, evasi0n cambia un archivo llamado “launchd.conf” que altera la configuración de launchd, de modo que cada vez que se ejecuta evasi0n se repiten los cambios. Eso hace que el jailbreak sea persistente y el usuario no tenga que ejectuar evasi0n cada vez a través de USB cuando se reinicia el dispositivo

– Incluso después de todos estos hacks, un dispositivo aún no está jailbroken hasta que no se eliminan las restricciones del kernel o núcleo, la capa más profunda del sistema operativo que verifica que el código este firmado y evita que aplicaciones que no estén aprovadas se ejecuten usando un proceso llamado “Apple Mobile File Integrity Daemon (AMFID)”. Lo hace evasi0n a través de launchd es cargar una librería de funciones en AMFID cada vez que se lanza un programa y cambia la función que comprueba la firma por otra que siempre devuelve “aprobada”. Wang no explica concretamente como se salta el AMFID. “Apple puede deducir esa parte por si solos”, dice.

– iOS aún tiene más salvavidas para evitar que los hackers puedan acceder al kernel: Adress Space Layout Randomization, o ASLR. Este mecanismo mueve el código del dispositivo por la memoria flash, en un lugar aleatorio cada vez que se arranca el sistema para evitar que alguien pueda escribir sobre alguna parte del código del dispositivo. Pero evasi0n usa un truco de asignación de memoria. Una parte del procesador ARM que maneja las excepciones o errores, reporta la posición de memoria donde se ha producido. Evasi0n simula un error y comprueba donde se ha producido, para poder hacer así un mapa de la memoria del dispositivo.

– Una vez hemos pasado el ASLR, el jailbreak utiliza un bug en la interfaz USB de iOS que pasa una dirección en el núcleo de la memoria a un programa y “espera que el usuario pueda pasar sin ser visto”, según Wang. Eso permite a evsi0n escribir en cualquier parte del kernel. El primer lugar donde escribe es una parte del núcleo que restringe cambios. “En cuanto entras al Kernel, no hay problemas de seguridad nunca más”, dice Wang. “Entonces ganamos”.

Archivado en evad3rs, Evasi0n, iPad, iPod touch, Jailbreak
COMPARTIR 0 TWITTEAR

Comentarios (18)

Usa tu cuenta de Facebook para dejar tu opinión.

Publica tu opinión usando tu cuenta de Facebook.

Otras webs de Difoosion