Jailbreak: todo lo que debes saber para realizar pentesting sobre aplicaciones iOS

En términos generales, podríamos decir que en la metodología de pentesting para aplicaciones se utilizan dos enfoques de análisis: el análisis estático y el análisis dinámico. Como podemos intuir, el análisis estático es aquel que cubre todas las pruebas mientras la aplicación no está en ejecución. En este enfoque, siempre que analicemos una aplicación iOS lo haremos desde su archivo IPA, del cual hablaremos con más detalles en otras entregas. En cuanto al análisis dinámico, como su nombre lo indica, refiere a pruebas que se realizan mientras que la aplicación está en ejecución. Lo cierto es que para analizar completamente (análisis estático/análisis dinámico) una aplicación iOS será necesario que dispongamos de una Pc Apple en cualquiera de sus variantes, conjuntamente con un  AppleID que utilizaremos desde el IDE de Apple (Xcode), el cual nos provee muchas herramientas de análisis y sobre todo nos permite manipular nuestras aplicaciones dándonos la posibilidad de poder firmarlas (siempre que tengamos un AppleID con un porvisioning profile válido), sumado a un modelo de dispositivo (iPhone o iPad) para el cual exista una versión de jailbreak disponible y que aplique al SO que tenga instalado dicho dispositivo. Por otra parte, cabe destacar que es sumamente importante tener en cuenta que el dispositivo que seleccionamos para hacer el jailbreak y probar nuestras aplicaciones deberá ser utilizado únicamente para el uso de pruebas de auditoria y laboratorio y que no debemos pensar en utilizar para esto un dispositivo que contenga información personal.


¿Qué es Jailbreak?

Como ya hemos anticipado en la primera entrega de esta serie, jailbreak es un proceso que nos permite elevar privilegios en los sistemas iOS dándonos la posibilidad de romper muchos de los mecanismos de seguridad. Sin dudas, jailbreak se lo puede comparar con el proceso de rootear en dispositivos que corren Android, aunque es importante destacar con respecto al jailbreak que el mismo refiere únicamente al proceso de romper los mecanismos de seguridad impuestos por Apple a fin de elevar privilegios sobre el sistema.

El primer método  para realizar jailbreak fue lanzado en julio de 2007 e inicialmente permitía establecer cualquier archivo de música grabado en el dispositivo como tono para las llamadas y mensajes entrantes. Luego, en agosto de 2007, se lanzó el primer juego no aprobado por Apple para el iPhone y el iPod Touch. Y en octubre de ese mismo año, se descubrió otro método para realizar jailbreak. Vale la pena aclarar que no debe confundirse al jailbreak con las herramientas o exploits que se utilizan para ejecutar el proceso de jailbreak en sí. Por lo general, luego de un jailbreak exitoso el FileSystem del dispositivo deja de estar montado como ReadOnly (solo escritura) para pasar a Read-Write (lectura/escritura), lo que permite manipular archivos en el sistema e interactuar con el mismo como usuario root, desestimando por completo el uso del usuario mobile que iOS utiliza por defecto.

Como se pueden imaginar, el jailbreak se convierte desde el punto de vista del pentesting en una herramienta fundamental a la hora de realizar auditorías de seguridad, dado que una vez realizado el jailbreak podremos acceder a los directorios internos, al keychain, instalar herramientas de terceros , acceder al process memory, realizar Bypass TLS y realizar debugging en tiempo real, entre otras prestaciones que se convierten en herramientas fundamentales, sobre todo para llevar a cabo lo que refiere al análisis dinámico.

Tipos de Jailbreak existentes

Aunque a la hora de realizar jailbreak sobre un dispositivo se habla de “tipos” de jailbreak, podríamos decir más bien que cada uno de estos refiere a las virtudes y limitaciones que ofrecen las distintas herramientas y exploits disponibles para lograr realizar jailbreak en un dispositivo.

A continuación, podemos ver las distintas características y “tipos” de jailbreak disponibles. Como decíamos, dependen del tipo de herramientas y/o exploits que se utilicen, pudiendo ser estos últimos del tipo software (también conocidos como userland) o de tipo hardware (que operan sobre el firmware), como los que afectan a iBoot o al DFU.

Jailbreak Untethered

Normalmente, cuando se realiza jailbreak sobre un dispositivo el mismo se pierde al reiniciar el sistema. Cuando hablamos de jailbreak untethered ocurre lo contrario: no se pierde del jailbreack al reiniciar el teléfono. Esto quiere decir que el kernel se parchea sin la ayuda de una computadora o aplicación. El dispositivo permanece con el Jailbreak sin importar que se reinicie o se apague y es por esta ventaja que estos tipos de jailbreak son los más buscados, aunque son poco comunes y requieren una gran cantidad de ingeniería inversa para crearlos. Esto último a su vez hizo que sean cada vez menos populares, ya que ninguno es compatible con las versiones recientes de iOS.

Jailbreak Tethered

Es un tipo de jailbreak temporario que se pierde al reiniciar el dispositivo, dejándolo en un bootloop que requiere que el dispositivo sea conectado a una computadora para realizar jailbreak cada vez que este se reinicie.

Jailbreak Semi-Tethered

Se pierde el jailbreak al reiniciar el dispositivo, pero el equipo encenderá normalmente (funcionando las llamadas telefónicas, mensajes de texto y/o utilización de aplicaciones y AppStore), tan solo bastará con volver a ejecutar el jailbreak aunque con el dispositivo conectado a una computadora.

Jailbreak Semi-Untethered

Este tipo de jailbreak es similar al jailbreak semi-tethered, ya que cuando el dispositivo se reinicia se pierde el jailbreak, pero la diferencia clave es que el kernel se puede parchear sin usar una computadora. Generalmente se parchea usando una aplicación instalada en el dispositivo. En algunas ocasiones este tipo de jailbreak no requiere conectar el dispositivo a una PC.

Es lógico preguntarse cómo se han logrado los distintos tipos de jailbreak luego de tanto esfuerzo por parte de Apple para mejorar la seguridad de sus dispositivos. Lo cierto es que desde los inicios del jailbreak los desarrolladores y Apple han estado jugando al gato y al ratón. Y es que luego de varios años desde su nacimiento, el jailbreak sigue siendo un desafío para Apple. A lo largo del tiempo ha tenido que afrontar muchas veces situaciones irremediables, como fue cuando se dio el nacimiento de checkm8, un exploit de tipo bootrom (memoria de arranque de solo lectura grabada en el hardware) que se utiliza para ejecutar código sin firmar en dispositivos iOS y que imposibilita a Apple parchear estos defectos. Como resultado de esto muchos modelos de dispositivos quedaron permanentemente vulnerables obligando a sus usuarios a cambiar directamente sus equipos.

Por otra parte, cabe destacar que el jailbreak se considera absolutamete legal, puesto que los usuarios una vez obtenidos sus dispositivos tienen derecho a hacer lo que quieran con los mismos.

CEn términos generales, podríamos decir que en la metodología de pentesting para aplicaciones se utilizan dos enfoques de análisis: el análisis estático y el análisis dinámico.omo vimos, existen diferentes caminos para llegar a un jailbreak exitoso. Más allá de cuál sea el camino que elijamos para hacer jailbreak, lo cierto es que este tipo de mecanismos siempre requieren mucha paciencia por parte del pentester y, como dijimos antes, siempre será necesario tener un as bajo la manga.

Es importante evitar aprender de memoria el uso de las herramientas y sus diferentes formas de ejecución y enfocarnos más bien en cómo funcionan realmente según sus características. Además, estar atentos a los detalles de cada una de las fases de la cadena de seguridad con la que tenemos que enfrentarnos cuando hacemos jailbreak a fin de ganar un campo estratégico más amplio y con muchos más recursos.

Sea como sea, lo cierto es que ya tenemos nuestro dispositivo con jailbreak y es natural que aparezcan  preguntas tales como, ¿ahora qué debo hacer?, ¿cómo empiezo a analizar mis aplicaciones? Estas preguntas, entre otras relacionadas, serán abordadas en las próximas entregas de esta serie sobre pentesting en aplicaciones iOS.

Regresar a Noticias
T-Cert / Tigo Copyright©, Guatemala todos los derechos reservados.