Arquitectura, aplicaciones y seguridad en ios

Post on 28-May-2015

1.474 views 0 download

description

Charla: Arquitectura, aplicaciones y seguridad en iOS, impartida por Juan M. Aguayo de Informática 64 para el curso de Especialización en Dispositivos Móviles que tuvo lugar en la Facultad de Informática de la Universidad de A Coruña del 20 al 22 de Junio de 2012.

Transcript of Arquitectura, aplicaciones y seguridad en ios

Curso Especialización en Dispositivos Móviles

Arquitectura, Seguridad y Apps y en iOS

Juan Miguel Aguayo Sánchez

jmaguayo@informatica64.com

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

jmaguayo@informatica64.com