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.
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
Podemos 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!