11 mayo 2015

Extrayendo datos MRU en Linux de escritorio


MRU. ¿Qué son?
Los archivos MRU, por sus siglas en inglés Most Recently Used [files] son de gran ayuda en un análisis forense a la hora de averiguar cuáles fueron los últimos ficheros que se manipularon en un espacio de tiempo determinado. Si bien es verdad que para sistemas Windows hay, desde hace muchísimo tiempo, innumerables herramientas que facilitan la labor de extracción, parseo y presentación de este tipo de información (en su mayoría del registro de Windows), no hay tantas para sistemas Linux de escritorio.

Aunque no es un escenario frecuente, puede darse el caso de que el perito/analista forense se tenga que enfrentar a una máquina Linux con KDE, Gnome o cualquiera de los múltiples escritorios disponibles. Por ello decidí empezar a escribir MRUTools, y al hacerlo descubrí algunos hechos que no saltan inmediatamente a la vista.
  1. No hay una forma ‘estándar’ de almacenar esta información. Cada aplicación que posee esta funcionalidad, e incluso cada escritorio, lo hace de una forma distinta, si bien algunas aplicaciones integradas, o de uso mayoritario en un escritorio particular se atañen a ciertas ‘reglas’. 
  2. Como consecuencia del punto anterior, en muchos casos no basta con ‘eliminar’ las referencias a estos ficheros desde la opción que da el escritorio (lo cual me ha brindado alguna que otra sorpresa al ejecutarlo en mi propia máquina).
Al lío: Buscando información en KDE
Usando el viejo método de ensayo-error, abrimos un fichero de prueba con Kate, el editor de textos por defecto en KDE: prueba.txt
 

Como no sabemos a priori dónde almacena esta información, podríamos ir a la documentación de KDE y buscarlo, pero siendo un poco impacientes, ejecutamos un grep en nuestro $HOME y obtenemos lo siguiente:

 
Vaya, la cosa se pone interesante. Aparecen varias referencias a nuestro fichero de prueba. Tomamos nota de las ubicaciones para inspeccionarlas más a fondo:
  • $HOME/.kde/share/apps/RecentDocuments 
  • $HOME/.kde/share/apps/kate/katerc 
  • $HOME/.kde/share/apps/kate/metainfos 
Si investigamos el contenido de estas ubicaciones, vemos que:
  1. El escritorio KDE almacena la información de los ficheros que abrimos desde él en una carpeta llamada RecentDocuments. Cada fichero abierto (más info: ver xdg-open) genera una entrada en este directorio (hasta un máximo de diez, después van rotando) con una estructura definida (¡y parseable! :D). 
  2. Parece que cada aplicación independiente que tenga funcionalidad de ‘Recent Files…’ también posee su propio listado de ficheros. Lo interesante aquí es que si pulsamos botón derecho en el menú de KDE ‘Usados Recientemente’ y hacemos click en ‘Limpiar documentos recientes’, éstas entradas efectivamente desaparecen del menú (se vacía el contenido del directorio $HOME/.kde/share/apps/RecentDocuments), pero si ejecutamos de nuevo el grep anterior…

Efectivamente, las referencias a ficheros abiertos permanecen de forma independiente por cada aplicación (por lo que he podido comprobar ocurre en varias como VLC, Dragon Player y como estamos viendo aquí, Kate). MRUTools surge de la idea de automatizar el proceso de extracción, parseo y presentación de este tipo de información:



Ejemplo y Timeline 
Evidentemente al ejecutar la herramienta en un entorno real obtenemos gran cantidad de datos que por sí solos no aportan una visión general de la situación. Es necesario estructurar los datos, por ejemplo en una línea temporal. Para ello nos viene muy bien el proyecto Timeline.

Esta herramienta escrita en Python se adapta perfectamente a nuestras necesidades. Tras leer la documentación disponible en su web y entender cómo funciona, adaptamos MRUTools para que exporte un fichero XML que Timeline sea capaz de entender. Y el resultado final, tras ejecutarlo en una máquina real ejecutando KDE es el siguiente:


Un gran punto a favor de Timeline es que nos permite visualizar de forma interactiva los eventos que hayamos generado, mostrando de una forma muy gráfica y ordenada la salida de MRUTools. 

Conclusiones
A partir de los resultados obtenidos hemos podido comprobar que los archivos MRU son de mucha ayuda en un análisis forense, y además, cada aplicación mantiene los suyos, lo que dificulta el borrado de huellas. No es una fuente del todo fiable, ya que como (casi) todo lo digital, puede ser manipulable, pero eso lo dejamos para otra entrega. 

Artículo cortesía de Ángel Suárez-B. Martín (n0w)
@asuarezbm