arquitectura, aplicaciones y seguridad en ios

54
Curso Especialización en Dispositivos Móviles Arquitectura, Seguridad y Apps y en iOS Juan Miguel Aguayo Sánchez [email protected]

Upload: eventos-creativos

Post on 28-May-2015

1.471 views

Category:

Technology


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

Page 1: 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

[email protected]

Page 2: Arquitectura, aplicaciones y seguridad en ios

iOS en el entorno corporativoContents at a glance

Bloque I: Arquitectura.

Bloque II: Seguridad.

Bloque III: Apps en iOS.

Page 3: Arquitectura, aplicaciones y seguridad en ios

Bloque I

Arquitectura iOS

Page 4: Arquitectura, aplicaciones y seguridad en ios

iOS

¿Qué es iOS?

iPhone

iPod

iPad

Apple TV

Page 5: Arquitectura, aplicaciones y seguridad en ios

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!

Page 6: Arquitectura, aplicaciones y seguridad en ios

Modelos de iDevices

Page 7: Arquitectura, aplicaciones y seguridad en ios

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. …

Page 8: Arquitectura, aplicaciones y seguridad en ios

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.

Page 9: Arquitectura, aplicaciones y seguridad en ios

Especificaciones técnicas iPhone 4S

http://www.apple.com/iphone/specs.html

http://www.apple.com/es/iphone/

Page 10: Arquitectura, aplicaciones y seguridad en ios

iOS Hardware

Grandes avances: Microprocesadores

ARM Cortex-A8 CPU.

ARM Cortex-A9 Dual-Core.

ARM Cortex-A9 MPCore.

Page 11: Arquitectura, aplicaciones y seguridad en ios

iOS Hardware

Grandes avances: Del A4 al A5

ARM Cortex-A8 CPU (A4).

ARM Cortex-A9 Dual-Core (A5).

Page 12: Arquitectura, aplicaciones y seguridad en ios

iOS Hardware

Grandes avances: Del A5 al A5X

ARM Cortex-A9 Dual-Core Processor (A5).

ARM Cortex-A9 Dual-Core Processor (A5X).

Page 13: Arquitectura, aplicaciones y seguridad en ios

iOS Hardware

Evolución Procesadores ARM

Page 14: Arquitectura, aplicaciones y seguridad en ios

iOS Hardware

Evolución Procesadores ARM

Page 15: Arquitectura, aplicaciones y seguridad en ios

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.

Page 16: Arquitectura, aplicaciones y seguridad en ios

iOS Hardware

Avances relativos al Baseband

Anteriores modelos: Infineon Firmware Baseband.

iPhone 4 CDMA y iPhone 4S: Qualcomm Firmware Baseband.

Page 17: Arquitectura, aplicaciones y seguridad en ios

iOS Hardware

Unlock

Page 18: Arquitectura, aplicaciones y seguridad en ios

iOS Cocoa Touch

Mac OS X iOS

Page 19: Arquitectura, aplicaciones y seguridad en ios

iOS Cocoa Touch

Page 20: Arquitectura, aplicaciones y seguridad en ios

iOS Cocoa Touch

Page 21: Arquitectura, aplicaciones y seguridad en ios

iOS Cocoa Touch

Page 22: Arquitectura, aplicaciones y seguridad en ios

iOS Cocoa Touch

Page 23: Arquitectura, aplicaciones y seguridad en ios

Cocoa Touch Frameworks

Page 24: Arquitectura, aplicaciones y seguridad en ios

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.

Page 25: Arquitectura, aplicaciones y seguridad en ios

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.

Page 26: Arquitectura, aplicaciones y seguridad en ios

Bloque II

Seguridad en iOS

Page 27: Arquitectura, aplicaciones y 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!

Page 28: Arquitectura, aplicaciones y seguridad en ios

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

Page 29: Arquitectura, aplicaciones y seguridad en ios

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. …

Page 30: Arquitectura, aplicaciones y seguridad en ios

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.

Page 31: Arquitectura, aplicaciones y seguridad en ios

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 … …

Page 32: Arquitectura, aplicaciones y seguridad en ios

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.

Page 33: Arquitectura, aplicaciones y seguridad en ios

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.

Page 34: Arquitectura, aplicaciones y seguridad en ios

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.

Page 35: Arquitectura, aplicaciones y seguridad en ios

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.

Page 36: Arquitectura, aplicaciones y seguridad en ios

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.

Page 37: Arquitectura, aplicaciones y seguridad en ios

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.

Page 38: Arquitectura, aplicaciones y seguridad en ios

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!

Page 39: Arquitectura, aplicaciones y seguridad en ios

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.

Page 40: Arquitectura, aplicaciones y seguridad en ios

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.

Page 41: Arquitectura, aplicaciones y seguridad en ios

Arquitectura de seguridad iOS

Sandboxing

Page 42: Arquitectura, aplicaciones y seguridad en ios

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).

Page 43: Arquitectura, aplicaciones y seguridad en ios

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.

Page 44: Arquitectura, aplicaciones y seguridad en ios

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"];

Page 45: Arquitectura, aplicaciones y seguridad en ios

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

Page 46: Arquitectura, aplicaciones y seguridad en ios

Bloque III

Apps en iOS

Page 47: Arquitectura, aplicaciones y seguridad 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.

Page 48: Arquitectura, aplicaciones y seguridad en ios

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.

Page 49: Arquitectura, aplicaciones y seguridad en ios

¿Cómo se desarrolla en iOS?

Page 50: Arquitectura, aplicaciones y seguridad 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

Page 51: Arquitectura, aplicaciones y seguridad en ios

iOS 6

Page 52: Arquitectura, aplicaciones y seguridad en ios

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.

Page 53: Arquitectura, aplicaciones y seguridad en ios

PREGUNTAS

Page 54: 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

[email protected]