Pentesting Android
\> whoami •
Juan Antonio Calles
•
Responsible del Centro Hacking de everis
•
50% de Flu Project
•
Doctorando Doctor ando en en Informática
•
Twitter: @jantonioCalles
•
Blog: www.flu-project.com
\> whoami •
Juan Antonio Calles
•
Responsible del Centro Hacking de everis
•
50% de Flu Project
•
Doctorando Doctor ando en en Informática
•
Twitter: @jantonioCalles
•
Blog: www.flu-project.com
Introducción a la seguridad en terminales móviles
2. Reversing de aplicaciones móviles 3. Análisis Forense en dispositivos móviles
Android ¿Qué es?
•
•
•
•
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.
Características de Android •
Características principales: •
•
•
•
•
Soporte a medios: •
•
•
•
•
•
•
Framework de aplicaciones Máquina virtual Dalvik, optimizada para dispositivos móviles. Navegador integrado Webkit. SQLite como motor de base de datos.
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)
Distribución de versiones
Sistema de ficheros en Android YAFFS (Yet Another Flash File System)
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.
Sistema de ficheros en Android 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). •
•
•
Particiones de 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)
Información importante en Android Datos
Ubicación
Calendario
/data/data/com.android.providers.calendar/
Browser Data
/data/data/com.android.providers.browser/
Download History Location Cache Gmail SMS & MMS Contactos
/data/data/com.android.providers.downloads/ /data/data/com.google.android.location/ /data/data/com.google.android.providers.gmail/ /data/data/com.android.providers.telephony/ /data/data/com.android.providers.contacts/ /data/data/com.whatsapp/databases
Seguridad en Android Nivel de kernel
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 aplicación 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
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
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 AndroidMa AndroidManifiest.xml nifiest.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.
Ejec Ejecut utar ar:: apk apkto tool ol d fac faceb eboo ook. k.ap apk k fb fb
Reversing de aplicaciones Android
Extraer el código fuente de la aplicación a partir del fichero .apk
En el proceso de empaquetado: .java
.class compilador java
.dex dx
Para Par a el proceso de reversing .java
.class JD-Gui
.dex dex2jar
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 Ojetivo del Aalista Foese es otesta a las pegutas… ¿Qué ha ocurrido? ¿dónde? ¿cuándo? ¿cómo? ¿por qué?
¿Qué podemos analizar? Partes •
•
•
•
Tarjeta SIM Memoria interna Unidades Flash Discos SD
Posibles pasos de un Análisis Forense a un terminal móvil 1
•
Preservar las evidencias
2
•
Obtener información del dispositivo
3
•
Obtener datos de la tarjeta SD
4
•
Volcado de la memoria RAM
5
•
6
•
7
•
8
•
Adquirir imagen física de la memoria interna Live Forensics Adquirir información de la tarjeta SIM Informe
1
•
Preservar las evidencias
Y redactar el fichero de cadena de custodia
2 •
•
Obtener información del dispositivo
•
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
3
•
Obtener datos de la tarjeta SD
SD, MicroSD, MiniSD, etc.
•
•
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.
Adquisición de evidencias de una tarjeta SD Procedimiento similar al realizado con un disco duro 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
4
•
Volcado de memoria RAM
LiME - Linux Memory Extractor (Android)
•
•
•
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/
5
Adquirir imagen física de la memoria interna
Clonación Hardware vs clonación Software
Clonación Hardware UFED (Universal Forensic Extraction Device)
$4000
Clonación Software Para realizar una clonación vía software en Android necesitaremos: 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): Adquirir un producto de análisis forense automático
Instalación de SDK (Software Development Kit) Una vez instalado el SDK, conectar móvil con modo depuración USB activado
¿Y si o tiee U“B Depuado ativado y ueeos ativalo
pero tiene la pantalla protegida con clave?
•
•
•
•
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)
Puede que no seamos root ¿Qué ocurre si intentamos ejecutar un comando que requiere privilegios?
$
La importancia de ser Root •
•
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
Demo Rootear móvil Android 2.3.3
Adquisición de imágenes (clonación) Formas de extracción •
A través de DD
dd if=/dev/mtd/mtd1ro of=/sdcard/mtd1ro.dd bs=4096
¿Qué archivos podemos clonar? •
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 inspeccionando /dev y /proc
de
los
dispositivos
¿Qué archivos podemos clonar? Particiones:
Correspondencia de particiones y puntos de montaje:
Ejemplo de clonación de partición “ boot” (mtd2):
Adquisición de imágenes con dd
Copiar DD de la memoria SD a un PC Comando push
Analizando volcados con FTK Imager
Live Forensics
6 •
•
•
Es interesante realizar un Foese 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
¿Qué ficheros nos interesan? •
•
•
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
¿Cómo desciframos la base de datos mgstore.db.crypt?
•
•
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:
WhatsApp Forensic (wForensic) Herramienta para análisis forense de Whatsapp
•
•
•
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.
Demo Análisis forense en Whatsapp
Oxigen Forensics Suite Analiza todo el móvil
El problema de los móviles chinos (30% de móviles del mundo) Hardware y software no estándar •
•
http://www.edecdigitalforensics.com/tarantula-chinese-cell-phone-analysis-kit Extrae registros de llamadas, SMS, agenda, contraseñas, IMEI, etc.
El problema de los móviles chinos (30% de móviles del mundo) Hardware y software no estándar
•
•
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
7
Adquirir información de la tarjeta SIM
En este punto ya podremos apagar el móvil y recuperar la SIM para analizarla •
•
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.
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 •
•
•
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 otra información Usaremos MOBILedit!
•
•
•
Contactos Listado de llamadas recibidas/enviadas SMS enviados/recibidos
Analizando otra información Usaremos MOBILedit!
•
•
•
Contactos Listado de llamadas recibidas/enviadas SMS enviados/recibidos
Informe
8 Ejemplo: •
•
Un párrafo de presentación. Secciones: •
Objeto de la Pericia
•
Elementos Ofrecidos
•
Operaciones Realizadas
•
Conclusiones.
¿Preguntas?