BACS 371 Computer Forensics Advanced File Systems NTFS File Systems File Systems (See http://www.ntfs.com) A method for storing and organizing computer files and the data they contain to make it easy to find and access them File System Types FAT (File Allocation Table) FAT12 FAT16 FAT32 exFAT NTFS (New Technology File System) Functions Manage “free space” Allocate clusters to file Track time (MAC – Modify, Access, Create) NTFS Characteristics File Size 16 exabytes minus 1 KB (264 minus 1KB) Reality 16 terabytes minus 64 KB (244 minus 64KB) Theoretically Volume Size Theoretically 256 terabytes minus 64 KB (232 clusters minus 1 cluster) Reality 16 terabytes Files per Volume 4,294,967,295 (232 minus 1 file) Loads applications OS takes over Boot sector runs these NTFS Architecture MBR points to NTFS Boot sector NTFS Architecture Always at cluster 0 within the partition MFT can be anywhere after boot sector File attributes are stored here. No fixed structure MFT copy can be anywhere after boot sector Notice that the end of sector marker is 55 AA. You can look for this to find boot sectors for NTFS and DOS. NTFS Boot Sector Offset 00 10 03 10 11 10 36 10 84 10 510 10 Length 3 Bytes 8 Bytes 25 Bytes 48 Bytes 426 Bytes 2 Bytes Description Jump Instruction OEM ID Bios Parameter Block (BPB) Extended BPB Bootstrap Code. End of Sector Marker (55AA) Boot sector always located a cluster 0 of the partition NTFS BIOS Parameter Block (regular & extended) NTFS Bootstrap code NTFS Boot Sector Many fields are not important, but these are the key ones to know about. 11 10 13 10 21 10 40 10 48 10 56 10 64 10 72 10 Bytes per sector (2 bytes) Sectors per Cluster (1 byte) Media descriptor. F8=HD; F0=Floppy (1 byte) Total sectors (8 bytes) Logical cluster number for the MFT (8 bytes) Logical cluster number copy of the MFT (8 bytes) Clusters per MFT Record (1 byte) Volume serial (8 bytes) NTFS Boot Sector WinHex allows access to an interpreted NTFS Boot Sector. Use the Access Tab. NTFS Bios Parameter Block Little Endian 11 10 Bytes per sector: 00 02 020016 = 51210 13 10 Sectors per cluster: Don’t forget – Little Endian! 0816 = 810 NTFS Bios Parameter Block 21 10: Media Descriptor: F8 is hard drive, F0 is floppy. 40 10 Total number of sectors: Little Endian F7AF4E0900000000 000000094EAFF7 156,151,799 sectors, i.e., ~80GB NTFS Bios Parameter Block 48 10: Logical cluster number for MFT copy 1: cluster 0C 7F E9 (File $MFT) 56 10: Logical cluster number for MFT copy 2: cluster 40 02 9D NTFS Bios Parameter Block 64 10: Clusters per MFT record: F6 72 10: Volume Serial Number: AC 8F 88 AC 74 FE Master File Table (MFT) Is itself a file! An array of records constituting a database of all files in system (including a record of the MFT itself) Each record is usually 1024 bytes First 16 records contain volume-specific information NTFS Metadata Files Remaining records are related to specific files found in the file system NTFS Metadata Entries System File File Name MFT Record Master file table $Mft 0 Contains one base file record for each file and folder on an NTFS volume. If the allocation information for a file or folder is too large to fit within a single record, other file records are allocated as well. Master file table 2 $MftMirr 1 A duplicate image of the first four records of the MFT. This file guarantees access to the MFT in case of a single-sector failure. Log file $LogFile 2 Contains a list of transaction steps used for NTFS recoverability. Log file size depends on the volume size and can be as large as 4 MB. It is used by Windows NT/2000 to restore consistency to NTFS after a system failure. Volume $Volume 3 Contains information about the volume, such as the volume label and the volume version. Attribute definitions $AttrDef 4 A table of attribute names, numbers, and descriptions. Root file name index $ 5 The root folder. Cluster bitmap $Bitmap 6 A representation of the volume showing which clusters are in use. Boot sector $Boot 7 Includes the BPB used to mount the volume and additional bootstrap loader code used if the volume is bootable. Bad cluster file $BadClus 8 Contains bad clusters for the volume. Security file $Secure 9 Contains unique security descriptors for all files within a volume. Upcase table $Upcase 10 Converts lowercase characters to matching Unicode uppercase characters. NTFS extension file $Extend 11 Used for various optional extensions such as quotas, reparse point data, and object identifiers. 12–15 Reserved for future use. Purpose of the File MFT Record MFT Record entries are associated with each file and directory in the system. A single file/directory can occupy from 1 to 4 MFT records (usually just 1) An MFT entry is made up of a header, and a series of attributes. MFT entry attributes are loosely defined. Each attribute is preceded by the attribute header. The attribute header identifies Type of attribute. Size. Name. MFT Record Structure The attribute header gives basic information about the attribute. A resident attribute is stored in the MFT entry. A non-resident entry is stored in a cluster outside the MFT. This example shows 3 resident attributes. MFT Record Structure Some attributes are actually stored in the MFT, others are pointed to from the MFT Resident attributes are stored in MFT record. Non-resident attributes are stored in cluster runs. A cluster run consists of consecutive clusters and are identified by starting cluster and run length. NTFS distinguishes between Virtual Cluster Numbers and Logical Cluster Numbers. LCN * (#sectors in cluster) = sector number LCN 0 is first cluster in the volume (boot sector). VCN 0 refers to the first cluster in a cluster run. MFT Record Structure Each attribute type within an MFT record is identified by a code number. A single MFT entry can have multiple attributes of the same type. The attribute content sizes of attributes can be of different sizes (depending on what type they are). Resident attributes (such as Standard Information, File Name, and Data) are stored locally. Non-Resident attributes are stored as a starting cluster number and a run length. NTFS File Attributes Attribute Type Description Standard Information Includes information such as timestamp and link count. Attribute List Lists the location of all attribute records that do not fit in the MFT record. File Name A repeatable attribute for both long and short file names. The long name of the file can be up to 255 Unicode characters. The short name is the 8.3, case-insensitive name for the file. Additional names, or hard links, required by POSIX can be included as additional file name attributes. Security Descriptor Describes who owns the file and who can access it. Data Contains file data. NTFS allows multiple data attributes per file. Each file typically has one unnamed data attribute. A file can also have one or more named data attributes, each using a particular syntax. Object ID A volume-unique file identifier. Used by the distributed link tracking service. Not all files have object identifiers. Logged Tool Stream Similar to a data stream, but operations are logged to the NTFS log file just like NTFS metadata changes. This is used by EFS. Reparse Point Used for volume mount points. They are also used by Installable File System (IFS) filter drivers to mark certain files as special to that driver. Index Root Used to implement folders and other indexes. Index Allocation Used to implement folders and other indexes. Bitmap Used to implement folders and other indexes. Volume Information Used only in the $Volume system file. Contains the volume version. Volume Name Used only in the $Volume system file. Contains the volume label. $MFT Template MFT Records for directories Folders contain index data. Small folders reside within the MFT record Larger folders have an index structure to other data blocks. They use a B-tree structure. MFT Small File Entry The master file table allocates a certain amount of space for each file record. The attributes of a file are written to the allocated space in the MFT. Small files and directories (typically < 800 bytes), such as the file illustrated in next figure, can entirely be contained within the master file table record. NTFS Multiple Data Streams For compatibility with Mac OS Fork Executable In NTFS, unlimited number of streams A data stream is not displayed when you open a text file in a text editor Must examine the MFT for the file to see if there is a ‘:’ following the file name Copy to FAT includes only 1st Stream Example Innocuousfile.txt Innocuousfile.txt:hiddenporn ADS Example File System Comparisons Criteria Operating System NTFS v.5 exFat FAT32 FAT16 Windows 2000 Windows XP Vista, Win 7 Windows XP Vista, Win 7 Mac OSX Windows 98 Windows ME Windows 2000 Windows XP Vista, Win 7, Mac OSX DOS All versions of Microsoft Windows Limitations Max Volume Size 2TB 128 PetaByte 2TB 2GB Nearly Unlimited Nearly Unlimited Nearly Unlimited ~65000 Limit Only by Volume Size 16 Exabytes 4GB 2GB Max Clusters Number Nearly Unlimited Nearly Unlimited 268435456 65535 Max File Name Length Up to 255 Up to 255 Up to 255 Standard - 8.3 Extended - up to 255 Max Files on Volume Max File Size File System Features Criteria Unicode File Names NTFS5 NTFS FAT32 FAT16 Unicode Character Set Unicode Character Set System Character Set System Character Set MFT Mirror File MFT Mirror File Second Copy of FAT Second Copy of FAT Boot Sector Location First and Last Sectors First and Last Sectors First Sector First Sector File Attributes Standard and Custom Standard and Custom Standard Set Standard Set Alternate Streams Yes Yes No No Compression Yes Yes No No Encryption Yes No No No Object Permissions Yes Yes No No Disk Quotas Yes No No No Sparse Files Yes No No No Reparse Points Yes No No No Volume Mount Points Yes No No No 256 Char 256 Char 256 Char 8.3 Names System Records Mirror File Names Overall Performance Criteria NTFS5 NTFS FAT32 FAT16 Built-In Security Yes Yes No No Recoverability Yes Yes No No Performance Low on small volumes High on Large Low on small volumes High on Large High on small volumes Low on large Highest on small volumes Low on large Disk Space Economy Max Max Average Minimal on large volumes Fault Tolerance Max Max Minimal Average