A database that stores metadata about every file and directory on a NTFS Volume.

Each file and directory is represented as en entry in the table and are assigned a unique identifier, called the MFT record number.

The MFT is itself a file, and therefore also stores its own metadata.

Usefulness for Forensics

  • Stores details about each file, including timestamps, permissions, and data content locations.
  • It also stores timestamps and types of file modifications, which can help construct a timeline.
  • If the MFT entries of deleted file have not been reused, then they will still be present, allowing details on deleted files to be recovered.

Useful MFT Fields

$STANDARD_INFORMATION

  • Creation Time: The date and time when the file or directory was created.
  • Modification Time: The date and time when the file or directory was last modified.
  • Access Time: The date and time when the file or directory was last accessed.
  • Entry Modified Time: The date and time when the MFT entry itself was last modified.
  • Use Case: These timestamps are vital for timeline analysis to determine the sequence of user actions and file usage.

$FILE_NAME

  • File Name: The name of the file or directory.
  • Parent Directory: The MFT record number of the directory in which the file resides.
  • Additional Timestamps: Similar to $STANDARD_INFORMATION, but specific to this attribute and sometimes used as a fallback.
  • Use Case: This attribute is used to confirm the integrity of file paths and names in the system, which is crucial for tracking user movements and detecting unauthorised changes.

$DATA

  • Actual Data or Pointer: Either the data itself for smaller files or a pointer to the data for larger files.
  • Use Case: Direct analysis of file contents and data recovery, especially important in cases involving data theft or unauthorised data manipulation.

$LOGGED_UTILITY_STREAM

  • Transactional Data: Holds data related to transactional NTFS (TxF), which logs temporary file state changes.
  • Use Case: Can be used to track changes made during a transaction, useful in cases of system crashes or unexpected shutdowns to determine interim states.

$BITMAP

  • Cluster Allocation: Maps which clusters are in use by the file.
  • Use Case: Useful for recovering deleted files or reconstructing file data from clusters not overwritten by new data.

$SECURITY_DESCRIPTOR

  • Owner ID: Identifies who owns the file.
  • Permissions: Details what permissions are attached to the file (who can read, write, execute, etc.).
  • Audit Settings: Specifies what operations (such as access or changes) are logged by the system.
  • Use Case: Critical for determining access rights and detecting potential security breaches where permissions may have been altered.

$VOLUME_INFORMATION

  • Volume Serial Number: Unique identifier for the volume.
  • Flags: System flags related to the volume, such as whether it is dirty (improperly unmounted).
  • Use Case: Useful in multi-disk systems to link files and activities to specific volumes, essential in systems recovery and forensic analysis across multiple drives.

$INDEX_ROOT and $INDEX_ALLOCATION

  • Index Entries: Used in directories to index contained files for quick access.
  • Use Case: Forensically important for reconstructing directory structures and understanding how data was organised and accessed, particularly in complex investigations involving numerous files and directories.