Análisis forense en Windows. Sistema de archivos NTFS

Introducción

Hasta aquí hemos iniciado labores forenses, hemos empezado a utilizar herramientas de la suite Sleuthkit y hemos trabajado sobre un sistema Windows. Antes de profundizar más, debemos entender bien cómo funciona el sistema de archivos sobre el que vamos a trabajar la gran mayoría de las veces, debemos entender que corre por debajo de las herramientas, que hacen las herramientas, en que se basa su funcionamiento y esto, os lo aseguro, en algún momento os salvará de una situación comprometida. Vamos a aprender algo del sistema de archivos NTFS que usan por defecto los sistemas modernos Windows.

Obviamente, es imposible explicar en un solo post todo sobre NTFS, por ello, lo primero que debo decir es que esto va a ser una introducción. Más adelante, según vayamos avanzando iremos profundizando más y más en cómo funciona, de momento tan solo quiero explicar cuatro cosillas breves para ayudar en esos primeros pasos tambaleantes que damos todos. AVISO: Este post va a ser más aburrido que los anteriores, pero es un paso que debemos dar si queremos llegar a ser realmente buenos. Mas tarde, llegaremos a Ext3-4, Reiser, ZFS, os lo prometo.

Pero hoy toca Windows, la vida es dura chavales.

 

Historia NTFS

Para comprender el presente, dicen los legos que hay que remitirse al pasado y desde ahí comprender el presente. Es lo que voy a hacer ahora, porque seguro que todos nos hemos  preguntado de donde viene este sistema ¿Verdad?

NTFS se basa, proviene si lo queréis decir así,  del sistema de archivos HPFS (Sistema de Archivos de Altas Prestaciones, es decir un sistema de archivos de alto rendimiento), que fue creado por Microsoft con el sistema operativo de IBM OS/2. Se caracterizaba por permitir nombres largos, metadatos e información de seguridad, así como de autocomprobación e información estructural. Además, aunque poseía tabla de archivos (como FAT), ésta se encontraba posicionada físicamente en el centro de la partición, de tal manera que redundaba en menores tiempos de acceso a la hora de leerla/escribirla.

 

Vale, esto esta genial, pero ¿Qué es NTFS?

NTFS, amigos lectores, significa  “New Technology File System” o Sistema de Archivos de Nueva Tecnología y es  el último tipo de archivos soportados por sistemas Windows. Es un sistema de archivos de alto desempeño que (en teoría) se repara a sí mismo y aporta diversas características avanzadas como seguridad a nivel de archivos, compresión, y auditoría.

Aporta seguridad para los datos, ya que tiene la capacidad de cifrar y descifrar todo tipo de datos, archivos y carpetas. Asimismo usa un conjunto de caracteres Unicode de 16 bits para los archivos y carpetas. Se supone también, que es un sistema tolerante a fallos. Este sistema puede examinar el archivo de registros (logs) y utilizarlo para restaurar el disco hacia un estado suficientemente sólido con una pérdida mínima de datos.

Los volúmenes que contienen NTFS, tienen dentro de si una “Master File Table” (MFT) o Tabla Maestra de Archivos. La cual contiene un registro para cada archivo y carpeta sobre el volumen. Los primeros bytes de la tabla están reservadas para los metadatos utilizados en implementar y mantener la estructura del sistema de archivos. Estos metadatos son almacenados en un conjunto de archivos del sistema.

Veamos cuáles son sus diversas partes y funciones tomando como ejemplo nuestro ya viejo conocido Windows 7 Pro de 64 bits.

Típica imagen de un sistema de archivos NTFS

Captura_ftk

A continuación os voy a contar la función de cada uno de los componentes principales dentro de un sistema de archivos NTFS típico y tópico. Por orden en la imagen:

  1. $AttrDef – Lista que  contiene los atributos de los archivos.
  2. $BadClus – Esto contiene una lista de clústers o sectores que tienen errores irrecuperables.
  3. $Bitmap – Lista que muestra la disponibilidad y uso de los clústers.
  4. $Boot – Se utiliza para montar el volumen NTFS durante el proceso de “bootstrap”.
  5. $I30: – Papelera, índice de elementos borrados.
  6. $LogFile – Las transacciones previas son listadas y almacenadas para furutas posibles restauraciones.
  7. $MFT – Archivo de registro base para un volumen NTFS, muy importante para análisis forense.
  8. $MftMirr – Los primeros cuatro registros del MFT son almacenados aquí para posibles restauraciones en caso de fallo o corrupción de la MFT primaria.
  9. $Secure – Lista de control de acceso, tiene descriptores de seguridad únicas para los archivos sobre el volumen.
  10. $Volumen – Mucha información relacionada al volumen, es almacenada en esta tabla.
  11. $Upcase – Esto es utilizado para convertir todos los caracteres en mayúscula a caracteres Unicode minúscula.
  12. $ – Esta es la carpeta Raíz.
  13. $Extend – Extensiones opcionales como cuotas e identificadores de objetivos son listados aquí.

¿Y cómo funciona NTFS?

La estructura NTFS es bastante simple, aunque es más complicada que, por ejemplo, en el sistema FAT.

Cada archivo está representado en un registro en la MFT (Tabla Maestra de Archivos). Asimismo, cada entradas en la MFT se clasifica en orden alfabético, esto le permite utilizar una búsqueda binaria, lo que acelera enormemente el trabajo del sistema con ese archivo. Para optimizar aún más el gestor de memoria caché utiliza un algoritmo lazywriter al escribir los datos directamente en el disco, y se almacena en la memoria hasta que la carga en la CPU no se reduce,  después esta carga en memoria disminuye en  un proceso de fondo.

Llegados aquí, la aviesa y avispada gente de sistemas ya está gritando: “¿Y qué pasa si hay un apagón mientras los datos aún están almacenados en la memoria? Obviamente se pierden, pero no tembléis, desde esta humilde web os damos la solución, se llama SAI (Sistema de Alimentación Ininterrumpida). Problema arreglado. Bromas aparte, al trabajar si o si, con este tipo de sistemas en entornos que requieran estabilidad y seguridad de no pérdida de los datos, estos aparatos son de obligada instalación.

 

Sector de Arranque de una partición NTFS

Cuando se asigna a un volumen de almacenamiento la configuración  por defecto de  NTFS, el programa de formato asigna los primeros 16 sectores para el sector de arranque y el código “bootstrap”. Al referirme a “Bootstraping” normalmente me refiero al inicio de un proceso auto sostenible, que se supone, actúa sin ingresos externos. Cuando hablo de ordenadores el término se refiere al proceso de cargar el software básico en la memoria de la computadora después de la puesta en funcionamiento o reinicio.

Captura-boottrap

Tabla Maestra de Archivos (MFT) NTFS     

El sistema de archivos NTFS contiene un único archivo llamado Tabla Maestra de Archivos (o MFT). Los volúmenes NTFS tienen, al menos, una entrada almacenada en la MFT.

La información relacionada a los atributos como tamaño, tiempo, fecha, además de permisos,  son guardados o bien, dentro de entradas MFT o en memoria asignada fuera del MFT, que es descrita por entradas MFT. Cuando el número de archivos sobre el volumen NTFS se incrementa, el tamaño del MFT aumenta también. También, cuando un archivo es borrado desde un volumen NTFS, los valores en el MFT son marcados como libres y este espacio puede ser reutilizado de nuevo. Inciso breve para los amigos forenses y aspirantes a forenses (Este tabla es MUY IMPORTANTE para nosotros, permite entre otras muchas cosas, extraer timelines muy completos de la vida de ese equipo). Por favor repasad algún post anterior del que ha escrito esto aquí. Continuemos…

Las utilidades que desfragmentan volúmenes NTFS sobre sistemas Windows no pueden mover entradas MFT, y como la desfragmentación innecesaria del MFT descompone el desempeño del sistema de archivos, NTFS reserva espacio para que el MFT mantenga su desempeño conforme se expanda, manteniendo así de manera eficaz su desenpeño.

hd-ntfs

Por último y no por ello menos importante aquí se aprecia la copia de los 16 primeros records de la MFT, también llamada MFT Mirror,  en caso de análisis forense no debemos olvidarnos nunca de esto, en un fallo que todos hemos cometido y que yo os recuerdo para que no os pase a vosotros.

 

Ventajas y desventajas NTFS

Ventajas:

  • NTFS es la mejor opción para volúmenes de unos 400 MB o más. El motivo es que el rendimiento no se degrada en NTFS, como ocurre en FAT, con tamaños de volumen mayores.
  • La posibilidad de recuperación está diseñada en NTFS de manera que un usuario nunca tenga que ejecutar ningún tipo de utilidad de reparación de disco en una partición NTFS.
  • Compatibilidad mejorada para discos duros más grandes.
  • Mejor seguridad porque puede utilizar permisos y cifrado para restringir el acceso a archivos específicos para usuarios aprobados.

Desventajas:

  • No se recomienda utilizar NTFS en un volumen de menos de unos 400 MB, debido a la sobrecarga de espacio que implica.
  • No es posible formatear un disco con el sistema de archivos NTFS; Windows NT formatea todos los discos con el sistema de archivos FAT porque la sobrecarga de espacio que implica NTFS no cabe en un disco.

 

De momento con esto ya vale por hoy, en próximas entregas hablaremos sobre permisos NTFS, las reglas ACL, privilegios y permisos, para ir abriendo boca jugaremos un poco con una opción muy poco conocida como son los ADS (o Alternate Data Stream). Iremos poco a poco adentrándonos en este sistema de archivos con el que, os lo aseguro, os va a tocar pegaros muuuuuchas veces, ya que para bien o para mal, a nivel escritorio es el más utilizado y en servers también tiene una buena cuota.

 

¡Hasta la próxima!

 

Análisis Forense en Windows. Montado, navegación y búsqueda a través de una imagen clonada

¡Muy buenos días a todos! Poco a poco estamos comenzando a tener una serie de conocimientos sobre análisis forense de entornos Windows. Esto nos va a permitir empezar a movernos con cierta soltura por estas movedizas y no suficientemente conocidas tierras del análisis forense. En este post voy a explicar de un modo muy sencillo como:

  1. Montar una imagen forense en el punto que deseemos de nuestro equipo de trabajo.
  2. Una vez montado, nos va a permitir movernos por todo/as las capetas y directorios de nuestra imagen forense, tan fácilmente como si lo hiciéramos por nuestro sistema de ficheros propio.
  3. Podremos movernos como deseemos, tanto por linea de comandos, como a través de nuestro explorador (si gustamos de apreciar la interfaz gráfica) .
  4. ¿Para que hacerlo? Bueno, podemos buscar ciertos registros o datos de un modo muy visual,  esto luego nos puede ayudar para explicar los pasos realizados a personas menos preparadas de una manera mas sencilla de asimilar.

Quisiera dejar claro un par de aclaraciones antes de continuar:

  1. Hay herramientas “automágicas” que hacen esto de manera automática y totalmente transparente para el usuario, funcionan muy bien y son totalmente recomendables y absolutamente fiables (este punto debe quedar claro). Por poner un ejemplo y para su uso en entornos Windows me viene a la cabeza la herramienta FTK Imager Lite.
  2. ¿Por qué hacerlo de esta manera? Muy sencillo, porque una vez que se explica no es tan complicado (lo vas a poder ver en breve) y porque la herramientas “automágicas” están muy bien, pero se puede llegar a perder de vista lo que ocurre por debajo si se usan de continuo. Al realizarlo como se va a explicar, somos conscientes en todo momento de lo que está pasando, sabemos donde estamos, que hacemos y porque lo hacemos. Una vez se llega a este punto con total normalidad, podremos empezar a trabajar con la tranquilidad que da el conocer el terreno que estamos pisando y esto, amigos lectores, no hará mejores y mas fiables profesionales.
  3. Cualquier herramienta que se utilice, en cualquier entorno que se utilice, puede llegar a ser perfectamente válida, tan solo debemos pensar antes de utilizarla que queremos, si esta herramienta nos lo puede dar y si entendemos lo que esta haciendo. Si la respuesta a estas tres presuntas es si, adelante. Nosotros somos personal técnico, los programas y sistemas que utilicemos para trabajar son eso, herramientas de trabajo,nada mas. En mi caso me desenvuelvo muy bien  en entornos Unix, me gusta mucho Unix, pero si tengo que trabajar en entornos Windows, no me supone mayor problema.

En el siguiente ejemplo, vamos a montar nuestra ya familiar imagen de Windows 7 pro de 64 Bits y a continuación navegaremos por su interior, tanto por consola como por interfaz gráfica (usando nuestro explorador de archivos).

Como máquina de trabajo, usaremos una distro Ubuntu (versión 16.04) a la que tan solo le hemos instalado unos iconos mas a mi gusto, un tema mas claro y nuestra ya conocida suite sleuthkit.

version

Comenzamos…

Abrimos una terminal y nos movemos al directorio Escritorio (podría ser perfectamente cualquier otro, /tmp por ejemplo, en este caso, por ser mas visual se creará en el Escritorio).

Creación Punto de montaje
Creación Punto de montaje

Este será nuestro punto de montaje de la imagen.

El segundo paso es tan sencillo como localizar el offset de inicio de Windows, para ello usamos la herramienta mmls

mmlsUna vez localizado el offset de Windows en el disco duro, se debe calcular el sector donde se inicia la partición por la cantidad de bytes asignada a cada sector (que en este caso son 512), por tanto…

calc

Una vez calculada la cifra, usaremos el comando mount

Con el comando mount realizaremos el montado de la imagen en la carpeta creada anteriormente en el Escritorio como punto de montaje (monta).

mount

sudo mount -o loop,offset=2151677952,ro,noexec,show_sys_files,streams_interface=windows ‘/media/itzala/WD/FORENSE/windows7.001’ /home/itzala/Desktop/monta/

Ahora se pasa a desglosar cada una de las opciones selecionadas de este comando:

Con la  opción -o utilizan  las siguientes opciones separadas por comas unas de  otras:

  1. Opción ro para realizar el montado en modo de solo lectura,no se podrá efectuar ningún cambio sobre la imagen (fundamental para un análisis forense)
  2. Con la opción noexec no se  permite la ejecución de binarios ejecutables en el sistema de archivos montado
  3. Opción loop para realizar el montado sobre el dispositivo
  4. Con la opción show_sys_files se muestran los archivos meta del volumen (ntfs en este caso)
  5. Se usa streams_interface=windows para utilizar flujos de datos alternos (ADS)
  6. Con offset=2151677952 le indicamos el inicio de la partición que nos interesa (en el caso de tratarse de  una unidad física) para realizar el montado a partir del byte ahí indicado.
  7. Indicamos el path de ma imagen a montar (en este caso /media/itzala/WD/FORENSE/windows7.001)
  8. Por último le indicamos el punto de montaje (/home/itzala/Desktop/monta)
  9. ¡Y ya está montado en donde le indicamos! ¿No ha sido tan difícil verdad?

interior-monta

Ya lo tenemos montado y lo podemos ver tanto desde nuestro explorador de archivos como en el caso de la imagen anterior (podemos incluso ver la copia de la $MFT que hablábamos en posts anteriores)…

terminal1

Nos colocamos con el terminal en en punto donde hemos montado la imagen y nos podemos mover sin ningún problema por todo el sistema de ficheros vía terminal…

interior_

Como se aprecia en las dos imágenes anteriores nos podemos mover sin modificar nada de la evidencia tanto por interfaz gráfica como vía terminal.

Resumiendo, de un modo muy sencillo hemos montado y accedido con total seguridad a una imagen forense y nos hemos movido con total libertad por su estructura de ficheros.  No es nada difícil y una vez se controla esto, podemos usar cualquier herramienta ya que, al conocer lo que va por debajo, no tenemos ninguna limitación. Podremos automatizar procesos con scripts con una velocidad pasmosa y llegar hasta donde nosotros deseemos.

Recuerda amigo lector, en nuestro mundo el límite es nuestra imaginación y nuestra capacidad de renovación.

¡Hasta la próxima!

 

P.D: Para que se vea que en este mundo hay opciones para todo y para mostrar las posibilidades de Linux, aquí esta una imagen de FTK Imager Lite corriendo en Ubuntu gracias a la magia de Wine.

Desktop

Análisis forense en Windows. Búsqueda selectiva de tipos de archivos en imágenes forenses, búsqueda, extracción y análisis a través de inodos

¡Muy buenas a todos! Después de los anteriores posts, voy a pasar a mostrar otras de las muchas y amplias herramientas que nos ofrece la maravillosa suite Sleuthkit.

Vamos a buscar dentro de nuestra imagen clonada de un windows 7 pro de 64 bits una serie de archivos que nuestro cliente desea encontrar. Para ello utilizaremos la herramienta fls para realizar una búsqueda de un tipo en concreto de archivos (en este caso serán archivos con extensión .doc), aunque podrían ser de cualquier otro tipo como txt, xls, docx, mp3…etc. Vamos a ello:

mmls

Una vez tenemos el offset de windows encontrado  con la estupenda herramienta mmls ( offset en la imagen marcado de azul), ahora vamos a lanzar una búsqueda sobre la  imagen:

busqueda-doc

Donde fls es la herramienta -r es búsqueda recursiva, -F le indica que buscamos un archivo,  -o 0004202496 el ya clásico offset de windows y después la ruta de la imagen. Hasta aquí nos sale una fuente de información enorme, para filtrarla lanzamos esa información contra un pipe (|) y le pasamos un grep con la extensión de archivo que queremos encontrar, en este caso un .doc.

Sigue siendo mucha información para buscar por terminal, de modo que volvemos a lanzar la orden anterior y redirigimos la salida hacia un archivo de texto, que en un alarde de originalidad, llamaremos doc.txt.

texto_redirigido

Ahora lo dejamos trabajar y cuando termina, abrimos en archivo con cualquier editor de texto, posteriormente con ese mismo editor podemos buscar con el parámetro que deseemos o, si se desea, podemos pasar ese archivo de texto por la herramienta mactime para pasarlo a formato .csv y analizarlo  usando Excel (por ofrecer otra posibilidad).

Como ejemplo, podemos buscar un documento que se llame Abreviado.doc, podemos usar el Bloc de notas, podemos usar Excel, o si somos muy pro y queremos empezar a despegarnos de las interfaces gráficas que tanto mal han hecho podemos escribir…

grep

Y ahí lo tenemos. Ya tenemos el archivo localizado, ahora lo vamos a extraer, ¿cómo? Muy sencillo de nuevo con la herramienta icat,  tenemos localizado el inodo del archivo, en este ejemplo 103679, ya tenemos toda la información que necesitamos, vamos a ello.

extración

Y ya está extraído.

Extraído

Por temas de privacidad y porque realmente el contenido en este caso es lo de menos, no se va a mostrar su contenido, pero se puede apreciar claramente que el archivo está y tiene su tamaño, pequeño es cierto, pero a efectos de prueba nos sirve perfectamente.

Localizar archivos borrados es un juego de niños con esta herramienta, tan fácil como hacerlo así:

borrados

Podemos lanzar un grep para filtrar la salida buscando el  tipo de archivo:

borrados_filtrado

Y así tendríamos todos los archivos .doc borrados, así de simple, con añadir -d nos buscaría los archivos borrados.

Y retomando el archivo extraído…

Una vez esta extraído, podemos seguir extrayendo información de  el. Podríamos usar exiftool una vez extraído, pero si nos interesara buscar información antes de extraerlo, una vez hemos focalizado el “objetivo”, lo podemos analizar antes para intentar ver si es el que  nos interesa. ¿De qué manera? Con la herramienta istat. Veamos

istat

En esta orden istat es la herramienta, -i raw es el tipo de imagen, -f  le indicamos que el file system es ntfs, -o …(a estas alturas explicar esto ya como que sobra ¿no crees?, le añadimos la ruta de la imagen y al final escribimos el inodo del archivo  (que aquí es 103678). Y esto es todo lo que muestra

 

istat-output

Increíble toda la información que nos muestra, cuando se ha creado, cuando se ha accedido, los inodos que lo componen, su entrada en el MFT… Una enorme cantidad de información que podemos aprovechar.

Podemos usar esta poderosa herramienta para hacer búsquedas por fechas de acceso, por fechas de creación, por fechas de modificación… Resumiendo, múltiples posibilidades que nos pueden permitir que, con las herramientas de esta maravillosa suite, un poco de imaginación y unas líneas de scripting podamos realizar poderosas investigaciones con muy poco esfuerzo.

¡Ahora a practicar!

Análisis forense de sistemas Windows. Obtención de $MFT de manera alternativa

¡Muy buenas a todos!

Este post  (que va a ser muy breve ya os lo adelanto) va a enlazar con el anterior, en el cual os hablaba de la importancia de la $MFT (Master File Table o tabla maestra de archivos)  y como trabajar hasta obtener un timeline de un equipo con sistema operativo windows 7 Pro,  que poder usar para investigaciones forenses, entre otras cosas.

Os hablaba también de trabajar con la suite de análisis forense The Sleuthkit, pues bien, hoy os voy a mostrar una manera muy sencilla de extraer la $MFT de una imagen clonada y posteriormente parsearla a formato .csv para analizarla desde Excel, Splunk, Calc de Libreoffice… etc.

Primero debemos averiguar la posición del offset de inicio de Windows, para ello, usaremos la herramienta mmls.

mmls
Uso de mmls para detectar offset

 En la línea número 06, en la tercera columna  tenemos el offset (0004202496), una vez localizado, vamos a extraer la $MFT.

Para ello usamos la herramienta icat con la siguiente orden:

sudo icat -i raw -f ntfs -o 0004202496 /Volumes/WD/FORENSE/windows7.001 0 > /Users/DiegoADMIN/Desktop/extraida.mft

 

icat

Donde con sudo nos hacemos root, con  -i raw indicamos el tipo de imagen que es (en este caso raw), con -f ntfs se le indica que es u sistema de archivos NTFS, con -o 0004202496 le decimos el offset de inicio de windows, a continuación ponemos la ruta donde se guarda la imagen, el 0 del final es donde le indicamos que comience a coger desde el offset 0, es decir el inicio. Posteriormente lo redireccionamos a la ubicación donde queramos guardar el archivo resultante y listo (En este caso el Escritorio, con nombre extraída.mft), solo queda esperar…

 

du -h

Ya la tenemos en donde queremos. Ahora podemos parsearla y pasarla a un archivo .csv. En este punto hay muchísimas herramientas que lo pueden hacer con interfaz gráfica, MFTParser por ejemplo, o  por linea de comandos. De estas a mi me gusta mucho un script en python que se llama analyzeMFT.

Lo podemos instalar con el sufrido e injustamente no reconocido pip:

pip install analyzeMFT

O te bajas el ejecutable de github y lo usas desde su carpeta descomprimido…

analyzemft

Donde -f es la ubicación de la MFT extraída anteriormente -c es para escribir el formato de tiempo en .csv  -e es para poner el tiempo del timeline  en formato excel y -o es la salida del archivo en formato .csv (en este caso en el Escritorio con nombre timeline.csv.

Luego se importa desde Excel como dato y …

Excel

Como se aprecia es un archivo .csv potente, de modo que le llevará rato cargar. Paciencia…

Tamaño timeline

Y esto es todo por hoy, un breve tip que nos muestra que en nuestro trabajo, SIEMPRE hay alternativas y que debemos estar SIEMPRE en un eterno aprendizaje, quizá por eso sea tan apasionante.

¡Hasta la próxima!

Presentación y primer post

Con un cierto retraso por motivos de fuerza mayor y abrumado ante la responsabilidad y confianza que mi “hermano” y gran amigo Paco ha depositado en mi, comienzo este nuevo proyecto.

¿Quién soy? Mi nombre es Diego (@itzala74) en twitter y me dedico a labores de análisis forense  y auditorias de seguridad como perito informático. Compagino ambas labores como buenamente mejor puedo. Amante de las nuevas tecnologías y del mundo Unix en particular (aunque sin despreciar otras tecnologías, a fin de cuentas son herramientas). Maquero y amante de Arch Linux. Estudiante cuando el tiempo (¡ese escaso bien!) lo permite, de python y reciente descubridor de toda la potencia de Powershell (aunque donde esté mi bash…).

¿Qué voy a hacer por aquí? Pues intentar compartir mis escasos conocimientos con quien quiera leerme e intentar mejorar este mundo para todos. Iré enseñando poco a poco técnicas de investigación  forense, algo de hacking y hardering de sistemas en general, aunque de eso otro amigo que espero se pase en breve por aquí sabe mucho mas que yo… En cualquier caso, espero no aburrir demasiado y poder aportar mi granito de arena.

 

¿De que vamos a hablar hoy? Pues hoy voy a empezar con algo suave y fácil que nos dará pie a posteriores posts para ir profundizando sobre ello.

Hoy voy a hablar de la Tabla Maestra de Archivos o $MFT . ¿Qué es la MFT?

La tabla maestra de archivos es el primer archivo de un volumen de tipo NTFS (New Technology File System o sistema de archivos que viene usándose en Windows NT desde las versiones Windows 2000). Básicamente, constituye un directorio centralizado de todos los ficheros del disco y de si misma, haciendo referencia continuamente a ellos mientras el sistema localiza información, la lee y la escribe en el disco.

La tabla maestra de archivos (o $MFT) es la que contiene todos y cada uno de los archivos que componen un volumen,  es decir, cuando el sistema operativo consulta el contenido de un archivo, se dirige a la $MFT para obtener información del mismo, como por ejemplo tamaño, propiedades, atributos, localización, nombres de archivos… etc. La $MFT es, para que nos hagamos una idea mas visual,  como una base de datos que almacena todo la información que necesita a la hora de acceder a un archivo.

Captura de pantalla 2016-05-16 a las 21.13.42

Esta es una representación (muy simplificada eso si) de un típico volumen Windows. Se aprecia claramente el lugar que ocupa y como mas o menos, por la mitad del volumen hay una copia de esa tabla. Quiero indicar también que la  $MFT puede estar en diferentes zonas del disco, es interesante también  indicar que por cada archivo o carpeta crea un registro de 1kbyte, 1024 bytes. Tener esto en cuenta, es especialmente útil para cuando se ha formateado un dispositivo  o la $MFT está dañada.

Todo esto, ademas es muy interesante y práctico, ya que en caso de corrupción o daño de la primera tabla, podremos reconstruirla con la información que obtengamos de la segunda copia (o mirror, como la denomina Microsoft).

También es una fuente de información muy importante, usada para investigaciones forenses donde se usa para extraer todo tipo de evidencias. Cuando se esta realizando una investigación, uno de los pasos para encontrar pruebas digitales, es realizar búsquedas por palabras claves y revisando los resultados muchas veces se encuentran en estas áreas o carpetas recuperadas. Podemos averiguar saber fechas de encendido y apagado de equipos, creación, modificación y destrucción de archivos, instalación de programas, desinstalación… Resumiendo, un timeline muy completo de toda la vida de ese equipo desde que se instaló windows con   mucha información que como perito investigador podremos aprovechar.

Después de esta pequeña introducción, que nos servirá como base para entender lo que vendrá después así como su importancia, vamos a centrarnos en las técnicas forenses en si mismas.

Una práctica que quiero intentar inculcar  desde el principio, es la de no  usar herramientas que nos oculten el proceso al personal técnico  e intentar usar herramientas mas manuales, el motivo es muy simple, las herramientas automatizan mucho trabajo, pero corremos el riesgo de perder de vista lo que corre por debajo y eso es un lujo que como investigadores no podemos permitirnos.

En este caso, voy a mostrar como extraer y parsear la $MFT desde nuestra copia del disco clonado, usaremos para ello la suite Sleuthkit. ¿Qués es The Sleuthkit?

Es una colección de herramientas de análisis forense de volumen de sistema y archivos. Las herramientas del Sistema de Archivos  nos permiten examinar el sistema de archivos de un equipo a investigar, de una manera no intrusiva y altamente eficaz. Las herramientas de volumen de sistema permiten examinar la disposición de los discos y otros medios. The Sleuth Kit soporta particiones DOS, particiones BSD (etiquetas de disco), particiones Mac, partes Sun (índice de volumenes)y disco GPT.  Enlace a la página oficial aqui 

Captura de pantalla 2016-05-16 a las 23.01.51

PARSEADO MFT CON SLEUTHKIT

Partimos de una imagen forense de un ordenador, en esta demo una imagen de un ordenador con windows 7 pro de 64 bits. Podemos hacer las adquisición usando dd, dfcldd, dc3dd, guymager, la herramienta con la que os sintáis mas a gusto… No es la intención de este post (de momento) profundizar en ese tema, mas adelante ya lo tocaremos ya que también es importante. De momento vamos a por lo fácil

Vamos a usar una de las herramientas de esta competa suite, la utilidad fls y mmls

Se usa la utilidad mmls para averiguar entre otras cosas el offset de inicio de windows, tan fácil como esto…

Captura de pantalla 2016-05-16 a las 23.14.10

La zona marcada en azul es el offset de del disco duro.

Después se parsea el disco duro y se pasa todo a un archivo de texto con formato .txt

Captura de pantalla 2016-05-16 a las 23.07.50

fls -r -m “/” -i raw -o 0004202496 /Volumes/WD/windows7.001 > body.txt

Donde -r es para que sea búsqueda recursiva, -m “/” para que busque desde la raiz, -i raw es para indicar que el archivo a analizar es una imagen en formato raw, -o para indicarle el offset de inicio del volumen de windows  (este ya averiguado antes), a continuación indicamos la ruta de la imagen y posteriormente lo redireccionamos a un archivo de texto (en este caso body.txt)

Después tenemos un archivo de texto de un cierto tamaño…

Captura de pantalla 2016-05-16 a las 23.21.06

Para terminar usamos la utilidad mactime para convertir ese archivo de texto a un archivo con extensión .csv que podremos ver luego con Excel por ejemplo.

Captura de pantalla 2016-05-16 a las 23.23.13

 

Captura de pantalla 2016-05-16 a las 23.24.12

¡Voilá! Aquí está el resultado. Aquí tenemos un timeline de toda la vida de ese ordenador y podemos importarlo a Excel y empezar a analizarlo poco a poco.

Abrimos Excel => Importar Datos desde texto => Seleccionamos el archivo .csv y…

Captura de pantalla 2016-05-16 a las 23.28.39

Captura de pantalla 2016-05-16 a las 23.28.50
Captura de pantalla 2016-05-16 a las 23.28.58

Y como resultado final…

Captura de pantalla 2016-05-16 a las 23.36.02Aquí tenemos un timeline donde podemos buscar por fechas, archivos, podemos usar splunk   para hacer búsquedas por parámetros, resumiendo un sinfín de posibilidades.

 

De momento lo voy a dejar aquí, por hoy ya basta, en próximos posts veremos como extraer la $MFT con otra utilidad de la suite (icat)  y como parsearla con un poco de la magia  de  python  hasta convertirla en un archivo con extensión .csv para analizar.  Buscaremos archivos dentro del disco clonado, buscaremos y extraeremos archivos borrados, podemos crear scripts que nos automaticen los procesos y nos filtren y muestren los resultados… etc.  Hay todo un mundo ahí fuera sin interfaz gráfica amigos y funciona muy bien.  Poco a poco iremos entrando en este fascinante mundillo que os enganchará y a la vez, os hará mejores profesionales.

¡Hasta la próxima!