Tag Archive for ios

Desactivando ASLR en una app iOS con Radare2 – Parte 2

Introducción

Continuamos con la segunda y última parte de este artículo acerca de cómo desactivar ASLR en una aplicación iOS con Radare2. En la primera parte, que podéis consultar aquí, vimos cómo comprobar si un binario de tipo Mach-O tiene activado o no la protección PIE (Position-Independent Executable). PIE permite el uso de Exec Shield o PAX que utilizan técnicas de direccionamiento aleatorio como ASLR (Address Space Layout Randomization).

También vimos que dependiendo de la arquitectura, ARMv7 o ARM64 tendríamos que buscar una cadena u otra. Además vimos que esa cadena a buscar en nuestro binario estaría cerca de la cadena _PAGEZERO, que nos puede servir de referencia.

Manos a la obra

Vamos a “parchear” nuestro binario para modificar unos bytes que nos permitirán desactivar el PIE. Para ello abriremos el binario en modo escritura con Radare2. Para abrir un binario en modo escritura utilizaremos el parámetro -w (write).

Radare2 - Write modeEn la imagen anterior podemos ver que hemos abierto ya no está cifrado (aplicado Clutch en la primera parte), y que tiene habilitado PIE.

Localizamos la cadena a buscar, tal y como hemos visto en la primera parte de este artículo, y pasaremos a explorar el binario para hacer el “parcheo“.

Con la tecla v (visual mode) de Radare2 podemos entrar en modo visual, lo que nos va a permitir a ver las distintas direcciones relativas y sus contenidos. Con la tecla c (cursor mode) activamos el cursor y podremos desplazarnos por los contenidos mostrados.

Una vez localizados los bytes a modificar, 850020 (recordad que varía según la arquitectura), procedemos a activar el modo insertar, para lo que pulsaremos la tecla i en Radare2.

Radare2 - Insert modeEn este modo de inserción, podremos modificar los bytes, dejándolos como vemos en la siguiente imagen.

Radare2 - Insert mode

Salimos de Radare2, los cambios se guardarán automáticamente porque hemos “escrito” directamente en el binario.

Comprobación

Comprobamos nuevamente con la herramienta otool si PIE sigue activado o no.

otool - iOS PIE

Podemos comprobar como efectivamente en el binario cuyo nombre acaba en _NoPIE hemos conseguido deshabilitar PIE.

Para finalizar, con otra herramienta del framework de Radare2, como es radiff2, podemos buscar diferencias entre dos binarios. Si lo aplicamos a los dos binarios con los que hemos estado trabajando, uno con PIE activado y el otro con el PIE desactivado con Radare2, podemos ver la diferencia en el byte modificado.

A continuación se puede ver un ejemplo de radiff2 con estos archivos.

Radiff2 - PIE

Hasta aquí este artículo que, como siempre, esperemos haya sido de vuestro interés. Todos los comentarios y sugerencias serán bienvenidos. Gracias de antemano.

¡Hasta pronto!

Miguel A. Arroyo – @miguel_arroyo76

iOS Hacking: Comprobando ASLR con otool

Continuando esta serie de artículos sobre iOS Hacking, veremos en este post qué protecciones en tiempo de ejecución podemos implementar a nuestra aplicación iOS para que sea más segura. Algunas de estas medidas son usadas también en otros tipos de aplicaciones de diferentes arquitecturas, como el que vamos a tratar en este artículo, ASLR.

Antes de empezar destacaremos la herramienta otool que nos permite extraer información importante de un binario en iOS. Los binarios en iOS usan el formato Mach-O, que a su vez se divide en cabeceras, comandos de carga y datos (segmentos y secciones). Con la herramienta otool podremos visualizar detalles de la compilación, para qué arquitectura se ha compilado, cabeceras, comandos y lo que nos ocupa en esta ocasión, parámetros de algunas de las medidas de protección en tiempo de ejecución que podemos utilizar.

iOS Hacking - Mach-O

ASLR (Address Space Layout Randomization): al igual que en otras arquitecturas, esta técnica dificulta la explotación de alguna vulnerabilidad asignando localizaciones aleatorias de los objetos en memoria. Para usar la protección completa ASLR, y no de forma limitada como lo hacen las aplicaciones iOS por defecto, hay que compilar desde Xcode con el flag PIE activado.

Con otool podremos verificar si una aplicación está protegida completamente con ASLR ejecutando el comando con la siguiente sintaxis:

otool -Vh binario_de_la_app

iOS Hacking - otoolPodemos ver en la imagen anterior cómo la aplicación que hemos tomado como ejemplo, Messenger de Facebook, ha sido compilada con el flag PIE, por lo tanto está protegida totalmente con ASLR, y aunque se conocen técnicas para hacer “bypass” a estas protecciones, nunca viene de más poner obstáculos a posibles atacantes.

En siguientes artículos veremos qué otras protecciones podemos implementar y qué técnicas y herramientas utilizar durante el pentesting de una App iOS para verificar si la aplicación implemente o no estas protecciones.

¡Hasta la próxima!

iOS Hacking: credenciales Google Analytics sin cifrar

Revisando la seguridad de algunas aplicaciones iOS me he encontrado con una sorpresa, que no esperaba, al menos en uno servicio como el de Google Analytics, y es que revisando la seguridad y privacidad en Local Storage del dispositivo Apple he encontrado que mis credenciales de Google Analytics estaban almacenadas en claro, sin ningún tipo de cifrado.

A nivel de almacenamiento local, tal y como veremos en próximos artículos de la serie “iOS Hacking” en este blog, destacar que existen varias localizaciones donde poder encontrar información sensible de las aplicaciones o del propio sistema. Ficheros de configuración, temporales, cookies, bases de datos, capturas, logs del sistema o aplicación, etc. Entre estas localizaciones nos encontramos también un contenedor cifrado que almacena algunos datos sensibles como pueden ser nombres de usuarios, contraseñas, o certificados, se trata del Keychain de iOS.

Ha sido en este contenedor donde he encontrado mis credenciales sin cifrar.

Google Analytics - iOS

Un acceso físico al dispositivo, a causa de un descuido, robo o pérdida, fuga de información debido a un malware, o acceso a una copia de seguridad del dispositivo, permitiría extraer esta información del usuario.

Permaneced atentos que próximamente iremos publicando más artículos relacionados con la seguridad en aplicaciones y dispositivos iOS dentro de la serie de posts que ya hemos comenzado y nombrado como “iOS Hacking“.

¡Hasta pronto!

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 seguridad Read more

iOS Hacking: preparando entorno de pruebas

Con este artículo estrenaré una nueva serie de entradas llamada iOS Hacking dedicada a todo lo relacionado con el pentesting de dispositivos y aplicaciones iOS, que como sabéis es el sistema operativo usado por los dispositivos de Apple.

Cada vez son más los dispositivos móviles que utilizamos día a día, ya sean smartphones o tablets. Lo hacemos para consultar nuestro correo electrónico, redes sociales, jugar o ver vídeos online. Son muchas las aplicaciones nuevas que aparecen todos los días, por lo tanto creemos que este tema se merece un espacio en nuestro blog.

Como no podía ser de otra forma, en este primera entrada explícaremos cómo preparar un entorno de pruebas de intrusión en un dispositivo con sistema operativo iOS. Al igual que en Android necesitamos rootear el dispositivo para tener acceso al sistema de ficheros o conseguir una elevación de privilegios, en un iPhone o iPad ocurre lo mismo. En este caso se le atribuye el concepto de romper la jaula (jail), de ahí que a esta técnica se le conozca como JailBreak. Esta técnica, además de lo comentado anteriormente, nos proveerá de un nuevo gestor de paquetes, Cydia.

Cydia - iOS Hack

¿Por qué necesitamos hacer JailBreak? Básicamente porque necesitamos acceder a todo el sistema de ficheros, sin ningún tipo de limitación, necesitamos poder monitorizar aplicaciones y procesos y necesitamos más permisos que los que vienen por defecto, que son muy limitados. En realidad, lo se hace es una elevación de privilegios del usuario mobile a root.

Hay muchísimos sitios Web donde se explica cómo hacerlo, no entra en el ámbito de estos artículos explicar cómo hacer un JailBreak a un dispositivo iOS. Read more