Pentesting de Aplicaciones iOS Miguel Á. Arroyo · 53 Análisis de tráfico de red Diferenciar...

98
cccccccccccccccccc CyberCamp.es Pentesting de Aplicaciones iOS Miguel Á. Arroyo

Transcript of Pentesting de Aplicaciones iOS Miguel Á. Arroyo · 53 Análisis de tráfico de red Diferenciar...

Page 1: Pentesting de Aplicaciones iOS Miguel Á. Arroyo · 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

cccccccccccccccccc

CyberCamp.es

Pentesting de

Aplicaciones iOS

Miguel Á. Arroyo

Page 2: Pentesting de Aplicaciones iOS Miguel Á. Arroyo · 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

# whoami

2

# IS Auditor – SVT Cloud&Security Services

# Hack&Beers founder

# Hacking Solidario co-founder

# Twitter: @miguel_arroyo76

# Blog: www.hacking-etico.com

Page 3: Pentesting de Aplicaciones iOS Miguel Á. Arroyo · 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

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

Page 4: Pentesting de Aplicaciones iOS Miguel Á. Arroyo · 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

4

Introducción a la seguridad en iOS

Page 5: Pentesting de Aplicaciones iOS Miguel Á. Arroyo · 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

5

iOS Security Guide de Apple

Page 6: Pentesting de Aplicaciones iOS Miguel Á. Arroyo · 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

6

Diagrama de arquitectura de seguridad en iOS

Page 7: Pentesting de Aplicaciones iOS Miguel Á. Arroyo · 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

7

Secure Boot Chain

Procesos de arranque en iOS

BootROM

LLB iBootiOS

Kernel

Page 8: Pentesting de Aplicaciones iOS Miguel Á. Arroyo · 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

8

Autorización de software de sistema

Prevención de “downgrade”

Page 9: Pentesting de Aplicaciones iOS Miguel Á. Arroyo · 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

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

Page 10: Pentesting de Aplicaciones iOS Miguel Á. Arroyo · 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

10

Secure Enclave

Co-procesador de cifrado: Gestión Touch ID y Credenciales

Page 11: Pentesting de Aplicaciones iOS Miguel Á. Arroyo · 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

11

Touch ID

Autenticación biométrica con huella dactilar

Page 12: Pentesting de Aplicaciones iOS Miguel Á. Arroyo · 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

12

App Code Signing

Firma de aplicaciones: Autenticidad e integridad de una App

Page 13: Pentesting de Aplicaciones iOS Miguel Á. Arroyo · 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

13

Runtime process security

Seguridad en tiempo de ejecución: sandboxing

Page 14: Pentesting de Aplicaciones iOS Miguel Á. Arroyo · 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

14

Runtime process security

ASLR – DEP – Stack Canaries

Page 15: Pentesting de Aplicaciones iOS Miguel Á. Arroyo · 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

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.

Page 16: Pentesting de Aplicaciones iOS Miguel Á. Arroyo · 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

16

OWASP Mobile Security Project

Page 17: Pentesting de Aplicaciones iOS Miguel Á. Arroyo · 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

17

OWASP – Open Web Application Security Project

Proyecto abierto dedicado a determinar y combatir

las causas que hacen que el software sea inseguro.

Page 18: Pentesting de Aplicaciones iOS Miguel Á. Arroyo · 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

18

OWASP

¿A quién va dirigido?

Objetivos

Aplicable en…

Desarrollo Seguridad

Ayuda a…

Desarrollo seguro de Apps

Evaluar la seguridad de

Apps

Page 19: Pentesting de Aplicaciones iOS Miguel Á. Arroyo · 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

19

OWASP

Seguridad desde el diseño

Page 20: Pentesting de Aplicaciones iOS Miguel Á. Arroyo · 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

20

OWASP

Mobile Security Project

Page 21: Pentesting de Aplicaciones iOS Miguel Á. Arroyo · 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

21

Top 10 Mobile Risks & Controls

Page 22: Pentesting de Aplicaciones iOS Miguel Á. Arroyo · 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

22

OWASP Mobile Security Project

Top 10 Mobile Risks

Page 23: Pentesting de Aplicaciones iOS Miguel Á. Arroyo · 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

23

OWASP Mobile Security Project

Definición de controles: OWASP + enisa

Page 24: Pentesting de Aplicaciones iOS Miguel Á. Arroyo · 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

24

OWASP Mobile Security Project

Top 10 Mobile Controls

Page 25: Pentesting de Aplicaciones iOS Miguel Á. Arroyo · 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

25

Guías para desarrolladores y auditores

Page 26: Pentesting de Aplicaciones iOS Miguel Á. Arroyo · 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

26

OWASP Mobile Security Project

Guías

Developer Cheat Sheet

Secure Mobile Development

App Security Testing Cheat Sheet

Security Testing Guide

Page 27: Pentesting de Aplicaciones iOS Miguel Á. Arroyo · 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

27

OWASP Mobile Security Project

Developer Cheat Sheet

Page 28: Pentesting de Aplicaciones iOS Miguel Á. Arroyo · 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

28

OWASP Mobile Security Project

Security Testing Guide

Page 29: Pentesting de Aplicaciones iOS Miguel Á. Arroyo · 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

29

OWASP Mobile Security Project

Centrándonos en iOS…

Page 30: Pentesting de Aplicaciones iOS Miguel Á. Arroyo · 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

30

OWASP Mobile Security Project

Auditor Cheat Sheet

Page 31: Pentesting de Aplicaciones iOS Miguel Á. Arroyo · 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

31

Arsenal de herramientas para auditores

Page 32: Pentesting de Aplicaciones iOS Miguel Á. Arroyo · 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

32

OWASP Mobile Security Project

Herramientas

Page 33: Pentesting de Aplicaciones iOS Miguel Á. Arroyo · 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

33

OWASP Mobile Security Project

Radare2 – www.radare.org

Page 34: Pentesting de Aplicaciones iOS Miguel Á. Arroyo · 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

34

Preparación del entorno de trabajo

Page 35: Pentesting de Aplicaciones iOS Miguel Á. Arroyo · 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

35

Entorno de trabajo

Romper la cadena de seguridad: Jailbreak

Page 36: Pentesting de Aplicaciones iOS Miguel Á. Arroyo · 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

36

Ejemplo de herramienta para Jailbreak

Pangu Team

Page 37: Pentesting de Aplicaciones iOS Miguel Á. Arroyo · 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

37

Cydia

El AppStore “alternativo”

Page 38: Pentesting de Aplicaciones iOS Miguel Á. Arroyo · 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

38

Acceso por SSH al dispositivo iOS

¡Ojo! Credenciales por defecto: root / alpine

Page 39: Pentesting de Aplicaciones iOS Miguel Á. Arroyo · 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

39

Gestión de paquetes con APT

APT 0.7 Strict

Page 40: Pentesting de Aplicaciones iOS Miguel Á. Arroyo · 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

40

Otras herramientas

Herramientas necesarias

• nmap

• sqlite3

• plutil

• clutch

• wget

• netstat

• file

• top

• ps

• unzip

• curl

• find

• tcpdump

• nano

• …

Page 41: Pentesting de Aplicaciones iOS Miguel Á. Arroyo · 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

41

Aplicaciones vulnerables para probar

Damn Vulnerable Web Application

Page 42: Pentesting de Aplicaciones iOS Miguel Á. Arroyo · 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

42

Aplicación vulnerable para probar

Damn Vulnerable iOS Application

damnvulnerableiosapp.com

Page 43: Pentesting de Aplicaciones iOS Miguel Á. Arroyo · 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

43

A tener en cuenta antes de empezar

Page 44: Pentesting de Aplicaciones iOS Miguel Á. Arroyo · 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

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.

Page 45: Pentesting de Aplicaciones iOS Miguel Á. Arroyo · 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

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

Page 46: Pentesting de Aplicaciones iOS Miguel Á. Arroyo · 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

46

Top 10 de riesgos y controles

Siempre tenerlos muy presentes

Page 47: Pentesting de Aplicaciones iOS Miguel Á. Arroyo · 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

47

Por dónde empezar

Echamos manos a nuestra “chuleta”

Page 48: Pentesting de Aplicaciones iOS Miguel Á. Arroyo · 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

48

Mapeo de la aplicación

Page 49: Pentesting de Aplicaciones iOS Miguel Á. Arroyo · 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

49

Mapeo de la aplicación

Mapeo de plataforma y arquitectura de la aplicación

Page 50: Pentesting de Aplicaciones iOS Miguel Á. Arroyo · 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

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

Page 51: Pentesting de Aplicaciones iOS Miguel Á. Arroyo · 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

51

Ataques de red

Page 52: Pentesting de Aplicaciones iOS Miguel Á. Arroyo · 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

52

Análisis de tráfico de red

Objetivo: capturar información sensible y detectar

posibles vulnerabilidades en las comunicaciones

Page 53: Pentesting de Aplicaciones iOS Miguel Á. Arroyo · 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

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

Page 54: Pentesting de Aplicaciones iOS Miguel Á. Arroyo · 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

54

Análisis de tráfico con proxy web

OWASP Zap / Burp Suite / Webscarab

Page 55: Pentesting de Aplicaciones iOS Miguel Á. Arroyo · 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

55

Análisis de tráfico con proxy web

https: Certificado SSL + Perfil de confianza

Page 56: Pentesting de Aplicaciones iOS Miguel Á. Arroyo · 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

56

Ataques del lado servidor

Page 57: Pentesting de Aplicaciones iOS Miguel Á. Arroyo · 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

57

Ataques del lado servidor

Objetivo: analizar puertos abiertos y servicios

publicados así como posibles vulnerabilidades tipo web

Page 58: Pentesting de Aplicaciones iOS Miguel Á. Arroyo · 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

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

Page 59: Pentesting de Aplicaciones iOS Miguel Á. Arroyo · 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

59

Análisis de tráfico con proxy web

Ejemplo: Vulnerabilidad Cross Site Request Forgery

Page 60: Pentesting de Aplicaciones iOS Miguel Á. Arroyo · 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

60

Ataques de lado cliente

Page 61: Pentesting de Aplicaciones iOS Miguel Á. Arroyo · 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

61

Ataques de lado cliente

Análisis de binario, sistema de ficheros y runtime

Page 62: Pentesting de Aplicaciones iOS Miguel Á. Arroyo · 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

62

Análisis del sistema de ficheros

Usuarios: root y mobile

Page 63: Pentesting de Aplicaciones iOS Miguel Á. Arroyo · 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

63

Jerarquía de sistema de ficheros

Estándar FHS (Filesystem Hierarchy Standard)

Page 64: Pentesting de Aplicaciones iOS Miguel Á. Arroyo · 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

64

Directorio /Applications

Todas las aplicaciones pre-instaladas (y Cydia)

Page 65: Pentesting de Aplicaciones iOS Miguel Á. Arroyo · 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

65

Directorio /var/containers/Bundle/Applications

Apps instaladas con App Store, Cydia e IPA Installer

Page 66: Pentesting de Aplicaciones iOS Miguel Á. Arroyo · 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

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…

Page 67: Pentesting de Aplicaciones iOS Miguel Á. Arroyo · 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

67

Bases de datos en aplicaciones

Posible existencia de bases de datos locales

Posibles extensiones: .db .sqlite .sql

Uso de find para localización

Page 68: Pentesting de Aplicaciones iOS Miguel Á. Arroyo · 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

68

Acceso a base de datos de MobileNotes

App pre-instalada para escribir notas en iOS

Ejemplo de acceso a las notas del dispositivo

Page 69: Pentesting de Aplicaciones iOS Miguel Á. Arroyo · 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

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.

Page 70: Pentesting de Aplicaciones iOS Miguel Á. Arroyo · 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

70

Ficheros plist: Lista de propiedades

Tipo de fichero: Apple binary property list

Page 71: Pentesting de Aplicaciones iOS Miguel Á. Arroyo · 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

71

Ataques de lado cliente

Análisis de binario, sistema de ficheros y runtime

Page 72: Pentesting de Aplicaciones iOS Miguel Á. Arroyo · 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

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

Page 73: Pentesting de Aplicaciones iOS Miguel Á. Arroyo · 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

73

Información genérica del binario

Herramienta: rabin2 (Radare2 Framework)

Page 74: Pentesting de Aplicaciones iOS Miguel Á. Arroyo · 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

74

Información de sub-binarios y arquitecturas

Herramienta: otool

Page 75: Pentesting de Aplicaciones iOS Miguel Á. Arroyo · 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

75

Listado de símbolos del binario

Herramienta: Rabin2 (Radare2 Framework)

# rabin2 –s AppBinary

Page 76: Pentesting de Aplicaciones iOS Miguel Á. Arroyo · 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

76

Listado de strings del binario

Herramienta: Rabin2 (Radare2 Framework)

# rabin2 –z AppBinary

Page 77: Pentesting de Aplicaciones iOS Miguel Á. Arroyo · 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

77

Depuración, desensamblado y parcheo

Herramientas: Hopper y Radare2

Page 78: Pentesting de Aplicaciones iOS Miguel Á. Arroyo · 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

78

Ataques de lado cliente

Análisis de binario, sistema de ficheros y runtime

Page 79: Pentesting de Aplicaciones iOS Miguel Á. Arroyo · 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

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

Page 80: Pentesting de Aplicaciones iOS Miguel Á. Arroyo · 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

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

Page 81: Pentesting de Aplicaciones iOS Miguel Á. Arroyo · 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

81

Volcado de clases con class-dump

Con aplicaciones pre-instaladas (sin cifrar)

Volcado instantáneo

Page 82: Pentesting de Aplicaciones iOS Miguel Á. Arroyo · 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

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

Page 83: Pentesting de Aplicaciones iOS Miguel Á. Arroyo · 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

83

Volcado de clases con class-dump

Ejemplo de volcado de aplicación cifrada

Page 84: Pentesting de Aplicaciones iOS Miguel Á. Arroyo · 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

84

Descifrado de una aplicación

Herramienta: Clutch

Lista de apps y descifrado de binario

Page 85: Pentesting de Aplicaciones iOS Miguel Á. Arroyo · 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

85

¡Binario descifrado!

Ahora ya podemos hacer el volcado…

¿O no?

Page 86: Pentesting de Aplicaciones iOS Miguel Á. Arroyo · 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

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)

Page 87: Pentesting de Aplicaciones iOS Miguel Á. Arroyo · 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

87

Lipo[succión] a un fat binary

Herramienta: Lipo

Objetivo: Extraer un sub-binario

Page 88: Pentesting de Aplicaciones iOS Miguel Á. Arroyo · 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

88

Ahora sí, ya tenemos el volcado.

Ahora vamos a “jugar” ;-)

Page 89: Pentesting de Aplicaciones iOS Miguel Á. Arroyo · 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

89

Soccer Stars

¿Qué es?

Page 90: Pentesting de Aplicaciones iOS Miguel Á. Arroyo · 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

90

Soccer Stars

¿Qué nos interesa?

Page 91: Pentesting de Aplicaciones iOS Miguel Á. Arroyo · 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

91

Soccer Stars: Clases interesantes

UserInfo.h

Page 92: Pentesting de Aplicaciones iOS Miguel Á. Arroyo · 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

92

Soccer Stars: Métodos interesantes

setCoins y setCash

Page 93: Pentesting de Aplicaciones iOS Miguel Á. Arroyo · 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

93

Soccer Stars: Hook y ¡a jugar con métodos!

Herramienta: Cycript

Page 94: Pentesting de Aplicaciones iOS Miguel Á. Arroyo · 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

94

Soccer Stars: Hook y ¡a jugar con métodos!

Herramienta: Cycript

Page 95: Pentesting de Aplicaciones iOS Miguel Á. Arroyo · 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

95

Soccer Stars: Hook y ¡a jugar con métodos!

Herramienta: Cycript

Page 96: Pentesting de Aplicaciones iOS Miguel Á. Arroyo · 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

96

Soccer Stars: Hook y ¡a jugar con métodos!

Herramienta: Cycript

Page 97: Pentesting de Aplicaciones iOS Miguel Á. Arroyo · 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

97

Gratitud: La mejor actitud

Page 98: Pentesting de Aplicaciones iOS Miguel Á. Arroyo · 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

Gracias por

su atención