Обзор методов обнаружения точек фрагментации и идентификации для восстановления данных

Обзор методов обнаружения точек фрагментации и идентификации для восстановления данных

Алчинова Р.В., НИУ Высшая школа экономики, МИЭМ ralchinova@bk.ru

Аннотация

В данной статье проведён выбор методов обнаружения точек фрагментации восстанавливаемого файла для использования в универсальном программном продукте для восстановления сильно фрагментированных файлов формата JPEG.

1 Введение

Необходимость в создании средства для восстановления сильно фрагментированных файлов формата JPEG возникает при извлечении данных из носителей большого объема в случае отсутствия какой-либо информации о расположении данных на носителе. Формат графических данных JPEG является криминалистически важным и одним из распространённых форматов для извлечения данных, согласно спецификации NIST, и по оценкам предыдущих исследований в среднем имеет высокий уровень фрагментации. На долю формата JPEG приходится до 80% изображений, представленных в мультимедийных базах данных. Необходимость в данной программе возникает при обработке большого числа фрагментированных (особенно сильно фрагментированных) файлов формата JPEG, так как время работы и результаты других аналогичных программ могут оказаться неудовлетворительными. В силу высокой популярности формата графических файлов JPEG и его внутренних особенностей для решения задачи восстановления файлов в сложных случаях представляется оправданной разработка отдельного решения, применимого именно для этого формата.

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

2 Обзор существующих методов идентификации для восстановления данных

В современных файловых системах явление фрагментации вполне естественно [Garfinkel, 2007]. Файловые системы автоматически распределяют файлы по носителям, а поскольку размеры файлов могут меняться, в связи с этим запись файлов часто производится не в последовательные кластеры на носителях. Также частой причиной фрагментации является то, что при записи файла на диск, он может изначально не поместиться в отведенное ему место, тогда система разделит его на части.

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

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

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

Существующие способы восстановления фрагментированных файлов демонстрируют в сложных ситуациях следующие недостатки:

- Неприемлемое время работы;

- Многие восстановленные файла нечитаемые или восстановлены частично;

- Добавляются излишние данные;

Основные виды подходов классификации фрагментов файлов на различные файловые типы:

• Сигнатурные подходы.

• Статистические подходы.

• Подходы, основанные на машинном обучении.

• Подходы на основе контекста.

Сигнатурные подходы используют последовательности байтов для идентификации неизвестных фрагментов файлов путём сопоставления типичных и хорошо известных последовательностей байтов. Распространённой областью применения в рамках компьютерной криминалистики является определение заголовка и завершающего фрагмента при помощи файловых сигнатур (например, таблицы файловых сигнатур [Kessler, 2015]), которые часто называют «магическими числами».

Статистические подходы используют методы количественного анализа для идентификации фрагментов указанных типов файлов. Статистические свойства, такие как среднее значение, дисперсия, распределение частот байтов (Byte Frequency Distribution (BFD)) или скорость изменения (Rate of Change, RoC) определяются из фрагментов, содержащихся в эталонных наборах данных, чтобы получить модель для каждого типа данных.

Задача подходов, основанных на машинном обучении, заключается в преобразовании данных в информацию после изучения набора приведённых данных. Различают подходы обучения с учителем (если обучающий набор состоит из маркированных данных) и обучения без учителя (если образцы и структуры получены из немаркированных данных).

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

3 Обзор методов обнаружения начальных точек фрагментации

Начальный фрагмент файла, как правило, называется базовым фрагментом. Заголовок файла входит в базовый фрагмент, и весь процесс сборки заключается в нахождении начального фрагмента кластера, который следует за базовым. Далее используется определённый метод для нахождения конечной точки фрагмента - последнего кластера фрагмента [Memon and Pal, 2009]. Затем следующий кластер проверяется на предмет того, следует ли он за проверенным фрагментом в восстанавливаемом файле. Если это верно, то кластер присоединяется к проверенному фрагменту, и берется на проверку следующий кластер. Этот процесс повторяется, пока не будут найдены все кластеры файла. Если фрагментации нет, то считается, что файл уже восстановлен. Если же фрагментация обнаружена, то нужно определить точно, после какого кластера она произошла, для дальнейшего объединения всех кластеров файла. После определения точки фрагментации производится поиск продолжения файла среди всех кластеров носителя.

Обнаружение точки фрагментации является основной задачей этапа сборки восстанавливаемого файла. Данная задача может быть сформулирована так: пусть дан ряд кластеров от заголовка bh до сигнатуры завершения файла bf (h<f), где bt - номер кластера от начала цифрового носителя. Для данного ряда кластеров нужно определить, произошла ли фрагмeнтация. Если нет, то файл уже считается восстановленным. Если же произошла фрагментация, то необходимо точно определить, после какого кластера Ьх она произошла для того, чтобы мы смогли объединить кластеры с bh по Ьх в фрагмент F и продолжить поиск следующего кластера, который должен следовать за Ьх, среди множества имеющихся кластеров. Во время поиска следующего кластера, проверяется новый кластер Ь2, он располагается после Ьх и определяется, произошла ли фрагментация в Ь2. Если фрагментация произошла, то Ь2 отбрасывается и продолжается проверка других кластеров до тех пор, пока не найдётся такой кластер Ьп, который не приводит к фрагментации. Тогда Ьп присоединяется к фрагменту F, а поиск продолжается до тех пор, пока не будет найдена сигнатура завершения файла. На практике, не всегда можно быть уверенным, произошла ли фрагментация в bz. В таком случае всем кластерам-кандидатам присваиваются веса и используются другие алгоритмы, чтобы определить, какой кластер должен располагаться следующим. В таком случае необходим очень точный и эффективный алгоритм обнаружения точки фрагментации для практической программы извлечения данных, особенно в случае большого общего количества кластеров.

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

принадлежат к файлу. Следующие тесты используют эту информацию, чтобы определить точку фрагментации.

Для определения начальных точек можно выделить 4 вида тестов:

- синтаксические;

- статические;

- базовая последовательная проверка;

- обнаружение точек фрагмента последовательного анализа.

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

- Ключевые слова и подписи, которые указывают на типы файлов (если обнаруживается, что блок принадлежит некоторому другому типу или файлу, то найдена точка фрагментации). Например, если в процессе восстановления файла JPEG обнаруживается блок, который является начальным для заголовка файла HTML и имеется несколько других тегов HTML, то точка фрагментации считается обнаруженной. Кроме того, некоторые ключевые слова не допускаются в процессе восстановления (например, недействительные маркеры формата JPEG), и они могут быть использованы для обнаружения точки фрагментации.

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

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

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

* J, Я) Ji j ? t Ji J.

_1р4»д 1 b J,) содержит 2 фрагмента (блоки 1-4 и В о

•If Jl J» -h Ji Ji Ji Ji

Блоки 5 7 содержат 2 ой Jpei С g <J3>

Н Ji H J* » Ji Ji Ji Ji

Блохи 6-7 содержат второй ipeg, а блок 5 неизвестен,

Рис.1. Примеры разных типов кластеров (блоков) в промежутке между двумя фрагментами

файла JPEG J1.

Статистические тесты пытаются сравнить статистику каждого блока с моделью для каждого типа файлов, а затем классифицировать блок [Pal et al. 2003]. Часто примеры статистических тестов включают в себя энтропию каждого блока и метод OSCAR [Memon and Shanmugasundaram, 2003]. Метод OSCAR основан на создании моделей, среднего и стандартного отклонения распределения частот байтов различных типов файлов, называемых центроидами. Блок сравнивается со всеми моделями и определяется, какому типу файла он вероятно соответствует. Данные тесты имеют такие же проблемы, как и синтаксические тесты: они не в состоянии обнаружить фактическую точку фрагментации, но, кроме того, блоки могут быть ложно идентифицированы как принадлежащие файлу другого типа.

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

блоков данных, что приведет к неточному восстановлению файла. Такая ситуация является довольно распространенной. На Рисунке 2 показаны изображения с DFRWS 2007, которые были декодированы и восстановлены неправильно. Точки фрагментации определены ошибочно, потому что несколько блоков за пределами правильной точки фрагментации будут успешно проверяться валидатором.

Рис. 2. Изображения из тестового набора DFRWS 2007, неправильно восстановленные, но корректно

проверенные валидатором.

Принимая во внимание недостатки вышеуказанных методов, Pal et al. модифицировали алгоритм PUP (Parallel Unique Path) [Pal et al, 2008] для использования статистического последовательного анализа. Идея метода состоит в том, что для каждого кластера, добавленного к пути, существует высокая вероятность того, что последующие кластеры также принадлежат к пути. Используется последовательный выбор гипотез для определения, должны ли быть последовательные кластеры объединены вместе, основываясь не только на структуре типа файла, но и на содержании отдельных файлов. Этот модифицированный алгоритм сборки называется параллельным поиском пути с использованием статистического последовательного анализа обнаружения точки фрагментации (sequential hypothesis-parallel unique path (SHT-PUP)).

SHT-PUP является модификацией ранее разработанного алгоритма PUP. Теперь опишем алгоритм сборки более подробно.

Допустим, у нас есть k файлов для восстановления, тогда k файловых заголовков (bhl, bh2,...,bhk) хранятся в качестве начальных кластеров в путях реконструкции Pi для каждого из k файлов. Набор S= (bsl, bs2,...,bsk) текущих кластеров сохраняется для обработки, где bsi -текущий кластер для i-ого файла. Первоначально, все k начальных кластеров заголовков хранятся в качестве текущих кластеров для каждого файла, т.е. bsi=bhi. Наилучшее «жадное» соответствие для каждого из k начальных кластеров находится и хранится в наборе Т= (btl, bt2,...,btk), где кластер bti представляется наиболее подходящим для кластера bsi. Из набора лучших соответствий T выбирает кластер с лучшей метрикой соответствия.

Предполагая, что наиболее подходящий кластер bti, предпринимаются следующие шаги:

а) Добавляется bti в путь реконструкции i-ого файла, т.е. Pi=PiHbti

б) Заменяется текущий кластер в наборе S для i-ого файла, т.е. bsi=bti

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

г) Заменяется текущий кластер в множестве S для i-ого файла, т.е. bsi=bfi.

д) Вычисляется новый набор лучших соответствий T для S.

е) Снова ищется лучший кластер bti в наборе T.

ж) Повторяется пункт а), пока все файлы не будут восстановлены.

Усовершенствование алгоритма PUP состоит в шаге в) вышеизложенного алгоритма.

4 Заключение

В данной статье рассмотрены существующие методы идентификации кластеров файлов, их недостатки, которые препятствуют использованию этих алгоритмов для восстановления сильно фрагментированных файлов, а также предложены методы идентификации кластеров для дальнейшего использования в рамках создания универсального программного продукта по восстановлению данных сильно фрагментированных файлов. Также рассмотрены существующие методы обнаружения начальных точек фрагментации, сформулированы их недостатки, которые препятствуют использованию этих алгоритмов для корректной сборки файлов. Для дальнейшего применения в программной реализации автором выделен алгоритм Parallel Unique Path (PUP), который превосходит остальные по эффективности сборки файлов. При дальнейшей разработке возможных методов восстановления сильно фрагментированных файлов именно этот алгоритм

будет взят за основу модуля сборки файлов из заранее идентифицированных фрагментов для

построения универсального средства восстановления данных.

Список литературы

[Garfinkel, 2007] Garfinkel S.L. 2007 Carving contiguou and fragmented files with fast object validation. Digital Forensics Research Workshop (DFRWS).

[Kessler, 2015] Kessler G. File signature table 2014. URL: http://www.garykessler.net/library/file_sigs.html (дата обращения: 27 января.2015).

[Memon and Pal, 2009] Memon N, Pal A. 2009. The Evolution of File Carving, Vol. 26.

[Memon and Shanmugasundaram K.] Memon N., Shanmugasundaram K.. 2003. Automatic reassembly of document fragments via context based statistical models. Proceedings of the 19th Annual Computer Security Applications Conference. Las Vegas.

[Pal et al., 2008] Pal A., Sencar H., and Memon N. 2008. Detecting File Fragmentation Point Using Sequential Hypothesis Testing. DFRWS.