pentesting de aplicaciones ios miguel Á. arroyo · # owasp mobile security project # top 10 mobile...

Post on 26-Apr-2020

5 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

top related