seguridad en móviles - innovarioja.tv_.pdf · • /boot (arranque del dispositivo) • /system...
TRANSCRIPT
• 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
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
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
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”
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é?
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
• 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)
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?
• 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
• 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?
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.
• 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)
• 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