Файловые системы и хранение файлов

Этот урок показывает, как файловые системы хранят данные и почему это знание — фундамент дисковой форензики.

Файловая система — способ организации данных на носителе: она отдельно хранит метаданные о файлах (имя, размер, время, расположение) и сами данные в блоках.

Чтобы понимать, что значит «удалённый файл» или «slack space», нужно знать, как файловая система вообще хранит файлы. Ключевая идея: метаданные и содержимое разделены. Есть структура, описывающая файл (где он, когда создан, кому принадлежит), и есть блоки с самими данными. Без этого фундамента дисковая форензика превращается в гадание: именно устройство FS объясняет, почему удалённое восстановимо, откуда берётся slack space и как по временам построить хронологию событий.

Основные понятия

  • Блок/кластер — минимальная единица выделения места (например, 4 КБ). Файл занимает целое число блоков.
  • Метаданные — в ext4 это inode (хранит размер, времена, права, указатели на блоки), в NTFS — запись в MFT (Master File Table).
  • Каталог — таблица, связывающая имена файлов с их метаданными.
  • Журнал — лог изменений для восстановления после сбоя (ext4 journal, NTFS $LogFile).

Временные метки — сердце таймлайна

Отдельного внимания заслуживают временные метки. В большинстве файловых систем у файла есть несколько времён: создания, последнего изменения содержимого, последнего изменения метаданных и последнего доступа. В мире форензики их часто называют набором MAC(b)-времён (Modified, Accessed, Changed/Created). По ним строят таймлайн — хронологию того, что и когда происходило с файлами: когда вредонос попал на диск, когда его запускали, когда трогали документы. NTFS хранит эти времена в атрибутах $STANDARD_INFORMATION и $FILE_NAME, и сравнение этих двух наборов помогает выявлять подделку времён (timestomping), когда злоумышленник пытается «состарить» свои файлы. Понимание, какое время от какого действия меняется, — рабочий инструмент аналитика.

Популярные файловые системы

FSГдеМетаданные
NTFSWindowsMFT
ext4Linuxinode
APFSmacOSконтейнеры
FAT32/exFATфлешкиFAT-таблица

Как работает под капотом

Когда вы создаёте файл, система: выделяет свободные блоки, записывает в них данные, заполняет метаданные (inode/MFT) и добавляет запись в каталог. Чтение идёт в обратном порядке: по имени находят метаданные, по ним — список блоков, из блоков собирают содержимое.

Каталог:   "report.docx" -> inode #1287
Inode 1287: размер=9 КБ, время, права,
            блоки: [502, 503, 871]
Блоки:     [502][503][871]  <- сами данные файла

Файл = метаданные (где/какой) + блоки (что именно)

Это разделение объясняет ключевые криминалистические явления: при удалении часто стирается только связь «имя → метаданные» или помечается блок свободным, а сами данные остаются (см. следующий урок). Времена в метаданных (создание, изменение, доступ) дают основу для таймлайна.

Обратите внимание на пример: блоки 502, 503 и 871 — не подряд. Файлы часто фрагментированы: их содержимое разбросано по несмежным блокам, потому что в момент записи рядом не нашлось достаточно свободного места. Для обычной работы это незаметно — система по списку из метаданных соберёт куски в правильном порядке. Но для криминалиста фрагментация важна: она усложняет восстановление файла, если метаданные (а значит, и список блоков) утеряны. Без «карты» из inode/MFT придётся догадываться, какие куски принадлежат одному файлу, — об этом подробнее в уроке про carving.

Журнал и почему он полезен криминалисту

Журналируемые файловые системы (ext4 journal, NTFS $LogFile, $UsnJrnl) ведутся, чтобы пережить внезапное отключение питания: прежде чем менять структуры, система записывает в журнал намерение, и при сбое может «доиграть» или откатить незавершённую операцию. Для аналитика этот же журнал — кладезь истории: в нём видны недавние создания, переименования и удаления файлов, иногда с временами, которых уже нет в самих метаданных. NTFS-журнал изменений ($UsnJrnl) часто позволяет восстановить, какие файлы появлялись и исчезали на томе, даже если самих файлов уже нет. Поэтому журналы изучают отдельно — как ещё один независимый источник для таймлайна, который труднее «подчистить» злоумышленнику.

Slack space — заглянем вперёд

Файл размером 5 КБ при блоке 4 КБ займёт два блока (8 КБ). Последние 3 КБ второго блока — это slack space: место, не занятое текущим файлом, где могут оставаться обрывки прежних данных. Это потенциальный источник улик.

Slack space — прямое следствие того, что место выделяется целыми блоками. Файловой системе нет смысла обнулять «хвост» блока: с её точки зрения он просто не используется. Но физически там лежат байты, которые попали туда раньше — от предыдущего файла, когда-то занимавшего этот блок. Поэтому в slack нередко находят обрывки прежде удалённых документов, фрагменты переписки или конфигураций. Криминалистические инструменты умеют извлекать slack отдельно, и это один из тех артефактов, которые обычный пользователь не видит в принципе.

Почему знание FS делает аналитика сильнее

Можно возразить: зачем погружаться в устройство inode и MFT, если современные инструменты восстанавливают файлы автоматически? Затем, что инструмент — это рычаг, а не замена понимания. Когда автоматическое восстановление дало странный результат, фрагментированный файл собрался битым, а времена выглядят подозрительно ровными, только понимание механики FS позволяет объяснить, что произошло, и не сделать ложного вывода. Кроме того, разные файловые системы ведут себя по-разному: ext4 при удалении часто обнуляет указатели на блоки в inode (что усложняет undelete и поднимает роль carving), тогда как старые FAT и в ряде случаев NTFS оставляют больше следов для прямого восстановления. Аналитик, который знает эти различия, заранее понимает, чего ожидать на конкретном носителе, и выбирает верную стратегию вместо того, чтобы вслепую доверять кнопке «восстановить».

Частые ошибки

  • Думать, что «файл = один кусок». Файл может быть фрагментирован по разным блокам.
  • Игнорировать метаданные. Времена и права из inode/MFT — ценнейший материал для таймлайна.
  • Не учитывать разницу FS. NTFS, ext4 и APFS хранят и удаляют данные по-разному.
  • Слепо верить временным меткам. Их можно подделать (timestomping); сопоставляйте разные источники времени.

Итоги

  • Файловая система разделяет метаданные (inode/MFT) и данные в блоках.
  • NTFS — MFT, ext4 — inode, FAT — FAT-таблица; устройство влияет на анализ.
  • Разделение метаданных и данных объясняет удаление, slack space и таймлайн; временные метки — основа хронологии.
Проверьте себя
1. Что хранит inode в ext4 (или запись MFT в NTFS)?
AТолько имя файла
BМетаданные: размер, времена, права и указатели на блоки
CСжатую копию файла
DПароль пользователя
2. Что такое slack space?
AЗашифрованная область диска
BНеиспользуемый остаток последнего блока файла, где могут быть прежние данные
CЖурнал файловой системы
DТаблица каталогов
3. Почему разделение метаданных и данных важно для криминалиста?
AОно ускоряет диск
BОно объясняет удаление, slack space и даёт времена для таймлайна
CОно шифрует файлы
DОно не имеет значения