Файловые системы и хранение файлов
Этот урок показывает, как файловые системы хранят данные и почему это знание — фундамент дисковой форензики.
Файловая система — способ организации данных на носителе: она отдельно хранит метаданные о файлах (имя, размер, время, расположение) и сами данные в блоках.
Чтобы понимать, что значит «удалённый файл» или «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 | Где | Метаданные |
| NTFS | Windows | MFT |
| ext4 | Linux | inode |
| APFS | macOS | контейнеры |
| 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 и таймлайн; временные метки — основа хронологии.