Pentesting Android
\> whoami
Juan Antonio Calles
Responsible del Centro Hacking de everis
50% de Flu Project
Doctorando en Informtica
Twitter: @jantonioCalles
Blog: www.flu-project.com
Introduccin a la seguridad
en terminales mviles
2. Reversing de aplicaciones mviles
3. Anlisis Forense en dispositivos mviles
Android
Qu es?
Plataforma open source para dispositivos mviles
Se basa en el kernel de Linux 2.6
Es mantenida por la Open Handset Alliance (OHA),
grupo de fabricantes de dispositivos mviles,
desarrolladores de software, y desarrolladores de
componentes.
OHA cuenta, entre otros, con integrantes como Vodafone,
Telefnica, T-Mobile o LG Uplus.
Caractersticas de Android
Caractersticas principales:
Soporte a medios:
Framework de aplicaciones
Mquina virtual Dalvik, optimizada para dispositivos mviles.
Navegador integrado Webkit.
SQLite como motor de base de datos.
Soporte para audio/vdeo/imgenes
Bluetooth, EDGE, 3G, y WiFi
Cmaras, GPS, brjula y acelermetros
Telefona GSM
Pantalla tctil
Market
SDK (Software Development Kit)
Permitir acceder por USB al terminal
Distribucin de versiones
Sistema de ficheros en Android
YAFFS (Yet Another Flash File System)
YAFFS1 (tamao mximo del sistema de ficheros: 1 GiB*)
YAFFS2 (mejora de prestaciones, tamao mximo del FS: 8 GiB)
En la versin 2.3 (Gingerbread) del Nexus S de Google ya se utiliza EXT4.
*GiB=Gibibyte (230Bytes)
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, msica, etc.
/data/: Almacena los datos de usuario y aplicaciones:
/data/app/: Almacena aplicaciones
/data/data/: Almacena datos de las aplicaciones
Incluye un subdirectorio por aplicacin, con los
permisos de esa aplicacin (un usuario en Linux).
Particiones de Android
Particiones estndar de la memoria interna.
/boot
(Arranque del dispositivo)
/system
(Sistema Operativo)
/recovery
(Particin de recuperacin)
/data
(Datos de aplicaciones)
/cache
(Informacin de acceso frecuente)
/misc
(Informacin de configuracin)
Particiones pertenecientes a la tarjeta SD:
/sdcard
(Configuraciones y datos de aplicaciones, imgenes, etc.)
/sd-ext
(Extensin de /data)
Informacin importante en Android
Datos
Ubicacin
Calendario
/data/data/com.android.providers.calendar/
Browser Data
/data/data/com.android.providers.browser/
Download History
Location Cache
Gmail
/data/data/com.android.providers.downloads/
/data/data/com.google.android.location/
/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/
Seguridad en Android
Nivel de kernel
Control de Acceso
SEAndroid: mdulo para soportar polticas de seguridad para el control de acceso
Sandboxing de aplicaciones: las app usan un usuario univoco distinto a root o system
Antivirus, poltica de contraseas, MDM, etc.
Cifrado del sistema de ficheros (desde versin 4)
Seguridad en Android
Nivel de aplicacin
Solicitud de permisos en el AndroidManifest.xml:
Informacin personal (calendario, contactos, )
Informacin del dispositivo (Datos de red, SMS, ..)
Sino aceptas los permisos no puedes instalar
Firma de aplicaciones
Requisito de Google Play
Evitar la modificacin de la aplicacin
Reversing de aplicaciones
mviles
3. Anlisis Forense en dispositivos mviles
Fundamentos de aplicaciones Android
Java + Android SDK
Cada aplicacin se ejecuta en una instancia de la mquina 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
Mquina Virtual Dalvik
Interpreta archivos en el formato Dalvik Executable (*.dex)
La conversin de .class a .dex se realiza con la herramienta dx.
Cdigo fuente
Compilador
Java
JAR
Conversor
DX
Dalvik VM
Anlisis 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 raz
3. Introducir el comando:
apktool d NombreApp.apk ./RutaDeSalida
Ej. apktool.bat d facebook.apk fb
Demo
Anlisis del AndroidManifiest.xml
1.
Ejecutar: apktool d facebook.apk fb
Reversing de aplicaciones Android
Extraer el cdigo fuente de la aplicacin a partir del fichero .apk
En el proceso de empaquetado:
.java
.class
compilador
java
.dex
dx
Para el proceso de reversing
.java
.class
JD-Gui
.dex
dex2jar
Demo
Reversing de aplicacin APK de Android
1.
Ejecutar: dex2jar.bat facebook.apk
2.
Ejecutar jd-gui.exe
3.
Abrir facebook_dex2jar.jar
Anlisis Forense en
dispositivos mviles
El O jetivo del A alista Fo e se es o testa a las p egu tas
Qu ha ocurrido? dnde? cundo? cmo? por qu?
Qu podemos analizar?
Partes
Tarjeta SIM
Memoria interna
Unidades Flash
Discos SD
Posibles pasos de un Anlisis Forense a un terminal mvil
1
Preservar las evidencias
Obtener informacin del dispositivo
Obtener datos de la tarjeta SD
Volcado de la memoria RAM
Adquirir imagen fsica de la memoria interna
Live Forensics
Adquirir informacin de la tarjeta SIM
Informe
Preservar las evidencias
Y redactar el fichero de cadena de custodia
Obtener informacin 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 mvil
Software de sincronizacin
Obtener datos de la tarjeta SD
SD, MicroSD, MiniSD, etc.
En las tarjetas SD no se almacena la informacin del sistema
Se almacenan datos de usuario como archivos grandes,
multimedia, fotos, vdeos, etc.
El proceso de extraccin es bastante sencillo y se centra en el uso
de ciertas herramientas.
Adquisicin 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, mapendola como solo lectura para
no daar 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
Volcado de memoria RAM
LiME - Linux Memory Extractor (Android)
Herramienta Open Source para anlisis forense de memoria RAM
Permite volcar la memoria RAM directamente a la tarjeta SD a travs de ADB (lo
veremos posteriormente)
Descarga: http://code.google.com/p/lime-forensics/
Adquirir imagen fsica de la memoria interna
Clonacin Hardware vs clonacin Software
Clonacin Hardware
UFED (Universal Forensic Extraction Device)
$4000
Clonacin Software
Para realizar una clonacin va software en Android necesitaremos:
Manualmente en Android (opcin barata):
1.
Instalar el SDK de Android en un PC
2.
Conectar el mvil al PC mediante ADB
3.
Rootear (al menos temporalmente) el mvil con Android
4.
Clonar mediante dd las particiones del mvil
Automticamente (opcin cara):
1.
Adquirir un producto de anlisis forense automtico
Instalacin de SDK (Software Development Kit)
Una vez instalado el SDK, conectar mvil con modo depuracin USB activado
Y si o tie e UB Depu ado a tivado y ue e os a tiva lo
pero tiene la pantalla protegida con clave?
Smudge Attack
Solicitar clave al dueo
Ingeniera 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 mvil (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 travs de recovery
Una vez rooteado, podremos utilizar dd para realizar la clonacin bit a bit de las
distintas particiones del terminal
Demo
Rootear mvil Android 2.3.3
Adquisicin de imgenes (clonacin)
Formas de extraccin
A travs 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 mviles.
IDE (/dev/hd* = hard drive)
SCSI o SATA (/dev/sd*)
MTD (/dev/mtd*)
Podemos obtener ms informacin
inspeccionando /dev y /proc
de
los
dispositivos
Qu archivos podemos clonar?
Particiones:
Correspondencia de particiones y puntos de montaje:
Ejemplo de clonacin de particin boot (mtd2):
Adquisicin de imgenes con dd
Copiar DD de la memoria SD a un PC
Comando push
Analizando volcados con FTK Imager
Live Forensics
Es interesante realizar un Fo e se en vivo para analizar el
comportamiento del sistema arrancado.
Realizar el anlisis, 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
anlisis.
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
Cmo 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 anlisis 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.
Se puede descargar desde aqu: https://github.com/sch3m4/forensic
Demo
Anlisis forense en Whatsapp
Oxigen Forensics Suite
Analiza todo el mvil
El problema de los mviles chinos (30% de mviles del mundo)
Hardware y software no estndar
http://www.edecdigitalforensics.com/tarantula-chinese-cell-phone-analysis-kit
Extrae registros de llamadas, SMS, agenda, contraseas, IMEI, etc.
El problema de los mviles chinos (30% de mviles del mundo)
Hardware y software no estndar
http://www.cellebrite.com/es/mobile-forensic-products/ufed-chinex.html
Extrae lgica y fsicamente datos probatorios y contraseas de telfonos con chips chinos:
MTK y Spreadtrum
Adquirir informacin de la tarjeta SIM
En este punto ya podremos apagar el mvil y recuperar la SIM para analizarla
SMART Card: contiene 16-64 Kb de memoria, un procesador y un
sistema operativo.
Identifica al subscritor, el nmero de telfono y contiene el
algoritmo para autenticar al subscriptor en la red.
Analizando identificadores de la SIM
ICCID (Integrated Circuit Card ID): Nmero 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 mvil cambia de rea, registra el LAI en la SIM y la enva 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): Nmero 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 mvil cambia de rea, registra el LAI en la SIM y la enva al
operador.
Cuando se apaga y se enciende, lo recupera de la SIM y busca el LAI
donde estaba
Analizando otra informacin
Usaremos MOBILedit!
Contactos
Listado de llamadas recibidas/enviadas
SMS enviados/recibidos
Analizando otra informacin
Usaremos MOBILedit!
Contactos
Listado de llamadas recibidas/enviadas
SMS enviados/recibidos
Informe
Ejemplo:
Un prrafo de presentacin.
Secciones:
Objeto de la Pericia
Elementos Ofrecidos
Operaciones Realizadas
Conclusiones.
Un prrafo de cierre, elevacin y recibo en devolucin.
Preguntas?
Gracias!
juan.antonio.calles.garcia@everis.com
jantonio.calles@flu-project.com
@jantonioCalles