Категория данных файловой системы


Категория данных файловой системы включает данные, описывающие файловую систему в целом, причем эти данные обычно не соответствуют конкретному пользовательскому файлу. В NTFS эти данные хранятся в файлах метаданных файловой системы, представленных именами в корневом каталоге.
За исключением загрузочного кода, эти данные могут храниться в файловой системе в любом месте диска.
У этих файлов есть одна интересная особенность: с ними, как и с обычными файлами, могут ассоциироваться пометки даты и времени. Мои эксперименты показали, что временные штампы соответствуют времени создания файловой системы, что иногда может пригодиться при анализе. В этом разделе рассматриваются все файлы метаданных файловой системы, а в главе 13 будут подробно описаны их структуры данных.
Файл $MFT
Одним из важнейших файлов метаданных файловой системы является файл $MFT. В нем хранится главная файловая таблица MFT (Master File Table), которая содержит записи для каждого файла и каталога в системе. Следовательно, таблица MFT необходима для поиска других файлов. Начальный адрес MFT указывается в загрузочном секторе, о котором речь пойдет позже в этом разделе. Информация о строении MFT берется из записи 0 самой таблицы.

Начальной записи MFT присваивается имя $MFT, а ее атрибут $DATA содержит информацию о кластерах, используемых MFT. За информацией о записях MFT обращайтесь к главе 11. Файл $MFT также обладает атрибутом $В1ТМАР, описывающим состояние выделения записей MFT. Кроме того, у него имеются стандартные атрибуты $FILE_NAME и $STANDARD_INFORMATION (см. раздел «Категория метаданных»).
В Windows файл $MFT начинается с минимального размера и расширяется по мере создания дополнительных файлов и каталогов. Файл $MFT может фрагментироваться, но под его расширение изначально резервируется часть дискового пространства (см. раздел «Категория данных содержимого»).
Говоря о файлах метаданных файловой системы, я буду использовать тестовый образ файловой системы и программу istat из пакета TSK (The Sleuth Kit). Полный вывод istat будет приведен в конце раздела «Категория метаданных», а здесь приводятся только данные, относящиеся к категории файловой системы: istat -f ntfs ntfsl.dd О [...]
SSTANDARDJNFORMATION Attribute Values:
Flags: Hidden, System Owner IF: 0 Security ID: 256 Created:              Thu              Jun              26              10:17:57              2003
File Modified:              Thu              Jun              26              10:17:57              2003
MFT Modified:              Thu              Jun              26              10:17:57              2003
Accessed:              Thu              Jun              26              10:17:57              2003
[...]
Attributes:
Type: $STANDARD_INFORMATION (16-0) Name: N/A Resident size: 72 Type: $FILE_NAME (48-3) Name: N/A Resident size: 74 Type: $DATA (128-1) Name: $Data Non-Resident size: 8634368 342709 342710 342711 342712 342713 342714 342715 342716 342717 342718 342719 342720 342721 342722 342723 342724 [...]
443956 443957 443958 443959 443960 443961 443962 443963 Type: SBITMAP (176-5) Name: N/A Non-Resident size: 1056 342708 414477 414478 414479
Временные штампы $MFT обычно совпадают с моментом создания файловой системы и не обновляются. Из листинга видно, что файл обладает атрибутами $STANDARD_INFORMATION и $FILE_NAME, 8-мегабайтным атрибутом $DATA и атрибутом $В1ТМАР.
Файл $MFTMirr
В предыдущем разделе говорилось о том, что файл $MFT очень важен, так как он используется для поиска всех остальных файлов в системе. А это означает, что повреждение указателя в загрузочном секторе или записи $MFT приведет к полной неработоспособности файловой системы. Для решения подобных проблем создается резервная копия важнейших записей MFT, которая может использоваться при восстановлении. Запись MFT 1 относится к файлу $MFTMirr, имеющему нерезидентный атрибут с резервной копией начальных записей MFT.
Атрибут $DATA файла $MFTMirr выделяет кластеры в середине файловой системы и сохраняет копии как минимум первых четырех записей MFT: для $MFT,
$МFTMirr, $LogFiLe и $Volume. Если с определением структуры MFT возникают проблемы, программа восстановления может на основании размера тома вычислить средний кластер файловой системы и прочитать резервные данные. Каждая запись MFT обладает сигнатурой, по которой ее можно распознать как запись MFT.
По четырем резервным записям программа восстановления определяет строение таблицы MFT и ее размер, местонахождение $LogFiLe для восстановления файловой системы, а также получает информацию о версии и статусе из атрибутов $VoLume.
Приведу пример информации о файле $МFTMirr из нашего тестового образа: istat -f ntfs ntfsl.dd 1 [...]
Attributes:
Type: $STANDARD_INFORMATION (16-0) Name: N/A Resident size: 72 Type: $FILE_NAME (48-2) Name: N/A Resident size: 82 Type: $DATA (128-1) Name: $Data Non-Resident size: 4096 514064 514065 014066 514067
В данном примере образ содержит 1 208 128 кластеров, а атрибут $DATA записи $MFTMirr начинается в среднем кластере. Временные штампы не показаны, но они совпадают с приводившимися ранее для $MFT.
Файл $Boot
Файл метаданных файловой системы $Boot находится в записи MFT 7 и содержит загрузочный сектор файловой системы. Это единственный файл метаданных файловой системы со статическим расположением. Атрибут $DATA всегда хранится в первом секторе файловой системы, потому что он необходим для загрузки системы. Microsoft обычно выделяет для $Boot первые 16 секторов файловой системы, но я обнаружил, что только первая половина содержит ненулевые данные.
Загрузочный сектор NTFS очень похож на загрузочный сектор FAT, и они обладают множеством общих полей. У них даже совпадает сигнатура 0хАА55, из чего следует, что при поиске потерянных загрузочных секторов FAT может быть найден загрузочный сектор NTFS (и наоборот). Загрузочный сектор содержит основные параметры файловой системы: размер кластера, количество секторов в файловой системе, адрес начального кластера MFT, размер записи MFT. Кроме того, в загрузочном секторе хранится серийный номер файловой системы.
Остальные секторы, выделяемые для хранения атрибута $DATA записи $Boot, содержат загрузочный код.
Загрузочный код необходим только в загрузочных файловых системах, а его основной функцией является поиск файлов, необходимых для загрузки операционной системы. Строение загрузочного сектора подробно описано в главе 13.
Резервная копия загрузочного сектора хранится либо в последнем секторе тома либо в середине тома [Microsoft, 2003]. В моих экспериментах с томами Windows NT 4.0, 2000 и ХР резервная копия хранилась в последнем секторе. Я обнаружил, что общее количество секторов в файловой системе было меньше общего количества секторов в томе, поэтому резервная копия загрузочного сектора не всегда ассоциируется с конкретным файлом. Например, в используемом нами тестовом
образе файловой системы том состоит из 2 056 257 секторов, а, по данным загрузочного сектора, файловая система содержит 2 056 256 секторов. Резервная копия загрузочного сектора хранится в последнем секторе тома, не выделенном для хранения файловой системы.
Чтобы показать, как выглядят атрибуты файла $Boot, я приведу результат запуска istat для тестового образа: istat -f ntfs ntfsl.dd 7 [...]
Attributes:
Type: SSTANDARDJNFORMATION (16-0) Name: N/A Resident size: 48 Type: $FILE_NAME (48-2) Name: N/A Resident size: 76 Type: $SECURITY_DESCRIPTOR (80-3) Name: N/A Resident size: 104 Type: $DATA (128-1) Name: $Data Non-Resident size: 8192 1 2 3 4 5 6 7
Из нижней части листинга видно, что запись содержит четыре атрибута, в том числе 8-килобайтный атрибут $DATA, которому выделены кластеры с 0 по 7. Временные штампы не показаны, но они совпадают с приводившимися ранее для $MFT и $MFTMirr.
Файл $Volume
Файл метаданных файловой системы $Volume соответствует записи MFT 3. В нем хранится метка тома и информация версии. Файл обладает двумя уникальными атрибутами, которыми не должны обладать остальные файлы в системе. В атрибуте $V0LUME_NAME содержится имя тома в Unicode, а атрибут $V0LUME_INFORMATION определяет версию NTFS и состояние обновления. Кроме этих атрибутов файл обычно обладает атрибутом $DATA, но я обнаружил, что размер этого атрибута составляет 0 байт. Подробные описания атрибутов $V0LUME_NAME и $V0LUME_INFORMATION приведены в главе 13.
С каждой новой версией Windows в файловую систему NTFS вносятся небольшие изменения; номер текущей версии можно найти в файле $Volume. В Windows NT 4.0 использовалась версия 1.2, в Windows 2000 — версия 3.0, а в Windows ХР — версия 3.1. Различия между версиями незначительны, и во всех версиях используются одни и те же основные структуры данных.
Атрибуты файла $Volume для нашего тестового образа выглядят так: istat -f ntfs ntfsl.dd 3 [...]
Attributes:
Type: $STANDARD_INF0RMATI0N (16-0) Name: N/A Resident size: 48 Type: $FILE_NAME (48-1) Name: N/A Resident size: 80 Type: $0BJECT_ID (64-6) Name: N/A Resident size: 16 Type: $SECURITY_DESCRIPTOR (80-2) Name: N/A Resident size: 104 Type: $V0LUME_NAME (96-4) Name: N/A Resident size: 22 Type: $V0LUME_INF0RMATI0N (112-5) Name: N/A Resident size: 12 Type: $DATA (128-3) Name: $Data Resident size: 0
Интересующая нас информация содержится в атрибутах $V0LUME_NAME и $V0LU- ME_INF0RMATI0N, уникальных для этой записи MFT. Обратите внимание: атрибут $DATA существует, но его размер равен 0. Временные штампы не показаны, но они совпадают с приводившимися ранее для $MFT и $MFTMirr.

Файл $AttrDef
К общей категории данных файловой системы также относится файл метаданных файловой системы $AttrDef, представленный записью MFT 4. Атрибут $DATA этого файла определяет имена и идентификаторы типов всех атрибутов. Кстати, это один из примеров «логического зацикливания», иногда встречающегося в NTFS: чтобы узнать, какой идентификатор типа соответствует файлу $DATA, нужно сначала как-то прочитать атрибут $DATA файла $AttrDef. К счастью, атрибутам назначены значения по умолчанию, приведенные в главе 11.
Файл $AttrDef позволяет файловым системам определять уникальные атрибуты файлов, а также переопределять идентификаторы стандартных атрибутов. Атрибуты файла $AttrDef в нашем примере выглядят так: istat -f ntfs ntfsl.dd 4 [...]
Attributes:
Type: SSTANDARDJNFORMATION (16-0) Name: N/A Resident size: 48 Type: $FILE_NAME (48-2) Name: N/A Resident size: 82 Type: SSECURITY_DESCRIPTOR (80-3) Name: N/A Resident size: 104 Type: $DATA (128-4) Name: $Ddta Non-Resident size: 2560 342701 342702 342703
Обратите внимание: размер атрибута $DATA превышает 2 Кбайт. Временные штампы не показаны, но они совпадают с приводившимися ранее для других файлов метаданных файловой системы.
Тестовый образ
Мы рассмотрели информацию о некоторых файлах нашего тестового образа, а сейчас я приведу результат запуска программы fsstat. Эти данные будут использоваться в дальнейших примерах. За информацией о том, где эти данные хранятся на диске, обращайтесь к главе 13. fsstat -f ntfs ntfsl.dd FILE SYSTEM INFORMATION
File System Type: NTFS
Volume Serial Number: 0450228450227C94
OEM Name: NTFS
Volume Name: NTFS Disk 2
Version: Windows XP
META-DATA INFORMATION
First Cluster of MFT. 342709 First Cluster of MFT Mirror: 514064 Size of MFT Entries: 1024 bytes Size of Index Records: 4096 bytes Range: 0 - 8431 Root Directory: 5
CONTENT-DATA INFORMATION
Sector Size: 512 Cluster Size: 1024

Total Cluster Range: 0 - 1028127 Total Sector Range: 0 - 2056255
$AttrDef Attribute Values:
$STANDARD_INFORMATION (16) Size: 48-72 Flags: Resident $ATTRIBUTE_LIST (32) Size: No Limit Flags: Non-resident $FILE_NAME (48)              Size: 68-578              Flags: Resident. Index
$0BJECT_ID (64)              Size: 0-256              Flags: Resident
$SECURITY_DESCRIPTOR (80) Size: No Limit Flags: Non-resident $VOLUME_NAME (96) Size: 2-256 Flags: Resident $V0LUME_INF0RMATI0N (112) Size: 12-12 Flags: Resident $DATA (128) Size: No Limit Flags:
$ INDEX_R00T (144) Size: No Limit Flags: Resident $INDEX_ALLOCATION (160) Size: No Limit Flags: Non-resident $BITMAP (176) Size: No Limit Flags: Non-resident $REPARSE_POINT (92) Size: 0-16384 Flags: Non-resident $EA_INF0RMATI0N (208) Size: 8-8 Flags: Resident $EA (224) Size: 0-65536 Flags:
$LOGGED_UTILITY_STREAM (256) Size: 0-65536 Flags: Non-resident
<< | >>
Источник: Кэрриэ Б.. Криминалистический анализ файловых систем. 2007

Еще по теме Категория данных файловой системы:

  1. Категория данных файловой системы
  2. Категория данных файловой системы
  3. Категория данных имен файлов
  4. Категория данных имен файлов
  5. Категория файловой системы
  6. Категория имен файлов
  7. Категория имен файлов
  8. Категории данных
  9. Категория прикладных данных
  10. Категория данных содержимого
  11. Категория прикладных данных
  12. Категория прикладных данных
  13. Методы анализа и категории данных
  14. Конкретные файловые системы
  15. Категория данных
  16. Что такое файловая система?