От рассмотрения системы разделов БОБ мы переходим к подробному описанию структур, заложенных в основу этой системы. Если структуры данных вас не интересуют, описание можно пропустить, однако в нем встречается интересный пример использования расширенных разделов. Материал состоит из трех подразделов с описанием МВ11, расширенных разделов и примером вывода данных для образа.

Структура данных МЕ№

Таблицы разделов БОБ находятся в МВ11 и в первом секторе каждого расширенного раздела. Во всех случаях используется одна и та же 512-байтовая структура. Первые 446 байт зарезервированы для загрузочного кода. Код должен находиться в МВ11, поскольку он используется при запуске компьютера, однако для расширенных разделов он не нужен, и на его месте могут храниться скрытые данные. Структура МВ11 в табличной форме показана в табл. 5.1.

Таблица 5-1- Структуры данных в таблице разделов DOS

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

Описание

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

0-445

Загрузочный код

Нет

446-461

Запись таблицы разделов №1 (см. табл. 5.2)

Да

462-477

Запись таблицы разделов №2 (см. табл. 5.2)

Да

478-493

Запись таблицы разделов №3 (см. табл. 5.2)

Да

494-509

Запись таблицы разделов №4 (см. табл. 5.2)

Да

510-511

Сигнатура (0хАА55)

Нет

Таблица разделов содержит четыре 16-байтовых записи, структура которых представлена в табл. 5.2. Адреса СНБ необходимы для старых систем, в которых они используются, но в новых системах они не нужны.

Таблица 5-2. Структура данных записи раздела DOS

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

Описание

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

0-0

Флаг загрузочного раздела

Нет

1-3

Начальный адрес СНБ

Да

4-4

Тип раздела (см. табл. 5.3)

Нет

5-7

Конечный адрес СНБ

Да

8-11

Начальный адрес 1_ВА

Да

12-15

Размер в секторах

Да

Флаг загрузочного раздела необходим не всегда. Стандартный загрузочный код компьютера с единственной ОС ищет запись, у которой этот флаг равен 0x80. Например, если на компьютере установлена Microsoft Windows, а диск разбит на два раздела, то у раздела с операционной системой (например, C:\windows) будет установлен флаг загрузочного раздела. С другой стороны, если загрузочный код предлагает пользователю выбрать раздел для загрузки системы, флаг может оказаться лишним. Впрочем, некоторые загрузочные программы устанавливают его после того, как пользователь выберет соответствующий раздел для загрузки.

Начальный и конечный адреса CHS состоят из головки (8 бит), сектора (6 бит) и цилиндра (10 бит). Теоретически для каждого раздела должен быть задан только один из двух адресов (CHS или LBA). ОС и код загрузки системы должны определить, какие значения необходимо задать. Например, Windows 98 и ME используют адреса CHS для разделов, находящихся в первых 7,8 Гбайт диска, a Windows 2000 и последующие системы всегда игнорируют адреса CHS [Microsoft, 2003]. Некоторые программы создания разделов стараются задавать адреса обоих типов для обеспечения совместимости. Использование этих полей зависит от приложения.

Поле типа раздела идентифицирует тип файловой системы, которая должна находиться в разделе. Список наиболее распространенных типов приведен в табл. 5.3, а более подробную информацию можно найти в документе «Partition Types» [Brouwer, 2004].

Таблица 5.3. Некоторые типы разделов DOS

Тип

Описание

0x00

Пусто

0x01

FAT12, CHS

0x04

FAT16, 16-32 Мбайт, CHS

0x05

Расширенный раздел Microsoft, CHS

0x06

FAT 16, 32 Мбайт-2 Гбайт, CHS

0x07

NTFS

ОхОЬ

FAT32, CHS

0x0с

FAT32, LBA

ОхОе

FAT 16, 32 Мбайт-2 Гбайт, LBA

0x0f

Расширенный раздел Microsoft, LBA

0x11

Скрытый раздел FAT12, CHS

0x14

Скрытый раздел FÄT16, 16-32 Мбайт, CHS

0x16

Скрытый раздел FAT 16, 32 Мбайт-2 Гбайт, CHS

Oxlb

Скрытый раздел FAT32, CHS

Oxlc

Скрытый раздел FAT32, LBA

Oxle

Скрытый раздел FAT16, 32 Мбайт-2 Гбайт, LBA

0x42

Microsoft MBR, динамический диск

0x82

Solaris х86

0x82

Раздел подкачки Linux

0x84

Данные спящего режима

0x85

Расширенный раздел Linux

0x86

Набор томов NTFS

0x87

Набор томов NTFS

OxaO

Спящий режим

Oxal

Спящий режим

0xa5

FreeBSD

0xa6

OpenBSD

0xa8

Мас ОБХ

0xa9

Oxab

Мас ОБХ

0xb7

ВБРІ

0xb8

Раздел подкачки ВБРІ

Oxee

Диск ЕРІ вРТ

Oxef

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

Oxfb

Файловая система \Zmware

Oxfc

Раздел подкачки \Zmware

Обратите внимание, сколько разных типов разделов существует для файловых систем Microsoft в диапазоне от 0x01 до OxOf. Это объясняется тем, что операционные системы Microsoft используют тип раздела для определения способа чтения и записи данных в раздел. Как говорилось в главе 2, Windows может использовать как традиционные, так и расширенные обработчики прерывания BIOS INT13h. Расширенные обработчики INT 13h необходимы для работы с дисками объемом более 8,1 Гбайт и применения адресации LBA (вместо CHS). Следовательно, типы FAT16 0x04 и ОхОЕ одинаковы, но во втором случае ОС будет использовать расширенные обработчики при работе с BIOS. Аналогично, типы 0x0В и ОхОС представляют обычную и расширенную версии FAT32, а типы 0x05 hOxOF- обычную и расширенную версии расширенных разделов [Microsoft, 2004b]. «Скрытые» версии этих типов разделов содержат 1 вместо 0 в верхнем полубайте, а для их создания применяются различные системные программы.

Чтобы продемонстрировать работу с MBR и таблицами разделов, мы извлечем информацию из реальной системы и разберем ее вручную. В качестве примера будем использовать компьютер с альтернативной загрузкой Windows и Linux, на жестком диске которого находятся восемь разделов файловых систем.

Первый пример взят из первого сектора диска. Данные выводятся утилитой xxd в Linux, но для получения информации также можно было воспользоваться шестнадцатеричным редактором для Windows или UNIX. В Linux командная строка выглядела так:

# dd if=disk3.dd bs=512 skiр=0 count=l xxd

В левом столбце выводится десятичное смещение в байтах, средние восемь столбцов содержат данные в шестнадцатеричном формате, а последний столбец - те же данные в кодировке ASCII. Данные взяты из системы на базе IA32 с прямым порядком байтов, при котором младшие (менее значащие) байты располагаются по меньшим адресам, поэтому байты в средних столбцах переставляются. Содержимое MBR выглядит так:

# dd if=disk3.dd bs=512 skiр=0 count=l xxd

0000000: eb48 9010 8ed0 bcOO Ь0Ь8 0000 8ed8 8ec0 .H..............

[...]

0000384: 0048 6172 6420 4469 736b 0052 6561 6400 .Hard Disk.Read.

0000400: 2045 7272 6f72 OObb 0100 b40e cdlO асЗс Error.........<

0000416: 0075 f4c3 0000 0000 0000 0000 0000 0000 .u..............

0000432: 0000 0000 0000 0000 0000 0000 0000 0001 ................

0000448: 0100 07fe 3f7f 3f00 0000 4160 lfOO 8000 .A'....

0000464: 0180 83fe 3f8c 8060 lfOO cd2f 0300 0000

0000480: 018(1 83Ге 31тс 4с190 2200 40Ь0 ОГОО 0000 ....?.М.@.....

0000496: 01с<Л 05Ге ffff 8с140 3200 79еЬ 9604 55аа .......@2.у...и.

Первые 446 байтов содержат загрузочный код. В последних двух байтах сектора присутствует сигнатура 0хАА55 (хотя и в переставленном виде из-за порядка байтов, используемого на данной платформе). Таблица разделов выделена жирным шрифтом и начинается со значения 0x0001 со смещением 446. Каждая строка выходных данных занимает 16 байт; каждая запись таблицы тоже занимает 16 байт. Таким образом, вторая запись начинается строкой ниже первой записи с числа 0x8000. В табл. 5.4 приведены четыре записи таблицы разделов в описанной ранее структуре. Значения приводятся в шестнадцатеричной записи, а десятичные эквиваленты заключены в круглые скобки.

Таблица 5.4. Содержимое первичной таблицы разделов в образе диска

Флаг

Тип

Начальный сектор

Размер

1

0x00

0x07

0x0000003f(63)

0x001f6041 (2 056 257)

2

0x80

0x83

0x001f6080 (2 056 320)

0x00032fcd (208 845)

3

0x00

0x83

0x0022904d (2 265 165)

0x000fb040 (1 028 160)

4

0x00

0x05

0x0032408d (3 293 325)

0x0496eb79 (76 999 545)

По табл. 5.4 и типам разделов, перечисленным в табл. 5.3, можно предположить, какие данные находятся в каждом разделе. Первый раздел должен содержать файловую систему NTFS (тип 0x07), второй и третий - файловые системы Linux (0x83), а четвертый - расширенный раздел (0x05). Для второй записи установлен флаг загрузочного раздела. Присутствие расширенного раздела абсолютно логично, потому что ранее упоминалось о том, что на диске находятся 8 разделов. Структура диска для данной таблицы разделов показана на рис. 5.5.

Рис. 5.5. Структура диска после обработки первой таблицы разделов данного примера (без соблюдения масштаба)

Структуры данных расширенного раздела

Ранее уже говорилось о том, что первый сектор расширенного раздела имеет ту же структуру, что и МВІІ, но в расширенных разделах он используется для построения связанного списка. Записи таблицы разделов устроены несколько иначе, потому что отсчет начальных адресов секторов ведется не от начала диска. Более того, начальный сектор вторичного раздела файловой системы также отсчитывается не от начального сектора вторичного расширенного раздела.

Начальный адрес в записи вторичной файловой системы задается по отношению к текущей таблице разделов - и это вполне логично, потому что вторичные расширенные разделы служат «обертками» для разделов файловых систем. С другой стороны, начальный адрес вторичного расширенного раздела задается относительно первичного расширенного раздела.

Разберем пример, показанный на рис. 5.6. Первичный расширенный раздел начинается с сектора 1000 и занимает 11 ООО секторов. Его таблица разделов содержит две записи. Первая запись описывает файловую систему FAT с начальным сектором 63, который в сумме с сектором текущей таблицы разделов дает 1063. Вторая запись предназначена для расширенного раздела и начинается с сектора 4 000. В сумме с начальным сектором первичного расширенного раздела (1000) это дает сектор 5000.

Рис. 5.6. Диск с тремя вторичными расширенными разделами. Обратите внимание: начальный сектор вторичных расширенных разделов задается по отношению к началу первичного расширенного раздела в секторе 1000

Перейдем ко вторичному расширенному разделу (в секторе 5000). Первая запись таблицы разделов описывает файловую систему NTFS с начальным сектором 63, который в сумме с адресом текущей таблицы разделов дает сектор 5063. Вторая запись описывает расширенный раздел с начальным сектором 6500, который в сумме с сектором первичного расширенного раздела дает сектор 7500.

Давайте разберем еще один цикл, чтобы все окончательно прояснилось. Следующий расширенный раздел начинается с сектора 7500. Первая запись файловой системы EXT3FS начинается с сектора 63, который в сумме с 7500 дает 7563. Вторая запись описывает вторичный расширенный раздел, а ее начальное значение 9000 в сумме с 1000 дает сектор 10 000.

Вернемся к практическому примеру, в котором мы разбирали вручную таблицу разделов. Далее приводится содержимое первого сектора первичного расширенного раздела, находящегося в секторе 3 293 325:

# del if=disk3.dd bs=512 skiр=0 count=l xxd

0000432: 0000 0000 0000 0000 0000 0000 0000 0001 ................

0000448: Olcd 83fe 7fcb 3f00 0000 0082 3e00 0000 ......?.....>...

0000464: 41cc 05fe bfOb 3f82 3e00 40b0 OfOO 0000 A.....?.>.@.....

0000480: 0000 0000 0000 0000 0000 0000 0000 0000 ................

0000496: 0000 0000 0000 0000 0000 0000 0000 55aa ..............U.

Четыре записи таблицы разделов выделены жирным шрифтом. Мы видим, что две последние записи не содержат данных. В табл. 5.5 представлена расшифровка первых двух записей таблицы разделов (нумерация разделов продолжает табл. 5.4):

Таблица 5.5. Содержимое первичной таблицы разделов в образе диска

Флаг

Тип

Начальный сектор

Размер

5

0x00

0x07

0x0000003f(63)

0x001f6041 (2 056 257)

6

0x00

0x05

0x003e823f (4 096 575)

0x000fb040 (1 028 160)

Запись 5 помечена типом файловой системы Linux (0x83); таким образом, раздел является вторичным разделом файловой системы, а его начальный сектор задается по отношению к началу текущего расширенного раздела (сектор 3 293 325):

3 293 325 + 63 - 3 293 388 Запись 6 помечена типом расширенного раздела DOS, а начальный сектор этого раздела задается по отношению к первичному расширенному разделу, который является текущим:

3 293 325 + 4 096 575 = 7 389 900 Структура диска в том виде, в котором она нам известна, показана на рис. 5.7. Прежде чем продолжить, обратите внимание на размеры двух разделов. В MBR первичный расширенный раздел имеет размер 76 999 545 секторов. В этой таблице размер следующего вторичного расширенного раздела составляет всего 1 028 160 секторов. Вспомните, что размер первичного расширенного раздела складывается из размеров всех вторичных файловых систем и вторичных расширенных разделов, тогда как размер вторичного расширенного раздела складывается из размера следующего вторичного раздела файловой системы и размера области, необходимой для хранения таблицы разделов.

Пример можно продолжить и проанализировать следующий вторичный расширенный раздел, находящийся в секторе 7 389 900. Его содержимое представлено в табл. 5.6.

Рис. 5.7. Структура диска после обработки второй таблицы разделов (без соблюдения масштаба)

Таблица 5.6. Содержимое первой вторичной расширенной таблицы разделов в образе диска

Флаг

Тип

Начальный сектор

Размер

7

0x00

0x82

0x0000003f(63)

OxOOOfbOOl (1 028 097)

8

0x00

0x05

0x004e327f (5 124 735)

0x000fb040 (1 028 160)

Запись 7 описывает раздел подкачки Linux; это вторичная файловая система, а начальный адрес сектора задается по отношению к текущему расширенному разделу, то есть сектору 7 389 900:

7 389 900 + 63 = 7 389 963 Запись 8 описывает расширенный раздел файловой системы DOS, поэтому его адрес начального сектора задается по отношению к первичному расширенному разделу, то есть сектору 3 293 325:

3 293 325 + 5 124 735 - 8 418 060 Структура диска с информацией из этой таблицы разделов показана на рис. 5.8. Полное содержимое таблицы разделов будет приведено далее, при рассмотрении программ вывода содержимого таблицы разделов.

Вывод информации о разделах

Познакомившись с внутренней структурой таблицы разделов, давайте посмотрим, как она обрабатывается некоторыми аналитическими программами. Те, кто предпочитает обрабатывать структуры данных вручную и не пользуется вспомогательными программами, могут пропустить этот материал. Мы рассмотрим две программы для Linux, но эта функция также выполняется многими Windows-ripo-граммами (в том числе системами экспертного анализа и шестнадцатеричными редакторами).

Команда fdisk входит в поставку Linux и отличается от одноименной программы, поставляемой с системой Windows. Fdisk может работать с устройством Linux или файлом образа, сгенерированным программой dd. При запуске с флагом -L

программа выводит список разделов вместо перехода в интерактивный режим с возможностью редактирования разделов. Флаг - и означает, что информация должна выводиться в секторах (вместо цилиндров). Для диска с разделами DOS, который мы обрабатывали вручную, программа выдала следующий результат:

# fdisk -lu disk3.dd

Disk disk3.dd: 255 heads, 63 sectors, 0 cylinders Units = sectors of 1 * 512 bytes

Device Boot Start End Blocks Id System

di sk3.ddl 63 2056319 1028128+ 7 HPFS/NTFS

di sk3.dd2 * 2056320 2265164 104422+ 83 Linux

disk3.dd3 2265165 3293324 514080 83 Linux

di sk3.dd4 3293325 80292869 38499772+ 5 Extended

di sk3.dd5 3293388 7389899 2048256 83 Linux

disk3.dd6 7389963 8418059 514048+ 82 Linux swap

di sk3.dd7 8418123 9446219 514048+ 83 Linux

di sk3.dd8 9446283 17639369 4096543+ 7 HPFS/NTFS

disk3.dd9 17639433 48371714 15366141 83 Linux

Рис. 5.8. Структура диска после обработки третьей таблицы разделов (без соблюдения масштаба)

Обратите внимание на некоторые обстоятельства. В выходных данных указан только первичный расширенный раздел (disk3.dd4). Вторичный расширенный раздел, в котором находится раздел подкачки Linux, обнаружен, но информация о нем не выводится. Такой подход приемлем в большинстве случаев, потому что для анализа абсолютно необходимы только первичный и вторичный разделы файловых систем, но все же следует помнить, что в результатах отображаются не все записи таблицы разделов.

Выходные данные программы mmLs из пакета The Sleuth Kit выглядят несколько иначе. В них помечаются секторы, не используемые разделами, указывается местонахождение таблиц разделов и расширенных разделов. Для диска, использованного в первом примере с fdisk, выходные данные mmLs выглядят так:

# mmls -t dos di sk3.dd Units are in 512-byte sectors

Slot Start End Length Description

00: ----------0000000000 0000000000 0000000001 Table #0

01: ----------0000000001 0000000062 0000000062 Unallocated

02: 00:00 0000000063 0002056319 0002056257 NTFS (0x07)

03: 00:01 0002056320 0002265164 0000208845 Linux (0x83)

04: 00:02 0002265165 0003293324 0001028160 Linux (0x83)

05: 00:03 0003293325 0080292869 0076999545 DOS Extended (0x05)

06: ----------0003293325 0003293325 0000000001 Table #1

07: ----------0003293326 0003293387 0000000062 Unallocated

08: 01:00 0003293388 0007389899 0004096512 Linux (0x83)

09: 01:01 0007389900 0008418059 0001028160 DOS Extended (0x05)

10: ----------0007389900 0007389900 0000000001 Table #2

11: ----------0007389901 0007389962 0000000062 Unallocated

12: 02:00 0007389963 0008418059 0001028097 Linux swap (0x82)

13: 02:01 0008418060 0009446219 0001028160 DOS Extended (0x05)

14: ----------0008418060 0008418060 0000000001 Table #3

15: ----------0008418061 0008418122 0000000062 Unallocated

16: 03:00 0008418123 0009446219 0001028097 Linux (0x83)

17: 03:01 0009446220 0017639369 0008193150 DOS Extended (0x05)

18: ----------0009446220 0009446220 0000000001 Table #4

19: ----------0009446221 0009446282 0000000062 Unallocated

20: 04:00 0009446283 0017639369 0008193087 NTFS (0x07)

21: 04:01 0017639370 0048371714 0030732345 DOS Extended (0x05)

22: ----------0017639370 0017639370 0000000001 Table #5

23: ----------0017639371 0017639432 0000000062 Unallocated

24: 05:00 0017639433 0048271714 0030732282 Linux (0x83)

Строки с пометкой Unallocated обозначают пространство между разделами, а также между концом таблицы разделов и началом первого раздела. В выходных данных mmls указан как конечный адрес, так и результат, что упрощает их использование для извлечения содержимого разделов программой dd.

Результаты mmls сортируются по начальному сектору раздела, поэтому первый столбец содержит только порядковый номер строки и не имеет отношения к положению записи в таблице разделов. Во втором столбце выводится таблица разделов и положение записи в ней. Первое число определяет таблицу (0 - первичная таблица, 1 - первичная расширенная таблица), а второе определяет запись в таблицу. Сортировка упрощает идентификацию секторов, не принадлежащих разделам. Для примера возьмем следующий образ:

# mmls -t dos diskl.dd

Units are in 512-byte sectors

Slot Start End Length Description

00: ----------0000000000 0000000000 0000000001 Table #0

01: ----------0000000001 0000000062 0000000062 Unallocated

02: 00:00 0000000063 0001028159 0001028097 Win95 FAT32 (OxOB)

03: ----------0001028160 0002570399 0001542240 Unallocated

04: 00:03 0002570400 0004209029 0001638630 OpenBSD (0xA6)

05: 00:01 0004209030 0006265349 0002056320 NTFS (0x07)

Из листинга видно, что раздел NTFS находится в позиции перед разделом OpenBSD, но раздел NTFS начинается после раздела OpenBSD. Также можно заметить, что запись с пометкой 00:02 отсутствует, а 1 542 240 секторов между FAT и OpenBSD также помечены как нераспределенные.

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

В этом разделе упоминаются некоторые обстоятельства, которые необходимо учитывать при анализе диска с разделами DOS. Для таблицы разделов и загрузочного кода обычно хватает одного сектора, но, как правило, для MBR и расширенных разделов выделяются 63 сектора, потому что разделы должны начинаться на границе цилиндра. Следовательно, раздел 0 расширенного раздела или MBR содержит код и таблицу разделов, а секторы 1-62 могут оставаться неиспользуемыми. В неиспользуемых секторах может храниться дополнительный загрузочный код, но также в них могут находиться данные от предыдущей установки, нули или скрытые данные. Windows ХР не стирает данные в неиспользуемых секторах при создании разделов на диске.

Разделы в большинстве случаев начинаются с сектора 63, и этим обстоятельством можно воспользоваться для восстановления содержимого первого раздела, так как при отсутствии таблицы разделов средства, упоминавшиеся в главе 4, работать не будут. Попробуйте извлечь данные, начиная с сектора 63. В этом случае в выборку будут включены другие разделы из образа, но возможно, вам удастся определить фактический размер раздела по данным файловой систехмы. Извлечение раздела программой dd осуществляется так:

# dd if=disk.dd bs=512 skip=63 of=part.dd

Теоретически расширенные разделы должны содержать только две записи: для раздела вторичной файловой системы и вторичного расширенного раздела. Большинство программ создания разделов следуют этим правилам, но существует возможность создать третий раздел вручную. Microsoft Windows ХР и Red Hat 8.0 отобразили «лишний» раздел, когда расширенный раздел содержал более двух записей, однако ни та, ни другая ОС не позволили создать такую конфигурацию. Протестируйте свои аналитические программы и убедитесь в том, что в подобных «неправильных» конфигурациях они выводят информацию обо всех разделах.

Значение в поле типа раздела учитывается не всегда. Windows использует поле для идентификации разделов для монтирования, но в таких операционных системах, как Linux, пользователь получает доступ ко всем разделам. Таким образом, пользователь может поместить файловую систему FAT в раздел, предназначенный (в соответствии с типом) для хранения данных спящего режима. Эта файловая система не будет монтироваться в Windows - только в Linux.

Некоторые версии Windows создают в MBR только один первичный раздел, а все остальные разделы создают как расширенные. Другими словами, они не создают три первичных раздела, прежде чем переходить к созданию расширенных разделов.

Если часть таблицы разделов будет повреждена, возможно, придется таблицы расширенных разделов искать на диске. Поиск следует производить по сигнатуре 0хАА55 в двух последних байтах секторах. Обратите внимание: в файловых системах NTFS и FAT присутствуют в той же позиции первого сектора. Чтобы отличить таблицу разделов от загрузочного сектора файловой системы, придется проанализировать прочее содержимое сектора. Если сектор окажется загрузочным сектором файловой системы, возможно, таблица разделов находится на 63 сектора раньше него.

Итоги

В современной компьютерной аналитике чаще всего приходится иметь дело с разделами DOS. К сожалению, схема разделов DOS также оказывается самой сложной, потому что при ее исходном проектировании не учитывались масштабы современных систем. К счастью, существуют системные программы для получения информации о структуре диска, используемом и неиспользуемом пространстве. Многие системы UNIX, работающие на IA32-совместимых платформах, используют разделы DOS в сочетании с собственными системами разделов. Следовательно, каждый эксперт обязан хорошо разбираться в разделах DOS.

Разделы Apple

Компьютеры с операционной системой Apple Macintosh встречаются реже, чем компьютеры с Microsoft Windows, однако их популярность возросла с выходом Mac OS X, операционной системы на базе UNIX. Разделы, о которых пойдет речь, применяются на последних портативных и настольных компьютерах Apple с системой OS X, более старых системах с Macintosh 9 и даже портативных устройствах iPod, предназначенных для воспроизведения аудио в формате MP3. Карты разделов также могут использоваться в файлах образов дисков, используемых в Macintosh при пересылке файлов. Файлы образов дисков напоминают zip-файлы в Windows или tar-файлы в UNIX. Их содержимое хранится в виде файловой системы, которая может находиться в разделе.

Архитектура системы разделов в Apple является удачным компромиссом между сложностью разделов DOS и ограниченным количеством разделов в BSD. Раздел DOS может описывать произвольное количество разделов, а структуры данных хранятся в смежных секторах диска. Далее приводится общий обзор разделов Apple, подробно описываются их структуры данных и способы получения подробной информации.

Общий обзор

Разделы Apple описываются специальной структурой данных - картой разделов (partition map), находящейся в начале диска. Обработка этой структуры реализована на уровне «прошивок» (встроенного кода), поэтому карта не содержит загрузочный код, как в схеме разделов DOS. Каждая запись карты разделов определяет начальный сектор раздела, размер, тип и имя тома. Структура данных также содержит информацию о данных, хранящихся в разделе, - в частности, местонахождение области данных и загрузочного кода.

Первая запись обычно определяет максимальный размер карты разделов. На компьютерах Арр1е создаются разделы для хранения драйверов оборудования, поэтому главный диск системы Арр1е содержит множество разделов с драйверами и другим содержимым, не имеющим прямого отношения к файловой системе. На рис. 5.9 показан пример структуры диска Арр1е с тремя разделами файловой системы и одним разделом, в котором хранится карта разделов.

Рис. 5.9. Диск Арріе с одним разделом, содержащим карту разделов, и тремя разделами файловых систем

Как будет показано далее, в системах ВББ используется другая структура разделов, называемая разметкой диска. Несмотря на то что Мас ОБ X базируется на ядре ВБ Б, в этой системе используется карта разделов Арріе, а не разметки диска.

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

От знакомства с базовыми концепциями разделов Арріе можно переходить к рассмотрению структур данных. Как и в случае с другими структурами данных в книге, если этот материал не представляет для вас интереса, его можно пропустить. Здесь также приводятся выходные данные некоторых аналитических программ на примере образа диска.

Запись карты разделов

Карта разделов Арріе содержит несколько 512-байтовых структур данных, каждая из которых представляет один раздел. Карта разделов начинается со второго сектора диска и продолжается до тех пор, пока не будут описаны все разделы. Структуры данных разделов хранятся в смежных секторах, и в каждой записи присутствует общее количество разделов. Структура записи карты разделов показана в табл. 5.7.

Таблица 5.7- Структура данных записей разделов Apple

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

Описание

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

0-1

Сигнатура (0х504й)

Нет

2-3

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

Нет

4-7

Общее количество разделов

Да

8-11

Начальный сектор раздела

Да

12-15

Размер раздела в секторах

Да

16-47

Имя раздела в кодировке АБСН

Нет

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

Описание

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

48-79

Тип раздела в кодировке АБСН

Нет

80-83

Начальный сектор области данных в разделе

Нет

84-87

Размер области данных в секторах

Нет

88-91

Состояние раздела (см. табл. 5.8)

Нет

92-95

Начальный сектор загрузочного кода

Нет

96-99

Размер загрузочного кода в секторах

Нет

100-103

Адрес кода загрузчика

Нет

104-107

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

Нет

108-111

Точка входа в загрузочный код

Нет

112-115

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

Нет

116-119

Контрольная сумма загрузочного кода

Нет

120-135

Тип процессора

Нет

136-511

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

Нет

Тип раздела задается в кодировке АБСП, а не целочисленным кодом, как в других схемах. Коды состояния каждого раздела применимы как к А/ІІХ (старая операционная система Арріе), так и к современным системам Масткії. Поле состояния содержит одно из значений, перечисленных в табл. 5.8 [Арріе, 1999].

Таблица 5.8. Коды состояния разделов Apple

Тип

Описание

0x00000001

Запись действительна (только A/UX)

0x00000002

Запись выделена (только A/UX)

0x00000004

Запись используется (только A/UX)

0x00000008

Запись содержит загрузочную информацию (только A/UX)

0x00000010

Запись доступна для чтения (только A/UX)

0x00000020

Запись доступна для изменения (Macintosh и A/UX)

0x00000040

Загрузочный код является позиционно-независимым (только A/UX)

0x00000100

Раздел содержит цепочечно-совместимый драйвер (только Macintosh)

0x00000200

Раздел содержит настоящий драйвер (только Macintosh)

0x00000400

Раздел содержит цепочечный драйвер (только Macintosh)

0x40000000

Автоматическое монтирование при запуске (только Macintosh)

0x80000000

Стартовый раздел (только Macintosh)

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

Чтобы идентифицировать разделы на диске Арр1е, программа (или человек) читает структуру данных из второго сектора. Обработка структуры дает общее количество разделов, после чего извлекается другая информация о разделах. Обычно первая запись относится к самой карте разделов. Затем читается следующий сектор, и процесс продолжается до тех пор, пока не будут прочитаны все разделы. Вот как выглядит содержимое первой записи карты разделов:

# dd if=mac-disk.dd Ьб=512 Бк1р=1 xxd

0000000: 504d 0000 0000 000а 0000 0001 0000 ООЗГ РМ.............?

0000016: 4170 706c 6500 0000 0000 0000 0000 0000 Apple...........

0000032: 0000 0000 0000 0000 0000 0000 0000 0000 ................

0000048: 4170 706c 655f 7061 7274 6974 696f 6e5f Apple_partition_

0000064: 6d61 7000 0000 0000 0000 0000 0000 0000 map.............

0000080: 0000 0000 0000 003f 0000 0000 0000 0000 .......?........

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

[...]

На компьютерах Apple используются процессоры Motorola PowerPC, поэтому данные на них хранятся с обратным порядком байтов. В результате отпадает необходимость в перестановке байтов, как в разделах DOS. В байтах 0-1 видна сигнатура 0x504d, а в байтах 4-7 - количество разделов, равное 10 (0x0000000а). Байты 8-11 показывают, что первый сектор диска является начальным сектором раздела, а размер раздела составляет 63 сектора (0x3f). Разделу присвоено имя «Apple», а тип раздела обозначается строкой «Apple_partition_map». Из байтов 88-91 видно, что флаги для раздела не установлены. У других записей, относящихся к конкретным разделам, заданы коды состояния.

Пример информации о разделах

Для просмотра карты разделов Apple можно воспользоваться программой mmls из пакета The Sleuth Kit. Вот как выглядят результаты, полученные при запуске mmls на портативном компьютере iBook с диском емкостью 20 Гбайт:

# mmls -t mac mac-disk.dd

MAC Partition Map

Units are in 512-byte sectors

Slot Start End Length Description

00: ----------0000000000 0000000000 0000000001 Unallocated

01: 00 0000000001 0000000063 0000000063 Apple_partition_map

02: ----------0000000001 0000000010 0000000010 Table

03: ----------0000000011 0000000063 0000000053 Unallocated

04: 01 0000000064 0000000117 0000000054 Apple_driver43

05: 02 0000000118 0000000191 0000000074 Apple_driver44

06: 03 0000000192 0000000245 0000000054 Apple_driver_ATA

07: 04 0000000246 0000000319 0000000074 Apple_driver_ATA

08: 05 0000000320 0000000519 0000000200 AppleJWDriver

09: 06 0000000520 0000001031 0000000512 Apple_Driver_I0Kit

10: 07 0000001032 0000001543 0000000512 Apple_Patches

11: 08 0000001544 0039070059 0039068516 AppleJIFS

12: 09 0039070060 0039070079 0000000020 Applejree

В этих данных строки отсортированы по начальному сектору, а второй столбец показывает, какая запись карты содержит описание раздела. В данном примере записи уже хранятся в отсортированном виде. Из строки 12 видно, что на компьютере Apple mmls выводит информацию о нераспределенных секторах. Строки О, 2 и 3 были добавлены mmls; в них выводится информация о местонахождении карты разделов и о свободных секторах. Перечисленные драйверы используются системой при загрузке.

Для анализа низкоуровневого образа диска в OS X также можно запустить программу pdisk с флагом -dump:

# pdisk mac_disk.dd -dump mac-disk.dd map block size=-512

#: type name length base (size)

1: Apple_partition_map Apple 63 @ 1

2: Apple_Driver43*Macintosh 54 @ 64

3: Apple_Dnver43*Macintosh 74 @ 118

4: Apple_Driver_ATA*Macintosh 54 @ 192

5: Apple_Driver_ATA*Macintosh 74 @ 246

6: Apple_FWDriver Macintosh 200 @ 320

7: Apple_Driver_I0Kit Macintosh 512 @ 520

8: Apple_Patches Patch Partition 512 @ 1032

9: Apple_HFS untitled 390668516 @ 1544 ( 18.6G)

10: Apple_Free 0+@ 39070060

Device block size=512. Number of Blocks=10053

DeviceType=0x0. DeviceId=0x0

Drivers-

1: @ 64 for 23. type=0xl 2: (P 118 for 36. type-Oxffff 3: @192 for 21, type=0x701 4: @246 for 34. type=0xf8ff

Как упоминалось во введении, файлы образов дисков Apple (не путайте с файлами образов, используемыми при анализе файловых систем) также могут содержать карту разделов. Файл образа представляет собой архивный файл, который может содержать несколько отдельных файлов (по аналогии с zip-файлами Windows или tar-файлами UNIX). Файл образа диска может содержать один раздел с файловой системой или же только файловую систему без разделов. Тестовый файл образа диска (таким файлам обычно присваивается расширение .dmg) обладает следующей структурой:

# mmls -t mac test.dmg

MAC Partition Map

Units are in 512-byte sectors

Slot Start End Length Description

00: ----------0000000000 0000000000 0000000001 Unallocated

01: 00 0000000001 0000000063 0000000063 Apple_partition_map

02: ----------0000000001 0000000003 0000000003 Table

03: ----------0000000004 0000000063 0000000060 Unallocated

04: 01 0000000064 0000020467 0000020404 Apple_HFS

05: 02 0000020468 0000020479 0000000012 Applejree

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

Единственная уникальная особенность разделов Арр1е состоит в том, что структура данных содержит несколько неиспользуемых полей, которые могут использоваться для сокрытия небольших объемов данных. Также данные могут скрываться в секторах между структурой данных последнего раздела и кондом пространства, выделенного для карты разделов. Как и в любой другой схеме, имя раздела и его тип еще ничего не гарантируют - такой раздел может содержать все, что угодно.

Итоги

Карта разделов Арр1е имеет довольно простую структуру, и понять ее несложно. Структуры данных хранятся в одном месте, а максимальное количество разделов зависит от того, каким образом производилось исходное разбиение диска. Программа ттІ5 позволяет легко идентифицировать местонахождение разделов Арріе на других компьютерах, а в системе ОБ X можно воспользоваться программой рсИБк.

Съемные носители

Большинство съемных носителей также содержит разделы, но на них используются те же структуры данных, что и на жестких дисках. Исключение из правила составляют дискеты, отформатированные для системы FAT 12 в Windows и UNIX. Они не имеют таблицы разделов, а весь жесткий диск рассматривается как один раздел. Образ дискеты можно напрямую проанализировать как файловую систему. Некоторые портативные флеш-диски USB («брелковые диски») не имеют разделов и содержат одну файловую систему, но другие имеют разделы.

Съемные носители большей емкости (скажем, zip-диски Iomega) содержат таблицы разделов. Структура таблицы разделов на zip-диске зависит от того, был ли диск отформатирован для Мае или для PC. Диск, отформатированный для PC, содержит таблицу разделов DOS, и по умолчанию четвертая запись представляет только один раздел.

Карты памяти, часто используемые в цифровых камерах, также обычно содержат таблицу разделов. Многие флэш-карты содержат файловую систему FAT, а для их анализа можно воспользоваться обычными программами. Вот как выглядит таблица разделов на базе DOS для 128-мегабайтной карты памяти:

# mmls -t dos camera.dd

DOS Partition Table

Units are in 512-byte sectors

Slot Start End Length Description

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

01: ----------0000000001 0000000031 0000000031 Unallocated

02: 00:00 0000000032 0000251647 0000251616 DOS FAT16 (0x06)

Чтобы создать образ карты памяти, достаточно вставить ее в устройство чтения карт с интерфейсом USB или FireWire и выполнить в Linux команду dd.

С дисками CD-ROM дело обстоит сложнее из-за большого количества вариантов. Большинство компакт-дисков использует формат ISO 9660, поддерживаемый многими операционными системами. Формат ISO 9660 устанавливает жесткие ограничения для имен файлов, поэтому были разработаны расширения этого формата (такие, как Joliet и Rock Ridge), обладающие большей гибкостью. Описание компакт-дисков усложняется тем, что один диск может содержать данные в базовом формате ISO 9660 и в формате Joliet. А если компакт-диск является гибридным диском Apple, он также может содержать данные в формате Apple HFS+. Фактическое содержимое файлов хранится в одном экземпляре, но ссылки на эти данные присутствуют в нескольких разных местах.

У записываемых компакт-дисков (CD-R) существует понятие сеанса. Диск CD-R может содержать один или несколько сеансов, а сама концепция сеанса была разработана для того, чтобы данные к CD-R можно было добавлять более одного раза. При каждой записи данных на CD-R создается новый сеанс. В зависимости от операционной системы, в которой используется диск, каждый сеанс может отображаться в виде раздела. Например, я воспользовался приложением Apple OS X

и создал компакт-диск с тремя сеансами. В системе OS X все три сеанса монтировались как файловые системы. При использовании диска в системе Linux последний сеанс монтировался по умолчанию, но два других сеанса также можно было смонтировать, указав их в команде mount. Для определения количества сеансов на диске можно воспользоваться утилитой readcd (http://freshmeat.net/projects/ cdrecord/). Когда тот же диск был открыт в системе Microsoft Windows ХР, система заявила, что он содержит недопустимую информацию, хотя программа SmartProject ISO Buster (http://www.isobuster.com) увидела все три сеанса. Даже если многосеансовый диск создавался в Windows, возможны разные варианты поведения. Таким образом, при анализе CD-R очень важно использовать программу, позволяющую просмотреть содержимое всех сеансов, а не полагаться на стандартное поведение той платформы, на которой осуществляется анализ.

Некоторые компакт-диски также содержат разделы, специфические для «родной» операционной системы. Например, гибридные CD сочетают формат ISO с форматом Apple - внутри сеанса используется карта разделов Apple и файловая система HFS+. К таким дискам применимы стандартные методы анализа для платформы Apple. Например, вот как выглядит результат запуска mmls для гибридного диска:

# mmls -t mac cd-slice.dmg

MAC Partition Map

Units are in 512-byte sectors

Slot Start End Length Description

00: ----------0000000000 0000000000 0000000001 Unallocated

01: 00 0000000001 0000000002 0000000002 Apple_partition_map

02: ----------0000000001 0000000002 0000000002 Table

03: ----------0000000003 0000000103 0000000101 Unallocated

04: 01 0000000104 0000762559 0000762456 Apple_HFS

Многие загрузочные компакт-диски тоже содержат систему разделов определенной операционной системы. Загрузочные диски Sparc Solaris содержат структуру Volume Table of Contents в томе ISO, а в начале загрузочных компакт-дисков Intel может находиться таблица разделов DOS. Эти структуры используются после загрузки операционной системы с компакт-диска, а код, необходимый для загрузки системы, хранится в формате ISO.

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

• Agile Risk Management, «Linux Forensics - Week 1 (Multiple Session CDRs)». March 19, 2004, http://www.agilerm.net/linuxl.html.

• Apple, «File Manager Reference». March 1,2004. http://developer.apple.com/documen-tation/Carbon/Reference/File_Manager/index.html.

• Apple, «Inside Macintosh: Devices». July 3,1996. http://developer.apple.com/documen-tation/mac/Devices/Devices-2.html.

• Apple, «The Monster Disk Driver Technote». November 22, 1999. http://devel.o-per.apple.com/technotes/pdf/tnll89.pdf.

• Brouwer, Andries. «Minimal Partition Table Specification». September 16, 1999. http://www.win.tue.nl/~aeb/partitions/partition_tables.htmL

• Brouwer, Andries. «Partition Types». December 12, 2004. http://www.win.tue.nl/ ~aeb/partitions/partition_types.html.

• Carrier, Brian. «Entended Partition Test». Digital Forensics Tool Testing Images, July 2003. http://dftt.sourceforge.net/testl/index.html.

• CDRoller. Reading Data CD, n.d. http://www.cdroller.com/htm/readdata.html.

• ECMA. «Volume and File Structure of CDROM for Information Interchange». ISO Spec, September 1998. http://www.ecma-international.org/publications/files/ ECMA-ST/Ecma-119.pdf.

• Landis, Hale. «How it Works: Master Boot Record». May 6, 2002. http://www.ata-atapi.com/hiwmbr.htm.

• Microsoft. «Basic Disks and Volumes Technical Reference». Windows Sewer 2003 Technical Ref erence, 2004. http://www.microsoft.com.

• Microsoft. «Managing GPT Disks in Itamium-based Computers». Windows XP Professional Resource Kit Documentation, 2004a. http://www.microsoft.com.

• Microsoft. «MS-DOS Partitioning Summary». Microsoft Knowledge Base Article 69912, December 20, 2004b. http://support.microsoft.com/default.aspx?scid=kb;EN-US;69912.

• Stevens, Curtis, and Stan Merkin. «El Torito: Bootable CD-ROM Format Specification 1.0». January 25,1999. http://www.phoenix.com/resources/specs-cdrom.pdf.

Разделы в серверных системах

В предыдущей главе было показано, как организовано хранение информации на персональных компьютерах. Давайте посмотрим, как происходит создание томов на серверах. В области основных концепций эта глава совершенно не отличается от предыдущей. Более того, я разделил их только для того, чтобы материал был представлен по главам среднего размера, и такое разделение было ничем не хуже других возможных (хотя ничто не мешает использовать разделы DOS и Apple на серверах). В этой главе мы познакомимся с системами разделов FreeBSD, NetBSD и OpenBSD; системами разделов Sun Solaris; а также разделами GPT, поддерживаемыми в 64-разрядных системах Intel Itanium.

Разделы BSD

Компьютерным аналитикам все чаще приходится иметь дело с серверными системами BSD UNIX - такими, как FreeBSD (http://www.freebsd.org), OpenBSD (http://www.openbsd.org) и NetBSD (http://www.netbsd.org). Такие системы используют собственные схемы формирования разделов, и в этой части будут описаны соответствующие структуры данных. На практике чаще встречается система Linux, но она использует только разделы DOS и не имеет собственных структур данных.

Многие системы BSD работают на оборудовании IА32 (то есть x86/i386), а при их проектировании учитывалась возможность их совместного существования на одном диске с продуктами Microsoft. Такие системы строятся на базе разделов DOS, упоминавшихся в предыдущей главе. Системы BSD, работающие на другом оборудовании, по всей вероятности, не будут использовать разделы DOS, но в книге они не рассматриваются.

Прежде чем переходить к рассмотрению темы, необходимо понять одно важное обстоятельство: во время работы операционная система может выбрать разделы, доступ к которым предоставляется пользователю. Как будет показано, операционная система FreeBSD использует системы разделов DOS и FreeBSD, тогда как OpenBSD и NetBSD используют только систему разделов BSD. Для данного раздела необходимо хотя бы общее понимание разделов DOS.

Общий обзор

Система разделов BSD проще системы разделов DOS, но по своим возможностям она уступает картам разделов Apple. Необходимые данные хранятся только в одном секторе, который находится в разделе DOS (рис. 6.1). Это было сделано для того, чтобы на том же диске могла быть установлена система Windows, а пользователь мог выбрать загружаемую операционную систему. В таблице разделов DOS создается запись для разделов FreeBSD, OpenBSD или NetBSD - типы 0ха5, Охаб и 0ха9 соответственно. Раздел BSD является одним из первичных разделов DOS.

Рис. 6.1. Диск с двумя разделами DOS и тремя разделами BSD внутри раздела DOS

Если бы я стремился к максимальной строгости в терминологии, стоило бы сказать, что разделы BSD находятся внутри тома, созданного на основе раздела DOS. Как объяснялось в главе 4, это один из примеров разбиения на разделы тома, созданного на базе раздела.

Центральной структурой данных является разметка диска (disk label). Ее размер составляет минимум 276 байт, и она находится во втором секторе раздела BSD. В некоторых системах, не использующих платформу IA32, она может храниться в первом секторе со смещением. В FreeBSD, OpenBSD и NetBSD используется одна структура данных, но с некоторыми различиями в реализации. Сейчас я изложу общие положения, а конкретные подробности будут приведены далее.

Структура разметки диска содержит аппаратные спецификации диска и таблицы разделов для восьми или шестнадцати разделов BSD. В отличие от схемы Apple, таблица разделов имеет фиксированный размер, а в отличие от разделов DOS, существует только одна таблица разделов. Каждая запись в таблице разделов BSD содержит следующие поля:

• начальный сектор раздела BSD;

• размер раздела BSD;

• тип раздела;

• размер фрагмента файловой системы UFS;

• количество фрагментов файловой системы UFS на блок;

• количество цилиндров в группе UFS.

Адрес начального сектора отсчитывается от начала диска, а не от разметки диска или раздела DOS. Поле типа раздела определяет тип файловой системы, которая должна находиться в разделе BSD - например, UFS, область подкачки, FAT или неиспользуемая область. Последние три значения используются только в том случае, если раздел содержит файловую систему UFS. Файловая система UFS описывается в главах 16 и 17.

Основные принципы схемы разделов BSD просты. Получение информации сводится к чтению одной структуры данных и обработке списка разделов. Впро чем, некоторые проблемы могут возникнуть с доступом к разделам. Например, в системе с альтернативной загрузкой аналитик должен знать, обладал ли пользователь доступом к разделу Windows и/или к разделу BSD. В FreeBSD этот вопрос решается не так, как в OpenBSD и NetBSD. Мы разберемся, как каждая из этих систем использует данные в разметке диска, хотя эта тема может быть отнесена к анализу уровня приложений.

FreeBSD

FreeBSD предоставляет пользователю доступ ко всем разделам DOS и BSD на диске. В терминологии FreeBSD разделы DOS называются сегментами (slice), а разделы BSD называются просто разделами. Следовательно, если в системе установлены Windows и FreeBSD, при работе с FreeBSD пользователь будет иметь доступ сегментам Windows.

Структура разметки диска в FreeBSD используется для организации секторов только в пределах раздела DOS, содержащего разделы FreeBSD. На первый взгляд это кажется очевидным, но в действительности это одно из принципиальных различий между реализациями OpenBSD и FreeBSD. На рис. 6.2 разметка диска описывает три раздела, находящиеся в разделе DOS с типом раздела FreeBSD, но для описания раздела с типом NTFS она не нужна.

Рис. 6.2. Диск FreeBSD с именами устройств

FreeBSD, как и прочие разновидности UNIX, связывает с каждым разделом и сегментом специальный файл устройства. Имя этого файла задается в соответствии с номером раздела DOS и номером раздела BSD. Первичному диску АТА присваивается базовое имя /dev/adO. Для каждого сегмента, также называемого разделом DOS, к базовому имени прибавляется буква «s» и номер сегмента. Например, первый сегмент обозначается именем /dev/adOsl, а второй - /dev/ad0s2. На любом сегменте с типом раздела FreeBSD система ищет структуру разметки диска. Разделам в сегменте присваиваются буквенные обозначения на основании положения их записей в таблице разделов разметки диска. Например, если второй раздел DOS принадлежит FreeBSD, первому разделу BSD будет присвоено имя /dev/ad0s2a, а второму - /dev/ad0s2b. Также иногда для разделов BSD создается вторая группа имен устройств, не включающая в себя номера сегментов. Например, имя /dev/adOa может использоваться как сокращенное обозначение раздела /dev/ad0s2a (если раздел FreeBSD является вторым разделом DOS).

Некоторые разделы BSD имеют особый смысл. Раздел «а» обычно выполняет функции корневого, в нем находится загрузочный код. Раздел «Ь» обычно содержит область подкачки, раздел «с» обычно представляет весь сегмент, а начиная с «d», разделы могут содержать произвольную информацию. Я говорю «обычно»,

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

Итак, система FreeBSD предоставляет доступ ко всем разделам DOS и разделам FreeBSD. В процессе полного анализа системы эксперт должен проанализировать каждый раздел DOS и каждый раздел BSD, присутствующий в разметке диска.

NetBSD и OpenBSD

NetBSD и OpenBSD предоставляют пользователю доступ только к записям, присутствующим в структуре разметки диска BSD. В отличие от разметки диска FreeBSD, в OpenBSD и NetBSD эта структура может описывать разделы, находящиеся в любом месте диска. Иначе говоря, разметка диска может описывать разделы за пределами того раздела DOS, в котором она находится. В оставшейся части главы я буду упоминать только OpenBSD, но в действительности речь идет об обеих системах, OpenBSD и NetBSD. Проект OpenBSD отделился от NetBSD много лет назад.

После загрузки ядра OpenBSD разделы DOS игнорируются. Система использует их только для обнаружения начала раздела OpenBSD. Следовательно, если в системе установлены как Windows, так и OpenBSD, а пользователям предоставлен доступ к разделу FAT из OpenBSD, то раздел FAT будет присутствовать как в таблице разделов DOS, так и в разметке диска BSD. Ситуация показана на рис. 6.3 для разделов DOS, показанных на рис. 6.2. Однако на этот раз в разметке диска потребуется дополнительная запись для обращения к разделу DOS с типом NTFS.

Рис. 6.3. Диск FreeBSD с именами устройств

Имена файлов устройств в OpenBSD похожи нате, что используются в FreeBSD. Первичному устройству АТА назначается базовое имя /dev/wdO. Понятие «сегментов» отсутствует, а имена разделов BSD обозначаются буквами. Следовательно, первому разделу BSD присваивается имя /dev/wdOa, а второму - /dev/wdOb. Как и в FreeBSD, первый раздел обычно является корневым, а второй предназначается для области подкачки. Третий раздел, /dev/wdOc в нашем примере, является устройством, представляющим весь диск. Вспомните, что в FreeBSD третий раздел предназначался только для одного сегмента, или раздела, DOS.

Подведем итог: система OpenBSD предоставляет доступ только к разделам, описанным в разметке диска OpenBSD. Анализ системы OpenBSD следует сосредоточить на разделах, перечисленных в разметке диска.

Загрузочный код

Загрузочный код в системе BSD «окружает» структуру разметки диска, находящуюся в секторе 1 тома. В секторе 0 тома хранится загрузочный код, выполняемый при обнаружении загрузчиком MBR загрузочного раздела с типом BSD. Если загрузочный код не помещается в секторе 0, он продолжается в секторе 2 и может продолжаться до начала данных файловой системы, обычно в секторе 16.

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

В этом разделе описываются структуры данных разметки диска BSD и приводится пример обработки системных данных в системах FreeBSD и OpenBSD. Также приводятся примеры результатов некоторых служебных программ.

Netbsd и openbsd | Криминалистический анализ файловых систем | Разметка диска


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



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

  • Апрель
    2020
  • Пн
  • Вт
  • Ср
  • Чт
  • Пт
  • Сб
  • Вс
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31