Incident Response, Security and Forensics"

.

martes, 26 de marzo de 2013

Lo que la mentira esconde. El caso de María.


Hola lectores,

Hoy vamos a ver como la tabla maestra de archivos en un sistema NTFS nos ha ayudado a identificar y obtener evidencias en un posible fraude cometido por una persona.

El caso es el siguiente, María afronta una pena de dos años y medio por un delito de falsificación en documento mercantil, falsificación de informes a diversas empresas, en la elaboración de estudios sobre la contaminación del suelo y también por la eliminación masiva de pruebas (ficheros financieros), todo ello tras una demanda por colaboración junto a un grupo de empresas en fraude continuado, por un importe defraudado en torno a 1.330.000 euros.

En la prueba pericial y posterior análisis forense encontramos las siguientes conclusiones, al parecer María había falsificado y eliminado de forma continuada informes y cambiado la fecha de estos, pero ¿como hemos llegado a estas conclusiones?, ¿como averiguamos los cambios que hizo María?,¿que falsifico?, ¿porque lo hizo?. Bueno esta última pregunta no creo que sea capaz de obtener respuesta, aunque lo obvio es que sea   por dinero.

Para remontarnos a las pruebas y evidencias hemos de hablar del modo de funcionamiento del sistema de archivos NTFS y mas correctamente de la tabla de sistema de archivos (MFT) y del sistema de registros  de cambios o mas conocido en el mundo *nix como 'Journal'.

MASTER FILE TABLE -MFT

La Master File Table viene a ser una especie de base de datos o tabla que gestiona y almacena los ficheros de una unidad o disco y este contiene información relativa a su tamaño, propiedades, atributos, localización, etc. Dispone de una entrada de índice y cuando buscamos un fichero lo consulta a la MFT para obtener información del mismo.

La estructura de archivos viene resumida en esta tabla que he preparado a tal efecto:


En resumen, la tabla maestra contiene la estructura y toda la información acerca de un archivo, incluyendo su tamaño, fecha, hora y permisos y contenido de los datos.

$UsnJrnl

En la MFT hay un componente conocido como 'Journal' llamado '$UsnJrnl'  que cuando está activado, registra las modificaciones que se producen en los archivos. Este se encuentra dentro de '$Extend' en  la entrada MFT.

Entrada $MFT vista desde la herramienta Autopsy


Journal visto desde Autopsy

En el fichero Journal se registrarán, entre otras cosas:
  • Fecha de modificación 
  • Motivo del cambio 
  • Archivo / nombre de directorio 
  • Archivo / directorio y sus atributos 
  • Archivo / directorios y número de registro MFT 
  • Número de archivo de registro de directorio principal del archivo 
  • ID de Seguridad 
  • Número de actualización y número de secuencia del registro 
  • Información sobre el origen de los cambios 
Lo curioso del tema es que viene activado por defecto en Windows 7 y 8, no siendo así de forma predeterminada en Windows XP.  Por lo tanto la revisión de '$UsnJrnl' se me antoja una pieza clave a la hora de realizar un análisis forense ya que podemos encontrar piezas complejas, como por ejemplo que nos hayan realizado un anti-forensics por medio de un malware o bien obtener toda una lista y  linea de tiempo con sus ficheros y modificaciones.

Llegados a este punto, lo interesante es como exportar la tabla maestra para obtener la información o bien que utilidades podemos utilizar para acceder a ella.

¿COMO ACCEDO A LA INFORMACIÓN DE LA MFT?

Existen varios procedimientos para obtener la información de forma lineal. Al final utilizamos tres herramientas que nos parecieron muy interesantes.

TSK

El Sleuth Kit (TSK) es una conocida colección de herramientas forenses en línea de comando para * nix y windows, permite analizar los sistemas de archivos más comunes. La mejor forma de trabajar con ella es utilizando un archivo imagen en formato DD. Nosotros como teníamos el sistema en vivo y también clonado pudimos aplicar ambas métodos.


#  Fls -f  ntfs -r casomaria.dd | grep sistema contable.xls
+ + R / r 1618-128-1:sistema contable.xls


Esto devuelve el número de registros de $MFT que corresponde a 1618. Con el uso de "icat" ahora podemos hacer 'carving' de la entrada de $MFT.

# Icat -f  ntfs casomaria.dd 0 | dd bs = 1024 skip = 1618 count = 1 | xxd

Otra forma mas cómoda es volcar toda la tabla MFT directamente.

 icat casomaria.dd 0> MFTsalida.csv

Una vez que tenemos la $MFT podemos utilizar estos scripts realizados en Python analyzeMFT.py  de David Kovar para analizar todos los registros en formato csv.

analyzeMFT.py -f  MFT -o -un  MFTsalida.csv

WINDOWS JOURNAL PARSER (JP)

JP es una utilidad en línea de comandos para analizar el  Journal. Su uso es sencillo y para mi es uno de los mejores actualmente. El problema es que no permite su uso en modo profesional. No obstante decidimos probarlo y compararlo con otras herramientas.

Para utilizarlo en el caso de Maria pusimos el siguiente comando:

c:\jp>jp.exe -partition c > salida.txt

El resultado es conciso y revelador dado que nos indica que ocurrió con  un fichero o directorio.

En la siguiente muestra se ha truncado los datos con objeto de que veamos parte del resultado.


MFT Parser

Es otra de las utilidades perfectas que dispone de entorno gráfico y modo de comando para entorno Windows, se puede descargar desde aquí o bien desde su URL.

Al igual que 'jp' permite obtener un 'timeline' de los ficheros y directorios del journal, pudiendo exportar desde el entorno gráfico a fichero CSV. Permite filtrado por fechas y propiedades de los ficheros. Muy útil.


MFT2CSV

Esta herramienta esta desarrollada en AutoIT (un lenguaje de scripting basado en Basic) y que al igual que la anterior se basa en un entorno gráfico teniendo las mismas características de exportar la información en un archivo CSV. El problema de esta herramienta es que es bastante lenta (aunque efectiva) a la hora de procesar la entrada $MFT.


Una vez vistas estas soluciones nos decantamos por utilizar MFT Parser no sin antes ir comparando los resultados devueltos con 'jp'

LO QUE LA MENTIRA ESCONDE

Volviendo al caso de María y ya sabiendo que el sistema almacena y hace un seguimiento de los ficheros, nos proponemos realizar la investigación. Para ello y tras diversas reuniones con los investigadores de las fuerzas de seguridad llegamos a la conclusión que debemos de buscar básicamente sobre la lista de archivos que los investigadores tienen y en las fechas que para ellos se cometió el fraude.

Para la explicación del caso en este post me he basado en un archivo que disponíamos como  evidencia  y he omitido todos los demás que nos han proporcionado, dado que seria demasiado largo y el objeto es explicaros el funcionamiento. Por lo tanto vamos a utilizar como patrón o base de búsqueda un fichero que se llama "sistema contable.xls".

Dado que teníamos este archivo nos 'choca' ver que en las propiedades de fecha en creación  acceso , modificación y están puestas a 14 de Junio de 2011 y a la misma hora. Puede ser una casualidad, pero el instinto me dice que huele raro.



Bien, es hora de abrir el fichero CSV que MFT Parser y JP nos han proporcionado, para ello utilizaremos  Excel y  vemos lo siguiente:

NOTA: Se ha truncado la salida del fichero ya que es extremadamente grande (mas de dos hojas) y nos hemos centrado en donde aparece el fichero en concreto.

Hoja1.- Cambio de nombre


Hoja2 - Cambio de atributos

Buscando por el patrón, se aprecia en la Hoja 1 que el día 19 se cambia de nombre el fichero excel "sistema contable.xls" y que en la Hoja 2 del día 22 se cambian atributos al fichero "sistema contable.xls". Es decir hay cambios.

Una vez visto que este fichero (y otros) se encuentran dentro de la tabla MFT vamos a utilizar nuestro conocimiento en Excel para transformar los datos en una potente base de datos. Lo primero procedemos a realizar un agrupamiento sobre este fichero para disponer de un 'timeline' de cambios utilizando el filtrado y las tablas dinámicas. ¡¡ Excel Power!!


Linea de tiempos de un archivo

A raíz del 'TimeLine' anterior deducimos lo siguiente:

LUNES 18 DE FEBRERO

En las tres primeras lineas, el 18/02/2013 a las 19:45:52 se produce el cambio de nombre de un archivo temporal llamado "sistema contable (DEMO).xls.crdownload", posiblemente se trate de un temporal que se produce mientras se descarga un archivo de Internet. Una vez descargado el fichero temporal y creado en el sistema de archivos a las 19:45:55 pasa a llamarse en vez de ".crdownload" a "sistema contable (DEMO).xls". El periodo en milisegundos de diferencia nos hace pensar que es un proceso propio del sistema.



El atributo de la tercera linea indica que se esta produciendo un cambio de nombre de archivo y siete minutos mas tarde (Linea 4) se produce el cambio de nombre de fichero. Pasa a llamarse de "sistema contable (DEMO).xls" a "sistema contable.xls"


En esos siete minutos deducimos que es decisión del usuario el cambio de fichero y durante ese tiempo se ha producido la apertura de ficheros word y excel que en apariencia no tienen que ver con el caso que nos ocupa.

A las 20:03:44 (Linea 5) se produce un borrado masivo de ficheros (hasta línea 9). He truncado la salida dado que este proceso se repetía múltiples veces con otros ficheros.


MARTES 19, MIÉRCOLES 20 y JUEVES 21 DE FEBRERO

Los días 19, 20 y 21 se siguen produciendo cientos de eliminaciones de archivos de word y excel. Aperturas de correo y modificaciones propias de ficheros del sistema operativo.

VIERNES 22 DE FEBRERO

El día 22 a las 08:42:00 se ejecuta el programa 'FileTouch' y once segundos mas tarde se produce un cambio de atributos en el fichero "sistema contable.xls". Por la diferencia en milisegundos entre los cambios de atributos se deduce que se ha realizado de forma automática y no manual.


Para corroborar los cambios de atributo vamos a mirar en el global del fichero CSV (en la pantalla inferior) se puede deducir que siguen la pauta de fechas entre el 19 al 22 de febrero del año 2013 a excepción de las lineas que están marcadas de color verde, negro y rojo .



Lo cual viene a decir que en la tabla maestra se encuentra de forma consecutiva:
  • Un archivo de nombre "sistema contable.xls " con fecha de acceso del 18 de Febrero de 2013.
  • Que a continuación hay un archivo FileTouch con fecha del 22 de Febrero de 2013.
  • Que se encuentra el archivo "sistema contable.xls " con fechas al 11 de Junio de 2011.
  • Que todos los restantes ficheros tienen o mejor dicho continúan con fecha de 22 de Febrero de 2013.

Ni que decir tiene que todas estas entradas anteriores y posteriores de la fila de color rojo se corresponden secuencialmente en la tabla maestra tal y como se encontraban los ficheros y que la columna 'HEADER_MFTREcordNumber' determina la posición de los ficheros y por lo tanto según las pruebas hay una modificación de fechas al archivo.

NOTA: He omitido búsqueda de Bytes, atributos Stream, atributos residentes y no residentes, flags, file Sparse, etc. que implicaban mucho mas la manipulación de este (y otros) ficheros.

OTRAS CONSIDERACIONES

El programa FileTouch es un asistente que cambia la fecha y hora de creación, modificación y acceso de muchos ficheros al mismo tiempo. Es un ejecutable ligerísimo y que no requiere instalación. Este se puede descargar desde múltiples sitios de Internet.

Para comprobar si se había descargado este programa procedemos a utilizar Web Historian de mandiant y pasando los parámetros de nombre del programa y las fechas entre el 18 y 23 de Febrero apreciamos en la siguiente pantalla que se ha navegado hacia la web de Softonic.


En la siguiente se identifica que se ha procedido a la descarga del fichero.


Si analizamos la carpeta 'c:\windows\prefetch' con Winprefetchview de Nirsoft nos encontramos que efectivamente el sistema puso en la cache de aplicaciones la ejecución del programa FileTouch, exactamente el mismo día y a la misma hora de lo que indican la MFT.


De esta forma procedimos a revisar todos los ficheros que presuntamente entre esas fechas habían sido eliminados, o modificados. Cotejando con los datos que las fuerzas de seguridad nos habían proporcionado.

También conseguimos recuperar ficheros contables que fueron de ayuda a los investigadores dado que los apuntes de dichas hojas de cálculo correspondían con entradas y pagos en negro de dinero, muchos de estos apuntes se hayan reflejados en transferencias bancarias entre las empresas del grupo. La investigación  a día de hoy todavía sigue su curso y se estima larga  debido a la cantidad de imputados.

Happy Forensics!!

3 comentarios:

Gracias Pedro, siempre se agradece este tipo de casos prácticos para aprender siempre cosas.

Supongo que ya lo sabes, pero por si acaso, el "crdownload" del ficehro, es lo que usa Chrome para cuando se hacendescargas de ficheros y aún no se ha completado del todo ésta:
http://file.org/extension/crdownload#
Salu2!

Buenas Pedro.

Muchas gracias por tu artículo y tu blog y artículos.

Quería preguntarte, en este artículo que has escrito, en el uso de autopsy. ¿cómo haces la imagen del disco con dd? Quizás se enseñó uno de los días a los que no pude ir a vuestra charla sobre análisis forense.

¿Cómo sabes que tienes que obtener información del registro número 1168? Creo que es más claro con todo el volcado de la tabla MFT en csv del comando:
icat casomaria.dd 0> MFTsalida.csv

Si no fuera windows 7 o 8 o tuviera deshabilitado el "journaling" o han empleado herramientas antiforensics, ¿qué harías en ese caso? ¿Analizar datos en "crudo"?
Si en la eliminación de pruebas utilizan eraser con varias pasadas, ¿es posible recuperar información?

Un saludo y de nuevo, gracias por tu blog!!!












Increíble, soy solo un aficionado a la seguridad informática que le encantaría trabajar de esto pero hay que ser un genio aunque poco a poco voy aprendiendo mucho con estos blogs así que muchas gracias :)

He entendido todo pero, ¿que pasaría si se usa un borrado de varias pasadas como dijo el comentario de arriba o se usan herramientas como TrueCrypt con encriptación del disco duro por completo incluyendo la partición de arranque con AES-Twofish-Serpent?

¿Se puede hacer algo de ese modo?