Análisis forense en Evernote Parte I – Snow Leopard

Publicado el 20 junio 2011 por Security4dev @security4dev

En los tiempos de hoy en día quién no corre vuela, por eso no nos extraña que se empiecen a utilizar cada vez más y más servicos basados en la nube o Cloud Computing.
En el pasado mes de Marzo, Alberto Ortega de SbD escribía un artículo acerca de la seguridad de WhatsApp, y su compañero Yago Jesús nos sorprendía con una entrada dónde nos indicaba lo que WhatsApp no nos cuenta. Respecto a los archivos en la nube, es obligatorio destacar el artículo de Pedro Sánchez, autor de Conexión Inversa, enseñándonos dónde estaba su carro (DropBox Forensics).

Pués bien, teniendo en cuenta los artículos anteriores, dónde se habla de aplicaciones muy utilizadas, hoy quiero hablar cómo dirían en Conexión Inversa “Forensics Evernote” o en Security by Default “Lo que Evernote no nos cuenta” o “Evernote y su seguridad”.
Evernote es un servicio que nos permite almacenar nuestras notas en la nube, o cómo indican en su web:
“Evernote te permite recordar las cosas pequeñas y las cosas importantes de tu vida utilizando tu ordenador, tu teléfono y la Web.”

Esta aplicación nos permite crear una nota en nuestro portátil y verla en los demás dispositivos como en nuestro móvil. En mi caso, dispongo de Evernote en mi Mac Snow Leopard, en mi Windows 7 y en mi móvil Android. Tengo que decir que es una aplicación muy cómoda y sencilla de utilizar.

Vamos a ver cómo se almacenan las notas en Mac, en este caso está hecho en un Snow Leopard usando como nombre de usuario “jose”.

Al instalar Evernote en Mac nos crea el directorio “Evernote” en la ruta:

/Users/jose/Library/Application Support/Evernote/

Bajo este directorio nos crea la siguiente estructura de directorios:

  • Sync Downloads
  • data/
  • external edits
  • pending audio
  • pending emails
  • promos
  • undo support

En este artículo vamos a centrarnos en el almacenamiento de las notas, por lo que vamos a examinar el contenido del directorio data. En él podemos ver que se encuentra un directorio cuyo nombre es un número entero, no lo puedo asegurar pero creo que se trata de nuestro identificador de usuario en evernote.

Si miramos dentro de data/id_evernote/ nos encontraremos con cosas muy interesantes:

  • Evernote.sql
  • content/

Utilizando el comando file para el archivo Evernote.sql podemos ver que se trata de una base de datos SQLite 3.x. Para examinar este archivo podemos usar el plugin para firefox sqlite manager y así mirar su estructura interna, teniendo las siguientes tablas (se detallan las más interesantes bajo mi criterio :)

ZENATTRIBUTE
ZENATTRIBUTEDENTITY
Incluye diversa información de las notas y varios campos, destacando:

  • Z_PK: Identificador de una nota escrita por el usuario.
  • Z_ACTIVE: Indica si una nota está o no activa. Cuando borramos una nota se pone este campo a false, pero no se elimina del disco duro!!!
  • ZCREATED, ZUPDATED, ZDELETED: Fecha de creación, actualización y elimanción de una nota
  • ZSOURCE: Indica el origen de la nota. En mi caso, las notas escritas desde android establecen este campo a mobile.android
  • ZTITLE: Título de la nota

Z_12TAGS
ZENSYNCSTATE
Guarda el estado de la última sincronización, guardando:

  • ZLASTSYNCTIME: Fecha de la última sincronización
  • ZLASTSYNCEDWITHACCOUNT: Nombre del usuario que realizó la sincronización. Ej: usuario@servidor-email.com

Z_PRIMARYKEY
Z_METADATA

En este punto podemos sacar rápidamente una conclusión: Las notas que eliminamos son marcadas como eliminadas, permaneciendo todavía en el disco duro. Para probarlo he escrito una nota desde android y sincronizado, me ha aparecido la nota en mi portátil con el campo active a true, tras eliminarlo se ha actualizado el campo estableciéndo el valor active a false, pero la nota seguía en mi disco duro.

¿Pero dónde están las notas?

Recordamos que el archivo Evernote.sql se encontraba bajo el directorio:

/Users/TU_USUARIO/Library/Application Support/Evernote/data/ID_USUARIO/

Aquí se encuentra también el directorio content, en el que se crea un directorio por cada entrada, cuyo nombre (en mi caso) empieza por la letra “p” seguido del identificador de la nota, que vimos previamente examinando el archivo Evernote.sql, en la tabla ZENATTRIBUTEDENTITY atributo Z_PK.
Para cada nota se crean los siguientes archivos:

  • content.enml: Contenido de la nota en formato ENML
  • content.html: Contenido de la nota en formato html
  • thumbnail-small.png: Miniatura de la nota en formato png. Evernote coge nuestra nota y la convierte a formato imagen
  • thumbnail.png: La nota en formato png

¿Cómo hago un backup de los datos? ;)

Para hacer una copia de seguridad de nuestras notas, podremos por ejemplo realizar un pequeño script que nos comprima el directorio y nos lo almacene en otro disco, pendrive o simplemente que nos lo envíe a nuestro correo:

/Users/TU_USUARIO/Library/Application Support/Evernote/data/ID_USUARIO/

La caché de Evernote

Evernote almacena una caché por cada nota existente (de las no activas no guarda caché) en la ruta:

/Users/jose/Library/Caches/Metadata/com.evernote.Evernote

Por cada nota se crea un archivo en formato xml que nos dará la siguiente información:

  • kMDItemContentCreationDate, kMDItemContentModificationDate: Fecha de creación y modificación de la nota
  • kMDItemTitle: Título de la nota

Conclusión

Evernote en el equipo local guarda la información en texto plano como WhatsApp. Dentro de unos días veremos lo mismo pero en entornos bajo Windows 7 … así que ten cuidado dónde dejas el equipo y lo que aNOTEs, no sólo te puede tocar un ataque David Hasselhoff :)