Системы с 64-разрядными процессорами Intel Itanium (IA64), в отличие от систем IA32, не имеют BIOS. Вместо этого в них используется интерфейс EFI (Extensible Firmware Interface). EFI (http://www.intel.com/technology/efi) работает не только на платформе Intel, но и на других платформах - например, в системах Sun Sparc. В EFI применяется система разделов GPT(GUID Partition Table), поддерживающая до 128 разделов с 64-разрядной адресацией LBA. На случай сбоя в системе хранятся резервные копии важных структур данных. На момент написания книги диски GPT применялись на мощных серверах и практически не встречались в типичных настольных системах.

Общий обзор

Диск GPT состоит из пяти основных областей (рис. 6.7). Первая - защитная область MBR - начинается в первом секторе диска и содержит таблицу разделов DOS с единственной записью. Запись представляет раздел типа ОхЕЕ, распространяющийся на весь диск. Этот раздел существует для того, чтобы старые компьютеры распознавали диск как используемый и не пытались форматировать его. В действительности EFI не использует разделы в традиционном смысле.

Рис. 6.7. Диск GPT состоит из пяти областей

Вторая область диска GPT начинается с сектора 1 и содержит заголовок GPT. Заголовок определяет размер и местонахождение таблицы разделов, которое фиксируется при создании диска GPT. В системе Windows количество разделов в таблице ограничивается 128 [Microsoft, 2004]. Заголовок также содержит контрольную сумму заголовка и таблицы разделов, что позволяет обнаруживать ошибки и посторонние изменения.

Третья область содержит таблицу разделов. Каждая запись таблицы содержит начальный и конечный адреса, код типа, имя, флаги атрибутов и значение GUID. 128-разрядный код GUID является уникальным для данной системы и задается при создании таблицы разделов.

Четвертая область диска - область раздела. Она занимает наибольшее дисковое пространство и содержит секторы, распределяемые по разделам. Начальный и конечный секторы этой области определяются в заголовке GPT. В последней области диска хранятся резервные копии заголовка GPT и таблицы разделов. Резервная область хранится в секторе, следующем за областью раздела.

Структуры данных

В первой области диска GPT используется стандартная таблица разделов DOS, уже рассматривавшаяся ранее. Диск GPT с таблицей разделов DOS содержит единственную запись раздела, занимающего весь диск. Пример:

# mmls -t dos gpt-disk.dd

DOS Partition Table

Units are in 512-byte sectors

Slot Start End Length Description

00: ----------0000000000 0000000000 0000000001 Primary Table (#0)

01: 00:00 0000000001 0120103199 0120103199 GPT Safety Partition (OxEE)

После таблицы разделов DOS следует сектор 1 с заголовком GPT, описывающим строение диска. Структура данных заголовка представлена в табл. 6.16.

Таблица 6.16. Структура данных заголовка GPT

Диапазон байтов

Описание

Необходимость

0-7

Сигнатура («EFI PART»)

Нет

8-11

Версия

Да

12-15

Размер заголовка GPT в байтах

Да

16-19

Контрольная сумма заголовка GPT (CRC32)

Нет

20-23

Зарезервировано

Нет

24-31

Адрес LBA текущей структуры заголовка GPT

Нет

32-39

Адрес LBA другой структуры заголовка GPT

Нет

40-47

Адрес LBA начала области раздела

Да

48-55

Адрес LBA конца области раздела

Нет

56-71

Код GUID диска

Нет

72-79

Адрес LBA начала таблицы разделов

Да

80-83

Количество записей в таблице разделов

Да

84-87

Размер каждой записи в таблице разделов

Да

88-91

Контрольная сумма таблицы разделов (CRC32)

Нет

92-конец сектора

Зарезервировано

Нет

По этим значениям можно полностью определить структуру диска, включая местонахождени е таблицы разделов, области разделов и резервных копий заголовка GPT и таблицы разделов.

Заголовок GPT для образа диска выглядит так:

# dd і f=gpt-di sk.dd bs=512 skip=l count=l xxd

0000000: 4546 4920 5041 5254 0000 0100 5c00 0000 EFI PART....\...

0000016: 8061 аЗЬО 0000 0000 0100 0000 0000 0000 .a..............

0000032: lfal 2807 0000 0000 2200 0000 0000 0000 ..(.....".......

0000048: feaO 2807 0000 0000 7e5e 4dal 1102 5049 ..(.....~AM...PI

0000064: ab2a 79a6 Зеаб 3859 0200 0000 0000 0000 .*y.>.8Y........

0000080: 8000 0000 8000 0000 69a5 7180 0000 0000 ........i.q.....

0000096: 0000 0000 0000 0000 0000 0000 0000 0000 ................

[...]

Первые 8 байт содержат сигнатуру. Байты 12-15 показывают, что размер заголовка ОРТ составляет 96 байт (0x5с). Согласно байтам 32-39, резервная копия заголовка хранится в секторе 120 103 199 (0х0728а1а^. Обратите внимание: этот же сектор был указан в качестве последнего сектора защитного раздела Б ОБ. Байты 40-47 показывают, что область раздела начинается с сектора 34 (0x22) и завершается в секторе 120 103 166 (0х0728а0£е). Из байтов 72-79 мы узнаем, что таблица разделов начинается с сектора 2, а из байтов 80-83 - что таблица содержит 128 (0x80) записей. Байты 84-87 показывают, что размер каждой записи составляет 128 (0x80) байт; это означает, что для хранения таблицы потребуются 32 сектора.

По информации из заголовка ОРТ можно вычислить начало и конец таблицы разделов, а также размер каждой записи. В табл. 6.17 перечислены поля записей таблицы.

Таблица 6-17. Структура данных записей таблицы разделов СРТ

Диапазон байтов

Описание

Необходимость

0-15

Код Сию типа раздела

Нет

16-31

Уникальный код С11Ю раздела

Нет

32-39

Начальный адрес ЬВА раздела

Да

40-47

Конечный адрес 1_ВА раздела

Да

48-55

Атрибуты раздела

Нет

56-127

Имя раздела в Юникоде

Нет

128-разрядное поле типа идентифицирует содержимое раздела. В дисках вРТ разделы используются для хранения как системной информации, так и файловых систем. Например, каждый компьютер с ЕР1 должен содержать системный раздел ЕР1 с файлами, необходимыми для инициализации аппаратной и программной части системы. Значения типов назначаются фирмами-производителями; к сожалению, централизованного списка в настоящее время не существует. В спецификации 1^е1 определены типы разделов, перечисленные в табл. 6.18.

Таблица 6.18. Типы разделов СРТ, определенные в спецификации Ме1

GUID

Описание

00000000-0000-0000-0000-0000000000

Свободная запись

C12A7328-F81F-11D2-BA4B-00A0C93EC93B

Системный раздел ЕР1

024DEE41-33E7-lld3-9D69-0008C781F39F

Раздел с таблицей разделов РОБ

Компания Microsoft также определила некоторые значения типов, используемые в ее продуктах (табл. 6.19).

Таблица 6.19. Типы разделов GPT, определенные в спецификации Microsoft

GUID

Описание

E3C9E316-05BC-4DB8-817D-f92DF00215AE

Зарезервированный раздел Microsoft (MRP)

EBD0A0A2-B9E5-4433-87C0-68B6B72699C7

Первичный раздел (базовый диск)

5808C8AA-7E8F-42E0-85D2-E1E90434CFB3

Раздел метаданных LDM (динамический диск)

AF9B60 АО-1431-4F62-BC68-3311714A69AD

Раздел данных LDM (динамический диск)

В системе Windows зарезервированный раздел используется для хранения временных файлов и данных. Первичный раздел содержит файловую систему. Первичные разделы схожи с первичными разделами, которые мы видели при изучении разделов DOS. Раздел метаданных LDB и раздел данных LDM используются в динамических дисках Microsoft, о которых речь пойдет в следующей главе. Динамические диски предназначены для объединения содержимого нескольких дисков в один том.

64-разрядное поле атрибутов разделено на три части. Установка младшего бита означает, что функционирование системы невозможно без этого раздела. На основании этого бита система проверяет, можно ли удалить раздел. Значения битов 1-47 не определены, а биты 48-63 могут содержать произвольную информацию для раздела данного типа. Каждый тип разделов использует эти значения по своему усмотрению.

Приведу содержимое записи таблицы разделов в простейшей системе:

# dd if=gpt-disk.dd bs=512 skip=341 dd bs=128 skip=3 count=l xxd 0000000: 16e3 c9e3 5c0b b84d 817d f92d f002 15ae ... Л..M.}.-....

0000016: 2640 69eb 2f99 1942 afcO d673 7c0b 8ae4 &@i./..B...s...

0000032: 2200 0000 0000 0000 0080 3e00 0000 0000 ".........>.....

0000048: 0000 0000 0000 0000 0000 ffff ffff ffff ................

0000064: ffff ffff ffff ffff ffff ffff ffff ffff ................

В верхней строке (байты 0-15) мы видим код GUID типа раздела, а во второй (байты 16-31) - код GUID самого раздела. Начальный адрес раздела хранится в байтах 32-39; раздел начинается с сектора 32 (0x0022). Конечный адрес раздела задается байтами 40-47 и равен 4 096 ООО (0х003Е8000).

Пример выполнения mmls:

# mmls -t gpt gpt-disk.dd GUID Partition Table

Units are in 512-byte sectors

Slot Start End Length Description

00: ----------0000000000 0000000000 0000000001 Safety table

01: ----------0000000001 0000000001 0000000001 GPT Header

02: ----------0000000002 0000000033 0000000032 Partition Table

03: 00 0000000034 0004096000 0004095967

04: 01 0004096001 0012288000 0008192000

В конце диска находятся резервные копии заголовка GPT и таблицы разделов. Они следуют в обратном порядке: заголовок GPT хранится в последнем секторе, а таблица разделов - в предыдущем. В нашем примере резервный заголовок GPT находится в секторе 120 103 199.

Факторы анализа

На момент написания книги диски GPT встречались крайне редко, и в документации большинства системных программ ничего не говорится о поддержке GPT. Linux позволяет разбить диск GPT на разделы для последующего применения других программ анализа файловой системы. Пакет The Sleuth Kit тоже поддерживает разделы GPT.

Резервная копия таблицы разделов в дисках GPT упрощает восстановление системы в случае повреждения исходной таблицы. Неиспользуемые байты сектора 0, сектора 1 и всех свободных записей в таблице разделов могут использоваться для хранения скрытых данных.

Итоги

На момент написания книги разделы GPT довольно редко встречались при проведении расследований и не поддерживались многими средствами экспертного анализа. Несомненно, в будущем, с переходом многих систем на 64-разрядную базу, ситуация изменится. Разделы GPT существенно превосходят разделы DOS по гибкости и простоте.

Библиография

• FreeBSD Documentation Project. «FreeBSD Handbook», 2005. http://www.freebsd.org.

• Holland, Nick, ed. «OpenBSD Installation Guide». January 2005. http://www.open-bsd.org/faq/faq4.html.

• Intel. Extensible Firmware Interface, Version 1.10, December 1, 2002. http://deve-loper.intel.com/technology/efi/.

• Marshall Kirk McKusick, Keith Bostic, Michael Karels, John Quaterman. The Design and Implementation of the 4.4 BSD Operating System. Boston: Addison Wesley, 2005.

• Marshall Kirk McKusick, George V. Nevile-Neil. The Design and Implementation of the BSD Operating System. Boston: Addison Wesley, 2005.

• Mauro, Jim, and Richard McDougall. Solaris Internals: Core Kernel Architecture. Upper Saddle River: Sun Microsystems Press, 2001.

• Microsoft. «Disk Sectors on GPT Disks». Windows XP Professional Resource Kit Documentation, 2004. http://www.microsoft.com/resources/documentation/Windows/ XP/alL/reskit/en-us/Default.asp?urL=/resources/documentation/Windows/XP/aLL/reskit/ en-us/prkd_tro_zkfe.asp.

• Sun. «Solaris 9 System Administration Guide: Basic Administration. Chapter 31». May 2002. http://docs.sun.com/db/doc/806-4073/6jd67r9fn?a=view.

• Sun. «System Administration Guide. Chapter 32: Managing Disks». April 2003. http://docsun.cites.uiuc.edU/sun-docs/C/solaris_9/SUNWaadm/SYSADVl/pll7.htmL

• Winsor, Janice. Solaris System Administrator’s Guide. 3rd edition. Palo Alto: Sun Microsystems Press, 2000.

Структуры данных i386 | Криминалистический анализ файловых систем | Многодисковые тома


Криминалистический анализ файловых систем



Новости за месяц

  • Март
    2020
  • Пн
  • Вт
  • Ср
  • Чт
  • Пт
  • Сб
  • Вс