Sunteți pe pagina 1din 51

¿Qué esconde tu teléfono?

Adquisición forense de dispositivos Android

Vte. Javier García Mayén (@neosysforensics)


Agenda

• Introducción y objetivos
• Conexión del dispositivo
• Proceso de adquisición
Agenda

• Introducción y objetivos
• Conexión del dispositivo
• Proceso de adquisición
Procedimiento de investigación forense

Evaluar y valorar Adquisición de Análisis de las Informe con las


la incidencia evidencias evidencias conclusiones

Warren G. Kruse II y Jay G. Heiser, Computer Forensics: Incident Response Essentials


Procedimiento de investigación forense

Warren G. Kruse II y Jay G. Heiser, Computer Forensics: Incident Response Essentials


Tipos de adquisición forense de datos:

• Adquisición física
Obtención y copiado de los datos bit a bit accediendo para ello
directamente al medio físico.

• Adquisición lógica
Obtención y copiado de los datos desde la capa de abstracción
proporcionada por el sistema de ficheros.
Factores que determinan el tipo de
adquisición en dispositivos Android

1. Finalidad de la investigación
2. Características del terminal
3. ¿Está habilitada la depuración USB?
4. ¿Somos o no somos root?
5. Versión de Android
Factores que determinan el tipo de
adquisición en dispositivos Android

1. Finalidad de la investigación
2. Características del terminal
3. ¿Está habilitada la depuración USB?
4. ¿Somos o no somos root?
5. Versión de Android
Factores que determinan el tipo de
adquisición en dispositivos Android

1. Finalidad de la investigación
2. Características del terminal
3. ¿Está habilitada la depuración USB?
4. ¿Somos o no somos root?
5. Versión de Android
Factores que determinan el tipo de
adquisición en dispositivos Android

1. Finalidad de la investigación
2. Características del terminal
3. ¿Está habilitada la depuración USB?
4. ¿Somos o no somos root?
5. Versión de Android
Factores que determinan el tipo de
adquisición en dispositivos Android

1. Finalidad de la investigación
2. Características del terminal
3. ¿Está habilitada la depuración USB?
4. ¿Somos o no somos root?
5. Versión de Android
Android Donut
Released at september 2009
Version: 1.6

Imagen propiedad de Google Inc.


http://www.android.com/history/
Android Eclair
Released at november 2009
Versions: 2.0, 2.01, 2.1

Imagen propiedad de Google Inc.


http://www.android.com/history/
Android Froyo
Released at june 2010
Versions: 2.2, 2.2.1 - 2.2.3

Imagen propiedad de Google Inc.


http://www.android.com/history/
Android Gingerbread
Released at november 2010
Versions: 2.3.1 - 2.3.7

Imagen propiedad de Google Inc.


http://www.android.com/history/
Android Honeycomb
Released at february 2011
Versions: 3.0, 3.1, 3.2, 3.2.1 - 3.2.6

Imagen propiedad de Google Inc.


http://www.android.com/history/
Android Ice Cream Sandwich
Released at october 2011
Versions: 4.0, 4.0.1 - 4.0.4

Imagen propiedad de Google Inc.


http://www.android.com/history/
Android Jelly Bean
Released at june 2012
Versions: 4.2, 4.2.1, 4.2.2, 4.3, 4.3.1

Imagen propiedad de Google Inc.


http://www.android.com/history/
Android KitKat
Released at october 2013
Versions: 4.4, 4.4.1 - 4.4.4

Imagen propiedad de Google Inc.


http://www.android.com/history/
Android Lollipop
Released at november 2014
Version: 5.0

Imagen propiedad de Google Inc.


http://www.android.com/history/
Fuente: https://developer.android.com/about/dashboards/index.html
Agenda

• Introducción y objetivos
• Conexión del dispositivo
• Proceso de adquisición
Conexión del dispositivo
Autorizar la conexión USB desde el PC
Restricción
• Capa de seguridad para adb desde Android 4.2.2
• Es necesario “Aceptar” para permitir la conexión
• Impide conectar un terminal bloqueado a un pc

Vulnerabilidad
• Android 4.4.2 Secure USB Debugging Bypass
• Reportada por MWRLabs
http://tinyurl.com/ktnqf6r
• Afecta a sistemas Android 4.2.2 a 4.4.2
• Solucionada en Android 4.4.3 y posteriores

¡Desde la llamada de emergencia o la


cámara veremos el mensaje y podremos
autorizar la conexión!
Instalar apk para desbloquear terminal
• Desarrollada por Rohit (@rorot333), http://tinyurl.com/q7sell5
• Solicita el permiso de sistema “android.permission.DISABLE_KEYGUARD”
• Si se termina el proceso vuelve a activarse el bloqueo del terminal

adb install unlockandroid.apk


adb shell "am start -n com.rohit.unlock/.MainActivity"
CVE-2013-6237: Remove device locks

• Reportada por curesec, http://blog.curesec.com/article/blog/26.html

• Afecta a todas las versiones de Android desde la 4.0 a la 4.3

• Puede lanzarse desde un apk o directamente desde adb

• Error en el código de la clase “com.android.settings.ChooseLockGeneric.class”

adb shell am start -n


com.android.settings/com.android.settings.ChooseLockGeneric
--ez confirm_credentials false
--ei lockscreen.password_type 0
--activity-clear-task
Evasión o cracking del bloqueo (requiere root)
Evasión o cracking del método de bloqueo por patrón
• Eliminamos el fichero con el patrón lanzando una shell de root con adb:
adb shell “rm /data/system/gesture.key”

• Descargamos el fichero con el patrón y lo crackeamos con Android Pattern Lock Cracker,
https://github.com/sch3m4/androidpatternlock:
adb pull /data/system/gesture.key gesture.key
python crack.pattern.py gesture.key
...
[+] Gesture:

----- ----- -----


| 1 | | 2 | | |
----- ----- -----
----- ----- -----
| 4 | | 3 | | |
----- ----- -----
----- ----- -----
| 5 | | 6 | | 7 |
----- ----- -----
Evasión o cracking del bloqueo (requiere root)
Evasión o cracking del método de bloqueo por PIN
• Eliminamos el fichero con el PIN lanzando una shell de root con adb:
adb shell “rm /data/system/password.key”

• Cracking an android device's PIN lock password like a BOSS:


http://khorchanov.blogspot.com.es/2013/07/cracking-android-devices-pin-lock.html

• Script para el crack del PIN en terminales Samsung desarrollado por @JoseSelvi:
http://tools.pentester.es/androidpincrack
Smudge attack

• Smudge Attacks on Smartphone Touch Screens


http://tinyurl.com/oeorhqm

• Publicado por un grupo de investigadores de la


Universidad de Pensilvania

• Permite evadir el método de bloqueo de


pantalla mediante patrón

• Se toman fotografías desde distintos ángulos


modificando las propiedades de luz y color

Foto obtenida de Gizmodo


http://tinyurl.com/259whg9
Instalar apk desde el Play Store

Screen Lock Bypass Pro


http://tinyurl.com/7hj7gnp

• Desarrollada por Thomas Cannon

• Tiene un coste de 3,20€

• Necesario conocer user y pass de Gmail

• Para activarla hay que conectar el cargador


Multiplexed Wired Attack

http://greatscottgadgets.com/infiltrate2013/

• Presentado en Infiltrate 2013 por Michael


Ossmann y Kyle Osborn

• Ataque basado en el desarrollo de un


conector MicroUSB 2.0 especial

• Resultados variables en función del terminal y de la versión de software


• Galaxy Nexus con Cyanogenmod: acceso a interfaz de debug desde la que es posible lanzar
una consola y habilitar adb
• Samsung Galaxy SIII con Cyanogenmod: acceso a interfaz de debug desde la que es posible
lanzar una consola de root
Agenda

• Introducción y objetivos
• Conexión del dispositivo
• Proceso de adquisición
Adquisición lógica: AFLogical™ OSE
Características
• Herramienta desarrollada por viaForensics
• Obtención de datos vía Content Providers
• Los datos se vuelcan en ficheros de tipo csv

Restricciones
• Requiere activar la depuración USB
• Datos obtenidos muy limitados
• Genera el volcado en la sdcard

Ventajas
• No requiere ningún tipo de privilegio especial
• Puede instalarse y ejecutarse mediante adb
(com.viaforensic.android.ExtractAllData)

AFLogical™, http://tinyurl.com/q8o9lfj
Howto (Santoku), http://tinyurl.com/of27flo
Adquisición lógica: AFLogical™ OSE

adb devices
adb install AFLogical-OSE_1.5.2.apk
adb shell "am start com.viaforensics.android.aflogical_ose/com.viaforensics.
android.ExtractAllData"
adb pull /sdcard/forensics aflogicalose
Adquisición lógica: adb backup
adb backup -apk -shared -all -system -f file.bak

Ventajas
• No requiere privilegios de root
• Formato de fichero resultante conocido
• Acceso a directorios internos y “seguros”:
/system/app/*.apk
/data/app/*.apk
/data/data/*

Restricciones
• Requiere activar la depuración USB
• Android ≥ 4.0 (Ice Cream Sandwich)
• El terminal tiene que estar desbloqueado*

Unpacking Android backups, http://tinyurl.com/ltcz7le


Intecure Internal Storage in Android, http://tinyurl.com/kogot63
Adquisición lógica: adb backup
Problema
• Si el terminal está bloqueado no podremos iniciar el
proceso

Solución
• Simular la pulsación de la tecla capturando antes los
eventos correspondientes:
adb shell sendevent /dev/input/event1 3 57 598
adb shell sendevent /dev/input/event1 3 48 14
adb shell sendevent /dev/input/event1 3 58 86
adb shell sendevent /dev/input/event1 3 53 537
adb shell sendevent /dev/input/event1 3 54 1127
adb shell sendevent /dev/input/event1 0 0 0
adb shell sendevent /dev/input/event1 3 58 72
adb shell sendevent /dev/input/event1 3 54 1130
adb shell sendevent /dev/input/event1 0 0 0
adb shell sendevent /dev/input/event1 3 57 4294967295
adb shell sendevent /dev/input/event1 0 0 0

Documentation for adb shell getevent/sendevent, http://tinyurl.com/p42cy2c


Adquisición lógica: adb pull

adb pull /device_directory /workstation_directory

Ventajas:
• Técnica muy simple que obtendrá el contenido de forma recursiva
• Directorio local conserva la estructura del directorio adquirido

Restricciones:
• Los datos obtenidos dependen de los privilegios de adb (shell user
por defecto)
• El comando puede fallar en mitad del proceso, por lo que es mejor
dividirlo en varios
Demo 1
Adquisición lógica
Métodos hardware de adquisición física
• Extracción de la NAND (chip-off)
• Técnica destructiva, el móvil queda inservible
• Se retira el chip de la PCB aplicando calor a las
soldaduras
• El chip puede dañarse durante el proceso
• Una vez retirado se extrae su contenido

• Conexión mediante la interfaz JTAG


• Interfaz para testear la PCB
• Variaciones entre los distintos fabricantes
• No todos los fabricantes publican sus especificaciones
Método software de adquisición física
• Es imprescindible contar con acceso adb al terminal
• Pasos genéricos para el proceso de adquisición:
1. Obtener privilegios de root
2. Identificar las particiones a clonar
3. Copiar las herramientas en el terminal
4. Lanzar el proceso de clonado
5. Eliminar los restos del proceso
Adquisición física: obtener privilegios de root
• Si el dispositivo no está rooteado utilizaremos un exploit para
rootearlo de forma temporal
• El exploit dependerá del terminal (marca y modelo), versión de
Android, versión del kernel, etc
• Algunas herramientas/exploits para obtener root temporal:
• SuperOneClick: incluye zergrush y psneuter
• CVE-2012-0056: mempodroid.c
• CVE-2012-6422: exynox-abuse.c
• CVE-2013-4254: arm_perf_exploit.c
• CVE-2013-6282: ptrace_test.c, 31574.c (exploit-db)
• CVE-2014-3153: cube-towel.c, getroot.c, newroot.c
Adquisición física: identificar las particiones
Galaxy Nexus con sistema de ficheros EXT4 e interfaz eMMC*:
$ adb shell "ls -l /dev/block/platform/omap/omap_hsmmc.0/by-name"
ls -l /dev/block/platform/omap/omap_hsmmc.0/by-name
lrwxrwxrwx root root 2014-11-14 13:37 boot -> /dev/block/mmcblk0p7
lrwxrwxrwx root root 2014-11-14 13:37 cache -> /dev/block/mmcblk0p11
lrwxrwxrwx root root 2014-11-14 13:37 dgs -> /dev/block/mmcblk0p6
lrwxrwxrwx root root 2014-11-14 13:37 efs -> /dev/block/mmcblk0p3
lrwxrwxrwx root root 2014-11-14 13:37 metadata -> /dev/block/mmcblk0p13
lrwxrwxrwx root root 2014-11-14 13:37 misc -> /dev/block/mmcblk0p5
lrwxrwxrwx root root 2014-11-14 13:37 param -> /dev/block/mmcblk0p4
lrwxrwxrwx root root 2014-11-14 13:37 radio -> /dev/block/mmcblk0p9
lrwxrwxrwx root root 2014-11-14 13:37 recovery -> /dev/block/mmcblk0p8
lrwxrwxrwx root root 2014-11-14 13:37 sbl -> /dev/block/mmcblk0p2
lrwxrwxrwx root root 2014-11-14 13:37 system -> /dev/block/mmcblk0p10
lrwxrwxrwx root root 2014-11-14 13:37 userdata -> /dev/block/mmcblk0p12
lrwxrwxrwx root root 2014-11-14 13:37 xloader -> /dev/block/mmcblk0p1

Particiones más relevantes: cache, system y userdata

*Managing flash storage with Linux, http://free-electrons.com/blog/managing-flash-storage-with-linux/


Adquisición física: copia de herramientas
Utilizaremos BusyBox, un ejecutable que integra muchas utilidades de
UNIX (ls, df, dd, nc, etc):
$ adb shell "mkdir /dev/tools"
$ adb push busybox-armv4l /dev/tools
$ adb shell "ls -l /dev/tools"
-rw-rw-rw- root root 1072032 2013-07-09 04:02 busybox-armv4l
$ adb shell "chmod 755 /dev/tools/busybox-armv4l“
$ adb shell "ls -l /dev/tools"
-rwxr-xr-x root root 1072032 2013-07-09 04:02 busybox-armv4l

NOTA: si el sistema de ficheros es YAFFS2 subiremos nanddump, en


las mtd-utils, para el proceso de clonado
Adquisición física: proceso de clonado
Creamos un puerto tcp a la escucha para conectar con el terminal:
$ adb forward tcp:5555 tcp:5555

Ejecutaremos el clonado bit a bit mediante dd redirigiendo la salida al


puerto tcp utilizando nc:
$ adb shell "/dev/tools/busybox-armv4l dd if=/dev/block/mmcblk0p12 |
/dev/tools/busybox-armv4l nc -l -p 5555"

En otra consola nos conectamos al puerto tcp y redirigimos los datos


a un fichero; mediante pv mostramos el progreso:
$ nc 127.0.0.1 5555 | pv -i 0.5 > userdata.img

NOTA: si utilizamos la sdcard como destino el clonado es más rápido


Adquisición física: limpiar los restos
Una vez terminado el proceso eliminamos el binario de busybox:
$ adb shell "rm -Rf /dev/tools"

Por último, si hemos obtenido root temporal eliminamos el fichero del


exploit y demás restos asociados y reiniciamos el terminal

NOTA: si hemos utilizado la sdcard del terminal eliminamos la imagen


o imágenes; si hemos insertado una sdcard para el volcado apagamos
el terminal y la retiramos
Método software de adquisición física: recovery
• Proceso ejecutado mediante un recovery personalizado para el terminal
• Secuencia simplificada de pasos a seguir para completar el proceso:
1. Flashear bootloader con recovery personalizado
2. Reiniciar el terminal provocando el arranque del recovery
3. Lanzar el proceso de clonado
4. Restaurar el bootloader original

• Referencias:
Towards a general collection methodology for Android devices
http://dfrws.org/2011/proceedings/07-339.pdf

A study of user data integrity during acquisition of Android devices


http://dfrws.org/2013/proceedings/DFRWS2013-3.pdf
Demo 2: Adquisición física

Demo
Conclusión
El método de adquisición depende de:
1. El tipo de investigación
2. Las limitaciones técnicas
¿Preguntas?

Photo credit: WingedWolf (creative commons)


https://www.flickr.com/photos/wingedwolf/
Bibliografía

S-ar putea să vă placă și