Recuperando archivos de la MFT

 Hace ya algún tiempo, cuando empezaron los primeros ataque por ransomware, me vi en la necesidad de recuperar determinados ficheros de un equipo sin decrypter del ransomware en cuestión,

Dicha acción supuso un reto para mi, y me toco investigar mucho.

Si he de decir que se obró con rapidez desconectando el equipo de la corriente en cuanto se vieron los primeros indicios de infección. Dicha acción propició que no se realizara una nueva copia del archivo de la MFT.

Antes de continuar he de decir que no soy un experto en la MFT, tampoco conozco el tiempo exacto en que se realizan las copias del mismo, pero si se que es un fichero donde están referenciados todos los archivos que puede contener un sistema Windows, al final todo es un fichero.

Como entusiasta de la informática forense si me atrevo a decir que:


La MFT o Master File Table puede ser considerada uno de los ficheros más importantes en el sistema de archivos NTFS, dado que almacenada todos los ficheros de un volumen de disco, la localización del fichero en el disco y los metadatos del mismo.


Extracción de ficheros

Herramienta utilizada: FTK Imager Lite

El escenario donde se ha realizado la investigación era controlado para la obtención de las pruebas necesarias.

"Equipo infectado por ransomware el día 5 /10/2017 y desconexión del cable de alimentación antes de que terminara la infección nada más ver evidencias."

 El primer paso es disponer, bien el disco original o una imagen del mismo con la que podamos trabajar, como en cualquier investigación forense que realicemos, sin entrar en más detalle.



Una vez ejecutado FTK, os recomiendo que desde el menú superior View activéis la opción Hex Value Interpreter, observamos que el mismo está dividido en 4 paneles:
  • Panel de evidencia 
  • Panel de lista
  • Hex Value Interpreter
  • Panel de vista
Vamos a realizar la búsqueda de un directorio en concreto el cual contiene fotos (el proceso será igual para cualquier tipo de archivo). El directorio se llama "DOCUMENTOS IMPORTANTES Y FOTOS DE VIAJE"

Desde el panel de evidencia hemos de seleccionar el archivo $MFT que lo visualizaremos en el panel de Vista, previamente habremos seleccionado [root] desde el Panel de Evidencias.

En el Panel de Vista presionaremos el conjunto te teclas CTRL+F o botón derecho seleccionar Find, seleccionaremos la opción Text y escribiremos el nombre a buscar, en este caso el directorio.


Si el directorio existe en la MFT será seleccionado.

Recordamos que estamos en un escenario tras una infección por ransomware, y sabemos dado que previamente hemos analizado el disco, que ese directorio contiene un archivo de imagen llamado "indice.jpg"

Así que repetimos la búsqueda nuevamente, pero en este caso con el nombre de indice.jpg



Si ha habido suerte, FTK Imager encontrará el resultado por su nombre. Además, podemos observar que el fichero JPG, además, posee más información.

Cada registro MFT tiene un encabezado de registro, FILE0, también es conocido como “Marcador Mágico”.


File Carving Manual


Lo primero que pensamos cuando nos encontramos ante un caso por infección de ransomware es que está todo perdido, pero nosotros como investigadores forenses sabemos que podemos intentar recuperar ficheros, que previamente hemos localizado, eso sí, es un trabajo totalmente manual y lento, pero efectivo si nuestra MFT está intacta.

Como hemos visto, y conociendo los nombres de los ficheros, podemos localizarlos dentro de la MFT, ahora vamos a recuperarlos  

Fecha de creación

Localizado el nombre del fichero, lo primero que haremos es localizar la fecha de creación del mismo en la MFT, nos posicionaremos unas líneas más arriba del texto encontrado (nombre de la imagen) y buscaremos algo similar a esto: ¹x.kþ<Ó

Al seleccionar, y en la vista HEX podremos ver su fecha de creación.

Donde podemos observar que la fecha de creación dicho fichero en la MFT es previo al día de la infección, buena señal!

Cómo recuperar el fichero


Uno de los atributos de la MFT es la sección $DATA, la cual empieza con el código 0 x 80 00 00 00
Nos posicionaremos sobre el Marcador Mágico FILE0 y haciendo uso del cuadro de diálogo buscar y seleccionando una búsqueda Binary(HEX) buscaremos 80000000, y nos posicionará directamente en la sección $DATA del registro del fichero en la MFT.


Ya tenemos el comienzo de la sección $DATA, la cual empieza con el código 80, ahora bien, para determinar el tamaño de, en este caso, la imagen, hemos de observar los 4 bytes siguientes, es decir 0 x 48 00 00 00 01 00, los cuales el intérprete Hex lo convertirá a su valor decimal.



Eliminado o no

El código que encontramos a la derecha del tamaño, 0 x 48 00 00 00, es 0 x 01 00, y su nomenclatura o interpretación es la siguiente:

- 01 00 > indica que el fichero existe
- 00 00 > indica que el fichero está borrado
- 03 00 > indica que existe el directorio
- 04 00 > indica que el directorio está borrado

Por consiguiente, sabemos que la imagen a recuperar no ha sido eliminada del disco y la localización de la imagen en el disco está disponible, y empieza en el byte 32 del offset de la sección $DATA, es decir:



Ahora, debemos posicionarnos en dicho offset y al seleccionarlo podemos observar cómo el intérprete Hex nos indica su valor en bytes, 64, es decir, nos indica en qué sección (cluster) tenemos disponible dicha información.


Ahora conocemos el offset 64 donde comienza la sección $DATA, la cual contiene la información de la imagen, y hemos obtenido el comienzo de la misma.


Observamos que la sección $DATA comienza en la posición 0 x 31, pero llegados a este punto el valor que nos interesa es el que está justo a su derecha, es decir, 0 x 03 en este caso, al seleccionarlo, nos indicará la cantidad de clusters que ocupa, lo que quiere decir, el tamaño de la imagen.

Los tres valores siguientes, 0 x 25 95 00, nos va a indicar el número de clusters que ocupa la imagen, y veremos su valor decimal en el panel.


Ese valor decimal, el 38.181, hemos de apuntarlo en algún lado, lo usaremos más tarde.
El siguiente paso será clickar en el nombre del Volumen del Panel de Evidencias y observar en la pestaña Propiedades del Interprete Hex el valor del cluster, así que vemos que es 4096 bytes.


Ya tenemos todos los datos necesarios. Ahora realizaremos el siguiente cálculo:
3 x 4096 = 12288 > tamaño de la imagen

Ahora sabemos que:

El cluster de inicio es 38181 y el tamaño de la imagen es de 12288.
Sobre el nombre del volumen en el panel de Evidencias, hacemos click derecho y seleccionamos la opción “Go to sector / cluster” e introduciremos el valor de inicio del cluster:


Nos va a posicionar en la cabecera de la imagen:



Volvemos a hacer click derecho sobre el comienzo de la cabecera y seleccionamos la opción “Set Selection Lenght” e introduciremos el valor que hemos obtenido anteriormente, el tamaño, es decir: 12288.




Tan sólo nos queda volver a hacer click derecho y seleccionar la opción “Save Selection…” para recuperar la imagen. (Acordaros de poner la extensión, en este caso .jpg)

El resultado



Como podéis ver es un proceso un poco tedioso el hacerlo de forma manual, pero ahí tenéis los pasos por si alguien se anima a realizar un script de automatización :)

Espero que os sirva de ayuda :)











Publicar un comentario

0 Comentarios