Аппаратные реализаций КАШ весьма разнообразны, поэтому я приведу лишь некоторые общие рекомендации. Чтобы проанализировать том КАШ, проще всего снять данные с последнего тома КАШ как с обычного автономного диска и воспользоваться стандартными средствами анализа файловой системы и разделов. В одном из способов анализируемая система загружается с загрузочного компакт-диска Глпих (или другой системы), содержащего драйверы контроллера КАШ. Учтите, что некоторые тома КАШ очень велики, поэтому для хранения образа потребуется большое дисковое пространство (а может быть, даже отдельный том КАШ).

Загрузочные компакт-диски Ьтих содержат драйверы разных контроллеров КАШ, так что проверьте свой любимый дистрибутив и составьте список поддерживаемых контроллеров. Возможно, вам придется создать собственный диск или заготовить несколько дисков для разных случаев.

Если вы не располагаете необходимыми драйверами контроллера КАШ для снятия данных «на месте», возможно, диски и контроллер придется взять в лабораторию. Информация о строении отдельных дисков КАШ практически отсутствует, поэтому при объединении дисков без контроллера могут возникнуть трудности.

Некоторые секторы диска могут быть не задействованы в томе КАШ. В неиспользуемых секторах могут храниться скрытые данные. Таким образом, снятие содержимого каждого диска (в дополнение к содержимому тома КАШ) является самым надежным, хотя и не всегда самым простым решением. Если раскладка данных неизвестна, с идентификацией неиспользуемых секторов диска могут возникнуть проблемы. Если возможен поиск информации по ключевым словам, проведите поиск не только по тому КАШ, но и по отдельным дискам.

Программная реализация КАЮ

Также возможна реализация томов КАШ на программном уровне.

Общие сведения

При программной реализации КАШ операционная система объединяет отдельные диски при помощи специальных драйверов. В этом сценарии ОС «видит»

отдельные диски, но показывает пользователю только том RAID. Доступ к отдельным дискам обычно осуществляется при помощи неструктурированных устройств UNIX или объектов устройств в Microsoft Windows. Многие современные операционные системы обеспечивают поддержку RAID; к их числу относятся Microsoft Windows NT, 2000 и Windows ХР; Apple OS X; Linux; Sun Solaris; HP-UX и IBM AIX. Программная реализация RAID уступает аппаратной реализации по эффективности, потому что для вычисления битов четности и распределения данных приходится задействовать центральный процессор. Логическая схема программной реализации RAID показана на рис. 7.5.

Рис. 7.5. При программной реализации RAID ОС объединяет диски, сохраняя доступ к каждому отдельному диску

В Windows 2000 и ХР томами RAID управляет диспетчер логических дисков, или LDM (Logical Disk Manager). Для работы LDM диски должны быть отформатированы как динамические; такие диски отличаются от дисков с разделами DOS, представленных ранее в главе 5. LDM может создавать тома RAID уровней 0 (чередование), 1 (зеркальное копирование) и 5 (чередование с контролем четности), хотя поддержка RAID версий 1 и 5 доступна только в серверных версиях Windows. Динамический диск может использоваться для нескольких томов RAID, но это маловероятно, если система использует RAID по соображениям быстродействия или избыточности. Вся конфигурационная информация в томах RAID системы Windows хранится на дисках, а не в локальной системе. Диспетчер логических дисков более подробно рассматривается позднее в этой главе, когда речь пойдет об объединении дисков.

В Linux поддержка RAID обеспечивается драйверами ядра MD (Multiple Device). Диски в массивах RAID системы Linux не требуют специального форматирования и могут содержать обычные разделы DOS. Описание конфигурации хранится в локальной системе в конфигурационном файле (по умолчанию /etc/raidtab). Полученному тому RAID назначается новое устройство, и он может монтироваться как обычный диск. Драйвер MD поддерживает RAID уровней 0 (чередование),

1 (зеркальное копирование) и 5 (чередование с контролем четности). Также существует необязательная возможность создания «постоянного суперблока» с размещением конфигурационной информации на диске, чтобы она могла использоваться в других системах, кроме исходной (это упрощает анализ «на стороне»).

Снятие данных и анализ

Задачи снятия данных и анализа при программной реализации RAID решаются почти так же, как при аппаратной реализации. При текущей технологии простейший сценарий основан на снятии данных с тома RAID для последующего применения стандартных средств анализа файловой системы. В отличие от аппаратной реализации RAID, некоторые программы анализа позволяют объединять содержимое отдельных дисков.

Возможно, при программной реализации RAID вам не понадобится исходное программное обеспечение для восстановления тома RAID. Например, в Linux предусмотрена поддержка диспетчера логических дисков Windows (LDM) с возможностью правильного объединения дисков Windows. Не все версии ядра Linux поставляются с включенной поддержкой LDM, но ее можно включить при перекомпиляции ядра. Если вы используете Microsoft Windows для создания томов RAID, установите аппаратный блокировщик записи для предотвращения потери данных.

Рассмотрим пример с Windows LDM в Linux. Если загрузить ядро Linux с поддержкой LDM, в системе создается устройство для каждого раздела RAID. Вам придется отредактировать файл /etc/raidtab так, чтобы он правильно описывал конфигурацию RAID и разделы. Например, следующий конфигурационный файл определяет Windows LDM RAID уровня 0 (чередование) с двумя разделами (/dev/hdbl и /dev/hddl), с использованием 64-килобайтных блоков:

# cat /etc/гаіdtab raiddev /dev/mdO

raid-level 0

nr-raid-disks 2

nr-spare-disks 0

persistent-superblock 0 chunk-size 64k

device /dev/hdbl

raid-disk 0

device /dev/hddl

raid-disk 1

В соответствии с этим файлом, устройство /dev/mdO может монтироваться только для чтения, а для создания его образа можно использовать программу dd. Процесс использования Linux с Windows LDM более подробно описан в разделе «Объединение дисков». Аналогичный процесс используется для реализации программного тома RAID средствами Linux MD в системе снятия данных. Если скопировать файл raidtab из исходной системы, его содержимое может быть взято за основу для создания тома RAID в системе, в которой производится снятие данных.

Программы EnCase (Guidance Software) и ProDiscover (Technology Pathways) импортируют диски из томов RAID Windows и анализируют их так, как если бы они были отдельными томами. Такой метод анализа данных лучше работает в долгосрочной перспективе, потому что он предоставляет доступ к данным, которые могут быть скрыты на отдельных дисках и будут пропущены, если ограничиться снятием только одного тома RAID. Впрочем, работа с программами Linux и другими приложениями, не использующими официальную спецификацию, всегда сопряжена с определенным риском - программы могут содержать ошибки, приводящие к искажению исходной версии тома RAID.

Общие замечания по поводу анализа

Анализ системы с томами RAID может оказаться сложной задачей, поскольку такие системы встречаются не так часто и имеют разные реализации. Опробуя разные методы снятия данных, будьте очень осторожны и следите за тем, чтобы это не привело к модификации исходных дисков. Используйте аппаратные бло-кировщики записи или перемычки «только для чтения» на жестких дисках для предотвращения изменений. Также может быть полезно создать образы отдельных дисков перед созданием образа всего тома RAID. Образы отдельных дисков могут содержать скрытые данные, не входящие в том RAID. Случаи со скрытыми данными RAID пока не документированы, но теоретически такая возможность существует - все зависит от того, какая система является объектом анализа. Также нельзя исключать, что для создания тома RAID используется не весь диск. Некоторые системы RAID ограничиваются частью жесткого диска, чтобы диск было проще заменить в случае сбоя. Например, система может использовать только 40 Гбайт на каждом отдельном диске независимо от его фактической емкости (40 или 80 Гбайт). Неиспользуемая область может содержать данные от предыдущего образа, но в ней также могут находиться скрытые данные.

Итоги

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

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

Объединение дисков

В результате объединения (disk spanning) несколько отдельных дисков выглядят как один большой диск. Объединение дисков часто рассматривается вместе с RAID, поскольку оно поддерживается многими программными решениями RAID, однако объединение дисков не обеспечивает ни избыточности, ни повышенного быстродействия. Оно просто формирует носители информации большего объема, а некоторые версии позволяют добавлять новые диски и динамически увеличивать размер файловой системы.

В наше время объединение дисков поддерживается многими операционными системами. Далее будут рассмотрены программные решения в системах Microsoft Windows и Linux. Другие системы - такие, как Sun Solaris, IBM AIX и Apple OSX - также содержат собственные технологии объединения дисков, но здесь они не рассматриваются. Раздел начинается с описания основных концепций и определения общих понятий, используемых во всех реализациях. Затем мы перейдем к конкретным системам Windows и Linux. Как и в предыдущем разделе, посвященном RAID, не надейтесь найти здесь ответы на все вопросы - хотя бы потому, что не все ответы известны. Я всего лишь объясню, как работает объединение дисков; возможно, это поможет вам понять, почему не существует программы, которая решала бы все ваши задачи.

Общий обзор

Объединение дисков используется примерно по тем же причинам, по которым мы используем скоросшиватель вместо блокнота на пружинной спирали. Когда все страницы блокнота будут исписаны, приходится покупать новый блокнот и носить его вместе со старым. Если же кончатся страницы в скоросшивателе, вы можете добавить в него новые страницы и даже перенести накопившиеся заметки в папку большего размера. При использовании объединения дисковое пространство новых дисков добавляется в конец существующего пространства. На рис. 7.6 показан пример с двумя дисками, каждый из которых содержит 100 блоков данных. Блоки 0-99 хранятся на диске 1, а блоки 100-199 - на диске 2.

Рис. 7.6. Объединение дисков: 100 блоков хранятся на первом диске и еще 100 - на втором Программная поддержка объединения дисков формирует логический том. Логические тома состоят из нескольких физических дисков или разделов, последовательно объединяемых друг с другом. Во многих системах также существуют дисковые группы, то есть группы физических дисков; только диски, входящие в одну группу, объединяются для создания логического тома. На рис. 7.7 показано, как связаны между собой эти уровни абстракции. Система содержит три физических диска, входящих в одну дисковую группу. В результате объединения дисков формируются два логических тома.

Рис. 7.7. Компоненты и связи в системе с объединением дисков

Linux MD

В Linux существует два метода объединения дисков. Драйвер MD, уже упоминавшийся в связи с системами RAID, также способен выполнять простейшее объединение дисков, но существует и более совершенная система LVM (Logical Volume Manager). Обе системы входят в основные дистрибутивы Linux. В этом разделе будут описаны устройства MD. Мы начинаем с Linux, потому что драйверы Linux могут использоваться для анализа систем Windows.

Общие сведения

Драйвер MD использует обычные разделы DOS, группируя их для создания тома RAID или объединенного тома. Каждый диск может содержать несколько разделов и использоваться в некотором томе RAID или логическом томе. В этой модели не существует дисковых групп. Конфигурационный файл /etc/raidtab определяет порядок следования разделов; монтирование тома возможно лишь после задания его конфигурации в файле. Структура конфигурационного файла идентична той, что описывалась в предыдущем разделе для RAID, только параметру raid-level присваивается значение linear. Пример конфигурационного файла для логического тома с двумя разделами (/dev/hdbl и /dev/hddl):

# cat /etc/raidtab raiddev /dev/mdO

raid-level linear

nr-raid-disks 2

nr-spare-disks 0

persistent-superblock 0 chunk-size 4k

device /dev/hdbl

raid-disk 0

device /dev/hddl

raid-disk 1

Ядро читает конфигурационный файл и создает устройство /dev/mdO, которое может монтироваться и использоваться как отдельный том, но в действительности состоит из дискового пространства /dev/hdbl и /dev/hddl.

Если параметр persistent-superblock равен 0, то все данные конфигурации устройства содержатся в файле /etc/raidtab. Если он равен 1, то в конце каждого диска или раздела находятся конфигурационные данные, по которым механизм автоматической идентификации дисков Linux автоматически создает устройство MD. Для работы процесса автоматической идентификации в Linux соответствующий раздел DOS должен относиться к типу Oxfd. Чтобы узнать, было ли устройство создано при загрузке, просмотрите файл журнала /var/Log/messages. Процесс автоматической идентификации происходит при загрузке модуля ядра md.

Если диски или разделы содержат постоянный суперблок, в них создается 1024-байтовая структура, разделенная на секции. Первая секция содержит параметры объединенного диска или тома RAID - версии, количество дисков, время создания, идентификаторы. Вторая секция содержит общие сведения - последнее время обновления, счетчик, состояние тома, количество работающих и сбойных дисков. В остальных секциях хранится информация о каждом диске тома, включая основную и дополнительную версии устройства, роль устройства в томе, состояние диска. Как будет показано в секции анализа, типичная система Linux обновляет содержимое суперблока при загрузке, даже если том не монтируется. По содержимому суперблока ядро может узнать, что диски были отсоединены от системы и установлены в измененном порядке.

Снятие данных и анализ

При анализе данных на томах MD лучше всего снять содержимое тома как единого диска или раздела, а затем воспользоваться стандартными средствами анализа. Проще всего это сделать при наличии постоянного суперблока; в противном случае вам придется создать в системе снятия данных файл /etc/raidtab. Если потребуется создать этот файл, попробуйте получить доступ к каталогу /etc/ на исходном диске и возьмите его за основу.

После того как конфигурационный файл будет создан, устройство MD создается командой raidstart. Команда создает в каталоге /dev/ устройство с именем, указанным в файле. Клонирование тома осуществляется программой dd или ее аналогом. После снятия данных необходимо выполнить команду raidstop для завершения работы с устройством MD. При наличии постоянного суперблока следует помнить, что некоторые параметры обновляются при создании нового устройства командой raidstart. Заранее создайте резервные образы дисков; попробуйте использовать блокировщики записи АТА и SCSI, если они у вас имеются.

Если для каждого раздела DOS, входящего в том, поле раздела равно Oxfd, существует постоянный суперблок, а система настроена на автоматическую идентификацию устройств MD - устройство будет создано в процессе запуска. Как и при выполнении команды raidstart, в процессе создания изменяется время последнего обновления, счетчик и контрольная сумма в суперблоке. Изменения вносятся даже в том случае, если том MD не монтируется!

Если разместить диски в порядке, отличном от исходного, суперблок будет перезаписан. Это происходит даже без монтирования тома, поэтому примите меры по сокращению изменений на каждом диске. Кроме того, у меня возникали проблемы при загрузке, когда в системе, используемой для анализа, был установлен только один из двух дисков. Счетчик диска увеличивался, но при следующей загрузке с обоими дисками система Linux отказывалась создавать устройство MD из-за разных значений счетчиков.

Также оказалось, что при использовании дисков MD лучше обойтись без хранения файла raidtab. Это может быть очень опасно, потому что при отключении системы и установке новых дисков Linux попытается обрабатывать их как часть тома. Возможно, стоит внести изменения в сценарии отключения, чтобы они переименовывали файл raidtab - в этом случае файл не будет существовать при следующем включении питания.

Для снятия данных с томов MD можно использовать загрузочные компакт-диски Linux. Некоторые из них обнаруживают тома MD автоматически, другие этого не делают и требуют создать файл /etc/raidtab. Если систему можно загрузить с компакт-диска и создать устройство MD, проведите снятие данных обычным способом. В противном случае снимите данные с каждого диска и документируйте их местонахождение, чтобы свести к минимуму изменения дисков из-за их установки в неверном порядке. Мне так и не удалось воссоздать том MD по физическим образам исходных разделов и устройствам обратной связи. Это означает, что вам, возможно, придется восстановить образы на диск и извлечь данные с дисков в лаборатории.

Linux LVM

Второй механизм объединения дисков в Linux основан на использовании LVM. В этом разделе описывается архитектура LVM и методы снятия данных.

Общие сведения

Диспетчер логических томов (LVM) обладает более сложной архитектурой, чем MD. В нем используются дисковые группы, которые в терминологии LVM называются группами томов. Разделам DOS, используемым в LVM, назначается тип раздела 0х8е. Диски и разделы в группах томов делятся на физические экстенты - равные блоки, размер которых обычно составляет несколько мегабайт. Каждая система содержит одну или несколько групп томов, при этом каждая группа представлена подкаталогом в каталоге /dev/.

Логический том состоит из логических экстентов, размер которых совпадает с размером физических экстентов; между логическими и физическими экстентами существует однозначное соответствие. На рис. 7.8 показан логический том, созданный из трех наборов физических экстентов на двух физических дисках.

Логические тома создаются либо объединением физических экстентов, либо чередованием (с объединением последовательных логических экстентов на разных дисках). Скажем, на 2-гигабайтном томе первые 1,5 Гбайт могут размещаться на диске 1, а последние 500 Мбайт - на диске 2. С другой стороны, на томе с чередованием могут использоваться два диска объемом 1 Гбайт: первый мегабайт размещается на диске 1, второй - на диске 2, третий - снова на диске 1, и т. д. Логический том представляется файлом устройства в подкаталоге группы томов в /dev/.

Сведения о конфигурации логического тома хранятся как в локальной системе, так и на дисках. Локальная конфигурация хранится в файле /etc/lvmtab и ка талоге /ъХ.с/\.чт\.аЪА/. Конфигурационный файл имеет двоичный формат и обновляется утилитами ЬУМ, такими как удітроИ:, удБсап и удсИапде. Дисковая структура находится в начале диска и содержит информацию о диске, о группе томов, к которой он принадлежит, и о логических томах, входящих в группу. Ни одно из полей структуры не содержит временных штампов, поэтому структура не обновляется при создании логического тома, как это происходит с устройствами МБ.

Рис. 7.8. 1_\/М делит физические диски на физические экстенты, отображаемые на логические экстенты в логическом томе

Снятие данных и анализ

Анализ систем LVM открывает больше возможностей для автоматизации, чем для устройств MD. Дальнейшее описание базируется на моем опыте работы с текущими версиями LVM и было проверено у разработчиков LVM1. LVM содержит служебные программы vgexport и vgimport, которые должны использоваться при перемещении дисков между системами, но для снятия данных с дисков они не нужны. Программа vgexport удаляет локальные файлы конфигурации тома и записывает слово «-EXPORT» в имя группы томов на диске. Для проведения экспертизы при удалении дисков из анализируемой системы этот шаг не обязателен.

Чтобы провести анализ тома LVM, следует либо удалить диски из системы и разместить их в доверенной системе Linux, либо загрузить анализируемую систему с загрузочного компакт-диска Linux с поддержкой LVM. Как упоминалось при обсуждении LVM, безопаснее настроить систему так, чтобы она не выполняла автоматического монтирования и конфигурации логических томов. Выполните команду vgscan в системе, в которой производится анализ, для проведения поиска логических томов. Команда автоматически создает файл /etc/ Lvmtab и конфигурационные файлы в каталоге/etc/Lvmtab.d/. После создания конфигурационных файлов выполните команду vgchange -а у для активизации найденных томов. При работе с LVM местонахождение и конфигурация ведущих/ ведомых дисков несущественны. Содержимое активного тома копируется командой dd с устройства тома в /dev/. По моему опыту, выполнение команд vgscan и vgchange не приводит к изменению кодов MD5 дисков. Далее приводится последовательность команд при загрузке системы с использованием пакета Penguin Sleuth Kit (обратите внимание: Penguin Sleuth Kit не имеет отношения к аналитическому пакету The Sleuth Kit). Пакет Penguin Sleuth Kit доступен по адресу: http://www.linux-forensics.com.

# vgscan

vgscan -- reading all physical volumes (this may take a while...)

vgscan -- found inactive volume group ”vg_big2"

vgscan -- ”/etc/lvmtab” and "/etc/lvrntab.d" successfully created

vgscan -- WARNING: This program does not do a VGDA backup of your volume group

Учтите, что в будущих версиях поведение LVM может измениться, поэтому протестируйте все процедуры перед выполнением действий в реальной системе и создайте резервные копии дисков перед объединением томов.

Microsoft Windows LDM

Компания Microsoft впервые включила поддержку объединения дисков в Windows NT. В этом разделе описывается архитектура LDM и методы снятия данных.

Динамические диски

Диспетчер логических дисков (LDM) отвечает за управление логическими томами в Windows 2000 и ХР. LDM поддерживает простые тома (аналоги обычных разделов), объединение дисков, RAID уровня 0 (чередование), RAID уровня 1 (зеркальное копирование) и RAID уровня 5. Технологии RAID уже упоминались ранее в этой главе, а здесь они будут описаны более подробно.

К категории базовых относятся диски, описанные в главах 5 и 6. Базовые диски содержат таблицу разделов DOS или GPT, а каждый раздел является самостоятельным. Базовые диски не могут использоваться в LDM. Динамический диск содержит дополнительные структуры данных для создания разделов, пригодных для формирования логических томов.

Динамический диск содержит две важные области. Область разделов LDM занимает большую часть диска; именно в ней создаются динамические разделы. Последний мегабайт динамического диска выделяется под базу данных LDM. База данных содержит записи, описывающие организацию области разделов и правила создания логических томов.

В первом секторе любого динамического диска в системе IA32 находится таблица разделов DOS. Благодаря ей старые системы узнают о том, что диск используется. Таблица содержит всего одну запись, представляющую весь диск, с типом раздела 0x42. Область раздела LDM и база данных находятся в разделе DOS, как показано на рис. 7.9. Для просмотра таблицы разделов можно воспользоваться программой mmls из пакета The Sleuth Kit:

# mmls -t dos vdisk.dd DOS Partition Table

Units are in 512-byte sectors

Slot Start End Length Description

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

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

02: 00:00 0000000063 0120101939 0120101877 Win LVM / Secure FS(0x42)

В системах IA64 (Intel Itanium и т. д.) на динамических дисках создаются разделы GPT для области разделов и базы данных LDM. Для этих разделов предусмотрены специальные типы.

Рис. 7.9. Строение динамического диска в системе IA32: структуры данных LDM находятся внутри раздела DOS

Windows поддерживает только одну дисковую группу, в которую автоматически включаются все динамические диски. Область разделов динамического диска разбивается на динамические разделы, а динамические разделы одного или нескольких дисков группируются для формирования логических томов (рис. 7.10). Очень важно различать термины, используемые компанией Microsoft для динамических дисков и разделов DOS. В схеме разделов DOS Microsoft называет логическими томами разделы, создаваемые внутри расширенных разделов, тогда как в динамических дисках логическими томами называются все разделы, которые могут содержать файловую систему или другие данные.

Рис. 7.10. Логический том ЮМ формируется из динамических разделов, входящих в дисковую группу

База данных LDM

В базе данных LDM хранятся определения динамических разделов и правила создания логических томов. Компания Microsoft не опубликовала точного описания строения базы данных LDM, но Интернет-группы идентифицировали некоторые внутренние структуры данных (одна из групп, Linux NTFS, доступна по адресу: http://Linux-ntfs.sourceforge.net). Из опубликованных справочных руководств Microsoft [Solomon and Russinovich, 2000] известно, что база данных LDM состоит из четырех основных частей. Приватный заголовок сходен с загрузочным сектором файловой системы. Он описывает уникальные характеристики диска и логического тома. Эта структура содержит уникальный идентификатор диска (GUID) и имя дисковой группы. Windows содержит только одну дисковую группу, имя которой определяется именем компьютера. Далее следует оглавление, состоящее из 16 секторов. По данным Соломона и Руссиновича, оглавление «содержит информацию о строении базы данных», то есть о следующей части LDM.

Область базы данных содержит описания дисков, разделов, компонентов и томов. Для каждого динамического диска (как DOS, так и GPT) в базе данных создается запись диска. Записи разделов описывают структуру разделов на динамических дисках. Записи компонентов описывают процесс объединения разделов. Каждая запись раздела содержит ссылку на используемую ей запись компонента. Записи компонентов существуют для объединения, чередования и зеркального копирования. Наконец, записи томов описывают логические тома, то есть результат применения компонентов к разделам.

Рассмотрим пример с двумя динамическими дисками. Имеется логический том, первая часть которого занимает 15 Мбайт на диске 1, вторая - 10 Мбайт на диске 2, а последняя часть - 20 Мбайт на диске 1 (конечно, эти цифры гораздо меньше тех, которые используются в реальных ситуациях). Структура логического тома показана на рис. 7.10. Программа Microsoft dmdiag (http://www.microsoft.com/ windows2000/techinfo/reskit/tools/existing/dmdiag-o.asp) предназначена для вывода информации о записях в базе данных. Результат ее работы выглядит так:

Disk: Diski rid=0.1027 updated=0.1222

assoc: diskid=6a565b54-b83a-4ebb-95eb-842ede926e88

flags:

Disk: Disk2 rid=0.1063 updated=0.1112

assoc: diskid=533fe4ab-0409-4ea6-98b3-9648bbc3bdl2

flags:

Эти две записи относятся к двум физическим дискам. Диску 1 присвоен идентификатор 0.1027, а диску 2 - идентификатор 0.1063.

Group: hashDgl rid=0.1025 update=0.1028

id: dgid=d4f40362-7794-429a-a6ad-a6dfc0553cee

diskset: id=00000000-0000-0000-0000-000000000000

copies: nconfig=all nlog-all

minors: >= 0

Запись определяет группу дисков и показывает, что имя дисковой группы определяется именем компьютера (hash).

Subdisk: Diskl-01 гid=0.1109 updated=0.1112

info: disk=0.1027 offset-0 len=30720 hidden=0

assoc: piex=0.1107 (column=0 offset=0)

Subdisk: Diskl-02 rid-0.1121 updated=0.1122

info: disk=0.1027 offset=0 len=40960 hidden=0

assoc: piex=0.1107 (column=0 offset=51200)

Эти две записи являются записями разделов для физического диска с именем Diskl (ГОЮ. 1027). Для обоих записей параметр plex со значением 0.1107 определяет запись компонента, используемую для создания логического тома. Первая запись (идентификатор 0.1109) определяет 15-мегабайтный раздел со смещением сектора 0 и размером 30 720 секторов. Вторая запись (идентификатор 0.1121) определяет 20-мегабайтный раздел со смещением 30 720 и размером 40 960 секторов.

Subdisk: Disk2-01 rid=0.1111 updated=0.1112

info: disk=0.1063 offset=0 len=20480 hidden=0

assoc: piex=0.1107 (column=0 offset=30720)

Запись определяет раздел для динамического диска Disk2 (ГОЮ. 1063) с идентификатором 0.1111, смещением 0 секторов и размером 20 480 секторов. Связи между физическим диском и записями динамических разделов показаны на рис. 7.11. Направление стрелки означает, что запись динамического раздела содержит указатель на физический диск.

Plex: Volume-01 гid=0.1107 update=0.1124

type: 1ayout=CONCAT

state: state=ACTIVE

assoc: vol=0.1105

Рис. 7.11. Связи между физическим диском и записями динамических разделов в базе данных ЮМ

Рис. 7.12. Связи между записями базы данных ЮМ (указатели на другие объекты обозначены стрелками)

Приведенный фрагмент является записью компонента объединения дисков (СОМСАТ), описывающей способ создания логического тома посредством объединения динамических разделов. Мы видим идентификатор 0.1107, который встречался в каждой из записей разделов. Также видно, что он ассоциируется с идентификатором тома 0.1105, описание которого приводится далее.

Volume: Volumel rid=0.1105 update=0.1124 mountname=F:

info: len=92160 guid=e40794d0-6e3c-4788-af3d-ff49d2ce769d

type: parttype=7 usetype=gen

state: state=ACTIVE

policies: read=SELECT

flags: writeback

База данных завершается последним фрагментом, содержащим запись логического тома. В записи указана точка монтирования F:\ и длина 92 160 секторов. Тому присвоен идентификатор 0.1105 и имя Volumel. Связи между записями показаны на рис. 7.12. Учтите, что все диски группы содержат одинаковые записи базы данных.

Итоговая организация логического тома показана на рис. 7.13. Обратите внимание: последовательность разделов в логическом томе не соблюдается.

Рис. 7.13. Диск LDM с двумя физическими дисками, тремя динамическими разделами и одним логическим томом

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

Снятие данных и анализ

Анализ любого логического тома довольно сложен, особенно при программной реализации, а воссоздание тома в режиме «только для чтения» является отнюдь не тривиальной задачей. Как упоминалось ранее в разделе, посвященном RAID, анализ системы проще всего выполняется при снятии данных с логического тома и применении стандартных средств анализа. Тем не менее в Windows это не всегда возможно, потому что система пытается монтировать диски при загрузке. Снятие смонтированной файловой системы может привести к порче образа, а монтирование способно вызвать модификацию данных. Перемещение дисковых групп LDM между компьютерами также сопряжено с некоторым риском. В Windows в любой момент времени поддерживается только одна дисковая группа, а динамические диски добавляются в локальную группу, если она существует [Microsoft, 2003]. Следовательно, если динамические диски из исходной системы импортируются в систему анализа, использующую динамические диски, они будут включены в локальную группу дисков, а ОС запишет новые данные в базу данных LDM.

Ядро Linux включает поддержку объединения дисков LDM, хотя она и не всегда включается по умолчанию. Если в вашем дистрибутиве объединение дисков отключено, возможно, вам придется перекомпилировать ядро. Если ядро поддерживает LDM, Linux прочитает базу данных и создаст устройства для каждого динамического раздела каждого динамического диска. Например, если загрузить Linux с двумя дисками из предыдущего примера, в системе будут созданы устройства /dev/hdbl, /dev/hdb2 и /dev/hddl. Затем создается файл /etc/raidtab с описанием структуры, чтобы драйвер ядра MD мог создать одно устройство. Если /dev/ hdbl содержит первый раздел, /dev/hddl - второй, a /dev/hdb2 - третий, то файл raidtab выглядит так: raiddev /dev/mdO

raid-level linear

nr-raid-disks 3

nr-spare-disks 0

persistent-superblock 0 chunk-size 4k

device /dev/hdbl

raid-disk 0

device /dev/hddl

raid-disk 1

device /dev/hdbl

raid-disk 2

В случае «линейных» томов RAID размер фрагмента (chunk-size) задается произвольно, но параметр должен существовать. Программы EnCase (Guidance Software) и ProDiscover (Technology Pathways) умеют импортировать отдельные образы из логических томов Windows и объединять их.

Если используется только объединение дисков, вы можете вручную извлечь разделы и скомбинировать их из дисковых образов. Информацию о строении тома можно получить при помощи программы dmdiag.exe, но программа работает только в Windows и требует, чтобы диски были смонтированы. По этой причине мы воспользуемся другой программой из Linux. Группа Linux NTFS разработала программу Ldminfo (http://Linux-ntfs.sourceforge.net/status.html#ldmtools), которая анализирует записи базы данных LDM динамического диска Windows и выводит подробную информацию с ключом -dump. Программа работает с любыми неструктурированными устройствами или дисковыми образами массива дисков, потому что базы данных на всех дисках содержат одинаковые записи. Она выводит такую же подробную информацию, как и dmdiag.exe, но мы сосредоточимся на информации о структуре тома из предыдущего примера:

# ldminfo --dump diskl.dd

VOLUME DEFINITIONS:

Volume Size: 0x00016800 (45 MB)

Diski-01 VolumeOffset: 0x00000000 Offset: 0x00000000 Length: 0x00007800

Diskl-01 VolumeOffset: 0x00007800 Offset: 0x00000000 Length: 0x00005000

Di ski-02 VolumeOffset: 0x0000C800 Offset: 0x00007800 Length: 0x0000A000

Из результатов видно, что том содержит два диска и три раздела. Диск нетруд но воссоздать, потому что он использует объединение без разбиения данных. Ранее из результатов выполнения mmls для образа диска мы видели, что область разделов начинается в секторе 63. Следовательно, к смещениям в выходных данных

Ldminfo необходимо прибавлять 63, потому что смещения задаются относительно начала области разделов. Чтобы получить данные первого раздела, мы извлекаем 30 720 секторов (0x7800) из области разделов первого диска:

# dd if=diski.dd skip=63 count=30720 > span.dd

Вторая часть дискового массива является первой частью второго диска. Мы присоединим ее содержимое к данным первого диска. Таким образом, следует извлечь первые 20 480 секторов (0x5000) из области разделов второго диска:

# dd if=disk2.dd skip=63 count=20480 » span.dd

Последняя часть массива находится в области разделов первого диска. Она также будет присоединена к данным, извлеченным со второго диска. Данные начинаются с сектора 30 720 (0x7800) области разделов; следовательно, нам нужен сектор 30 783 по отношению к началу диска, а его длина составляет 40 960 секторов.

# dd if=diski.dd skip=30783 count=40960 » span.dd

Полученный образ span.dd обрабатывается как обычный образ файловой системы. Если доступна поддержка LDM уровня ядра, я рекомендую сначала опробовать этот путь, прежде чем браться за ручную обработку. Также учтите, что при разработке многих вспомогательных драйверов сторонних разработчиков и утилит LDM подробные спецификации Microsoft отсутствовали, поэтому правильность их работы не гарантирована.

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

• Lewis, A.J. «The LVM HOWTO». The Linux Documentation Project, 2002-2004. http://tldp.org/H0WT0/LVM-H0WT0/.

• Microsoft, «Description of Disk Groups in Windows Disk Management». Microsoft Knowledge Base Article 222189, November 21, 2003. http://support.microsoft.com/ kb/222189.

• Microsoft. Microsoft Windows XP Professional Resource Kit Documentation, 2004. http://www.microsoft.com/resources/documentation/Windows/XP/aU/reskit/en-us/ prork_overview.asp.

• Ostergaard, Jakob. The Software-RAID HOWTO». The Linux Documentation Project, June 3, 2004. http://www.tldp.org/H0WT0/Software-RAID-H0WT0.html.

• Patterson, David A., Garth Gibson and Randy H.Katz. «А Case for Redundant Arrays of Inexpensive Disks (RAID)». ACMSIGMOD International Conference on Management of Data, June 1988.

• PC Guide. «Redundant Arrays of Inexpensive Disks». April 17,2001. http://www.pc-guide.com/ref/hdd/perf/raid/index.htm.

• Solomon, David, and Mark Russinovich. Inside Microsoft Windows 2000. 3rd ed. Redmond: Microsoft Press, 2000.

• Sourceforge.net. «LDM Documentation». Linux NTFS Project, 2002. http://Linux-ntfs. sourceforge.net/ldm/index.html.

ЧАСТЬ III

База данных ldm | Криминалистический анализ файловых систем | Анализ файловых систем


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



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

  • Февраль
    2020
  • Пн
  • Вт
  • Ср
  • Чт
  • Пт
  • Сб
  • Вс