iOS Hacking: Arquitectura de seguridad en iOS

En la entrada anterior de esta serie sobre iOS Hacking hablamos sobre la necesidad de “romper la jaula” en el sistema operativa, es decir, hacer un Jailbreak. En esta siguiente entrada de la nueva serie, veremos cómo es la arquitectura de seguridad en iOS y entenderemos mejor el por qué de tener “jailbreakeado” nuestro dispositivo para hacer pruebas de intrusión o hacking ético en iOS.

Apple publica periódicamente su documento de seguridad iOS, donde explica los mecanismos de seguridad que utilizan para proporcionar el máximo nivel de seguridad a su sistema operativo y Apps. La información aquí mostrada está extraída de dicho documento, que en este caso data de febrero de este año.

iOS Hack: iOS Security

Todos los mecanismos de seguridad los podríamos agrupar en mecanismos de tipo software y mecanismos de hardware / firmware. Desde el nivel más bajo, en el hardware, se encuentra “grabado” el Device Key, que es único para cada terminal. Además en la ROM se almacena el Apple Root Certificate, usado para cifrar, firmar y comprobar la autenticidad.

Por encima, cuenta con un motor de cifrado llamado Crypto Engine.

Desde el punto de vista del software, todo el sistema de ficheros se encuentra cifrado, tanto la partición del sistema operativo como la de usuario. A esto hay que añadir que los datos de esta partición están cifrados. Para completar la seguridad a nivel de software, iOS ejecuta cada App en una sandbox propia de cada App, lo que prohibe el acceso a datos de otra aplicación o interacción entre Apps. Aislamiento total entre aplicaciones.

iOS Hack: Arquitectura de seguridadUna vez visto los mecanismos de seguridad del sistema, veremos que Apple también incluye una cadena segura de arranque, lo que le llaman su Secure Boot Chain. Consiste en una Boot ROM que contiene la Apple Root CA. La cadena la continúa LLB (Low Level BootLoader), un “cargador intermedio” y cuya firma es comprobada por Boot ROM con el certificado antes de cargar LLB. Continua el arranque el módulo iBoot, donde nuevamente se comprueba que esté firmado por Apple y no haya sido modificado. Finalmente iBoot le pasa el testigo al Kernel de iOS para finalizar el arranque del sistema operativo, procesos y aplicaciones.

iOS Hack: Secure Boot ChainLa pregunta es clara. Con todos estos mecanismos de seguridad y limitaciones, ¿cómo podemos hacer una prueba de intrusión a una App de iOS? Si no podemos acceder a datos de las aplicaciones, las particiones están cifradas y las aplicaciones se ejecutan en sus propias sandboxes, ¿cómo lo hacemos? Pues la respuesta es Jailbreak, que como dijimos en la entrada anterior, nos permitirá saltarnos estas protecciones para poder realizar un pentesting o hacking ético de una App iOS.