If you can see this check that

Main Page


Filesystem Structure and Metadata - NTFS

User:
Password:

Objectives

In this lab you will manually verify information related to given partition and explore file system metadata. In the first instance you will examine Volume Boot Record of the NTFS file system. Secondly, you will examine $MFT file and the file records contained within MFT.

To reset all the check buttons from a previous attempt click here

Question 1: Structure Analysis

Using the mmls command analyse /images/diskimg1.dd. Extract the sector offset information for the three partitions shown.

Metadata slotStart sector offset
000:000
000:001
001:000
Tests - not attempted
00:00 start offset UNTESTED
00:01 start offset UNTESTED
01:00 start offset UNTESTED

Question 2: NTFS Volume Boot Record

Using the dd and xxd commands open the first sector of the NTFS partition and complete the following table. Refer to the NTFS Cheat Sheet located in Moodle to find and decode information from VBR.

VBR FieldValue
OEM (ASCII)
Bytes per Sector
Sectors per Cluster
Reserved Sectors
Sectors per Track
Heads
Hidden Sectors
Total Sectors
Logical Cluster of $MFT
Logical Cluster of $MFTMirr
Volume Serial Number (Native Encoding)
Tests - not attempted
OEM String UNTESTED
Bytes per sector UNTESTED
Sectors per cluster UNTESTED
Reserved Sectors UNTESTED
Sectors per Track UNTESTED
Number of Heads UNTESTED
Hidden Sectors UNTESTED
Total Sectors UNTESTED
$MFT first cluster UNTESTED
$MFTMirr first cluster UNTESTED
VSN Native Endian UNTESTED

Question 3: Finding $MFT

NTFS was designed for reliability, security, and support for large storage devices. Scalability is provided by the use of generic data structures that wrap around data structures with specific content. This is a scalable design because the internal data structure can change over time as new demands are placed on the file system, and the general wrapper can remain constant. One example of a generic wrapper is that every byte of data in an NTFS file system is allocated to a file.

The Master File Table (MFT) is the heart of NTFS because it contains the information about all files and directories. Every file and directory has at least one entry in the table, and the entries by themselves are very simple. They are 1 KB in size, but only the first 56 bytes have a defined purpose. The remaining bytes store attributes, which are small data structures that have a very specific purpose.

To verify our information regarding the $MFT in the VBR we can go to the sector/cluster in question and determine if the MFT record stored there is the MFT. Using the dd command open first sectors of the $MFT.

What physical sector is the start of the $MFT file?

Verify that you are indeed at the correct sector. Reproduced below are the values that should be present. The one of note is the Unicode text $MFT that is located at about the halfway point in the sector.

Image Format
Figure 1: $MFT record
Tests - not attempted
Physical sector of $MFT UNTESTED

Question 4: Decoding MFT record

The record we will attempt to decode is located at offset 0x14c00 (in bytes) within $MFT file.

What is the physical sector of the record at offset 0x14c00 within $MFT?

Use dd command to open the physical sector.

Tests - not attempted
Physical sector of the record UNTESTED

The core structure of each record is based on the following information and attributes that are stored for each file:

  • Header: The header in the MFT is a set of low-level management data used by NTFS to manage the directory. It includes sequence numbers used internally by NTFS and pointers to the file's other attribute and free space within the record.
  • Standard Information Attribute: This attribute contains "standard" information stored for all files and directories. This includes fundamental properties such as date/timestamps for when the file was created, modified and accessed.
  • File Name Attribute: This attribute stores the name associated with the file. Note that a file can have multiple file name attributes, to allow the storage of the "regular" name of the file, along with an MS-DOS short filename alias and also POSIX-like hard links from multiple directories.
  • Data Attribute: This attribute stores the actual contents of the file.

Decode the following information from the header of the record:

Record FieldValue
Record signature (ASCII)
1st atribute offset
Flags - Record State
Used size of the record
Allocated size of the record
MFT record number - inode
Tests - not attempted
File signature UNTESTED
Attribute offset UNTESTED
Flag UNTESTED
Used size UNTESTED
Allocated size UNTESTED
inode number UNTESTED

Identify the offsets of each of the main attributes (the first has been filled in to assist).

Attribute (HEX)Type (ASCII)Attribute size in bytesOffset from the start
of MFT record
0x10000000$STANDARD_INFORMATION7256
Tests - not attempted
Attribute 2 UNTESTED
Attribute 2 type UNTESTED
Attribute 2 size UNTESTED
Offset Within MFT UNTESTED
Attribute 3 UNTESTED
Attribute 3 type UNTESTED
Attribute 3 size UNTESTED
Offset Within MFT UNTESTED
Attribute 4 UNTESTED
Attribute 4 type UNTESTED
Attribute 4 size UNTESTED
Offset Within MFT UNTESTED

Question 5: Attribute Data

Decode the following information from the $STANDARD_INFORMATION attribute:

Note: use DCode tool for time and date: http://www.digital-detective.net/digital-forensicsoftware/free-tools/

Note: Use date and time format: (MM/dd/yyyy HH:mm:ss) 10/18/2024 00:00:00

Creation Time and Date
Last Modified Time and Date
MFT Record Modified Time and Date
Last Accessed Time and Date
DOS Attributes
Tests - not attempted
Creation Date and Time UNTESTED
Modified Date and Time UNTESTED
Changed Date and Time UNTESTED
Accessed Date and Time UNTESTED
File Attributes in HEX UNTESTED

Decode the following information from the $File_Name attribute:

Creation Time and Date
Last Modified Time and Date
MFT Record Modified Time and Date
Last Accessed Time and Date
Name Type
File name with extension
Tests - not attempted
Creation Date and Time UNTESTED
Modiefied Date and Time UNTESTED
Changed Date and Time UNTESTED
Accessed Date and Time UNTESTED
Name type UNTESTED
File name UNTESTED

Finally decode the data run from the $DATA attribute.

Note: Refer to "Run List Example" document on Moodle

Run list in HEX
Starting Cluster
Number of Clusters
File Size in bytes
Allocated Size in bytes
Tests - not attempted
Run List UNTESTED
Starting Cluster UNTESTED
Number of Clusters UNTESTED
File Size UNTESTED
File Size UNTESTED

Question 6: NTFS with Tools

So far we have explored NTFS file system with hex editor. Now we can verify our findings with the appropriate tool.

To verify the content of the VBR, use the fsstat command to display the file system information. It should be the same as information in question 2.

In this NTFS partition, what is the cluster size in bytes?
Size:

Tests - not attempted
Cluster size UNTESTED

The NTFS file system views each file (or directory) as a set of file attributes. Elements such as the file's name, its security information, and even its data, are all file attributes. Each attribute is identified by an attribute type code and, optionally, an attribute name.

What is the attribute type code of the $FILE_NAME attribute?

Tests - not attempted
$FILE_NAME attribute UNTESTED

What is the first disk block (not partition block) of the MFT and the MFT Mirror.
MFT:
MFT Mirror:

Tests - not attempted
MFT Offset UNTESTED
Mirror Offset UNTESTED

Use fls to see the files in the NTFS partition, and obtain the inode number for $Boot. Then use that in the istat command to discover the allocated size in bytes of the $Boot file.
Size:

Tests - not attempted
$Boot Size UNTESTED

What is the first and last cluster number allocated to this file? This information is often found on the last line of the istat output as a list of numbers.
First:
Last:

Tests - not attempted
First cluster UNTESTED
Last cluster UNTESTED

What is so special about $BOOT file?

Tests - not attempted
$Boot is special UNTESTED

In the NTFS partition there are a number of directories. In the docs directory there is a file called fatcat.jpg. What is its inode number in the format 00-000-0?
Inode id:

Tests - not attempted
Correct inode UNTESTED

What is the size in bytes of the space allocated to store the file fatcat.jpg?
Size:

Tests - not attempted
fatcat Size UNTESTED

How many clusters are allocated to this file?
Total:

Tests - not attempted
Number of clusters UNTESTED

What is the first and last cluster number allocated to this file?
First:
Last:

Tests - not attempted
First cluster UNTESTED
Last cluster UNTESTED


Centos 7 intro: Paths | BasicShell | Search
Linux tutorials: intro1 intro2 wildcard permission pipe vi essential admin net SELinux1 SELinux2 fwall DNS diag Apache1 Apache2 log Mail
Caine 10.0: Essentials | Basic | Search | Acquisition | SysIntro | grep | MBR | GPT | FAT | NTFS | FRMeta | FRTools | Browser | Mock Exam |
Caine 13.0: Essentials | Basic | Search | Acquisition | SysIntro | grep | MBR | GPT | FAT | NTFS | FRMeta | FRTools | Browser | Mock Exam |
CPD: Cygwin | Paths | Files and head/tail | Find and regex | Sort | Log Analysis
Kali: 1a | 1b | 1c | 2 | 3 | 4a | 4b | 5 | 6 | 7a | 8a | 8b | 9 | 10 |
Kali 2020-4: 1a | 1b | 1c | 2 | 3 | 4a | 4b | 5 | 6 | 7 | 8a | 8b | 9 | 10 |
Useful: Quiz | Forums | Privacy Policy | Terms and Conditions

Linuxzoo created by Gordon Russell.
@ Copyright 2004-2024 Edinburgh Napier University