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.
En el fichero Journal se registrarán, entre otras cosas:
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
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
- 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
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.
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.
En la siguiente se identifica que se ha procedido a la descarga del fichero.
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:
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.
Fuente: http://conexioninversa.blogspot.com/2013/03/lo-que-la-mentira-esconde-el-caso-de.html
No hay comentarios:
Publicar un comentario