60
Pentesting Android

Seguridad en Móviles - innovarioja.tv_.pdf · • /boot (Arranque del dispositivo) • /system (Sistema Operativo) ... Procedimiento similar al realizado con un disco duro ... •

Embed Size (px)

Citation preview

Pentesting Android

• Juan Antonio Calles

• Responsible del Centro Hacking de everis

• 50% de Flu Project

• Doctorando en Informática

• Twitter: @jantonioCalles

• Blog: www.flu-project.com

\> whoami

2. Reversing de aplicaciones móviles

3. Análisis Forense en dispositivos móviles

Introducción a la seguridad

en terminales móviles

• Plataforma open source para dispositivos móviles

• Se basa en el kernel de Linux 2.6

• Es mantenida por la Open Handset Alliance (OHA),

grupo de fabricantes de dispositivos móviles,

desarrolladores de software, y desarrolladores de

componentes.

• OHA cuenta, entre otros, con integrantes como Vodafone,

Telefónica, T-Mobile o LG Uplus.

Android

¿Qué es?

• Características principales:

• Framework de aplicaciones

• Máquina virtual Dalvik, optimizada para dispositivos móviles.

• Navegador integrado Webkit.

• SQLite como motor de base de datos.

• Soporte a medios:

• Soporte para audio/vídeo/imágenes

• Bluetooth, EDGE, 3G, y WiFi

• Cámaras, GPS, brújula y acelerómetros

• Telefonía GSM

• Pantalla táctil

• Market

• SDK (Software Development Kit)

• Permitirá acceder por USB al terminal

Características de Android

Distribución de versiones

YAFFS1 (tamaño máximo del sistema de ficheros: 1 GiB*)

YAFFS2 (mejora de prestaciones, tamaño máximo del FS: 8 GiB)

En la versión 2.3 (Gingerbread) del Nexus S de Google ya se utiliza EXT4.

*GiB=Gibibyte (230Bytes)

Sistema de ficheros en Android

YAFFS (Yet Another Flash File System)

Hay tres carpetas fundamentales del sistema de ficheros.

• /system/: Corresponde al sistema operativo android

• /mnt/sdcard/ ó /sdcard/: Se corresponde con la tarjeta

SD en un dispositivo real. Contiene el almacenamiento

de ficheros, música, etc.

• /data/: Almacena los datos de usuario y aplicaciones:

• /data/app/: Almacena aplicaciones

• /data/data/: Almacena datos de las aplicaciones

• Incluye un subdirectorio por aplicación, con los

permisos de esa aplicación (un usuario en Linux).

Sistema de ficheros en Android

• Particiones estándar de la memoria interna.

• /boot (Arranque del dispositivo)

• /system (Sistema Operativo)

• /recovery (Partición de recuperación)

• /data (Datos de aplicaciones)

• /cache (Información de acceso frecuente)

• /misc (Información de configuración)

• Particiones pertenecientes a la tarjeta SD:

• /sdcard (Configuraciones y datos de aplicaciones, imágenes, etc.)

• /sd-ext (Extensión de /data)

Particiones de Android

Datos Ubicación

Calendario /data/data/com.android.providers.calendar/

Browser Data /data/data/com.android.providers.browser/

Download History /data/data/com.android.providers.downloads/

Location Cache /data/data/com.google.android.location/

Gmail /data/data/com.google.android.providers.gmail/

SMS & MMS /data/data/com.android.providers.telephony/

Contactos /data/data/com.android.providers.contacts/

Whatsapp /data/data/com.whatsapp/databases

Backup: /sdcard/WhatsApp/databases/

Información importante en Android

Control de Acceso

SEAndroid: módulo para soportar políticas de seguridad para el control de acceso

Sandboxing de aplicaciones: las app usan un usuario univoco distinto a root o system

Antivirus, política de contraseñas, MDM, etc.

Cifrado del sistema de ficheros (desde versión 4)

Seguridad en Android

Nivel de kernel

Solicitud de permisos en el AndroidManifest.xml:

Información personal (calendario, contactos, …)

Información del dispositivo (Datos de red, SMS, ..)

Sino aceptas los permisos no puedes instalar

Firma de aplicaciones

Requisito de Google Play

Evitar la modificación de la aplicación

Seguridad en Android

Nivel de aplicación

Reversing de aplicaciones

móviles

3. Análisis Forense en dispositivos móviles

Fundamentos de aplicaciones Android

Java + Android SDK

Cada aplicación se ejecuta en una instancia de la máquina virtual Dalvik

Ficheros .apk

Empaqueta todo el contenido de las aplicaciones Android bajo un mismo fichero

Es un archivo comprimido .zip

Contiene:

assets

META-INF

res

resources.asrc

AndroidManifest.xml

classes.dex

Máquina Virtual Dalvik

Interpreta archivos en el formato Dalvik Executable (*.dex)

La conversión de .class a .dex se realiza con la herramienta dx.

Código fuente Compilador

Java JAR

Conversor DX

Dalvik VM

Análisis del AndroidManifiest.xml

• Si descomprimimos el fichero .apk y abrimos el

fichero AndroidManifest.xml, no veremos nada

porque está codificado.

• Pasos a seguir:

1. Descargar la herramienta apktool

2. Copiar el archivo .apk en la carpeta raíz

3. Introducir el comando:

apktool d NombreApp.apk ./RutaDeSalida

Ej. apktool.bat d facebook.apk fb

Demo

Análisis del AndroidManifiest.xml

1. Ejecutar: apktool d facebook.apk fb

Reversing de aplicaciones Android

Extraer el código fuente de la aplicación a partir del fichero .apk

En el proceso de empaquetado:

Para el proceso de reversing

.java .class .dex

compilador java

dx

.dex .class .java

dex2jar JD-Gui

Demo

Reversing de aplicación APK de Android

1. Ejecutar: “dex2jar.bat facebook.apk”

2. Ejecutar “jd-gui.exe”

3. Abrir “facebook_dex2jar.jar”

Análisis Forense en

dispositivos móviles

El O jetivo del A alista Fo e se es o testa a las p egu tas…

¿Qué ha ocurrido? ¿dónde? ¿cuándo? ¿cómo? ¿por qué?

• Tarjeta SIM

• Memoria interna

• Unidades Flash

• Discos SD

¿Qué podemos analizar?

Partes

1 • Preservar las evidencias

2 • Obtener información del dispositivo

3 • Obtener datos de la tarjeta SD

4 • Volcado de la memoria RAM

5 • Adquirir imagen física de la memoria interna

6 • Live Forensics

7 • Adquirir información de la tarjeta SIM

8 • Informe

Posibles pasos de un Análisis Forense a un terminal móvil

1 • Preservar las evidencias

Y redactar el fichero de cadena de custodia

• Identificar el dispositivo

• Marca, modelo y proveedor de servicio

• http://www.phonescoop.com/phones/finder.php

• Otros datos interesantes

• Interfaz de dispositivo

• Etiquetas

• Series

• Hora del móvil

• Software de sincronización

2 • Obtener información del dispositivo

• En las tarjetas SD no se almacena la información del sistema

• Se almacenan datos de usuario como archivos grandes,

multimedia, fotos, vídeos, etc.

• El proceso de extracción es bastante sencillo y se centra en el uso

de ciertas herramientas.

3 • Obtener datos de la tarjeta SD

SD, MicroSD, MiniSD, etc.

1. Extraeremos la tarjeta SD/MicroSD/MiniSD del terminal

2. La insertaremos en un lector de tarjetas, mapeándola como solo lectura para no dañar la evidencia

3. La clonaremos con dd u otra herramienta y calcularemos el hash

4. Analizaremos el clon de la tarjeta con herramientas como Autopsy o FTK Imager

Adquisición de evidencias de una tarjeta SD

Procedimiento similar al realizado con un disco duro

• Herramienta Open Source para análisis forense de memoria RAM

• Permite volcar la memoria RAM directamente a la tarjeta SD a través de ADB (lo

veremos posteriormente)

• Descarga: http://code.google.com/p/lime-forensics/

4 • Volcado de memoria RAM

LiME - Linux Memory Extractor (Android)

Clonación Hardware vs clonación Software

5 Adquirir imagen física de la memoria interna

$4000

Clonación Hardware

UFED (Universal Forensic Extraction Device)

Manualmente en Android (opción barata):

1. Instalar el SDK de Android en un PC

2. Conectar el móvil al PC mediante ADB

3. Rootear (al menos temporalmente) el móvil con Android

4. Clonar mediante dd las particiones del móvil

Automáticamente (opción cara):

1. Adquirir un producto de análisis forense automático

Clonación Software

Para realizar una clonación vía software en Android necesitaremos:

Instalación de SDK (Software Development Kit)

Una vez instalado el SDK, conectar móvil con modo depuración USB activado

• Smudge Attack

• Solicitar clave al dueño

• Ingeniería social

• Uso de herramientas como Screen lock bypass

App, para atacar por fuerza bruta. Son bastante

intrusivas en la RAM y pueden requerir el rooteo

del móvil (que puede no estarlo)

¿Y si o tie e U“B Depu ado a tivado y ue e os a tiva lo pero tiene la pantalla protegida con clave?

$

Puede que no seamos root

¿Qué ocurre si intentamos ejecutar un comando que requiere privilegios?

• No es posible lanzar muchos comandos de ADB sin ser root

• Se podrá realizar un rooteo temporal o permanente:

• Temporal: Uso de software como SuperOneClick o ExynosAbuse

(exploit)

• Permanente: Root a través de recovery

• Una vez rooteado, podremos utilizar dd para realizar la clonación bit a bit de las

distintas particiones del terminal

La importancia de ser Root

Demo

Rootear móvil Android 2.3.3

• A través de DD

dd if=/dev/mtd/mtd1ro of=/sdcard/mtd1ro.dd bs=4096

Adquisición de imágenes (clonación)

Formas de extracción

• Memory Technology Device (MTD): Subsistema Linux utilizado

en medios flash como en móviles.

• IDE (/dev/hd* = hard drive)

• SCSI o SATA (/dev/sd*)

• MTD (/dev/mtd*)

• Podemos obtener más información de los dispositivos

inspeccionando /dev y /proc

¿Qué archivos podemos clonar?

Particiones: Correspondencia de particiones y puntos de montaje:

Ejemplo de clonación de partición “boot” (mtd2):

¿Qué archivos podemos clonar?

Adquisición de imágenes con dd

Comando push

Copiar DD de la memoria SD a un PC

Analizando volcados con FTK Imager

6 Live Forensics

• Es interesante realizar un Fo e se en vivo para analizar el

comportamiento del sistema arrancado.

• Realizar el análisis, si es posible, sobre una copia de la evidencia

para alterar lo menos posible las pruebas.

• Podemos utilizar el emulador de Android de PC virtual para el

análisis.

Forense en WhatsApp

• wa.db, es el fichero donde se almacenan los contactos (para acceder

a él necesitamos ser root)

• msgstore.db.crypt, el fichero donde se almacenan las conversaciones

actuales cifradas .

• msgstore-AAAA-MM-DD.X.db.crypt, fichero con las conversaciones

no recientes cifradas

¿Qué ficheros nos interesan?

• La base de datos está cifrada con el algoritmo AES.

• El fichero de backups de msgstore.db siempre se cifra con la misma clave:

346a23652a46392b4d73257c67317e352e3372482177652c

• Para poder descifrarla podemos utilizar OpenSSL:

¿Cómo desciframos la base de datos mgstore.db.crypt?

• Python (Django)

• Permite descifrar la bbdd de Whatsapp.

• Lanza servidor web para poder ver el contenido de la base de datos de los mensajes

y los contactos.

• Se puede descargar desde aquí: https://github.com/sch3m4/forensic

Herramienta para análisis forense de Whatsapp

WhatsApp Forensic (wForensic)

Demo

Análisis forense en Whatsapp

Analiza todo el móvil

Oxigen Forensics Suite

• http://www.edecdigitalforensics.com/tarantula-chinese-cell-phone-analysis-kit

• Extrae registros de llamadas, SMS, agenda, contraseñas, IMEI, etc.

Hardware y software no estándar

El problema de los móviles chinos (30% de móviles del mundo)

• http://www.cellebrite.com/es/mobile-forensic-products/ufed-chinex.html

• Extrae lógica y físicamente datos probatorios y contraseñas de teléfonos con chips chinos:

MTK y Spreadtrum

Hardware y software no estándar

El problema de los móviles chinos (30% de móviles del mundo)

En este punto ya podremos apagar el móvil y recuperar la SIM para analizarla

7 Adquirir información de la tarjeta SIM

• SMART Card: contiene 16-64 Kb de memoria, un procesador y un

sistema operativo.

• Identifica al subscritor, el número de teléfono y contiene el

algoritmo para autenticar al subscriptor en la red.

• ICCID (Integrated Circuit Card ID): Número de serie que el fabricante da al

chip

• IMSI (International Mobile Subscriber Identity)

• Location Area Identify (LAI)

Las redes de operadores se dividen en áreas locales, cada una tiene

un LAI único.

Si el móvil cambia de área, registra el LAI en la SIM y la envía al

operador.

Cuando se apaga y se enciende, lo recupera de la SIM y busca el LAI

donde estaba

Analizando identificadores de la SIM

• ICCID (Integrated Circuit Card ID): Número de serie que el fabricante da al

chip

• IMSI (International Mobile Subscriber Identity)

• Location Area Identify (LAI)

Las redes de operadores se dividen en áreas locales, cada una tiene

un LAI único.

Si el móvil cambia de área, registra el LAI en la SIM y la envía al

operador.

Cuando se apaga y se enciende, lo recupera de la SIM y busca el LAI

donde estaba

Analizando identificadores de la SIM

• Contactos

• Listado de llamadas recibidas/enviadas

• SMS enviados/recibidos

Usaremos MOBILedit!

Analizando otra información

• Contactos

• Listado de llamadas recibidas/enviadas

• SMS enviados/recibidos

Usaremos MOBILedit!

Analizando otra información

Ejemplo:

• Un párrafo de presentación.

• Secciones:

• Objeto de la Pericia

• Elementos Ofrecidos

• Operaciones Realizadas

• Conclusiones.

• Un párrafo de cierre, elevación y recibo en devolución.

8 Informe

¿Preguntas?

¡Gracias! [email protected]

[email protected]

@jantonioCalles