#DFIR: No te creas todo lo que leas, porque todo depende del caso: Physical Imaging Android, (Paso a paso)

Hola… ¿Secuaces?

Esta vez ha pasado menos tiempo desde mi última publicación. He podido hacer un poco de magia con el tiempo a base de sacrificar un poco más de sueño. Así que no seas muy duro con el presente contenido. Si algo está mal, lo aceptaré, lo corregiré y lo achacaré a mis ojeras.

Me gusta escribir de noche, hasta altas horas de la madrugada. Es un momento de calma en mi vida, en mi día a día. En ese momento mis adorables ‘Gremlins’ ya están con Morfeo y dispongo del silencio necesario. Me gusta escribir escuchando un poco de música clásica porque me ayuda a centrarme, a relajarme, a despejarme la cabeza de todo lo acaecido durante el día. Particularmente, me gustan las piezas que suenan en Radio Clásica.

 

Creo que no he tocado nunca, en este Blog, nada relacionado con dispositivos móviles. Esta será la primera publicación que haga sobre ello. Concretamente trataré la adquisición física de terminales móviles, Android. No. No nos vamos de ‘Shopping‘. Vamos a ver la creación de una imagen forense de un teléfono móvil.

Se podría decir que no he tenido un especial interés en publicar nada sobre terminales móviles. Sí. Puedes meterte conmigo por tal atrocidad. Puedes meterte conmigo por no centrarme en algo que todos llevamos encima; en algo que lleva dentro toda nuestra vida; en algo que supera ampliamente en número al ordenador para acceder a nuestros datos.

Y es que, de un terminal móvil, se puede extraer toda nuestra vida: Aplicaciones usadas, mensajes enviados y recibidos, sitios web visitados, contenido multimedia personal, datos de las diversas nubes, datos de geolocalización, información personal e información corporativa, correos electrónicos, … Datos. Todo, con más artefactos que en un Sistema Windows, (más aún si cabe).

Los Smartphones son los dispositivos electrónicos que más saben sobre nosotros mismos. Con ellos compartimos más datos personales y empresariales que con cualquier otra persona de nuestro círculo más cercano.

Por ello son un objeto de análisis forense sumamente interesante. Recuerda que ‘Somos lo que navegamos’.

¿Por qué este repentino interés en los terminales móviles? Porque estoy un poco… ¿’molesto’?, (no sé si es el término que estoy buscando), de ver el mismo contenido en varios artículos de cuatro líneas, (cuando digo el mismo, es el mismo), sin documentar absolutamente nada. Sin imágenes, sin referencias, sin enlaces. Al estilo de un ‘copy-paste’. Al estilo de «¿Cómo hacer ‘X’ en cuatro sencillos pasos?». De verdad lo digo. No cuesta nada hacer aunque sea una simple captura de pantalla para entender qué ha pasado. Lo siento pero, le pese a quien le pese, no puedo con ello. No puedo con ese tipo de artículos, a pesar de que puedan servir de apoyo o de inicio para comprobar algo. Por ello, lo primero que te voy a decir es:

No te creas nada que leas y no esté documentado, pues todo depende del caso. Y como todo depende del caso, cada uno tendrá sus inconvenientes y habrá distintas formas de hacer las cosas.

Puede que sus líneas sirvan en algunos casos. Quizás sirvan en la mayoría de los casos… con matices. Pero dista de la realidad. Y la realidad dice que todo depende del caso. En este caso, valga la redundancia, depende del dispositivo móvil del que se trate; de su marca y modelo; de su Sistema Operativo, …

Por ello me he lanzado a escribir un paso a paso para la adquisición física de terminales móviles.

 

Introducción

Uno de los objetivos fundamentales del análisis forense digital es el de evitar cualquier modificación del dispositivo objetivo que se vaya a analizar. Esto es factible cuando se trata de otro tipo de dispositivos, como un ordenador, donde se pueden emplear diferentes técnicas y elementos ‘hardware’ para bloquear la escritura en ese dispositivo y evitar alterar su información. No ocurre lo mismo cuando se tratan con dispositivos móviles donde, cualquier interacción con ese dispositivo, cambiará su contenido de alguna manera, sí o sí. Si tenemos que cumplir con ese principio a toda costa, la única alternativa que nos queda es no analizar el dispositivo. No analizar el dispositivo no es una opción porque puede tratarse de un componente crítico en un caso. Aquí es donde entra en juego la Cadena de Custodia, que debe ser escrupulosa en todos los sentidos habidos y por haber.

Particularmente creo que se debe documentar todo el proceso de generación de la imagen forense, (o la extracción de datos correspondientes), con una grabación de vídeo, donde se vaya explicando el porqué se ha hecho esa elección para manipular el dispositivo, cuándo y cómo se ha modificado, a fin de documentar todas las acciones realizadas. Que nadie pueda refutar que no se ha procedido con la debida pulcritud. Y como no es objeto de este artículo entrar en cuestiones jurídicas, aquí dejo este apartado.

Al igual que existen diferentes métodos y técnicas de extracción de datos para ordenadores, como por ejemplo la realización de un triage, también existen diferentes métodos y técnicas de extracción de datos para dispositivos móviles. Y en este punto es el analista forense el que debe valorar el método por el que va a optar, porque todo depende del caso y del tiempo del que disponga para la realización del análisis, así como de su complejidad. No es lo mismo extraer una base de datos de una aplicación ‘X’ que realizar una recuperación de cierto contenido eliminado. No requiere la misma interacción, ni alteración, una extracción de un tipo de contenido que la creación de una imagen forense completa.

Las formas de extracción de datos que existen, actualmente, son cuatro:

  • Adquisición manual
  • Adquisición lógica
  • Adquisición del Sistema de Ficheros
  • Adquisición física

La adquisición manual es la empleada usando el propio terminal móvil. Es decir, el analista realiza un uso normal del dispositivo y toma fotografías de lo que se muestra en pantalla.

La adquisición lógica es la que se logra accediendo a los datos del dispositivo a través del sistema de ficheros. Sólo se extraen los datos visibles, accesibles y no eliminados. Es la que realizamos cada vez que conectamos el terminal a un ordenador para proceder con una sincronización o hacer una copia de seguridad de los datos, (visibles y accesibles).

La adquisición física es la más extendida porque permite la recuperación de contenido eliminado o dañado. No trabaja sobre el propio sistema de ficheros, si no que se realiza directamente sobre el medio de almacenamiento, (interno, externo o ambos). Pero también es la que más retos puede suponer, la que más desafíos nos puede generar. Sí es cierto que de esta forma realizamos una imagen forense del dispositivo. Una copia ‘exacta’. Sí. Entre comillas.

Antes de entrar de lleno en materia, en la parte práctica de este artículo, veo necesario exponer un mínimo de teoría relativo a los Sistemas Operativos Android.

Existen multitud de sistemas Android. Pueden tener grandes diferencias o presentar grandes similitudes. Pero todos cuentan con un punto en común: su modelo de seguridad, que está diseñado para proteger al usuario, en la medida que el usuario quiera, porque

El usuario final es siempre el eslabón más débil de la cadena.

Voy con un muy breve resumen sobre la seguridad en Android, porque tampoco es objeto de este artículo entrar en largas descripciones y complejos términos técnicos: Todas las aplicaciones que se instalan por primera vez son verificadas por Android para comprobar que poseen una firma digital válida que puedan identificar al desarrollador. Cualquier acción que lleve a cabo una aplicación debe tener un permiso específico para tal acción, especificado en un archivo de la misma aplicación creado por el desarrollador. A cada aplicación instalada se le asigna un usuario único, con un identificador único, que se ejecuta en su propio proceso dentro la máquina virtual Dalvik. Por consiguiente, la aplicación sólo podrá acceder a su memoria asignada y a los datos que se encuentren dentro de su ‘parcela’. Es lo que se conoce como una ‘Sandbox‘ a nivel de aplicación, que consigue que dos aplicaciones no se puedan comunicar entre sí, protegiendo nuestros datos. Si una aplicación desea acceder a los datos de otra, debe ser especificado, (y autorizado).

¿Te sueles fijar en los permisos a los que pide acceso cada una de las aplicaciones que usas? ¿Para qué quiere una ‘linterna’ acceder a nuestra lista de contactos o a nuestra geolocalización, (por ejemplo)? Seamos sinceros.  En la práctica, los usuarios aceptamos, como norma general, todos los permisos y accesos de aplicaciones sin reparar en ellos. Esto puede derivar en la instalación de una aplicación maliciosa. Repito:

El usuario final es siempre el eslabón más débil de la cadena.

Para poder realizar una imagen forense de un dispositivo móvil necesitamos romper ese modelo de seguridad, mediante el uso de un ‘exploit‘. Esta acción se conoce como ‘Rootear‘ el dispositivo. ¿Qué se hace realmente cuando se ‘rootea’ un terminal móvil? Se rompe la ‘Sandbox’ de cada una de las aplicaciones del terminal, puesto que se implementa en él un usuario ‘root’, (no siempre, como podrás ver más adelante), que tiene acceso a todas y cada una de las carpetas del Sistema. Es como si creamos en nuestro ordenador Windows un usuario ‘Administrador’, sin contraseña. Es decir:

Cuando se ‘rootea’ un dispositivo móvil le estamos dando permiso a todas las aplicaciones, libertad, para que puedan acceder a cualquier fichero del Sistema: a cualquier dato.

Creo que no hace falta que te diga los riesgos que ello entraña. Por eso se debe valorar mucho el tipo de adquisición a realizar.

Escenario y herramientas usadas

Vista la pequeña introducción, (creo que va bastante bien documentada por el momento), vamos a ver el escenario sobre el que he trabajado y qué herramientas he utilizado.

Como me gusta trabajar con escenarios lo más realistas posibles, no voy a trabajar sobre un emulador Android. Voy a trabajar sobre dos dispositivos Android que tengo por casa:

  • Dispositivo Meizu M3 Note
  • Dispositivo Motorola XT1032, (Moto G 1ª Generación)

Ambos terminales se encuentran con su última actualización y presentan una versión de Android 5.1, como podrás ver a lo largo del presente artículo, en el que pretendo documentar cada paso, mediante imágenes.

Quizás te estés preguntando, ¿Por qué dos terminales con la misma versión del Sistema Operativo? Porque a pesar de presentar la misma versión base de Sistema Operativo, considero que es la mejor manera de ver que no se puede proceder de la misma forma con dos casos aparentemente iguales. Creo que es la mejor forma de ver, (y hacer ver), que un artículo debe estar documentado y que un mismo procedimiento no tiene porqué servir para todo. Cada uno presentará unas características diferentes. Sí es cierto que también presentarán puntos en común. Pero lo veremos con cada uno de los dos casos.

Para la realización de este trabajo no he usado una ‘Cellebrite UFED’. No. No dispongo de un salario tan alto como para permitirme tal brutalidad de gasto. De hecho desconozco hasta su funcionamiento. (Creo que existe demasiada oscuridad en torno a ello). En relación a esto, recuerdo una conversación mantenida recientemente con otra persona en la que me decía que «hay que usar herramientas especializadas, (software comercial), para realizar la adquisición de este tipo de terminales, porque de lo contrario se podría invalidar la evidencia por una ‘indebida adquisición’, aun llevando la Cadena de Custodia impoluta, dado que habría que explicar cómo funcionan esas ‘otras’ herramientas no comerciales«. ¿Acaso no es necesario saber cómo trabaja cualquier tipo de software, sea comercial o gratuito?

Te sorprendería saber qué cantidad de grandes soluciones software trabajan por detrás con pequeñas utilidades que podrías usar tú, manualmente.

He querido realizar la adquisición de dos maneras distintas, para que puedas ver cómo trabajar con cada una de ellas, (cuatro imágenes forenses distintas en total). Y he optado por usar herramientas gratuitas. Un conjunto de herramientas manuales y un software gratuito que automatiza el proceso de adquisición:

Y, sin más dilación, (ya he soltado demasiado contenido por ahora), vamos a proceder con el primer de los dispositivos.

Adquisición física de un dispositivo Meizu M3 Note

‘adb’, ‘netcat’ y ‘dd’

Se suele decir que siempre hay que poner el dispositivo en modo avión, para evitar alterar su contenido. Pues, para empezar, primeramente, vamos a poner en modo avión el dispositivo.

Procedemos a conectarlo al laboratorio y usamos la herramienta ‘adb’ con la línea de comandos y la orden

adb devices

Para imprimir una lista de todos los dispositivos conectados.



No se nos muestra nada. Está claro que no podemos interactuar con el dispositivo móvil sin más. Necesitamos hacer algunas configuraciones. Necesitamos alterar su contenido.

Lo primero que debemos hacer es dirigirnos a ‘Ajustes‘. Dentro del apartado correspondiente a ‘Sistema‘ entraremos en ‘Acerca del teléfono



Se nos presentará una ventana con diversa información del dispositivo. En esa pantalla debemos tocar siete veces en donde dice ‘Número de compilación‘. En ese momento nos dirá que ‘Ahora estás en modo de programador‘.



Ya tenemos un paso hecho. Ahora tenemos que dirigirnos al menú de ‘Ajustes‘, nuevamente. Acceder al apartado de ‘Accesibilidad‘ y entrar en ‘Opciones para el desarrollador‘. Una vez dentro, habilitaremos la ‘Depuración USB‘.

Tengo la fea costumbre de leer los avisos que se presentan en pantalla. Cuando vayamos a habilitar la Depuración USB recibiremos un bonito texto que dicta:

La depuración USB se realiza sólo con fines de desarrollo. Utilízala para copiar datos entre el ordenador y el dispositivo, instalar aplicaciones en el dispositivo sin notificación y leer datos de los registros.

Una vez habilitado, y como el dispositivo se encuentra conectado al laboratorio, nos aparecerá una huella de la clave RSA del equipo, que debemos autorizar para que se vincule el dispositivo móvil con el laboratorio y poder trabajar con él.



Si ahora volvemos a la línea de comandos e invocamos la orden

adb devices

Se nos mostrará el dispositivo conectado, con su número de serie.



Ingresamos al dispositivo, desde la línea de comandos, mediante

adb -d shell

De esta forma levantaremos una ‘shell‘ para entrar al dispositivo. Para poder interactuar con él.

Si intentamos acceder al usuario ‘root’, mediante

su

Nos avisará de que no tenemos acceso a ese usuario. Y es que el terminal no está ‘rooteado’.



Se dice que se debe ‘rootear’ el dispositivo.

Con este dispositivo en particular se pueden obtener privilegios de superusuario sin llegar a ‘rootear’ el terminal móvil. Antes de continuar, nos dirigimos a ‘Ajustes‘. Dentro del apartado ‘Dispositivo‘, nos dirigimos a ‘Huella y seguridad



Y podremos ver que no está la disponible la opción de ‘Privilegios de superusuario‘.



Para conseguir esos privilegios de superusuario debemos conectar el dispositivo a Internet. Nos dirigimos a ‘Ajustes‘. En el apartado ‘Personal‘, entramos en ‘Cuenta de Meizu



Y procedemos a la creación de la cuenta y al registro del terminal.



Si ahora volvemos a ‘Ajustes‘, nos dirigimos a ‘Huella y seguridad‘ y nos fijamos en el apartado de ‘Seguridad‘, podremos observar que ya disponemos de otra nueva opción que se llama ‘Privilegios de superusuario‘.



Si ingresamos en esa opción se nos mostrará, antes de nada, un ‘Descargo para Permisos del Sistema‘ que nos avisará de los riesgos que entraña acceder al terminal con privilegios de superusuario.



Pero deberemos aceptar si queremos acceder a ese nivel de privilegios.



Una vez confirmada la opción, mediante el número de teléfono, se reinicia el dispositivo y podremos dirigirnos a ‘Ajustes‘ > ‘Huella y seguridad‘ > ‘Privilegios de superusuario‘, para comprobar que el proceso se ha completado satisfactoriamente.



Volvemos a ver la lista de dispositivos conectados al equipo, mediante

adb devices

 



Levantamos una ‘shell’ en el terminal, con

adb -d shell


Si intentamos ver el contenido de Sistema con un usuario que carezca de privilegios, mediante

ls /data/

Nos dictará un ‘Permiso denegado’



Como ya lo tenemos configurado con permisos de superusuario, accedemos mediante

su


En ese momento se nos presentará en el terminal móvil una advertencia, que dicta:

Conceder permisos de superusuario a terceros puede provocar riesgos como inestabilidad del sistema, filtración de datos privados, daños al dispositivo, etc. Meizu no se hace responsable de los riesgos o daños de este tipo.



Bueno. Permitimos si queremos acceder mediante la terminal con un usuario con privilegios. Si intentamos de nuevo ver el contenido del Sistema, ahora que hemos ingresado con un usuario privilegiado, mediante

ls /data/

Se nos mostrarán todos los ficheros y directorios del terminal.



Lo siguiente que tenemos que hacer es ver las particiones del dispositivo. Necesitamos ver qué es lo que queremos adquirir. Ello se hace mediante

cat /proc/partitions

En este caso, de todas las particiones existentes, nos podría interesar adquirir las relativas a ‘mmcblk0′ y mmcblk1’, que son las correspondientes al almacenamiento interno del teléfono y al almacenamiento externo.



Antes de proceder con la creación de la imagen forense de cualquiera de las particiones, necesitamos instalar ‘BusyBox’. Para este caso, utilizaré esta versión. La instalación se efectúa con

adb install "C:\Tools\APK\BusyBox.apk"


Cuando le demos la orden para que se instale la aplicación, se nos presentará en pantalla un aviso que dicta ‘La aplicación se está instalando vía USB’.



En principio, la aplicación está instalada, ¿verdad? Pues preparamos el puerto de red sobre el que trabajaremos, mediante

adb forward tcp:9999 tcp:9999


Y procedemos a la creación de la imagen forense, mediante

dd if=/dev/block/mmcblk0 | busybox nc -l -p 9999


Mmmmm. Vaya. Algo no ha ido bien. Nos dice que no encuentra ‘busybox’. Sin embargo, sí está instalado. Bueno. Está instalada la aplicación, no sus utilidades. Así que tenemos que abrir en el terminal la aplicación ‘BusyBox’. Cuando lo abramos, nos pedirá permisos para ejecutarse con permisos de superusuario. Una vez que termine la recolección de información de la aplicación, podemos simplemente darle al botón de ‘Install’, que instalará las utilidades UNIX.



Ahora sí. Si volvemos a ejecutar

dd if=/dev/block/mmcblk0 | busybox nc -l -p 9999

Si deseamos crear una imagen del almacenamiento externo, tenemos dos opciones. O bien apagamos el terminal, extraemos la tarjeta y la tratamos de forma independiente, o bien cambiamos la partición seleccionada ‘mmcblk0’ por ‘mmcblk1’.

Esta ventana del terminal no la cerraremos porque permanecerá trabajando. Aquí estará leyendo los datos del dispositivo móvil.



Levantamos otra terminal y nos ubicamos en el directorio relativo a ‘Netcat’ para ejecutar la línea

nc 127.0.0.1 9999 > C:\Evidences\MeizuM3.dd

Esta ventana tampoco la vamos a cerrar porque también seguirá trabajando, escribiendo los datos que lee del dispositivo móvil, a través del puerto ‘9999’, en el directorio que le indiquemos.



Y el resultado será la creación de un fichero, correspondiente a la imagen de la partición seleccionada.



Una vez que terminen ambos procesos, se completarán las líneas de la terminal, informándonos de la cantidad de datos transferidos



Y podremos comprobar el fichero generado, del que deberemos calcular su huella digital, su hash.



Magnet Acquire

Vamos a realizar ahora el mismo proceso de creación de una imagen forense de este dispositivo, usando la aplicación ‘Magnet Acquire’. Tenemos el terminal móvil activado con privilegios de superusuario, que se puede apreciar cuando abrimos la aplicación. Seleccionamos el dispositivo. Le indicamos que queremos generar una imagen completa del dispositivo y la ruta de salida. Comienza el proceso y, cuando llega al punto de ‘Adquiriendo disco entero’, se detiene con un mensaje que dicta: «Puede que las imágenes no se hayan completado exitosamente».



Nos generará dos ficheros, dos logs.



Uno de ellos, el fichero ‘image_info’, nos proporcionará información acerca de la propia aplicación y del dispositivo móvil. En él nos indicará, entre otros datos, las actividades que ha llevado a cabo el proceso de imagen.



El fichero ‘activity_log’ nos brindará información acerca del proceso de adquisición, donde podremos ver, entre otras líneas, los errores que se han generado. En el caso de la siguiente imagen podemos observar que trabaja, igual que en el caso de la adquisición manual, a través de ‘dd’ y de ‘BusyBox’.



¿Por qué ha dado error la generación de la imagen con esta herramienta? Porque el terminal, a pesar de tener habilitados los permisos de superusuario, no está ‘rooteado’. No dispone de un usuario ‘root’.

Procedemos a ‘rootearlo’ mediante la aplicación ‘KingoRoot‘, con la versión ‘APK. Para ello, la instalamos mediante

adb install "C:\Tools\APK\KingoRoot.apk"


Como en el caso de ‘BusyBox’, nos advertirá de que se está instalando una aplicación a través de USB.



Una vez instalada la aplicación. Abrimos ‘KingoRoot’, que requiere conexión a internet, y… Vaya. Pues nos dice que se encuentra ‘rooteado’.



Volvemos a la generación de la imagen del dispositivo con ‘Magnet Acquire’, a ver qué pasa, y obtenemos los mismos resultados.



Vamos a levantar un terminal y a mirar si tenemos un usuario ‘root’ activo en el terminal, mediante

adb -d shell
su
ls /data/

Como se puede apreciar, y a pesar de que la propia aplicación de ‘KingoRoot’ nos ha dicho que el terminal está ‘rooteado’, seguimos sin disponer de un usuario ‘root’, aunque tengamos permisos de superusuario.



Vamos a usar, entonces, la aplicación ‘KingoRoot’ en su versión de PC. Abrimos la aplicación, que requiere conexión a internet. Una vez que detecte el dispositivo, podremos ver que también nos dice que está ‘rooteado’ y nos ofrece dos opciones: Eliminar el ‘rooteo’ y volver a ‘rootearlo’. Desmarcamos la opción de ‘Instalar aplicación recomendada’ y seleccionamos la opción de volver a ‘rootear’.



Una vez completado el proceso de ‘rooteo’ del dispositivo, procedemos a comprobar su estado, mediante la terminal, con

adb -d shell
su

Ahora sí disponemos de un usuario ‘root’.



Así que procedemos, de nuevo, a abrir la aplicación ‘Magnet Acquire’ y volvemos al proceso de creación de la imagen del dispositivo



Que en este caso será satisfactorio. Se nos generarán dos ficheros de imagen, uno por cada partición, con dos ficheros de texto, (los logs que hemos visto anteriormete)



El fichero ‘Activity_log’ será bastante más distinto al caso anterior, tanto en tamaño como en contenido, puesto que no se han generado los errores anteriores.



Y el fichero ‘Image_info’ contendrá la información relativa al software utilizado, a las fechas de la creación de la imagen, las rutas donde se ha trabajado y, muy importante, la información hash de cada una de las imágenes creadas, por un lado.



Por otro lado tendremos la información del dispositivo, con su marca, modelo, versión del Sistema Operativo, número de serie, en qué estado se encuentra, …



Conclusiones sobre la adquisición de un Meizu M3

Para proceder con este dispositivo manualmente, con ‘adb’, ‘netcat’ y ‘dd’, disponemos del siguiente esquema:

  • Habilitar las opciones de desarrollador
  • Habilitar la depuración USB
  • Adquirir permisos de superusuario
    • Bien a través del registro del terminal
      • El terminal requiere conexión a internet
      • El terminal requiere de un reinicio
      • El terminal no instala ninguna aplicación de un tercero
    • Bien a través del ‘rooteo’ del dispositivo con la aplicación de un tercero, como ‘KingoRoot’
      • Con la versión para móvil, el terminal requiere conexión a internet
        • Tiene más errores que la versión para PC
      • Con la versión para PC, la estación de trabajo requiere conexión a internet
  • Instalar la aplicación ‘BusyBox’, (Versión Stephen Stericson)
    • Abrir la aplicación en el terminal móvil para instalar las utilidades UNIX
      • Rezar para que sea la versión correcta
  • Proceder con ‘adb’, ‘netcat’ y ‘dd’
    • adb shell
    • su
    • cat /proc/partitions/
    • adb forward tcp:9999 tcp:9999
    • dd if=/dev/block/mmcblk0 | busybox nc -l -p 9999
    • nc 127.0.0.1 9999 > C:\Evidences\MeizuM3.dd

Para proceder con este dispositivo automáticamente disponemos del siguiente esquema:

  • Habilitar las opciones de desarrollador
  • Habilitar la depuración USB
  • Adquirir permisos de superusuario
    • A través del ‘rooteo’ del dispositivo con la aplicación de un tercero, como ‘KingoRoot’
      • Con la versión de móvil, el terminal requiere conexión a internet
        • Tiene más errores que la versión para PC
      • Con la versión para PC, la estación de trabajo requiere conexión a internet
  • Proceder con la aplicación ‘Magnet Acquire’

 

En cualquier caso, en ningún momento he tenido que habilitar las ‘Fuentes desconocidas

 



Ni he tenido que deshabilitar la opción ‘Verificar aplicaciones por USB



Adquisición física de un dispositivo Motorola XT1032, (Moto G 1ª Generación)

Magnet Acquire

Vamos a tratar ahora con un terminal Motorola, (Moto G de 1ª Generación), que presenta la misma versión de Android que el modelo anterior.

Y comenzamos, igual que antes, poniendo el dispositivo en modo avión. Conectamos el dispositivo al laboratorio y, mediante la terminal, ordenamos

adb devices

Como vemos, y como en el caso anterior, no se detecta el dispositivo. Necesitamos realizar una serie de configuraciones.



Nos dirigimos a ‘Ajustes‘ > ‘About phone‘ y activamos las opciones de desarrollador tocando siete veces.



Una vez activadas las opciones de desarrollador, nos volvemos a dirigir a ‘Ajustes‘. Ahora tendremos visible una nueva opción, llamada ‘Opciones de desarrollador‘. Ingresamos en ella y procedemos a activarla y a habilitar la ‘Depuración USB’.

Cuando activemos las opciones de desarrollador nos saltará el aviso que dicta:

La depuración USB se realiza sólo con fines de desarrollo. Utilízala para copiar datos entre el ordenador y el dispositivo, instalar aplicaciones en el dispositivo sin notificación y leer datos de los registros.

Y después de ello, la correspondiente huella de la clave RSA del equipo, que debemos autorizar.



Ahora sí podemos listar el dispositivo, mediante

adb devices

Que se nos mostrará, con su correspondiente número de serie



Ingresamos al dispositivo, levantando una ‘shell’, con

adb -d shell


Intentamos acceder como usuario con privilegios, a través de

su

Pero nos dice que no se encuentra. Claro. No está ‘rooteado’ el terminal. No tenemos acceso a él con ningún usuario con privilegios.



Si procedemos a ‘rootearlo’ mediante la aplicación de un tercero, como ‘KingoRoot‘, en su versión para móvil, lo primero que debemos hacer es instalarla, mediante

adb install "C:\Tools\APK\KingoRoot.apk"

Después debemos conectar el dispositivo móvil a internet. Abrir la aplicación desde el propio dispositivo y proceder con el ‘rooteo’, pero nos saltará un aviso que nos indica que no es posible ‘rootear’ este dispositivo.



Así pues, debemos usar la aplicación ‘KingoRoot‘ en su versión para PC. La abrimos y, una vez detectado el dispositivo, procedemos con el ‘rooteo’, desmarcando anteriormente la opción de ‘Instalar aplicación recomendada’. Aún con esa opción deshabilitada, se nos instalará en el terminal móvil la aplicación ‘Superuser’.



Si ahora ingresamos en la terminal la orden

adb -d shell
su

Veremos que ya tenemos acceso como superusuario, con un usuario ‘root’.



Una vez completado el proceso de ‘rooteo’ del dispositivo, y sin desconectarlo ni reiniciarlo, abrimos la aplicación ‘Magnet Acquire’ y procedemos a la ejecución de la herramienta para la generación de la imagen forense. Lo primero que veremos es que el dispositivo sí tiene ‘Acceso privilegiado’.

Y, sin embargo, nos genera un error en la adquisición de la imagen. Igual que en el caso anterior, podemos examinar los logs en busca de información que nos arroje algo de luz con los errores encontrados.



¿Qué marca la diferencia? ¿Qué tenemos que hacer para completar este proceso? En este caso, debemos deshabilitar la opción de ‘Verificar aplicaciones USB’, que viene activada por defecto en todos los terminales.



Ahora sí. Nuevamente, volvemos a iniciar el proceso de generación de la imagen del dipsositivo



Que se genera sin error alguno



Con sus respectivos logs que podemos revisar. Con la información de la imagen generada



Y con la información del dispositivo procesado



¿Por qué he dicho antes que sin desconectar ni reiniciar el dispositivo? Porque este terminal móvil pierde el ‘rooteo’ cada vez que se reinicia. Su ‘rooteo’ es temporal, por lo que debemos proceder con su ‘rooteo’ con cada apagado y encendido del terminal.



‘adb’, ‘netcat’ y ‘dd’

Veamos ahora cómo generar una imagen forense de este dispositivo, usando para ello, ‘adb’, ‘netcat’ y ‘dd’.

Ya lo tenemos ‘rooteado’ porque no lo hemos apagado, desconectado del laboratorio ni reiniciado.

ordenamos, a través de la terminal, la instalación de esta versión de ‘BusyBox’, mediante

adb install "C:\Tools\APK\BusyBox.apk"


Una vez instalada, y como ya sabemos que hay que abrirla e instalar la utilería UNIX, la abrimos. Nos dirá que necesita privilegios de superusuario, y si queremos concederlos. Le concedemos esos permisos. Le damos a ‘Install‘ y, vaya. No se ha instalado.



Pues vaya. Ahora, ¿Qué hacemos? De momento, la volvemos a abrir y le damos a ‘Uninstall‘ para desinstalar la utilería UNIX que se haya podido instalar. Después, vamos a eliminar la aplicación a través de la terminal, mediante

adb shell pm list packages -f


Para localizar el nombre del paquete instalado. Una vez localizado, procedemos a su desinstalación mediante

adb uninstall stericson.busybox


No pasa nada. Vamos a instalar otra versión distinta de ‘BusyBox’, mediante la línea

adb install "C:\Tools\APK\com.jrummy.busybox.installer_5.1.7.0-51700.apk"


Una vez instalada la aplicación en el terminal, tenemos que instalar la utilería UNIX. Para ello, nos hará falta conexión a internet en el dispositivo. Pero, además, si intentamos instalar la versión por defecto, en la ubicación por defecto, nos arrojará un error en la instalación.

Debemos seleccionar la versión ‘1.23.2’ de ‘BusyBox’ y la ruta de instalación ‘/system/bin’.



Completado el paso de instalación de la versión de ‘BusyBox’ correcta, procedemos con la generación de la imagen, desde el principio.

Listamos los dispositivos conectados

adb devices


Levantamos una ‘shell’ en el dispositivo e ingresamos como usuario ‘root’

adb -d shell
su


Listamos el directorio que, en este caso, presenta algún error sin importancia.

ls /data/


Listamos las particiones disponibles del dispositivo, para poder seleccionar la adecuada

cat /proc/partitions

En este caso en particular, y como este dispositivo sólo dispone de un almacenamiento interno, nos interesa adquirir la partición correspondiente a ‘mmcblk0’.



Preparamos la conexión de red entre el dispositivo y el laboratorio

adb forward tcp:9999 tcp:9999


Iniciamos el proceso de creación de la imagen en un terminal

dd if=/dev/block/mmcblk0 | busybox nc -l -p 9999


Y completamos ese proceso en otro terminal, para que se escriba en un directorio del laboratorio la información leída en el dispositivo.

nc 127.0.0.1 9999 > C:\Evidences\XT1032.dd


El resultado será un único fichero, correspondiente a la imagen forense del dispositivo procesado.



Conclusiones sobre la adquisición de un Motorola XT1032

Para proceder con este dispositivo manualmente, con ‘adb’, ‘netcat’ y ‘dd’, disponemos del siguiente esquema:

  • Habilitar las opciones de desarrollador
  • Habilitar la depuración USB
  • Adquirir permisos de superusuario
    • A través del ‘rooteo’ del dispositivo con la aplicación de un tercero, como ‘KingoRoot’
      • Con la versión para PC, la estación de trabajo requiere conexión a internet
  • Instalar la aplicación ‘BusyBox’, (Versión JRummy)
    • Abrir la aplicación en el terminal móvil para instalar las utilidades UNIX
      • El terminal requiere conexión a internet
      • Rezar para que sea la versión correcta
  • Proceder con ‘adb’, ‘netcat’ y ‘dd’
    • adb shell
    • su
    • cat /proc/partitions/
    • adb forward tcp:9999 tcp:9999
    • dd if=/dev/block/mmcblk0 | busybox nc -l -p 9999
    • nc 127.0.0.1 9999 > C:\Evidences\XT1032.dd

Para proceder con este dispositivo automáticamente disponemos del siguiente esquema:

  • Habilitar las opciones de desarrollador
  • Habilitar la depuración USB
  • Adquirir permisos de superusuario
    • A través del ‘rooteo’ del dispositivo con la aplicación de un tercero, como ‘KingoRoot’
      • Con la versión para PC, la estación de trabajo requiere conexión a internet
  • Deshabilitar la opción de ‘Verificar aplicaciones por USB’
  • Proceder con la aplicación ‘Magnet Acquire’

 

En cualquier caso, en ningún momento he tenido que habilitar las ‘Fuentes desconocidas



Conclusiones finales

Son muchos los escenarios que se pueden dar a la hora de adquirir una imagen forense de un terminal móvil. En este artículo, en el que he querido documentar cada uno de los pasos mediante imágenes,  tan sólo he planteado dos de ellos, que no tienen ninguna dificultad añadida puesto que contamos con el hecho de que están desbloqueados. Pero son muchas las posibilidades; que esté bloqueado, protegido mediante PIN, patrón o huella dactilar; que se encuentre con la pantalla dañada; que presenten el conector USB dañado, …

Lo que te puedo asegurar es que hay valorar mucho el tipo de adquisición que se quiere llevar a cabo porque es posible que dotemos al terminal de privilegios de superusuario sin llegar a ‘rootearlo’, con un proceso irreversible, o porque es posible que tengamos que instalar en el terminal una aplicación de un tercero para poder ‘rootearlo’.

Con motivo de querer mostrar distintas formas de proceder he optado por realizar un tipo de adquisición manual y un tipo de adquisición automática.

En lo referente a los tipos de adquisición, manual y automática, debes saber que

Grandes soluciones software trabajan por detrás con pequeñas utilidades que podrías usar tú, de forma manual. Que lo único que ofrecen es un proceso automático. Pero que tampoco están exentos de errores.

Ninguna opción está exenta de errores. No existe un único camino para llevar a cabo un proceso. Es por ello por lo que siempre digo que es necesario conocer tanto aplicaciones, como diferentes maneras de proceder, así como saber cómo funciona cada una de las herramientas, cada una de las opciones.

Como habrás podido observar, sí es cierto que hay algunas condiciones que son impepinables:

  • Habilitar las opciones de desarrollador
  • Habilitar la depuración USB

Por este hecho, y a menos que ya se encuentren activadas, que el terminal móvil esté ‘rooteado’ y que se encuentren instaladas las aplicaciones necesarias, no será posible adquirir una imagen forense del dispositivo sin alterar su contenido. Habrá ocasiones en las que se tenga que dotar de una conexión a internet; ocasiones en las que haya que reiniciar el dispositivo; ocasiones en las que el ‘rooteo’ sea temporal, …

Por ello puede llegar a ser complicado tratar con el dispositivo en modo avión.

Por ejemplo, he podido realizar una imagen forense del dispositivo Meizu sin tener que rootearlo, pero sí he tenido que proporcionarle conexión a internet y reiniciarlo. O por ejemplo, he tenido que conectar el dispositivo Motolora a internet para poder completar la instalación de ‘BusyBox’.

Igualmente, como habrás podido ver a lo largo del artículo, el resto de pasos puede presentar algunas variaciones, (aun siendo la misma versión de Sistema), bien teniendo que activar/desactivar otro tipo de opciones, bien teniendo que usar diferentes versiones de las aplicaciones, diferentes desarrolladores.

Por ejemplo, en el caso del dispositivo Meizu he usado una aplicación ‘BusyBox’ de un desarrollador, mientras que en el dispositivo Motorola he tenido que usar otra distinta.

En mis dos ejemplos, en ningún momento he tenido que habilitar la opción de Orígenes desconocidos.

Son por esos pequeños detalles por lo que te digo, como al principio del artículo:

No te creas nada que leas y no esté documentado, pues todo depende del caso. Y como todo depende del caso, cada uno tendrá sus inconvenientes y habrá distintas formas de hacer las cosas.

Recuerdo una conversación mantenida con un referente internacional del mundo DFIR en la que me decía que yo marcaba muchos de sus artículos y comentarios con ‘FAV’ y ‘RT’, pero veía que no intervenía en ninguna conversación. Bueno. Ello tiene una explicación bien sencilla, además del hecho de que tan sólo soy un aficionado.

No puedo hablar de algo que no sé. Y, ¿Qué es lo que sé? Sé lo que ‘toco’ y sé lo que veo.

No podía creerme ese tipo de contenido. Tenía que verlo. Y ahora que lo he visto por mí mismo… Yo también voy a enseñarte ahora «¿Cómo hacer una imagen forense en seis sencillos pasos?»

1.- Poner el dispositivo en modo avión

2.- Habilitar las opciones de desarrollador

3.- Habilitar la depuración USB

4.- Deshabilitar la opción de verificar aplicaciones por USB

5.- Rootear el dispositivo con la aplicación ‘KingoRoot’ para PC

6.- Procesar el dispositivo con la aplicación ‘Magnet Acquire’

Ahora está en ti creértelo o no. Por suerte, creo que este artículo ha quedado suficientemente documentado y creo que esos seis pasos son los que yo recomendaría seguir.

Para terminar, te diré que

Es necesario validar los datos que leemos. Es necesario que comprobemos por nosotros mismos los resultados, más aún si se siguen los pasos de algo que no está debidamente documentado.

Enlaces y referencias

https://developer.android.com/studio/command-line/adb

https://developer.android.com/guide/platform/?hl=es-419

https://es.wikipedia.org/wiki/Anexo:Historial_de_versiones_de_Android

https://source.android.com/security/

https://developer.android.com/studio/command-line/adb#commandsummary

Android Forensics: Investigation, Analysis and Mobile Security for Google Android

 

Ahora sí, vuelvo a mis labores,

 

Esto es todo. Se despide este minion, entregado y leal, de vosotros.

Marcos @_N4rr34n6_

2 comentarios en «#DFIR: No te creas todo lo que leas, porque todo depende del caso: Physical Imaging Android, (Paso a paso)»

  1. Gran artículo Marcos!!
    Sólo añadir que si te toca trabajar con una versión de Android más reciente (7.1 o superior) la cosa se complica de manera exponencial, porque el proceso de rooteado en muchos casos es mucho más complejo y requiere manipular el teléfono hasta incluso tener que instalar una imagen nueva del s.o. o resetear a los ajustes de fábrica, realizando procesos que son irreversibles. En estos casos es todavía más importante decidir el método más adecuado, y en muchos casos hay que descartar la adquisición física, o sólo usarla como último recurso, sabiendo que vas a manipular la prueba a un nivel altísimo y con riesgo de dejarla como un pisapapeles inservible.
    Un saludo!

  2. En primer lugar felicitarte por el articulo, esta muy bien, ya que te has metido en el tema de los mobiles no estaria mal que nos documentaras con un caso en que no podamos ponerlo en ‘modo avión’, que este bloqueado, en modo pin, etc. Gracias y saludos

Los comentarios están cerrados.