Buscar este blog

martes, 25 de diciembre de 2012

Seguridad en IOS: Análisis del fichero binario Manifest.mbdb

 
Cada vez que se hace una copia de seguridad de iTunes, ya sea con contraseña o sin ella, se genera una base de datos sin cifrar en un archivo dentro del directorio del backup llamado Manifest.mbdb, este fichero tiene un listado del resto de archivos y sus propiedades.
También hay otros ficheros como Info.plist dónde se almacena el IMEI, las aplicaciones instaladas, la fecha de la copia o el número de serie del terminal. Al igual que en el caso anterior, estos datos están siempre disponibles, ya que la información no se cifra, pese a que se establezca una contraseña en las opciones de iTunes. ¿Tiene sentido que sea así? No importa, no es el motivo de esta entrada.
Del Manifest.mbdb la estructura de los registros que lo componen es bien conocida y en se resumen en el siguiente esquema:

Esta información no es únicamente relevante en el contexto de un análisis forense, también es útil para  llevar a cabo una auditoría y conocer el tipo de clase de protección del dato que usa cada fichero de una aplicación.

Desde IOS4 se permite especificar el nivel de seguridad de cada nuevo fichero que se crea mediante atributos de la siguiente forma:


Data provided by Pastebin.com - Download Raw - See Original
    [[NSFileManager defaultManager] createFileAtPath:[self filePath]
                    contents:[@"super secret file contents" dataUsingEncoding:NSUTF8StringEncoding]
                    attributes:[NSDictionary dictionaryWithObject:NSFileProtectionComplete
                                                           forKey:NSFileProtectionKey]];


Esto es importante, ya que por ejemplo un fichero PDF que se entrega como adjunto de un correo electrónico tendrá el máximo nivel de protección, en cambio, si es enviado a otra aplicación de lectura de PDFs, dependerá de la aplicación el cómo lo almacene, perdiendo sus propiedades de seguridad.

Los distintos tipos de atributos son:


Con el objetivo de analizar el fichero Manifest.mbdb y todo su contenido, donde como se ha visto hay bastante información, he creado el script:  listManifest.py que genera un CSV con toda la información. Realmente he pillado varias funciones de distintas aplicaciones/foros y hecho un mix en este código.

El CSV tiene los siguientes campos: permisos, inodo, uid, guid, tamaño, clase, fecha de modificación, fecha de acceso, fecha de creación, hash sha1, dominio, nombre de la aplicación, nombre del fichero y propiedades.

Abierto con una hoja de calculo, tiene este aspecto.


Fuente: Securitybydefault

No hay comentarios:

Publicar un comentario