miércoles, 26 de mayo de 2010

Recuperando correos electrónicos de archivos PST



En las investigaciones forense en las que se investiga las posibles acciones fraudulentas efectuadas por un empleado de una Organización, es muy común, entre otros análisis, realizar un recuperación de ficheros en base a un búsqueda de strings y un posterior filtrado de los mismos aplicando un listado de palabras potencialmente relacionadas con el caso en cuestión.


Los correos corporativos de un empleado sujeto a investigación habitualmente son foco esencial de análisis pudiendo encontrar multitud de soluciones como Lotus Notes, Netscpe/Mozilla, AOL, soluciones basadas en Apple y Outlook.

A pesar de las múltiples soluciones, la más comúnmente utilizada entre las Organizaciones, es Outlook cuya gestión de los correos enviados y recibidos, agendas y calendarios quedan almacenados bajo ficheros Offline Storage Files (OST) o Personal Storage File (PST).


Dicho formato de ficheros es un fichero propietario de Microsoft cuyo formato interno era poco conocido hasta que Microsoft liberó documentación al respecto. Los ficheros PST son ficheros binarios estructurados y auto-contenidos que representan un repositorio de almacenamiento de mensajes ordenados por una jerarquía de objetos como son carpetas, mails y adjuntos.


Semejante a un sistema de ficheros, un archivo PST consta de diferentes capas, las cuales se representan en la siguiente figura:


Diagrama de capas de un fichero PST obtenido de la definición de la arquitectura de ficheros PST publicada por Microsoft



Como se observa en la imagen anterior dispone de 3 capas, las cuales son:

· Node Database Layer (NDB Layer): Contiene dos bases de datos de nodos que representan el almacenamiento a más bajo nivel del fichero PST. Básicamente está compuesta por una cabecera, bloques, nodos y dos árboles binarios que contienen las referencias a todos los nodos y bloques del fichero.

· Lists, Tables and Properties (LTP Layer): Es una capa de nivel superior a la de NDB que gestiona tablas de propiedades y contextos de la información.

· Messaging Layer: Es la capa de más alto nivel que combina la información de las capas NDB y LTP con el objeto de interpretar las carpetas, correos y adjuntos como objetos y propiedades.


Viendo las analogías de un fichero PST con un sistema de ficheros tipo NTFS, FAT, EXT, etc, uno puede pensar que los correos borrados también pueden llegar a ser recuperables. Prueba de ello, es la cantidad de aplicaciones que se han desarrollado con el objetivo de reparar PST corruptos y para recuperar correos que han sido borrados. Pero, ¿ qué hacen exactamente todos estos programas para recuperar los correos ?


Como hemos visto, los contenidos de un fichero PST, se encuentran almacenados en árboles binarios, utilizando apuntadores a las estructuras de datos. Por ello, análogamente a un sistema de ficheros, cuando borramos un correo, éste no es físicamente borrado del fichero PST, sino que lo que realmente se borra es el puntero lógico que identifica en qué posición del fichero se encuentran los datos del mismo.


La capa NBT está constituida por árboles binarios que contienen la referencia a todos los datos del fichero. Dichos árboles, empiezan en una posición raíz, la cual se almacena en la cabecera del fichero. La cabecera incluye información que contiene metadatos acerca del fichero PST e información acerca de los punteros hacia las secciones de bloques de datos dónde se almacenan los mensajes y sus contenidos (root record). De modo que manipulando los correspondientes bits de la cabecera, podríamos forzar a que el archivo PST se corrompa, no pudiendo acceder a la información que éste contiene. Si de algún modo fuéramos capaces de regenerar toda la estructura del fichero, volveríamos a regenerar también los apuntadores de los correos borrados, pudiendo de este modo leerlos con su correspondiente gestor de correo.


Como prueba de ello, imaginemos un posible caso en que una Organización tiene las sospechas de que uno de sus empleados del departamento I+D ha estado filtrando información a la competencia acerca de los nuevos productos en desarrollo. Por ello, se podría requerir de la realización de un análisis forense de su equipo, el cual se sustentaría, entre otros, en el análisis de sus correos corporativos.

Para ello, una vez recabada toda información útil para el caso, procederíamos a la extracción de los ficheros PST usando herramientas tipo Sleuthkit:

· fls –o 63 –r –m / imagen.dd | grep –i “\.pst”



Ejemplo de búsqueda de ficheros PST mediante fls

· icat –o 63 5349-128-3 imagen.dd > mails.pst

Una vez extraído el contenido del inodo, y por lo tanto, el fichero PST, podemos abrirlo mediante Outlook:




Bandeja de entrada del fichero mails.pst una vez se ha abierto mediante Outlook

Como se aprecia en la figura, el fichero puede ser abierto correctamente pero éste se encuentra vacío sin ningún correo electrónico. Por este motivo, podemos intuir que los correos electrónicos han podido ser borrados y tendremos que aplicar la técnica anteriormente descrita.


Recordemos que el primer paso a efectuar es corromper el fichero Outlook borrando el “root record” para que ScanPst reconstruya toda la estructura de los árboles binarios de la capa NBT. Para ello, utilizaremos un editor de ficheros en hexadecimal y modificaremos las posiciones 7 a 13 substituyéndolas por el valor hexadecimal 0x20:





Edición del fichero PST mediante Hex Workshop. Modificación del “root record”


Si intentamos abrir el correo nuevamente con Outlook, veremos que nos aparece el siguiente mensaje, indicándonos que el fichero se encuentra corrupto:



Mensaje de error de Outlook una vez cargado el fichero modificado mails_mod.pst


Para reconstruir el fichero, utilizaremos la herramienta Scanpst, según las indicaciones del mensaje de error:




Carga del fichero mails_mod.pst en la herramienta Scanpst.exe





Inicio de la reparación del fichero mails_mod.pst


Una vez reparado el fichero, lo abrimos mediante Outlook y tal y como se observa en las siguientes imágenes, hemos podido recuperar correos que habían sido borrados por el usuario.




Bandeja de Salida del fichero PST recuperado




Bandeja de Entrada del fichero PST recuperado


Con este post hemos visto una manera manual de recuperación de correos electrónicos borrados que pueden ser un factor decisivo en una investigación digital. Como alternativas a este proceso, existe software específico desarrollado con el mismo objetivo; La recuperación de correos borrados.


Un ejemplo de herramienta open source, destacar la herramienta libpst que nos permitirá la recuperación de los correos desde un fichero PST en formato texto, pudiendo luego someter los ficheros de texto resultante a un análisis de strings, opción muy útil de cara al desarrollo de la investigación.

Saludos,