Tuesday, October 20, 2020

Una Mirada Rápida (“QuickLook”) de los Snapshots de iOS

Translation by Geraldine Blay

No puedo creer que finalmente estoy publicando un artículo en el blog. He comenzado a escribir acerca de 5 o 6 temas distintos, pero con frecuencia me distraigo y comienzo a investigar otro tema y me olvido de terminar lo que había comenzado. 

 

En los dispositivos móviles que utilizan iOS, el usuario puede deslizar el dedo desde la parte inferior del iPhone o iPad hacia la mitad de la pantalla para acceder el selector de apps. (En los dispositivos móviles que aún tienen el botón de inicio (“home”), se puede acceder esta función  haciendo doble clic a dicho botón). El selector de apps le permite al usuario navegar entre las aplicaciones que ha utilizado recientemente. Por ejemplo, si un usuario recibe una llamada mientras esta utilizando un app, la aplicación activa pasa al estado de suspensión. El usuario puede utilizar el selector de apps para volver rápidamente a la aplicación inicial.

Una imagen instantánea de la pantalla (“snapshot”) es generada para crear una transición visual mas fluida para el usuario.  Durante el resto de este artículo, utilizaré la palabra inglesa (“snapshot”) por función de brevedad. Los desarrolladores de apps pueden optar por desactivar la opción de crear un “snapshot” o pueden utilizar una imagen alterna por seguridad. 

A partir de iOS 10, estos “snapshots” han sido creados en formato KTX. KTX es un formato de compresión creado por el grupo Khronos, el cual provee un contenedor para múltiples texturas o imágenes.  Este formato por lo general ocupa menos memoria y es mas rápido y eficiente que otros formatos, lo cual es beneficial en los dispositivos móviles. Una discusión mas detallada sobre el formato KTX esta fuera del alcance de este artículo, pero las especificaciones de este formato pueden ser encontradas en la página del Grupo Khronos. 


En iOS, estos “snapshots” pueden ser encontrados en 

/private/var/mobile/Library/Caches/Snapshots/<bundleID>/<bundleID>/

/private/var/mobile/Containers/Data/Application/<ApplicationUUID>/Library/Caches/Snapshots/<bundleID>

Nota: El bundle ID, también conocido como identificador de paquete, es el nombre interno del app. Para efectos de este artículo vamos a utilizar el nombre en inglés.

Mediante investigación encontré que la información pertinente a estos “snapshots” esta almacenada en la base de datos applicationState.db, localizada en /private/var/mobile/Library/FrontBoard… pero claro está, no está almacenada de manera simple de interpretar. Está almacenada en un blob dentro de esta base de datos – en un plist binario dentro de otro plist binario. 

 

Al darme cuenta de esto, contacté a mi buen amigo y mentor Alexis Brignoni (@AlexisBrignoni), ya que está familiarizado con los bplists anidados, Python, y dispositivos móviles en general.


Actualmente, algunos de los programas forenses analizan los “snapshots”, pero este no era el caso en el momento en que escribí el artículo original en inglés. NO obstante, la solución presentada en este artículo aún es útil, ya que siempre es buena practica validar los resultados que nos dan las herramientas. 



Metodología


Yo siempre he pensado que la mejor manera de examinar una Mac de manera forense es utilizando una Mac. En mi opinión, esto también aplica a iOS. Hay varias herramientas que realizan un trabajo excelente procesando imágenes de iOS, pero ¿qué hacemos cuando no tenemos acceso a estas herramientas?  Aún cuando tenemos acceso a las herramientas, es nuestro deber entender de donde provienen los resultados obtenidos, y verificar que los mismos sean correctos, especialmente si la libertad de alguien depende de ellos. 

Hasta el momento**, mi manera favorita de mirar archivos KTX ha sido utilizando la opción de vista rápida (“Quick Look”) en Finder (claro está, siempre me aseguro que estén protegidos contra la escritura para no alterar la evidencia).

 

Primeramente, utilizamos el script de Python “SnapshotImageFinder.py escrito por Alexis Brignoni para extraer todos los KTX “snapshots” de una extracción de iOS. Luego, utilizamos una Acción Rápida (“Quick Action”) de Automator que convierte todos los archivos KTX a PNG para poder trabajar mas fácilmente con ellos. Finalmente, utilizamos SnapshotTriage.py (tambien creado por Brigs) para identificar y extraer los bplists anidados dentro de ApplicationState.db. Este script también crea un reporte en formato HTML para cada aplicación que contenga “snapshots” en nuestra imagen de iOS. Esto es solo un resumen de la metodología utilizada por nosotros. Para una explicación más detallada, pueden leer este artículo

 

Por cierto, los “snapshots” en iOS me recuerdan a las Tareas Recientes (“Recent Tasks”) en Android. Si no sabes a lo que me refiero, puedes estar perdiendo mucha evidencia importante en tus casos - este enlace contiene un tremendo articulo escrito por Brigs al respecto. 

 

**Nota: En el momento en que escribí el artículo era mi manera favorita, hoy día me gusta utilizar iLEAPP (https://github.com/abrignoni/iLEAPP ) ya que permite analizar archivos KTX y otros artefactos de manera rápida y sencilla. 

Implicaciones Forenses / Estudio de Caso 

Nuestro escenario: El sospechoso (John Doe) ha utilizado la aplicación nativa de iOS “Cámara” para grabar un video mientras está cometiendo el crimen. Mientras John graba el video, decide suspender la aplicación (quizás recibió una llamada telefónica o a lo mejor se volvió un poco paranoide y decidió deshacerse de la evidencia). Claro esta, él es muy competente utilizando tecnología y ha borrado todas sus fotos y videos del folder de “Fotos borradas” en la aplicación nativa de fotos de iOS. Como ya sabemos, a veces no es posible recuperar información que ha sido borrada en dispositivos móviles. 

 
Al examinar la extracción de la imagen del sistema de archivos “full file system” del teléfono de Mr. Doe, recobramos varios KTX “snapshots” provenientes de distintas aplicaciones. Estos “snapshots”, junto con otros archivos como KnowledgeC, plists, etc. pueden ayudarnos a pintar un mejor paisaje de lo que estaba ocurriendo en el teléfono durante el tiempo en que se cometido el crimen. 

En particular, recobramos el siguiente “snapshot” en /private/var/mobile/Library/Caches/Snapshots/com.apple.camera/com.apple.camera




 



A pesar de que este video ya no lo encontramos en el sistema de archivos “file system” de iOS, puede ser que el “snapshot” correspondiente nos ayude en nuestra investigación. Por ejemplo, la estampa de tiempo asociada con dicho “snapshot” nos puede dar mas perspectiva de lo que estaba ocurriendo en ese instante. Quizás Mr. Doe compartió el video con alguien, o lo subió a las redes sociales o transfirió a un app secreto. A lo mejor podemos obtener proceso legal para copias de seguridad de iCloud. Tal vez tengamos mucha suerte y encontramos un video de aproximadamente 21 segundos de duración, grabado alrededor del tiempo indicado en la estampa de tiempo. 



“Todo contacto deja un rastro.”- Profesor Edmond Locard 


A pesar de que el Principio de Intercambio de Locard se aplica con frecuenta a la evidencia tangible, como DNA o análisis de huellas dactilares, también aplica a la evidencia digital. 

Es extremadamente importante que entrenemos a nuestros examinadores forenses y a nuestro personal de emergencia a limitar su interacción con la evidencia digital al mínimo necesario para preservarla. A fin de cuentas, no queremos tener que explicarle al Jurado por que estos “snapshots” tienen estampas de tiempo con fechas que ocurrieron luego de que la policía llegara a la escena del crimen, o peor aun (en mi opinión), que un asesino sea absuelto porque destruimos un pedazo clave de evidencia por no ser diligentes.


Nota: Nuestra investigación se ha enfocado de manera primaria en iOS 11 y 12, pero planificamos expandirlo para incluir otras versiones. Actualmente estamos haciendo investigaciones adicionales en las estampas de tiempo localizadas dentro de los bplists. Como siempre, ¡es imprescindible validar! Si tienes alguna contribución adicional respecto a este tema, por favor contáctanos, ya que es así como crecemos como comunidad forense. 



 

No comments:

Post a Comment

iOS – Rastreando los Bundle IDs de Contenedores, Contenedores Compartidos, y Funcionalidades Añadidas (“Plugins”)

Artículo original  escrito por Christopher Vance (@cScottVance). Traducción al español por Geraldine Blay (@i_am_the_gia). En el sistema ope...