Menú principal

domingo, 20 de enero de 2013

Mac OS X: Analizar historial de descargas usando XProtect

Desde Mac OS X 10.6 Snow Leopard en el sistema operativo está disponible XProtect, una especie de solución "antimalware" que intenta detectar firmas de las familias más utilizadas en Internet, aunque como ya vimos este número es más bien reducido y no es excesivamente bueno. Sin embargo, para los analistas forenses, la información que genera es extremadamente útil, ya que todas las aplicaciones que hacen uso de él, añaden la URL de descarga como metadata extendido al fichero que puede verse com xattr.

Figura 1: URL de descarga del instalador de Firefox

Esto puede ser especialmente útil para rastrear un malware en el sistema, o simplemente para recomponer el historial de navegación de un usuario de Google Chrome, Mozilla Firefox o Apple Safari, sólo con analizar las URLs de las descargas que se han realizado.

Figura 2: URL de dónde se descargó un fichero visto en Finder

Sin embargo, como explica Mr Wolf en Lost in Security, existe una base de datos en SQLite dentro del perfil de usuario, que puede consultarse directamente para extraer la información de todo lo que ha sido descargado. Esta base de datos está situada en:
$HOME/Library/Preferences/com.apple.LaunchServices/LSQuarantineEventsV2
Si entramos en ella, veremos que solo hay una tabla, de la que podemos describir sus campos.

Figura 3: conexión a la base de datos y descripción del contenido

Estos campos, almacenan la siguiente información:
LSQuarantineEventIdentifier: identificador UTI que se usa como clave primaria.
LSQuarantineTimeStamp: fecha de descarga, representada en segundos desde el 1 de enero de 2001 12:00 AM (es decir, que hay que sumar 978307200 segundos para poder tener un UNIX timestamp normal).
LSQuarantineAgentBundleIdentifier: el nombre del bundle del programa que ha descargado el archivo (por ejemplo com.google.Chrome).
LSQuarantineAgentName: el nombre del programa que ha descargado del archivo (por ejemplo Google Chrome).
LSQuarantineDataURLString: la URL desde donde se ha descargado el archivo.
LSQuarantineSenderName: el nombre de la persona que envió un attachment de correo (es decir, sólo se pone si LSQuarantineTypeNumber es igual a '2').
LSQuarantineSenderAddress: la dirección de la persona que envió un attachment de correo, igual que en el caso anterior.
LSQuarantineTypeNumber: el tipo de método de descarga:
0 si es web (kLSQuarantineTypeWebDownload)
1 si son otros programas (kLSQuarantineTypeOtherDownload) - como por ejemplo Transmission, o el mismo XCode
2 si son attachments de correo (kLSQuarantineTypeEmailAttachment)
3 si son attachments de programas de mensajería instantánea
(kLSQuarantineTypeInstantMessageAttachment); iChat
4 si es calendario (kLSQuarantineTypeCalendarEventAttachment)
5 si son otros attachments (kLSQuarantineTypeOtherAttachment)
Figura 4: Consulta de programa utilizado y URL de descarga

Como se puede ver, basta con hacer una consulta Select con los campos que más nos interesen en un análisis forense y poder reconstruir el historial de navegación de un usuario, los ficheros adjuntos descargados en correos electrónicos o qué aplicaciones ha estado utilizando.

No hay comentarios:

Publicar un comentario en la entrada

Artículos relacionados

Otras historias relacionadas

Entradas populares