Está en la página 1de 42

ltimos avances en Anlisis Forense

de sistemas Android

Ismael Valenzuela
Principal Architect, McAfee Strategic Security Services (Foundstone)

El equipo de Foundstone

Fundada en 1999, parte de McAfee desde 2004


Herramientas gratuitas
Whitepapers
Presente en BlackHat desde 2003
Open Research Security Blog:

blog.opensecurityresearch.com

Hacking Exposed Series


@Foundstone / @FSEMEA

Personal
blog.ismaelvalenzuela.com
@aboutsecurity
CISSP, CISM, GREM, GCFA, GCUX
12 aos en Seguridad IT

De qu hablaremos hoy
Por qu Forense en Android
Tcnicas forenses para:

Adquisicin de evidencia
Anlisis de sistema de ficheros
Anlisis de memoria RAM
Anlisis de malware (esttico y dinmico)

Resumen de Herramientas (no exhaustivo)


Demos
Referencias para investigar
Por qu forense en Android?

Malware mvil - Acumulativo


El malware mvil se ha convertido en la categora con ms crecimiento a medida que se
experimentan nuevos ataques dirigidos principalmente a la plataforma Android.
2,000
1,500
1,000
500
0
Q1 10 Q2 10

Q3 10 Q4 10
Q1 11 Q2 11
Q3 11

Q4 11

Muestras nuevas de malware Android / trimestre


En el ltimo trimestre de 2011 el nmero de muestras de malware de Android recibidas se
cuadruplic. La mayora del malware Android est dirigido al envo de mensajes SMS a nmeros
premium. El rooting de dispositivos Android se ha convertido cada vez en tarea ms fcil.
500
400
300
200
100
0
Q1 10 Q2 10 Q3 10 Q4 10 Q1 11 Q2 11 Q3 11 Q4 11

Tendencia clave: recuperacin en Botnets


Las infecciones de Botnets repuntaron fuertemente en Diciembre, aunque estn lejos de sus mximos histricos.
Brasil, Bielorrusia, Colombia, India, Espaa, Turqua y Estados Unidos experimentaron crecimientos
significativos.

Global Botnet Infections per Month


6,000,000
5,000,000
4,000,000
3,000,000
2,000,000
1,000,000
-

Android/Geinimi.A
Cifrado
Comandos, peticiones URL a C&C

Escucha en puerto 5432 el handshake, hi,are you online?

Responde con yes,Im online!


Cambia a puertos 4501 o 6543
Puerta trasera local en puerto 9547

Comandos de backdoor

Reenviar SMS a los servidores C&C


Instalar software, malware o spyware adicional
Reenviar contactos
Generacin de trfico

180.168.68.34
117.135.134.185
google.funimoe.com
www.widifu.com
www.udaore.com
www.frijd.com
www.islpast.com
www.piajesj.com
www.qoewsl.com
www.weolir.com
www.uisoa.com
www.riusdu.com
www.aiucr.com

Qu informacin guardan estos dispositivos?


DISPOSITIVOS
MDICOS

EMBEBIDOS

SMART CARS

ATM / KIOSCOS
ENTRETENIMIENTO

Forensics & Android


Preservacin, Adquisicin,
Anlisis, Reporte
Principio de Locard
Evidencia Digital
Orden de volatilidad
Investigaciones internas,
criminales, litigios civiles,
seguridad nacional, anlisis de
malware, etc.

Desafos
Sistema de Ficheros YAFFS2
Herramientas tradicionales no sirven

Acceso como ROOT al dispositivo


Lagunas legales
Invalida la garanta

Para cada adquisicin lgica del dispositivo la opcin de debugging debe estar
habilitada
Difcil si el telfono est bloqueado con contrasea

Difcil obtener duplicados bit a bit


Dificultad para utilizar Write Blockers
Extraemos el disco duro?
Violacin de la cadena de custodia y principio de integridad
Guardamos volcados de memoria en SD Card?

Soluciones Comerciales vs Open Source


Comerciales

Cellebrite
Encase
Oxygen
ViaForensics
etc..

Open Source
Decas algo de que el Kernel estaba
basado en Linux?
Bien documentado
Extensa comunidad
Aqu va la imagen de la arquitectura de
Android que tantas veces has visto
ya

A Continuacin
Recoleccin de Evidencia
Anlisis de Evidencia

Preparando el entorno
Software Development Kit
Herramienta de desarrollo
Incluye libreras de software, APIs, documentacin y
un emulador!
Soporta Linux, Windows y OSX
Imprescindible para anlisis forense!
Android Debug Bridge Interfaz para acceso al
dispositivo
Install APPS, APK Downloader con Google Chrome
adb install <aplicacion.apk>
Dnde consigo muestras?
http://contagioexchange.blogspot.com.es/
http://malc0de.com/database/

Dnde est la evidencia?


Preferencias compartidas
XML files
Almacenamiento interno
Ficheros creados por el dispositivo, no accesibles por ninguna aplicacin ni por el
usuario (sino es root)
Almacenamiento externo
Generalmente formateado en FAT32 (sin seguridad)
$ adb shell
$ mount
$ ls /mnt/sdcard
SQLite
Permite almacenar una base de datos entera en un solo fichero
Multi plataforma
Ejemplo:
$ adb shell
$ ls /data/data/com.android.email/databases

Dnde est la evidencia


Red
Android proporciona APIs de bajo nivel para interactuar con la red.
Ejemplo:
Instala DROPBOX y busca el fichero files/log.txt
Capturas de trfico
Wireshark
O desde el emulador con la opcin -tcpdump

El Kernel de Linux en Android proporciona multitud de informacin a travs de logs, debuggers, etc:
$ adb shell dmesg
$ adb shell logcat
$ adb shell logcat -b events
$ adb shell dumpsys
$ adb shell dumpstate
$ adb shell bugreport
Bugreport: combina logcat, dupmsys, dumpstate
Miles de lneas
El anlisis manual es prcticamente imposible

Particularidades de Android
Memoria flash NAND
Telfonos, discos USB y otros dispositivos porttiles
No removibles!
Caractersticas muy particulares (op. escritura y borrado
limitadas)
A diferencia de Apple, fabricantes no estn limitados a un
tipo de memoria NAND especfico.
Para ello Android proporciona Flash Translation Layer
(FTL)
Accesible como un dispositivo de bloques a desarrolladores
Implementado en software mediante el subsistema Linux
Memory Technology Devices (MTD)
MTD es Open Source
Nuevos sistemas Android (Samsung) estn migrando a
eMMC donde el controlador FTL est integrado en la
memoria (similar a discos USB y SSD)

$ adb shell
$ mount
mtdblock emula
dispositivos de
bloque
$ ls /dev/mtd*
$ cat /proc/mtd

Forensics & Android


MTD divide la memoria en bloques de 132 KB con 64 bytes Out of Band (OOB) por
cada trozo de 2 KB
OOB guarda YAFFS2 etiquetas, metadatos, bloques errneos, etc.

(132 KB = 64 trozos de 2 KB + 64 trozos de 64 bytes = 128 KB + 4096 bytes)

YAFFS2
Primer sistema de ficheros diseado especficamente para memorias Flash NAND
- Open Source
- Robusto
- Reduce la sobrecarga de la RAM y los tiempos de inicio
Lo que le interesa saber al analista forense:
- Pocas herramientas que entiendan este sistema de ficheros
- Utiliza un sistema de recoleccin de basura que permite la recuperacin de ficheros borrados
con relativa facilidad
- Esta posibilidad decrece con el tiempo incluso si no se est usando el dispositivo
-

http://www1.informatik.uni-erlangen.de/filepool/thesis/diplomarbeit-2011-zimmermann.pdf

Adquisicin
Tres maneras bsicas
Backup
Lgica
Fsica
Espacio asignado vs No asignado
Utiliza un Bloqueador de Escritura
Pueden dar fallos, a veces no exponen todos los dispositivos conectados
Acceso directo a la evidencia?
El investigador debe estar suficientemente formado
Debe proporcionar razones vlidas para seguir ese proceso
Detallar el impacto y la consecuencia de sus acciones
Mantener la trazabilidad (los pasos deben ser reproducibles)

Adquisicin Lgica
Habitualmente suficiente, aunque tiene sus limitaciones (solo se extrae espacio asignado).
Tres mtodos:
Backup
Content Providers
Informacin compartida entre aplicaciones.
AFLogical Open Source Edition (viaExtract comercial)
http://code.google.com/p/android-forensics
A partir de aqu necesitas ROOT
Conecta con ADB y extrae los ficheros que quieres adquirir:
$ adb pull <fichero_a_extraer>
Algunos APK estn cifrados en la SD Card y solo pueden ser adquiridas conectadas
al dispositivo

Adquisicin Fsica
Adquisicin bit a bit, rplica exacta, recupera espacio no asignado
- Android viene con DD
- Va a darte la mayor parte de la memoria interna (incluyendo unallocated space, pero no
puede leer los trozos OOB de las particiones YAFFS2 MTD)
$ dd if=/dev/mtd/mtd2 of=/sdcard/cache.img bs=2048
- Imagen NAND completa
- Incluye OOB
- Utilidad nandump
- Extrae todo los datos de YAFFS2
- Muchas posibilidades de recuperar datos borrados
- Si se ha producido recoleccin de basura se pueden encontrar fragmentos de
ficheros repartidos por la imagen.

Anlisis de Sistema de Ficheros


SDCard
FAT32
Sdcard.img

Disco Interno
YAFFS2
Cache.img
userdata.img
userdata-qemu.img

Examinar:

/proc (utilizar cat)


/data or /data/data and /data/system
/cache
/mnt/sdcard
/mnt/emmc

Sistema de Ficheros
Tcnicas
Tradicionales
File Carving (scalpel)
Magic files (cabeceras conocidas)
Usar firmas especficas para Android
Strings (--all radix) | egrep
Hex Editor
Sqllite (o sqlbrowser si prefieres GUI)
Timelines (en desarrollo)
The Sleuth Kit (mactime)
Log2timeline from Kristinn Gudjonsson

Artefactos en Aplicaciones Android


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

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

Navegador
/data/data/com.android.providers.browser

SMS & MMS


/data/data/com.android.providers.telephony

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

Historial Descargas
/data/data/com.android.providers.downloads

Muchos otros: Youtube, Google Maps, Facebook

Adquisicin y Anlisis de Memoria


Hasta ahora muy poca investigacin
Poca informacin disponible
Debera ser el primer elemento a adquirir (orden de volatilidad)
Informacin estructurada y no estructurada
Strings: datos de aplicaciones, fragmentos de comunicaciones, claves de
cifrado, etc.
Estructuras de kernel: procesos, ficheros abiertos, sockets, etc.

Mtodos para adquirir memoria fsica en Linux no funcionan


/dev/fmem: dispositivo que soporta lectura de RAM para herramientas como DD
Funcin page_is_ram no existe en arquitectura ARM. DD no tendra forma de saber si una
pgina es RAM o memoria de un dispositivo hardware (ver /proc/iomem)
DD en Android tiene un problema de integer overflow que lo hace inutilizable en la
mayora de los dispositivos Android.

Adquisicin y Anlisis de Memoria


Cmo adquirirla?
Live acquisition
Adb shell ps
Adb shell netstat
Adb shell logcat
Dalvik Debugging Monitor Server: proceso por proceso
$ ddms
1 Selecciona un proceso
2 Selecciona DUMP HPROF file para guardar un volcado del
proceso en disco

Adquisicin y Anlisis de Memoria


DMD ahora Lime Forensics (Linux Memory Extractor)
Primera herramienta que permite captura completa de RAM
Loadable Kernel Module
Minimiza los cambios entre espacio usuario/kernel = ++ forense
Vuelca la memoria directamente a la tarjeta SD o a la red a travs de adb
Open Source, disponible desde el 5 de Abril en http://code.google.com/p/
lime-forensics/
Paper Acquisition and analysis of volatily memory from android devices de Digital
Investigation (2012)

Adquisicin y Anlisis de Memoria


Lime via TCP
$ adb push lime.ko /sdcard/lime.ko
$ adb forward tcp:4444 tcp:4444
$ adb shell
$ su
# insmod /sdcard/lime.ko path=tcp:4444

En tu estacin forense:
$ nc localhost 4444 > android_ram.dump

Adquisicin y Anlisis de Memoria


Lime via SD Card
$ adb push lime.ko /sdcard/lime.ko
$ adb shell
$ su
# insmod /sdcard/lime.ko path=/sdcard

En tu estacin forense:
$ adb pull <fichero_creado_en_sdcard>

Adquisicin y Anlisis de Memoria


Analisis
Strings, grep y tu editor de Hex.
Volatility, anlisis de memoria para plataformas Windows (Linux en beta)
Volatilitux
Equivalente a Volatility para Linux y Android
Necesitas un archivo de perfil para Android

Limitaciones actuales en este rea


Carga de mdulos requiere permisos de Root
Compilacin especfica para cada dispositivo
Requiere la obtencin y preparacin del cdigo fuente del Kernel del dispositivo
Requiere compilacin cruzada (cross-compiling) del mdulo de Kernel

Anlisis de Aplicaciones
Enfocado en Malware Analysis
Dos maneras de analizar malware
Anlisis Esttico = examinando el cdigo
Anlisis Dinmico = ejecutando y observando

Esttico

Completa visibilidad de todos los posibles caminos de ejecucin


Es ms difcil de que te hagas dao a ti mismo
Lento, ms complejo
Vulnerable a los mtodos de ofuscacin

Dinmico
Basado en observacin = ms sencillo
Deteccin de emulacin?
No todos queremos contactar con los atacantes

Ficheros APK
No es ms que un fichero ZIP: incluye cdigo y recursos de app.
Lleno de cosas que no son siempre interesantes
META-INF/
Certificados
Fichero manifest lleno de SHA-1 hashes
Assets/
Configuraciones de aplicacin, etc
Manifest/
Fichero XML. Indica los permisos requeridos por la aplicacin.
Realmente un fichero Dbase IV que contiene XML y algn que otro lenguaje.
Afortunadamente tenemos http://code.google.com/android-apktool/
Res/
Otros recursos, principalmente imgenes

Uso de Permisos
Todas las aplicaciones Android deben declarar los permisos que
quieren tener (buena intencin!)
Estadstica de permisos en 1.400 aplicaciones legtimas vs 760
maliciosas.
Nmero medio de peticiones
7 para las maliciosas (algunas llegaron a pedir 39!!)
3 para las legtimas
No es un indicador definitivo pero es algo a tener en cuenta.

Cdigo de Aplicaciones
Las aplicaciones de Android estn basadas en Java
As que el cdigo debe estar en bytecode, verdad?
mmm no! Est en un fichero ejecutable Dalvik
Ejecutable Dalvik, fichero .dex
Formato diseado para ejecutarse en la mquina virtual que corre en el corazn
de Android
El cdigo bytecode de Java se transforma en Dalvik bytecode antes de la
instalacin

Podemos descompilar los archivos .dex


Apktool
Smali/baksmali

Cdigo de Aplicaciones
El cdigo resultante se parece mucho a ensamblador
Aunque tampoco exactamente.
Puesto que originalmente era Java, por qu no volvemos atrs?
Dex2jar
http://code.google.com/p/dex2jar
Herramienta simple de lnea de comandos, multi-plataforma
Una vez en formato JAR, utiliza tu descompilador de Java favorito
JDGUI: http://java.decompiler.free.fr/?q=jdgui

Anlisis de Malware Esttico


Resumen de herramientas tiles:

Smali/Baksmali
APK Tool
Dex2Jar
JD-GUI
Androguard
Understand
IDA (solo para valientes!)

Nueva
APK Inspector, nueva herramienta para anlisis esttico

Ejemplo
HippoSMS
Descargable de servidores Chinos en 2011
Puedes encontrarlo en contagiodump
Comenzamos por descomprimir la applicacin
# unzip hippoSMS.apk
Usamos baksmali para descompilar classes.dex y generar cdigo ms legible en ficheros .smali
# java jar baksmali-1.3.2.jar classes.dex o output
Tambin podemos usar dex2jar y JD-GUI para analizar el fichero .jar resultante
# dex2jar.sh classes.dex

Ver sms/MessageService y network/ServerStub

Anlisis de Malware Dinmico


Dos mtodos
Utilizando un Sandbox tipo Cuckoo para Android
Por ejemplo:
Droidbox - http://code.google.com/p/droidbox/
Instalando y observando el comportamiento manualmente
Captura de trazas de Red
Tcpdump
Wireshark
Interceptacin de DNS y servicios HTTP, IRC, FTP, etc
Recuerda: evita contactar directamente con el atacante
Dale lo que el malware pida!
Utiliza Remnux: http://zeltser.com/remnux/
Distribucin Linux para Ingeniera Inversa de Malware

Otras Iniciativas
Entornos virtualizados pre-configurados
ARE
ARE Toolkit (VirtualBox)
http://redmine.honeynet.org/projects/are/wiki

OSAF (Vmware)
Open Source Android Forensics
www.osaf-community.org

Referencias
Android Mind Reading: Memory Acquisition and Analysis with DMD
and Volatility, por Joe Sylve
Analyzing Mobile Malware, labs.snort.org
Android Forensics: Investigation, Analysis and Mobile Security for
Google Android, por Andrew Hoog

Quieres aprender ms?


Imgenes Android gratuitas con propsito educacional. 10
dispositivos (5 imgenes: 3 YASSF2/2 FAT)
http://viaforensics.com/products/tools/sleuth-kit-yaffs2/

Honeynet Forensics Challenge 9 Mobile Malware


https://www.honeynet.org/node/751

DFRWS 2011
Imgenes concurso en http://www.dfrws.org/2011/challenge/
index.shtml

My ERP Got Hacked


Introduccin al anlisis forense: metodologas y
herramientas
http://blog.ismaelvalenzuela.com/papers-presentations/

Ismael Valenzuela
blog.ismaelvalenzuela.com
Open Security Research
blog.opensecurityresearch.com
@aboutsecurity
@fsemea / @foundstone
linkedin.com/in/ivalenzuela
ismael_valenzuela@mcafee.com

También podría gustarte