Está en la página 1de 7

+34 691 225 633

Rev. Febrero 2021

Autor:
Alejandro Cortés López

Investigación Forense

Introducción.
En la investigación forense de computadores convencionales, como portátiles,
ordenadores de sobremesa, dispositivos de almacenamiento de datos, etc., el
procedimiento de extracción de la evidencia por lo general se emplean
herramientas de software en un proceso característico que puede revelar
actividades irregulares o delictivas, pero en los dispositivos móviles, donde
existe una amplia variedad de sistemas operativos cuyas versiones y capas de
visualización se van actualizando con el paso del tiempo, hace que la labor de
realizar la imagen forense sea un poco más difícil que lo que en un principio
pudiéramos pensar, por no hablar de las dificultades que el fabricante pueda
llegar a imponer a la investigación, como ocurre con Apple o las citadas capas
de visualización de Xiaomi.

Dejando de lado el gran avance que supone disponer de un analizador de la


compañía Cellebrite, que emplea tecnología propietaria para extraer
información de los dispositivos móviles (incluso cuando se encuentren
bloqueados), nos vamos a centrar en la plataforma Android, ya que la cuota de
mercado de este sistema operativo alcanza el 84% frente al casi 16% de iOS
(según IDC). Aunque son datos de España, son extrapolables a cualquier país
(exceptuando Japón, EEUU y UK, países cuya penetración de iOS es enorme).

+34 691 225 633


Rev. Febrero 2021

Antes de entrar en las variadas aplicaciones, archivos y demás componentes del


sistema Android, es obligatorio hacer constar de uno de los procedimientos más
importantes mediante el cual podremos acceder a la información contenida
dentro de un dispositivo Android, y no es otro que el Android Debugging
Bridge (ADB): es una herramienta en línea de comandos que permite al usuario
establecer comunicación con dispositivos físicos o virtuales provistos de
sistemas operativos Android. Está diseñada como una aplicación cliente
servidor y consta de 3 componentes que interactúan entre sí:

A. Un cliente que se ejecuta en la máquina de desarrollo y que se pone en


funcionamiento a través del comando adb.

B. Un servicio local en el dispositivo móvil, que funciona en segundo plano


como daemon, cuya misión es la de atender llamadas procedentes del cliente
adb que se ejecuta en la máquina de desarrollo.

C. Un servidor que se ejecuta en segundo plano en la máquina de desarrollo y


gestiona el proceso de comunicación entre el cliente y los servicios adb que
corren en los dispositivos móviles Android.

ADB es una herramienta compleja y muy potente, mediante la cual se realiza la


depuración de la mayoría de las aplicaciones Android. Una vez conectado el
cable entre el equipo de desarrollo y el dispositivo Android se ha de verificar
que la depuración por USB se encuentra activada en el terminal. A
continuación, se ejecuta en la máquina de desarrollo el comando adb, el cuales
establece la conexión del dispositivo por medio del demonio que se encuentra
instalado en el sistema Android.

Dependiendo del dispositivo, al lanzar la aplicación de adb, puede rootearse


automáticamente o no. Como norma general, no suele ser así, por lo que hay
que recurrir a variadas técnicas. Al no tener privilegios de usuario, lo mismo
solo deja listar directorios pero nada más. Debemos intentar llegar al
directorio /data/data, que es donde se almacenan los datos de las aplicaciones
y la información personal del usuario. En algunos casos, es imposible siquiera
que admita el comando cd.

Dado que estamos en la asignatura de Análisis Forense, no podemos proceder


con técnicas de hacking/cracking en el dispositivo, por lo que si el terminal está
protegido, se deberá actuar con la máxima prudencia: la finalidad de una

+34 691 225 633


Rev. Febrero 2021

actuación forense siempre es causar el menor daño posible, para que la


corrupción de la prueba sea lo menor posible.

Existen fórmulas para realizar un rooting temporal del dispositivo, que varían
de una versión de Android a otras, consiguiendo privilegios de superusuario
temporales que desaparecen tras realizar un rearranque del sistema, dejando el
dispositivo en el mismo estado en el que se encontraba con anterioridad. Uno
de los más utilizados es dejar en un directorio que se pueda acceder con
normalidad una aplicación denominada su en la ruta de acceso de las
aplicaciones del sistema (normalmente en /system/bin) o cualquier otra
ubicación que se dispongan permisos de acceso para todas las aplicaciones,
como suele ocurrir en un directorio temporal. Con este acceso root temporal, se
podrán acceder a todos los directorios que contengan información sensible del
dispositivo, así como realizar volcados de memoria si se considera oportuno.

Estructuras de datos.
Los dispositivos móviles Android acumulan grandes cantidades de
información, especialmente de las aplicaciones, que funcionan como agente
fundamental en el proceso de gestión y almacenamiento de información,
especialmente desde la perspectiva del usuario. Todas las aplicaciones de
Android se programan en Java y se ejecutan en la máquina virtual Dalvik sobre
la que funcionan.

Los datos del usuario son generados por interacción directa del dispositivo móvil,
comenzando por los contactos telefónicos, que son los primeros por los que se
empieza, para continuar por el historial de las llamadas entrantes y salientes, los
mensajes de texto (tanto SMS como MMS), mensajes de correo electrónico,
mensajería electrónica, fotografías y videos realizados por el usuario, archivos
multimedia (películas, canciones, etc), historial de navegación por internet,
coordenadas geográficas, entradas en redes sociales, archivos procedentes de
descargas, historial de consultas en buscadores... y un largo etcétera.

Aunque los dispositivos Android pueden almacenar la información en tarjetas


externas a la propia circuitería, en soportes de almacenamiento microSD, lo
habitual es que el propio sistema operativo decide dónde quiere guardar el
contenido, y éste se realiza en la memoria NAND del terminal, grabándose de
forma persistente para que no se pierdan tras un apagado del sistema. El
método es similar al que se realizaría en un disco duro tradicional, aunque
existen diferencias importantes. Android utiliza uno de los siguientes métodos:

+34 691 225 633


Rev. Febrero 2021

• Almacenamiento interno.

• Preferencias compartidas (shared preferences)

• Bases de datos SQLite.

• Almacenamiento externo.

• Almacenamiento en la nube.

El almacenamiento interno es gestionado por las API del sistema (abreviatura de


Application Programming Interfaces, siendo un conjunto de definiciones y de
protocolos que se emplea para desarrollar e integrar el software de las
aplicaciones), y suele comprender tanto las preferencias compartidas como las
bases de datos SQLite. Pueden emplear formatos especiales, pero nunca fuera de
la zona del sistema de archivos reservados para la aplicación correspondiente.

Se ha de tener en cuenta que Android funciona sobre Linux, por lo que la


estructura de archivos seguirá la jerarquía de directorios de Unix, ya que fue
sobre la que se inspiró su creador, con su sistema de permisos y su diseño
basado en la abstracción de recursos. Lo que el usuario ve en la pantalla del
dispositivo móvil, se encuentra almacenada en archivos XML y bases de datos
en algún lugar del árbol de directorios de Linux.

+34 691 225 633


Rev. Febrero 2021

Las aplicaciones de navegación de archivos nos permiten ver parte del árbol
de directorios, dispuesto en forma de carpetas amarillas sobre un fondo
blanco o negro según el theme que estemos empleando en el dispositivo,
aunque sólo nos muestran las partes accesibles al usuario en la tarjeta
microSD o el espacio FAT simulado en la memoria NAND. Como norma
general, la libertad de movimientos queda restringida a aquellas zonas en las
que se guardan las imágenes del usuario, las tomadas por la cámara o las
compartidas a través de internet.

Para acceder al árbol de directorios, se hace necesario establecer una conexión


ADB, empleando un cable de conexión USB o a través de un enlace
inalámbrico. Si el dispositivo está rooteado se podrá acceder como
superusuario a todos los directorios.

Si se busca información sobre el propietario del dispositivo móvil nos interesa


especcialmente dos ubicaciones: el punto de montaje de la tarjeta SD (o el
espacio FAT simulado en NAND) y la partición de datos del usuario. Estos
directorios existen en todos los sistemas Android, independientemente del
nivel de API y de las configuraciones del fabricante.

Como norma general, existe un directorio para cada aplicación, ya sea ésta de
sistema o instalada por el usuario. Dentro de éste encontraremos otro que
contienen los componentes de la aplicación: ejecutables, parámetros de
configuración en archivos XML, recursos de la aplicación (gráficos, mapas,
mensajes de texto, documentación) y, por último, la materia prima que
andamos buscando, información y elementos de evidencia, alojados
convenientemente dentro de archivos de bases de datos SQLite.

Los formatos de los archivos que contienen la información que estamos


buscando hemos dicho que suelen ser bases de datos SQLite, pero también
podemos encontrarnos los en archivos XML. Este tipo de archivo almacena su
información en texto plano, con etiquetas de apertura y cierre tal y como
emplea HTML, del que deriva.

Ingeniería Inversa.
En ocasiones, no solo hace falta conocer la información que estamos buscando,
sino que se hace necesario realizar tratamientos de Ingeniería Inversa a
aplicaciones debido a malware o ciberataques producidos por las mismas
aplicaciones. Dado que las aplicaciones están escritas en java, se dispone de

+34 691 225 633


Rev. Febrero 2021

descompiladores capaces de extraer el código fuente de la aplicación, como


dex2jar, Apktool y derivados. Realizar Ingeniería Inversa sobre Android es
relativamente fácil, ya que los archivos de las aplicaciones, con extensión apk,
son en realidad archivos comprimidos con ZIP y descomprimirlos resulta
supersencillo. Si se poseen conocimientos de java, se puede interpretar el
código obtenido por medio de dex2jar para descubrir las trazas del malware e
identificar las instrucciones sospechosas relacionadas con acciones ilegítimas
incluidas en la aplicación.

Bases de datos SQLite


XML es el formato que emplea Android para guardar parámetros de
configuración del sistema operativo y de las aplicaciones, pero la mayor
cantidad de información se almacena en bases de datos SQLite. La extensión
típica de esta base de datos es .db, y se caracteriza porque no está basado en un
sistema cliente/servidor, sino que está pensado para su ejecución de forma
local en los dispositivos, independientemente del sistema operativo empleado.

Las bases de datos están constituidas por tablas, donde almacenan la


información en forma de registros, divididos en distintos campos que contienen
los datos. Es muy posible que la base de datos de una aplicación pueda
contenter incluso tablas vacías, y que guarde únicamente la información en una
o dos tablas.

Un elemento de considerable importancia son las marcas de tiempo, ya que son


de mucha utilidad para explicar cómo tuvieron lugar y se sucedieron los
hechos, a fin de establecer una línea de tiempo adecuada para cada caso. Como
norma general, se hallan incluidas en formatos específicos del software que las
procesa, y no son necesariamente legibles para un observador humano.

Mensajes SMS y MMS.


Android utiliza una aplicación de mensajería para gestionar y archivar mensajes
multimedia, localizada en el directorio android.providers.telephony, empleando
varias subcarpetas para guardar los datos de configuración y funcionamiento. Las
bases de datos se guardan en el subdirectorio databases, con dos bases de datos:
msmsms.db y telephony.db. La primera contiene el texto de todos los mensajes y
la segunda los datos técnicos de configuración del operador.

+34 691 225 633


Rev. Febrero 2021

Herramientas de análisis
En ocasiones, se necesitan herramientas más potentes para acceder a la
información contenida en el dispositivo, como los editores hexadecimales.
Pasando los archivos obtenidos por este tipo de herramientas, podemos conocer
metadatos adicionales, encontrar archivos de bases de datos eliminados que
inicialmente no se pudieran localizar, incluso examinar particiones y sistemas
de archivos, realizando la correspondiente imagen forense del sistema.

Soluciones integradas.
En un párrafo anterior se ha mencionado la solución de Cellebrite, más
concretamente, Cellebrite UFED: es una plataforma hardware transportable
para la adquisición de evidencias electrónicas en cualquier entorno; pero no es
la única, también podríamos recurrir a Oxygen Forensic, una suite rusa de
software para PC, incluso a ADEL, un modelo de concepto para la adquisición
automatizada de bases de datos SQLite.

Bibliografía:
https://source.android.cm

http://developer.android.com/sdk/index.html

http://www.vmware.com/es

https://www.virtualbox.org

https://www.xda-developers.com

https://clockworkmod.com

También podría gustarte