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!