Познакомившись с внутренней структурой таблицы разделов, давайте посмотрим, как она обрабатывается некоторыми аналитическими программами. Те, кто предпочитает обрабатывать структуры данных вручную и не пользуется вспомогательными программами, могут пропустить этот материал. Мы рассмотрим две программы для 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


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



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

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