The $STANDARD_INFORMATION Attribute

The $STANDARD_INFORMATION attribute ($SI) is a resident attribute identified by the hexadecimal sequence 10 00 00 00 or 16 (in decimal) at byte offset 48 and contains basic metadata about a file or directory. It exists in every file and directory.  Microsoft sorts the attributes in an MFT entry, and this one is always first in the entry because it has the lowest type ID (16).  


STANDARD_INFORMATION ATTRIBUTE
Figure 1: The $STANDARD_INFORMATION Type ID

 As defined in the $AttrDef file, this attribute has a minimum size of 48 bytes and a maximum of 72 bytes (See table below).


$AttrDef Attribute Values

Attribute

Type ID

Size (bytes)

Flags

$STANDARD_INFORMATION

16

48 - 72

Resident

$ATTRIBUTE_LIST

32

No Limit

Non-resident

$FILE_NAME

48

68 - 578

Resident, Index

$OBJECT_ID

64

0 - 256

Resident

$SECURITY_DESCRIPTOR

80

No Limit

Non-Resident

$VOLUME_NAME

96

2 - 256

Resident

$VOLUME_INFORMATION

112

12 - 12

Resident

$DATA

128

No Limit

-

$INDEX_ROOT

144

No Limit

Resident

$INDEX_ALLOCATION

160

No Limit

Non-Resident

$BITMAP

176

No Limit

Non-Resident

$REPARSE_POINT

192

0 - 16384

Non-Resident

$EA_INFORMATION

208

8 - 8

Resident

$EA

224

0 - 65536

-

$LOGGED_UTILITY_STREAM

256

0 - 65536

Non-Resident


Data Structure of the $STANDARD_INFORMATION Attribute

As with all attributes, the $STANDARD_INFORMATION attribute start with an attribute header.


$STANDARD_INFORMATION Attribute Header

At byte offset 48 to 71 are the details of the attribute header as depicted in the figure below


$STANDARD_INFORMATION attribute header
Figure 2: The $STANDARD_INFORMATION attribute header


The details of the attribute header is illustrated in the table below.


$STANDARD_INFORMATION Attribute Header Analysis

Byte Offset

Description

Value

48 - 51

Attribute ID

 0x 00 00 00 10 (= 16)

52 - 55

Length of Attribute

0x00 00 00 60 (= 96 bytes) i.e. from offset 48 to 143

56

Resident/Non-Resident flag

0x00 (= Resident)

57

Length of name of attribute

0x00 (= No name)

60 - 61

Flags

0x00 00 (= Normal)

64 - 67

Length of Attribute content

0x00 00 00 48 (= 72 bytes) i.e. from offset 72 to 143

68 - 69

Offset to start of attribute content

0x00 18 (= 24). Noting that the start offset for this Attribute is 48, then the Attribute content starts at offset 48 + 24 = 72.

A quick check also shows that the 24 byte offset and 72 byte attribute length equal a total of 96 bytes, which is the reported length of the attribute.

70

Indexed flag

0x00 (= Not indexed)

71

Padding to 8 byte boundary

0x00



$STANDARD_INFORMATION Attribute Content

The Standard Information Attribute content extends from byte offsets 72 to 143 as shown below.

 

$STANDARD_INFORMATION attribute content
Figure 3: The $STANDARD_INFORMATION attribute content

The first 32 bytes of this Attribute content (byte offset 72 to byte offset 103) refer to four dates and times. The values stored in these bytes are in a format known as a “FILETIME”.  This is a 64 bit number that represents the number of 100 nanosecond intervals that have elapsed since January 1, 1601 UTC. An examination of the reported times and dates by forensic software reveals the following:


Decoded $STANDARD_INFORMATION timestamp
Figure 4: Decoded $STANDARD_INFORMATION timestamp

The details of the attribute content is illustrated in the table below.


$STANDARD_INFORMATION Attribute Content Analysis

Byte offset

Description

Value

72 - 79

Creation Date and Time - The time that the file was created

Mon, 15 March 2004 23:30:11 UTC

80 - 87

Last Modified Date and Time - The time that the content of the $DATA or $INDEX attributes was last modified

Mon, 15 March 2004 23:30:11 UTC

88 - 95

Last MFT Record Change Date and Time - The time that the metadata of the file was last modified. Note that this value is not shown in Windows when you select the properties of a file.

Mon, 15 March 2004 23:30:11 UTC

96 - 103

Last Access Date and Time - The time that the content of the file was last accessed.

Mon, 15 March 2004 23:30:11 UTC

104 - 107

File Permission

0x06 00 00 00 =( Hidden + System)

108 - 111

Maximum Number of Versions

0x00 00 00 00 (= disabled)

112 - 119

Version Number and Class ID

0x00 00 00 00 00 00 00 00

120 - 123

Owner ID

0x 00 00 00 00

124 - 127

Security ID

0x00 00 00 01

128 - 135

Quota charged

0x00 00 00 00 00 00 00 00

136 - 143

Update Sequence Number

0x00 00 00 00 00 00 00 00



The ID values are used for either application-level features or security. The Security ID value is the index to the $Secure file, not the Windows SID value. The flag values are given below.


Flag values for the $STANDARD_INFORMATION attribute

Flag Value

Description

01 00 00 00

Read only

02 00 00 00

Hidden

04 00 00 00

System

20 00 00 00

Archive

40 00 00 00

Device

80 00 00 00

Normal

00 01 00 00

Temporary

00 02 00 00

Sparse File

00 04 00 00

Reparse Point

00 08 00 00

Compressed

00 10 00 00

Offline

00 20 00 00

Not Content Indexed

00 40 00 00

Encrypted


In summary, this attribute contains many interesting pieces of metadata, but none are essential for the file system. The primary time and date information and other identifiers are stored here, but it is up to the OS when the times are updated and whether they will use the identifiers. Note that this attribute exists for all files and directories, but it may not exist in non-base MFT entries.

Post a Comment

Previous Post Next Post