Este artículo presenta el análisis forense de Android y las técnicas utilizadas para realizar investigaciones forenses en Android. Hablaremos de los sistemas de archivos de Android, la adquisición de datos, el análisis y las diversas herramientas disponibles para la extracción de datos de Android.
Introducción
El mercado de los teléfonos inteligentes está creciendo cada vez más. Con los cambios drásticos en la tecnología, los teléfonos inteligentes se están convirtiendo en objetivos de los delincuentes. Debido al hecho de que la mayoría de la gente es completamente adicta a los dispositivos móviles para hacer nuestras tareas diarias, que van desde la configuración de un recordatorio para desear lo mejor a nuestros seres queridos en ocasiones especiales, a las transacciones bancarias en línea, los dispositivos móviles contienen una gran cantidad de datos sensibles que son de interés para un investigador. Dado que Android es uno de los principales sistemas operativos para teléfonos inteligentes, es importante tener conocimientos de análisis forense de Android.
El análisis forense de Android es diferente del análisis forense de disco normal por varias razones. Soporta varios sistemas de archivos que son específicos de Android. Podemos buscar los siguientes datos en los dispositivos Android: SMS, MMS, correos electrónicos, registros de llamadas, contactos, fotos, calendarios, notas, historial del navegador, ubicaciones GPS, contraseñas, datos almacenados en tarjetas SD, etc.
Es importante entender los sistemas de archivos, las estructuras de directorios y cómo y dónde se almacenan los datos en los dispositivos antes de entrar en el análisis forense real.
Estructura de directorios de Android
Android tiene una estructura de directorios específica. Podemos ver la estructura de directorios del dispositivo utilizando «adb shell». También es posible ver la estructura de directorios del dispositivo utilizando DDMS. La siguiente figura muestra el sistema de archivos de mi dispositivo «Sony Xperia E» utilizando «adb shell».
La figura anterior muestra muchos archivos y carpetas en el dispositivo actual. Las ubicaciones más importantes para un analista forense son /system, /data, /sdcard, /ext_card.
/system: Contiene datos específicos del sistema operativo.
Como podemos ver en la figura anterior, este directorio contiene varios subdirectorios para guardar información sobre las apps del sistema, fuentes, bibliotecas, ejecutables, etc.
/data: Contiene datos específicos del usuario, como los datos almacenados por una aplicación de SMS. Podemos ver los archivos ejecutables de cada aplicación instalada en el directorio «/data/app». Esto requiere privilegios de root, lo que significa que un usuario sin un dispositivo rooteado no puede ver el contenido de este directorio. La siguiente figura muestra cómo se puede ver el binario de cada aplicación instalada en el dispositivo (la salida está truncada).
Los datos del usuario residen en el directorio «/data/data//». Por razones de seguridad, los datos de cada directorio no pueden ser accedidos por otras aplicaciones.
/sdcard y /ext_card: En este caso concreto, tenemos sdcard para el almacenamiento interno y ext_card para el almacenamiento externo. Por lo general, sdcard se da para el almacenamiento externo. Estos se utilizan para almacenar los datos del usuario, tales como imágenes, archivos de música, videos, etc.
Sistemas de archivos de Android
Tener un conocimiento básico de los sistemas de archivos de Android siempre es bueno antes de sumergirse en la ciencia forense de Android. Esto es porque Android tiene soporte para varios sistemas de archivos. La partición principal del sistema de archivos de Android se suele dividir como YAFFS2 (Yet Another Flash File System). YAFFS2 está diseñado específicamente para sistemas embebidos como los teléfonos inteligentes. Proporciona una mayor eficiencia y rendimiento.
Para ver el listado de sistemas de archivos soportados, podemos utilizar el siguiente comando en «adb shell».
«cat /proc/filesystems»
Como podemos ver en la figura anterior, obtuvimos una lista de sistemas de archivos soportados por el dispositivo. La entrada «nodev» junto al sistema de archivos indica que no hay ningún dispositivo físico asociado a ese sistema de archivos en particular. Android admite los sistemas de archivos ext2, ext3 y ext4 (utilizados por los sistemas Linux) y el sistema de archivos vfat utilizado por los sistemas basados en Windows. Dado que está dirigido a dispositivos móviles, Android soporta los sistemas de archivos YAFFS y YAFFS2, ya que requiere soportar los chips NAND utilizados en estos dispositivos.
El sistema de archivos de Android está dividido en diferentes particiones. Para ver las diferentes particiones que están montadas en un dispositivo Android, podemos obtener un shell en el dispositivo y ejecutar el siguiente comando: «mount». Esto se muestra en la siguiente figura.
Como podemos ver en la figura anterior, hay varias particiones montadas en el dispositivo.
Si observamos la figura anterior, hay algunas particiones importantes del sistema de archivos como /system, /cache, /data que utilizan ext4 como su tipo de sistema de archivos en lugar de YAFFS. Esto se debe a que, a partir de Gingerbread, Android ha sustituido el sistema de archivos YAFFS por ext4.
Métodos de adquisición de datos
La adquisición de datos es el proceso de extracción de datos de las pruebas. Como hemos comentado anteriormente, la adquisición de datos en dispositivos móviles no es tan sencilla como la adquisición forense de discos duros estándar. Estas técnicas de adquisición de datos se dividen a grandes rasgos en los siguientes tipos.
Adquisición manual:
El examinador utiliza la interfaz de usuario del dispositivo móvil para investigar el contenido. Mientras navega por el dispositivo, el examinador toma fotografías de cada pantalla. Este método no requiere ninguna herramienta para realizar la adquisición de datos. Aparte de las ventajas, la mayor desventaja de este método es que sólo se pueden recuperar los datos visibles para los usuarios en el teléfono y, obviamente, requiere mucho tiempo.
Adquisición física:
Similar al proceso de adquisición física en la ciencia forense digital estándar, el proceso de adquisición física en los dispositivos móviles crea una copia bit a bit de un sistema de archivos completo. Crea una copia de todo el sistema de archivos que contiene datos presentes en un dispositivo, incluidos los datos eliminados y el espacio no asignado.
Adquisición lógica:
La extracción lógica adquiere información del dispositivo utilizando la interfaz de programación de aplicaciones del fabricante del equipo original para sincronizar el contenido del teléfono con un ordenador personal.
La mayoría de las herramientas disponibles de forma gratuita realizan la adquisición lógica. La Adquisición Lógica es el proceso de extracción de los datos que son accesibles a los usuarios del dispositivo y, por lo tanto, no puede adquirir los datos borrados o los datos en el espacio no asignado. La afirmación anterior tiene limitaciones en algunos casos.
Planificación de una tarjeta SD con FTK Imager
FTK Imager se puede descargar desde el siguiente enlace. http://www.accessdata.com/support/product-downloads
Es importante obtener una copia bit a bit de la tarjeta SD del teléfono, ya que puede ser utilizada como un valioso tesoro de datos durante las investigaciones. Como mejor práctica, debemos utilizar un bloqueador de escritura para mantener la integridad de las pruebas.
Las tarjetas SD generalmente son del sistema de archivos FAT32. Por lo tanto, podemos utilizar las herramientas de imagen tradicionales y adquirir la imagen de la tarjeta SD. En esta sección, vamos a utilizar una herramienta popular conocida como FTK Imager para obtener la imagen de la tarjeta SD.
Aquí están los pasos:
- Extraiga con seguridad la tarjeta SD del dispositivo móvil y conéctela a la estación de trabajo utilizando un lector de tarjetas.
-
Lance la herramienta FTK Imager. Esto aparece como se muestra en la figura siguiente.
-
Ahora, navegue hasta «Archivo» y haga clic en «Crear imagen de disco» como se muestra a continuación.
El paso anterior abre una nueva ventana para seleccionar el tipo de adquisición.
Como estamos tratando de crear una imagen de la tarjeta SD completa, he elegido «Unidad física». Se abre una nueva ventana para seleccionar la unidad física como se muestra a continuación.
He elegido «PHYSICALDRIVE 2» de 1GB que en nuestro caso es la tarjeta SD. Una vez seleccionada la opción adecuada, hacemos clic en finalizar. Aparece otra ventana donde podemos añadir el destino así como el tipo de imagen a crear.
Al hacer clic en el botón «Añadir», se abre una nueva ventana para seleccionar el tipo de imagen de destino.
En nuestro caso, elegimos «Raw» que da una imagen «dd». A diferencia de otros formatos de imagen como «E01», la imagen «dd» no almacenará sus metadatos en la imagen. Al hacer clic en siguiente, se muestra otra ventana en la que FTK Imager solicita información sobre el elemento de prueba. Podemos rellenar los detalles apropiados y hacer clic en «siguiente» u omitirlo si lo estamos haciendo como un rastro.
Como podemos ver en la figura anterior, hemos proporcionado la ruta de destino y el nombre del archivo de salida. Por último, haga clic en Finalizar para iniciar la creación de imágenes.
Haga clic en «Iniciar» para comenzar el proceso.
-
Tras finalizar el proceso, FTK Imager muestra una nueva ventana en la que muestra los resultados de la verificación del hash. Esto se muestra en la siguiente figura.
Ahora, la imagen creada puede ser analizada más a fondo utilizando herramientas tradicionales de análisis forense.
Adquisición de imágenes del sistema de archivos de Android:
En esta sección, veremos cómo realizar la adquisición de datos de las particiones del sistema de archivos de Android.
Nota: para poder seguir el siguiente proceso, el dispositivo debe estar rooteado.
Utilizaremos la popular herramienta «dd» para realizar nuestro trabajo. «dd» está presente en Android por defecto en la ubicación «/system/bin». Esto se muestra en la siguiente figura.
Ahora, vamos a ver las ubicaciones de las particiones de nuestro interés utilizando el comando mount.
La siguiente es la entrada asociada a la partición «/data» de la salida anterior.
/dev/block/platform/msm_sdcc.3/by-num/p16 /data ext4 rw,nosuid,nodev,relatime,noauto_da_alloc,data=ordered 0 0
Entonces, vamos a utilizar el siguiente comando para extraer esta partición en particular utilizando «dd».
dd if=/dev/block/platform/msm_sdcc.3/by-num/p16 of=/mnt/sdcard/output.img
El comando anterior se explica a continuación.
if = archivo de entrada
of = archivo de salida a crear
output.img = nombre de la imagen de salida a crear.
Incluso podemos especificar el tamaño del bloque utilizando la opción «bs» en dd.
Tras finalizar el proceso anterior, podemos sacar este archivo utilizando herramientas como Droid Explorer. Incluso podemos hacerlo utilizando el comando adb pull.
La siguiente captura de pantalla muestra el comando para extraer la imagen en nuestra estación de trabajo utilizando el comando adb pull.
Ahora, podemos utilizar esta imagen para hacer nuestro análisis posterior en el dispositivo.