В данной статье будут рассмотрены особенности баз данных эскизов в Windows Vista и в среде GNOME (Linux) при работе с зашифрованными файловыми системами.
Введение
Эскизы (англ. thumbnails) — уменьшенные изображения, дающие приблизительное представление об их оригиналах.
В Windows ME/2000/XP/2003 эскизы хранились в файлах Thumbs.db, которые находились в директориях с графическими файлами; файлы Thumbs.db представляют собой структурированные OLE-контейнеры[1]. Начиная с Windows Vista эскизы хранятся централизованно для каждого пользователя, при этом формат контейнеров претерпел значительные изменения.
Аналогичная централизованная система хранения эскизов присутствует во множестве окружений рабочего стола для Unix-like систем (например, GNOME и KDE).
В данной статье будут рассмотрены особенности баз данных эскизов в Windows Vista и в среде GNOME (Linux) при работе с зашифрованными файловыми системами.
Базы данных эскизов в Windows Vista
Отображение эскизов в Windows Explorer
Структура
В Windows Vista база данных эскизов хранится в следующей директории: \Users\<имя пользователя>\AppData\Local\Microsoft\Windows\Explorer
Директория содержит следующие файлы:
thumbcache_idx.db (индекс базы данных)
thumbcache_NN.db, где «NN» обозначает максимальный размер (в пикселях) большей стороны содержащихся в файле эскизов (например, thumbcache_96.db)
thumbcache_sr.db
Файл «thumbcache_idx.db» является индексом всей базы данных — в нем хранится информация о соответствии эскизов в файлах «thumbcache_NN.db» с уникальными идентификаторами эскизов, а также время модификации исходных файлов[2]. Сигнатура заголовка: строка «IMMM».
Файлы «thumbcache_NN.db» содержат в себе эскизы и начинаются со строки «CMMM». Эскизы хранятся в различных форматах, например, BMP и PNG, в «пачках» (chunks) данных с целью исключения фрагментации. Стоит отметить, что в базе данных эскизов отсутствует явная информация о путях к файлам, которым соответствует тот или иной эскиз, вместо пути используется специальный идентификатор (8 байт), который описывает исходный файл в системе. Данный идентификатор называется «Thumbnail Cache ID» (иногда «Thumbnail Filename», «File Reference», в данной работе будет использоваться термин «имя файла эскиза»); описание механизма генерации данного идентификатора в публичном доступе отсутствует.
Файл |
Формат эскизов |
Содержимое эскизов |
thumbcache_32.db |
BMP |
Эскизы файлов и директорий |
thumbcache_96.db |
BMP |
Эскизы файлов и директорий |
thumbcache_256.db |
JPG, PNG |
Эскизы файлов (JPG) и директорий (PNG) |
thumbcache_1024.db |
JPG |
Эскизы файлов |
Для определения исходного графического файла можно использовать имя файла эксиза (предварительно преобразовав его из Unicode и представив в виде последовательности HEX), которое можно найти в базе данных Windows Search Indexer (файл Windows.edb, который, как правило, находится в директории \ProgramData\Microsoft\Search\Data\Applications\Windows); стоит отметить, что данный метод позволяет найти исходные графические файлы только в проиндексированных директориях.
Имя файла эскиза можно найти в файлах «thumbcache_NN.db» на некотором смещении назад от начала графических данных. Для автоматизации процесса можно использовать специализированные продукты, которые будут описаны ниже.
Имя файла эскиза перед заголовком JPEG
Особенности
При копировании директории с базой данных эскизов на работающей системе средствами ОС необходимо учитывать то, что в некоторых случаях Windows может очистить содержимое базы данных до окончания процесса копирования. Если директория с базой данных эскизов защищена при помощи EFS, то ее содержимое будет очищено при первом же копировании!
В механизме генерации эскизов в Windows Vista были обнаружены следующие особенности:
1. Эскизы генерируются вне зависимости от того на каком носителе находится файл (на локальном или на удаленном, на жестком диске или на CD и т.п.);
2. Существующие эскизы не удаляются при удалении исходных файлов;
3. Для файлов, зашифрованных при помощи EFS, эскизы не сохраняются;
3а. Если директория с базой данных эскизов зашифрована при помощи EFS, то эскизы сохраняются и для зашифрованных файлов;
4. Существующие эскизы не удаляются, если файлы шифруются при помощи EFS.
Подобные особенности приводят к следующему:
1. Возможность определения того, какие графические данные хранились на подключенных сменных носителях;
2. Возможность просмотра эскизов графических файлов на некоторых зашифрованных разделах и контейнерах;
3. Возможность определения так называемых «скрытых контейнеров».
Проведенные тесты показали, что следующие продукты позволяют Windows создавать эскизы графических файлов, расположенных на зашифрованных файловых системах (сам эскиз при этом хранится на незашифрованном системном разделе):
- TrueCrypt 6.1a (был протестирован режим создания контейнеров в виде файлов, тесты были проведены как с обычными, так и со скрытыми контейнерами)
- BestCrypt v. 8 (был протестирован режим создания контейнеров в виде файлов, тесты были проведены как с обычными, так и со скрытыми контейнерами)
- PGP Desktop 9.9 (был протестирован режим создания контейнеров в виде файлов)
Методика проведения тестов описана ниже.
Извлечение эскизов
Для извлечения эскизов из базы данных можно использовать как специализированные продукты (например, DM Thumbs — www.dmthumbs.com или FTK — www.accessdata.com), так и программное обеспечение, предназначенное для извлечения файлов по их внутренней структуре (этот процесс больше известен как «file carving»). Примеры таких программ: foremost (http://foremost.sf.net/) и hachoir-subfile (часть проекта Hachoir; http://hachoir.org/).
Программное обеспечение для извлечения файлов по их внутренней структуре широко используется в компьютерной криминалистике для поиска данных на поврежденных и отформатированных носителях, а также для восстановления удаленных файлов с некоторых «экзотических» файловых систем (например, XFS). Наиболее распространенный принцип работы подобных программ — поиск заголовка файла (англ. «header») определенного формата (например, JPEG) с последующим копированием всех данных до достижения сигнатуры конца файла (англ. «footer»). К сожалению, данный способ имеет определенные недостатки, например, невозможность восстановления фрагментированных файлов. Однако, существующего функционала вполне достаточно для извлечения эскизов из файлов базы данных.[3]
Базы данных эскизов в GNOME
Структура
В среде GNOME эскизы графических файлов хранятся в домашней директории пользователя (~/.thumbnails/normal, где «~» обозначает домашнюю директорию текущего пользователя, например, /home/pupkin). Каждый эскиз представляет собой графический файл формата PNG, в метаданные которого включена информация служебного характера (путь к исходному изображению, размеры исходного изображения и т.п.).
Особенности
Эскизы генерируются вне зависимости от точки монтирования, что приводит к сохранению эскизов с примонтированных зашифрованных файловых систем и сменных носителей. С другой стороны, эскизы удаляются при удалении исходных файлов средствами GNOME.
Пример эскиза, созданного для графического файла на примонтированном контейнере TrueCrypt (метаданные были извлечены при помощи программы hachoir-metadata, которая является частью проекта Hachoir; http://hachoir.org/):
$ hachoir-metadata ~/.thumbnails/normal/0d97afdc637ac86d75d13e72172dc77c.png
Metadata:
- Image width: 128 pixels
- Image height: 122 pixels
- Bits/pixel: 24
- Pixel format: RGB
- Compression rate: 1.6x
- Compression: deflate
- Producer: GNOME::ThumbnailFactory
- Comment: Thumb::Image::Width=779
- Comment: Thumb::Image::Height=744
- Comment: Thumb::URI=file:///media/truecrypt1/123.jpg
- Comment: Thumb::MTime=1216153400
- MIME type: image/png
- Endian: Big endian
Пример эскиза, созданного для графического файла на CD:
$ hachoir-metadata ~/.thumbnails/normal/f34c0ff3299e0a0b87a4a9a3a4d994ff.png
Metadata:
- Image width: 128 pixels
- Image height: 96 pixels
- Bits/pixel: 24
- Pixel format: RGB
- Compression rate: 1.5x
- Compression: deflate
- Producer: GNOME::ThumbnailFactory
- Comment: Thumb::Image::Width=3264
- Comment: Thumb::Image::Height=2448
- Comment: Thumb::URI=file:///media/%D0%BE%D0%BA%D1%82%2025%202006/P1010043.JPG
- Comment: Thumb::MTime=1161800029
- MIME type: image/png
- Endian: Big endian
Процесс извлечения эскизов, сохраненных в Windows Vista
Описанная ниже методика извлечения эскизов была использована при тестировании различных криптографических продуктов, предназначенных для защиты данных на устройствах хранения информации (жесткие диски, CD и т.п.).
1. В систему был скопирован заранее созданный контейнер, в котором содержатся графические данные. Скопированный контейнер был подключен.
2. Подключенный контейнер (в виде локального диска) был открыт в Windows Explorer, который был настроен на отображение эскизов (по-умолчанию).
Содержимое контейнера (на фотографии — лунный модуль СССР)
3. Был подключен скрытый контейнер.
4. Подключенный скрытый контейнер был открыт в Windows Explorer.
Содержимое скрытого контейнера
5. Содержимое директории с базой данных эскизов было скопировано на переносной носитель и подключено к компьютеру с ОС GNU/Linux (Helix).
6. При помощи утилиты scalpel были извлечены все графические данные из базы данных с эскизами.
Извлеченные эскизы
7. Сопоставление эскизов с исходными файлами.
Отображение эскизов в FTK 1.81 (интересующие имена файлов эскизов подчеркнуты)
Для нахождения исходного файла для эскиза с именем «7ab75dd2c38546c4.jpg» был произведен поиск по базе данных «Windows.edb» шестнадцатиричного значения 7a b7 5d d2 c3 85 46 c4. Результат поиска подчеркнут на нижнем рисунке красным цветом; путь к исходному файлу выделен.
Результат поиска в HEX редакторе
Поиск через Windows PowerShell (7ab75dd2c38546c416 = 884263955317006509210)
Исходный файл для эскиза с именем «a6a09993edfc2001.jpg» найден не был, т.к. директория с этим файлом не индексируется.
Дальнейшие направления исследований
- Исследование механизма генерации эскизов в следующих версиях Windows;
- Изучение проблемы автоматического сопоставления графических файлов и их эскизов.
Ссылки
Автор: Суханов Максим
ITDefence
Никаких овечек — только отборные научные факты