cccccccccccccccccc
CyberCamp.es
Pentesting de
Aplicaciones iOS
Miguel Á. Arroyo
# whoami
2
# IS Auditor – SVT Cloud&Security Services
# Hack&Beers founder
# Hacking Solidario co-founder
# Twitter: @miguel_arroyo76
# Blog: www.hacking-etico.com
3
# echo /etc/crontab
# Introducción a la seguridad en iOS
# OWASP Mobile Security Project
# Top 10 Mobile Risks & Top 10 Mobile Controls
# Guías para desarrolladores y auditores
# Arsenal de herramientas para auditores
# Preparación de entorno de trabajo
# A tener en cuenta antes de empezar
# Application Mapping
# Client Attacks
# Network Attacks
# Server Attacks
4
Introducción a la seguridad en iOS
5
iOS Security Guide de Apple
6
Diagrama de arquitectura de seguridad en iOS
7
Secure Boot Chain
Procesos de arranque en iOS
BootROM
LLB iBootiOS
Kernel
8
Autorización de software de sistema
Prevención de “downgrade”
9
Secure update process
Seguridad en el proceso de actualización
• Boot info
• Kernel info
• Unique ID (ECID)
• Nonce
Device > Apple Server
• Actualizaciones disponibles
• Devuelve datos firmados
Apple Server > Device • Cadena de
arranque comprueba firma de software
Device
10
Secure Enclave
Co-procesador de cifrado: Gestión Touch ID y Credenciales
11
Touch ID
Autenticación biométrica con huella dactilar
12
App Code Signing
Firma de aplicaciones: Autenticidad e integridad de una App
13
Runtime process security
Seguridad en tiempo de ejecución: sandboxing
14
Runtime process security
ASLR – DEP – Stack Canaries
15
Network security
Seguridad en las comunicaciones
• Soporte de TLS (1.0, 1.1 y 1.2).
• SSL desactivado por defecto.
• Ni siquiera se permiten comunicaciones SSLv3 en Apps basadas
en WebKit (Safari).
• A partir de iOS 9, todas las Apps desarrolladas se integran con
estas políticas de seguridad.
• Un fallo en el certificado del servidor, derivará en un fallo de
conexión.
16
OWASP Mobile Security Project
17
OWASP – Open Web Application Security Project
Proyecto abierto dedicado a determinar y combatir
las causas que hacen que el software sea inseguro.
18
OWASP
¿A quién va dirigido?
Objetivos
Aplicable en…
Desarrollo Seguridad
Ayuda a…
Desarrollo seguro de Apps
Evaluar la seguridad de
Apps
19
OWASP
Seguridad desde el diseño
20
OWASP
Mobile Security Project
21
Top 10 Mobile Risks & Controls
22
OWASP Mobile Security Project
Top 10 Mobile Risks
23
OWASP Mobile Security Project
Definición de controles: OWASP + enisa
24
OWASP Mobile Security Project
Top 10 Mobile Controls
25
Guías para desarrolladores y auditores
26
OWASP Mobile Security Project
Guías
Developer Cheat Sheet
Secure Mobile Development
App Security Testing Cheat Sheet
Security Testing Guide
27
OWASP Mobile Security Project
Developer Cheat Sheet
28
OWASP Mobile Security Project
Security Testing Guide
29
OWASP Mobile Security Project
Centrándonos en iOS…
30
OWASP Mobile Security Project
Auditor Cheat Sheet
31
Arsenal de herramientas para auditores
32
OWASP Mobile Security Project
Herramientas
33
OWASP Mobile Security Project
Radare2 – www.radare.org
34
Preparación del entorno de trabajo
35
Entorno de trabajo
Romper la cadena de seguridad: Jailbreak
36
Ejemplo de herramienta para Jailbreak
Pangu Team
37
Cydia
El AppStore “alternativo”
38
Acceso por SSH al dispositivo iOS
¡Ojo! Credenciales por defecto: root / alpine
39
Gestión de paquetes con APT
APT 0.7 Strict
40
Otras herramientas
Herramientas necesarias
• nmap
• sqlite3
• plutil
• clutch
• wget
• netstat
• file
• top
• ps
• unzip
• curl
• find
• tcpdump
• nano
• …
41
Aplicaciones vulnerables para probar
Damn Vulnerable Web Application
42
Aplicación vulnerable para probar
Damn Vulnerable iOS Application
damnvulnerableiosapp.com
43
A tener en cuenta antes de empezar
44
Metodología
La importancia de seguir una metodología
Hace referencia al camino o al conjunto de
procedimientos racionales utilizados para alcanzar
el objetivo o la gama de objetivos que rige una
investigación científica, una exposición doctrinal o
tareas que requieran habilidades, conocimientos o
cuidados específicos.
45
Controles de seguridad
Objetivo: evaluar su presencia, eficacia y eficiencia
91 controles en total
Por dónde empezar: iOS App Security Testing Cheat Sheet
¿Hay que evaluarlos todos? ~70 comunes a todas plataformas
46
Top 10 de riesgos y controles
Siempre tenerlos muy presentes
47
Por dónde empezar
Echamos manos a nuestra “chuleta”
48
Mapeo de la aplicación
49
Mapeo de la aplicación
Mapeo de plataforma y arquitectura de la aplicación
50
Mapeando la aplicación
Objetivos de esta fase# Entender funcionamiento de la app a nivel usuario
# Entender su lógica, usuarios y privilegios
# Cuál es el flujo de la comunicación entre objetos
# Cuándo se produce una comunicación con el servidor
# Atención especial a eventos de la aplicación
# Infraestructura de la aplicación
51
Ataques de red
52
Análisis de tráfico de red
Objetivo: capturar información sensible y detectar
posibles vulnerabilidades en las comunicaciones
53
Análisis de tráfico de red
Diferenciar entre tráfico generado durante la instalación
y el tráfico que se genera mientras se usa.
Importante no limitarlo solo a http y https
Uso de proxy web local para captura de tráfico web
Certificado self-signed – Perfil de confianza
Para la captura de tráfico https
Uso de tcpdump para capturar todo el tráfico
Análisis posterior de la captura con Wireshark
Detección de nuevos servidores / servicios
Ampliación de la superficie de ataque
54
Análisis de tráfico con proxy web
OWASP Zap / Burp Suite / Webscarab
55
Análisis de tráfico con proxy web
https: Certificado SSL + Perfil de confianza
56
Ataques del lado servidor
57
Ataques del lado servidor
Objetivo: analizar puertos abiertos y servicios
publicados así como posibles vulnerabilidades tipo web
58
Ataques del lado servidor
Basada en la información obtenida durante el mapeo
de la aplicación y la captura de tráfico.
Análisis de puertos abiertos y servicios publicados
TCP
UDP
Análisis de posibles vulnerabilidades existentes
Análisis de existencia de IDS/IPS/WAF
Uso de proxy web para análisis de tráfico web en
busca de posibles vulnerabilidades (SQLi, XSS,
CSRF, …)
59
Análisis de tráfico con proxy web
Ejemplo: Vulnerabilidad Cross Site Request Forgery
60
Ataques de lado cliente
61
Ataques de lado cliente
Análisis de binario, sistema de ficheros y runtime
62
Análisis del sistema de ficheros
Usuarios: root y mobile
63
Jerarquía de sistema de ficheros
Estándar FHS (Filesystem Hierarchy Standard)
64
Directorio /Applications
Todas las aplicaciones pre-instaladas (y Cydia)
65
Directorio /var/containers/Bundle/Applications
Apps instaladas con App Store, Cydia e IPA Installer
66
Estructura común de directorios de una App
/AppName.app iTunesArtwork iTunesMetadata.plist
Dentro de /AppName.app
Binario, ficheros de propiedades, bases de datos…
67
Bases de datos en aplicaciones
Posible existencia de bases de datos locales
Posibles extensiones: .db .sqlite .sql
Uso de find para localización
68
Acceso a base de datos de MobileNotes
App pre-instalada para escribir notas en iOS
Ejemplo de acceso a las notas del dispositivo
69
Ficheros plist: Lista de propiedades
Tipo de fichero: Apple binary property list• Los ficheros plist son binarios y no pueden ser leídos como texto.
• La utilidad plutil nos permite leer estos ficheros con formato xml.
• Los ficheros plist pueden ser extraídos de dispositivos sin jailbreak.
• Con iExplorer o extrayendo del backup de iTunes.
70
Ficheros plist: Lista de propiedades
Tipo de fichero: Apple binary property list
71
Ataques de lado cliente
Análisis de binario, sistema de ficheros y runtime
72
Análisis del binario
Información genérica del binario
Información de sub-binarios y arquitecturas
Volcado de clases
Análisis de símbolos
Análisis de dependencias
Análisis de strings
Comprobación de cifrado de la aplicación
Comprobación de activación de ASLR (PIE)
Desensamblado
Depuración
73
Información genérica del binario
Herramienta: rabin2 (Radare2 Framework)
74
Información de sub-binarios y arquitecturas
Herramienta: otool
75
Listado de símbolos del binario
Herramienta: Rabin2 (Radare2 Framework)
# rabin2 –s AppBinary
76
Listado de strings del binario
Herramienta: Rabin2 (Radare2 Framework)
# rabin2 –z AppBinary
77
Depuración, desensamblado y parcheo
Herramientas: Hopper y Radare2
78
Ataques de lado cliente
Análisis de binario, sistema de ficheros y runtime
79
Runtime: Análisis en tiempo de ejecución
Aprovechar información obtenida de símbolos
Aprovechar información obtenida de strings
Realizar volcado de clases
Analizar métodos, funciones, argumentos…
Ejecutar la aplicación en dispositivo
Hacer un “hook” (engancharnos) al proceso
Invocar métodos en tiempo de ejecución
Method Swizzle: cambiar comportamiento de un
método / función en tiempo de ejecución
80
Volcado de clases de una aplicación
Importante: Apps Pre-Instaladas vs Otras Apps
Otras Apps: App Store / Cydia / IPA Installer
Apps Pre-Instaladas: no están cifradas
No precisan de descifrado previo para volcado de clases
Otras Apps: pueden estar cifradas
Precisan de descifrado previo para volcado de clases
Herramienta para descifrado: Clutch
Herramienta para volcado: class-dump
81
Volcado de clases con class-dump
Con aplicaciones pre-instaladas (sin cifrar)
Volcado instantáneo
82
Volcado de clases con class-dump
Con aplicaciones no pre-instaladas
Las aplicaciones del AppStore se firman y se cifran
Con class-dump obtendríamos volcado ilegible
Necesidad de descifrar previamente el binario
Opción 1: Descifrar aplicación completa
Obtener un fichero .ipa (aplicación empaquetada)
Descomprimir el fichero .ipa con binario descifrado
Opción 2: Descifrar solo el binario
Hacer volcado con class-dump
83
Volcado de clases con class-dump
Ejemplo de volcado de aplicación cifrada
84
Descifrado de una aplicación
Herramienta: Clutch
Lista de apps y descifrado de binario
85
¡Binario descifrado!
Ahora ya podemos hacer el volcado…
¿O no?
86
Class-dump: Problema con fat binaries
Binarios “gordos” que incluyen varios sub-binarios de
distintas arquitecturas para mantener la
compatibilidad (por ejemplo: ARMv7 y ARM64)
87
Lipo[succión] a un fat binary
Herramienta: Lipo
Objetivo: Extraer un sub-binario
88
Ahora sí, ya tenemos el volcado.
Ahora vamos a “jugar” ;-)
89
Soccer Stars
¿Qué es?
90
Soccer Stars
¿Qué nos interesa?
91
Soccer Stars: Clases interesantes
UserInfo.h
92
Soccer Stars: Métodos interesantes
setCoins y setCash
93
Soccer Stars: Hook y ¡a jugar con métodos!
Herramienta: Cycript
94
Soccer Stars: Hook y ¡a jugar con métodos!
Herramienta: Cycript
95
Soccer Stars: Hook y ¡a jugar con métodos!
Herramienta: Cycript
96
Soccer Stars: Hook y ¡a jugar con métodos!
Herramienta: Cycript
97
Gratitud: La mejor actitud
Gracias por
su atención