Curso Especialización en Dispositivos Móviles
Arquitectura, Seguridad y Apps y en iOS
Juan Miguel Aguayo Sánchez
iOS en el entorno corporativoContents at a glance
Bloque I: Arquitectura.
Bloque II: Seguridad.
Bloque III: Apps en iOS.
Bloque I
Arquitectura iOS
iOS
¿Qué es iOS?
iPhone
iPod
iPad
Apple TV
Historia iOS
NeXTSTEP (1989-1995) “Black boxes” NeXTSTEP + Sun Microsystems = OpenStep
Apple =NeXTSTEP Propia implementación de OPENSTEP = Rhapsody (1997)
Darwin S.O. open source y POSIX liberado por Apple (2000)
Rhapsody Mac OS X
Descendiente directo de NeXTSTEP
S.O UNIX con más mayor índice de penetración!
Modelos de iDevices
Especificaciones técnicas iPhone iPhone 4: 960 por 640 píxeles a 326 p/p. UMTS/HSDPA/HSUPA, GSM/EDGE, Wi-Fi, Bluetooth. AAC, AAC protegido, HE-AAC, MP3, MP3 VBR,
Audible, Apple Lossless, AIFF y WAV. Cámara de fotos de calidad VGA y grabación de vídeo
en HD. Sensores: Giroscopio de 3 ejes, acelerómetro, sensor de
proximidad, sensor de luz ambiental. Flash de 16 o 32GB. Hasta 300 horas en reposo. Fabricado sin PVC, bromo, mercurio o arsénico. …
Especificaciones técnicas iPad
1.024 por 768 píxeles a 132 p/p. UMTS/HSDPA/HSUPA, GSM/EDGE, Wi-Fi,
Bluetooth. AAC, AAC protegido, HE-AAC, MP3, MP3 VBR,
Audible, Apple Lossless, AIFF y WAV. Dolby Digital 5.1 (con adaptador AV). Salida de vídeo hasta 1080p. Cámara de fotos de calidad VGA y grabación de
vídeo en HD. Sensores: Giroscopio de 3 ejes, acelerómetro, sensor
de luz ambiental. Flash de 16, 32 o 64 GB. Versiones: Wi-Fi y Wi-Fi 3G, iPad 1 y iPad 2. Fabricado sin PVC, bromo, mercurio o arsénico y
carcasa de aluminio y vidrio reciclable.
Especificaciones técnicas iPhone 4S
http://www.apple.com/iphone/specs.html
http://www.apple.com/es/iphone/
iOS Hardware
Grandes avances: Microprocesadores
ARM Cortex-A8 CPU.
ARM Cortex-A9 Dual-Core.
ARM Cortex-A9 MPCore.
iOS Hardware
Grandes avances: Del A4 al A5
ARM Cortex-A8 CPU (A4).
ARM Cortex-A9 Dual-Core (A5).
iOS Hardware
Grandes avances: Del A5 al A5X
ARM Cortex-A9 Dual-Core Processor (A5).
ARM Cortex-A9 Dual-Core Processor (A5X).
iOS Hardware
Evolución Procesadores ARM
iOS Hardware
Evolución Procesadores ARM
iOS Hardware
Grandes avances: Seguridad
iPhone 3GS: Primero en soportar el juego de instrucciones Thumb2. Esto cambió la manera en la que se desarrollaban los ROP payloads.
iPad 2: Permite a iOS allocator trabajar mejor (dual core), haciendo que los exploits sean mucho menos fiables o más difíciles de implementar.
iOS Hardware
Avances relativos al Baseband
Anteriores modelos: Infineon Firmware Baseband.
iPhone 4 CDMA y iPhone 4S: Qualcomm Firmware Baseband.
iOS Hardware
Unlock
iOS Cocoa Touch
Mac OS X iOS
iOS Cocoa Touch
iOS Cocoa Touch
iOS Cocoa Touch
iOS Cocoa Touch
Cocoa Touch Frameworks
Cocoa Touch Frameworks
UIKit Framework
• Proporciona todos los elementos gráficos de las aplicaciones a través de interfaces. Utilizando UIKit tienes acceso a los controles especiales GUI, botones, vistas a pantalla completa, etc.
• Acceso a APIs del hardware: control sobre acelerómetro, cámara, gestos multi-touch, GPS, …
• Organiza el ciclo de vida (lifecycle) de una aplicación.
• Manejo de eventos.
• Application runtime.
Cocoa Touch Frameworks
Foundation Framework
Foundation Framework es un subconjunto de clases que representan estructuras complejas de datos. Una fuerte base a bajo nivel, favorece fantásticos frameworks de alto nivel como:
• GameKit para jugar en multiplayer.
• Core Data que ofrece rendimiento y facilidad de uso para administrar los datos.
• Core Animation para realizar efectos.
• y (según Apple) el más innovativo motor de búsquedas en dispositivos móviles WebKit.
Bloque II
Seguridad en iOS
Seguridad iOS
Situación actual
iOS se lanzó en 2007 como iPhoneOS.
Versión actual: iOS 5.1.1
Nuevas características de seguridad con cada nueva versión.
Fallos difíciles de explotar y se parchean constantemente.
Cada nueva versión trae nuevos retos!
Seguridad iOS
Vectores o Amenazas
Malware: Al igual que en los PCs. Comienza a proliferar en smartphones
Exploits: Fallo o vulnerabilidad. Encontrar una manera de explotar la vulnerabilidad.
Dificultar el camino para explotar la vulnerabilidad
Arquitectura de seguridad iOS
Reduced Attack Surface
Attack Surface: Es el código que procesa la entrada proporcionada por un atacante.
Menos fallos, menos oportunidades de explotación.
Ejemplos: iChat no disponible en iOS. QuickTime con funcionalidades muy reducidas. Java y Flash no disponibles. Archivos .psd (No en MobileSafari). Algunos archivos .mov no soportados en iOS. iOS soporta .pdf, pero tan sólo parsea algunas características del fichero. …
Arquitectura de seguridad iOS
Stripped-Down iOS
Apple no sólo ha reducido la superficie de ataque, sino que también ha limitado el número de aplicaciones que un usuario querría utilizar durante y después de la explotación.
El ejemplo más obvio es que no hay shell (/bin/sh) en iOS, pero incluso si hubiese una shell, no sería útil, al no poder ejecutar utilidades como ls, rm, ps, etc.
Esto lleva a que el objetivo de los exploits sea diferente (no obtener shellcode):
Atacante tiene que realizar sus acciones en el contexto del proceso explotado.
O bien traer consigo todas las utilidades que desee usar.
Arquitectura de seguridad iOS
Separación de privilegios - Usuarios
iOS hace separación de procesos, utilizando usuarios, grupos, y otros permisos típicos de sistemas UNIX.
Usuarios existentes en iOS:
root: Los procesos de sistema más importantes se ejecutan como root. mobile: Navegador Web (Safari), Cliente de Correo (Mail Client), Apps de
terceros (App Store). _wireless _mdnsresponder … …
Arquitectura de seguridad iOS
Code-Signing
Uno de los principales mecanismos de seguridad en iOS.
Binarios y librerías deben ser firmados por una autoridad de confianza, antes de que el kernel permita su ejecución.
Además solo las páginas en memoria que provengan de fuentes firmadas podrán ser ejecutadas.
Arquitectura de seguridad iOS
Code-Signing
Sólo se pueden descargar apps de la App Store (a menos que el dispositivo esté configurado para aceptar otras fuentes), por lo que Apple actúa de Antivirus.
Esta protección hace muy difícil infectarse de malware. Pocas muestras han sido encontradas.
Arquitectura de seguridad iOS
Code-Signing
Code signing complica la explotación:
NO se puede descargar, instalar y ejecutar software malicioso adicional.
Por lo que los exploits estarán limitados a los procesos explotados originalmente.
Aunque otras características del dispositivo podrían ser atacadas.
Arquitectura de seguridad iOS
Code-Signing
Esta protección es la principal razón por la que la gente realiza el jailbreak a sus dispositivos. Una vez jailbreakeados, pueden ejecutar aplicaciones no firmadas.
Arquitectura de seguridad iOS
Data Execution Prevention (DEP)
Mecanismo por el cual el procesador distingue entre las zonas de memoria que contienen código ejecutable y las que contienen datos.
DEP no permite la ejecución de datos, sólo código.
Si un exploit intenta ejecutar un payload, NO es posible, ya que es detectado como datos.
El atacante utiliza ROP para bypassear el DEP.
En iOS el mecanismo Code-Signing actúa como DEP, pero es incluso más seguro.
Arquitectura de seguridad iOS
Data Execution Prevention (DEP)
La manera de atacar en ROP (Return-Oriented Programming), es crear una zona de memoria en donde se pueda escribir y ejecutar.
Esto no es posible en iOS, por el Code-Signing, ya que ninguna página de memoria no firmada se va a ejecutar.
Esto combinado con que nada escrito en disco se va a ejecutar, resulta en que la única manera de realizar exploits es con ROP.
Escribir largos payloads en ROP es un proceso muuuy largo y complejo, por lo que se puede decir que realizar exploits para iOS es más difícil que en otras plataformas.
Arquitectura de seguridad iOS
Address Space Layout Randomization (ASLR)
Para bypassear DEP, el atacante utiliza ROP (reusar trozos de código existentes).
Pero para ello debe saber en qué parte o zona de memoria se encuentran, pero para evitar esto está el mecanismo de protección ASLR, que lo complica colocando el código en una posición aleatoria cada vez.
En iOS todo está localizado en memoria utilizando ASLR: binaries, libraries, dynamic linker, stack, heap memory addresses.
Pero hay que tener cuidado si está compilado con PIE o no!
Arquitectura de seguridad iOS
Address Space Layout Randomization (ASLR)
Cuando un sistema tiene ambas protecciones (DEP y ASLR), no hay una manera general de escribir un exploit.
En la práctica, un atacante necesita de dos exploits: El primero para obtener ejecución de código. El segundo para encontrar una dirección de memoria para realizar
ROP.
Otra opción es que el atacante encuentre una vulnerabilidad muy especial.
Arquitectura de seguridad iOS
Sandboxing
La última defensa de iOS, las sandboxes de las apps.
Permite un control más detallado de los que los procesos pueden o no realizar.
Ejemplo SMS y Mobile Safari.
Dos efectos principales:
Limitar los efectos del malware (fotos y contactos SI, llamadas y SMS NO).
Si se encuentra una vulnerabilidad y se explota, estará limitada a la sandbox.
No se puede interaccionar directamente con los recursos/dispositivos de red.
Arquitectura de seguridad iOS
Sandboxing
Arquitectura de seguridad iOS
Sandboxing
Application Bundle: Contiene los recursos de la app y los ejecutables.
Library/Preferences: En esta carpeta se almacenan las preferencias de la app, y por tanto es donde la app Settings buscará dichas preferencias (a través de la clase NSUserDefault).
Library/Caches: En esta carpeta la app guarda los datos generados durante el tiempo de ejecución, y que se desean guardar entre ejecución y ejecución. NO se sincroniza (demaisado tiempo y tamaño Web Server).
Arquitectura de seguridad iOS
Sandboxing
Documents: Igual que Caches, pero sí sincroniza (partida salvada).
tmp: Es donde sealmacenan los datos que la app utilizará de manera temporal durante su ejecución. Hay que eliminar los datos de dicha carpeta cuando se finaliza con ellos. El S.O. Podría eliminar o purgar datos de dicha carpeta cuando la aplicación no está corriendo.
Arquitectura de seguridad iOS
Sandboxing
Hay varias formas de acceder a la sandbox (a nivel programático):
NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *ourDocumentPath = [documentPaths objectAtIndex:0];
NSString *sandboxPath = NSHomeDirectory(); // Once you have the full sandbox path, you can create a path from it NSString *documentPath = [sandboxPath stringByAppendingPathComponent:@"Documents"];
Arquitectura de seguridad iOS
¿Donde está mi sandbox?
Veamos ahora el aspecto de la sandbox de una app desarrollada por nosotros.
La ruta de la sandbox en el equipo, es decir, en el simulador de iPhone, se encuentra (en Lion) en:
/Users/juanmi/Library/Application Support/iPhone Simulator/5.1/Applications
Bloque III
Apps en iOS
Tipos de aplicaciones
Aplicaciones Web
Desarrollo más sencillo con HTML5, JavaScript, CSS y no es necesario Objective-C.
Multiplataforma: Funciona en casi todos los dispositivos, siempre y cuando sean compatibles con el engine del Safari WebKit.
No depende de Apple:◦ Libertad en políticas de precios,, implantando diversos mecanismos en la
aplicación web, y evitando la comisión de Apple.◦ Mayor esfuerzo en marketing.◦ Sin registro.
Tipos de aplicaciones
Aplicaciones Nativas
Acceso al API de iPhone: acelerómetro, cámara, GPS, etc.
Mejor experiencia de usuario: no cargan interfaz, sólo datos.
Permiten envío de push-notifications.
Necesarios conocimientos de Objective-C.
Depende de Apple:◦ Registro = Ganar dinero.◦ Aprovechar el canal de distribución del fabricante (AppStore).◦ Apple Developer Program. El coste es de 79€/año.
¿Cómo se desarrolla en iOS?
Aplicaciones en iOS
Seguridad en la App Store
25.000 millones de descargas.
500.000 apps diferentes.
Apple, Developers, 3rd parties.
TODAS las apps son revisadas y, si son aprobadas, son firmadas por una clave privada de Apple y puestas a disposición del público para descargarlas desde la App Store.
Mandatory Code-Signing
iOS 6
Aplicaciones en iOS
Desarrollo seguro en iOS
iOS proporciona varias APIs para desarrollo seguro.
API para cifrar datos: CryptoAPI.
API para manejar el Keychain.
Conocido como Data Protection API.
Desarrolladores junior y con poca experiencia en seguridad.
…
PREGUNTAS
Curso Especialización en Dispositivos Móviles
Arquitectura, Seguridad y Apps y en iOS
Juan Miguel Aguayo Sánchez
Top Related