
Первый дисковый образ на CTF я открыл в hex-редакторе — и три часа вручную искал магические байты 89 50 4E 47 среди гигабайта нулей и мусора. Флаг нашёл случайно, команда финишировала предпоследней в Forensics. После того турнира я методично разобрался с Autopsy и TestDisk, и на следующем CTF аналогичное задание ушло за 12 минут. Разница между «ковырять гексы вслепую» и «знать методологию» — три часа против четверти часа. Ниже — полный пошаговый разбор форензики файловых систем в CTF: от получения образа диска до извлечения флага, с конкретными командами и типичными ловушками.
Образ диска — побитовая (bit-by-bit) копия физического или виртуального накопителя. На CTF вы получаете файл-реплику жёсткого диска, USB-флешки или раздела. Внутри — файловая система со всеми данными, включая удалённые файлы, метаданные и свободное пространство (unallocated space). Подробнее — в нашем обзоре расследование кибератаки.
CTF Field Guide от Trail of Bits определяет форензику в CTF как «извлечение скрытой информации из статических файлов данных». Образы дисков — один из самых частых форматов в заданиях средней и высокой сложности. Новички обычно начинают с pcap-файлов и стеганографии, но на серьёзных соревнованиях ждут полноценный анализ файловых систем, triage и восстановление данных с диска.
На CTF-площадках стабильно попадаются три формата:
| Формат | Расширение | Особенности |
|---|---|---|
| Raw (dd) | .raw, .dd, .img | Побитовая копия без сжатия и метаданных. Самый распространённый в CTF |
| EnCase | .e01, .E01 | Формат AccessData/EnCase. Содержит контрольные суммы и метаинформацию об источнике |
| AFF | .aff | Advanced Forensic Format. Поддерживает сжатие и шифрование |
Для CTF чаще всего используют raw — его проще создать, и он открывается чем угодно. Определить тип файла: file evidence.dd — она распознаёт сигнатуру файловой системы внутри образа.
Перед началом работы с образом фиксируем хеш. Это не формальность: на некоторых CTF проверяют целостность образа, а в реальной цифровой криминалистике повреждённый образ — недопустимое доказательство. md5sum image.dd или sha256sum image.dd — секундное дело. По ctf101.org, «валидация файлов — один из важнейших аспектов дисковой форензики: хеш изменится при любой модификации файла».
Самая частая ошибка новичков — монтирование образа в read-write. ОС обновляет access time файлов, журнал файловой системы меняется, метаданные искажаются. Часть артефактов теряется безвозвратно. Kali Linux имеет встроенный «forensics mode» с активированным write-блокером. Если работаете не в Kali — монтируйте образ явно с флагами защиты:
# Создаём forensic-копию (работаем с копией, не с оригиналом)
dd if=evidence.dd of=working_copy.dd bs=4M status=progress
# Монтируем копию в режиме только для чтения
mkdir /mnt/evidence
mount -o ro,loop,noexec working_copy.dd /mnt/evidence
Флаги ro (read-only), loop (работа с файлом как с блочным устройством) и noexec (запрет выполнения бинарников из образа) — минимальный набор для безопасного анализа.
Autopsy — графический фронтенд к The Sleuth Kit (TSK), набору утилит для анализа файловых систем. Для компьютерной форензики в CTF Autopsy удобен тем, что парсит файловую систему, ищет удалённые файлы и строит таймлайны прямо из коробки — без единой команды в терминале.
Последовательность действий:
После индексации в левой панели (Evidence Tree) — полная структура файловой системы. В разделе File Views → Deleted Files собраны все файлы, помеченные как удалённые. Именно они чаще всего содержат флаг.
Методология из разбора hard disk analysis Zach Wong (и подтверждённая практикой многих CTF) — проверка пользовательских директорий в определённом порядке.
Для Windows-образов:
Desktop — часто содержит файлы, созданные или загруженные пользователем. На CTF флаг буквально может лежать в flag.txt на рабочем столе. Documents — рабочие документы; в продвинутых заданиях .docx-файлы могут содержать макросы. Downloads — загрузки из интернета; подозрительные файлы с двойным расширением (например, report.docx.exe) — классический индикатор компрометации. $Recycle.Bin — удалённые файлы, разделённые по SID пользователей (формат $I + $R + случайный идентификатор, но оригинальное имя и дата удаления сохраняются). C:\Windows\Temp и C:\Windows\Tasks — world-writable директории, куда атакующие любят складывать свои инструменты.
Для Linux-образов:
/home/user/ — домашняя директория, включая скрытые файлы (начинающиеся с точки). /tmp и /var/tmp — временные файлы. /var/log/ — журналы: auth.log, syslog. И отдельно — .bash_history. История команд — один из самых ценных артефактов, не забывайте про неё.
Стоит также проверить историю браузера. Chrome и Firefox хранят её в SQLite-базах. В Chrome — файл History по пути AppData/Local/Google/Chrome/User Data/Default/, в Firefox — places.sqlite в профиле пользователя. Autopsy парсит их автоматически в модуле Web Artifacts, но если нужен ручной анализ — экспортируйте файл и откройте в DB Browser for SQLite, таблица urls.
Таймлайн — ключевой инструмент для CTF-заданий, где нужно восстановить последовательность событий. В Autopsy: Tools → Timeline. На выходе — хронологическая шкала всех операций с файлами: создание, модификация, доступ, удаление.
На что смотреть в таймлайне:
Кластеры активности — группы файлов, созданных или модифицированных в узком временном окне (минуты). Обычно это следы действий атакующего. Разрыв между ctime и mtime — если ctime (время изменения метаданных) не совпадает с mtime (время модификации содержимого), это признак timestomping — подделки временных меток, техника T1070.006 (Defense Evasion) по MITRE ATT&CK. Файлы после последнего легитимного входа — пользователь залогинился в 10:00, а через 5 минут появились десятки новых файлов? Почти наверняка это то, что вы ищете.
Keyword Search в Autopsy ищет строки по всему образу, включая unallocated space. Для CTF задаём паттерны флагов: flag{, CTF{, picoCTF{, codeby{ и другие форматы конкретного соревнования. Autopsy просматривает не только существующие файлы, но и свободное пространство, где остаются фрагменты удалённых данных.
TestDisk и его компаньон PhotoRec покрывают задачи, которые Autopsy не тянет: восстановление повреждённых или стёртых таблиц разделов и carving файлов из неразмеченного пространства.
На CTF нередко попадается образ с повреждённой таблицей разделов — MBR затёрт нулями или GPT-заголовок повреждён. Autopsy в такой ситуации просто не увидит файловую систему. Это имитация техники Disk Structure Wipe (T1561.002, Impact) по MITRE ATT&CK.
Порядок работы с TestDisk:
testdisk working_copy.dd.TestDisk восстанавливает MBR и таблицы разделов даже при полном затирании — он ищет резервные копии суперблоков и характерные паттерны файловых систем. Для CTF это значит: даже если образ выглядит «пустым» — рано сдаваться.
PhotoRec (входит в пакет TestDisk) игнорирует файловую систему и ищет файлы по магическим байтам — сигнатурам заголовков. Этот процесс называется file carving.
Где PhotoRec незаменим: файловая система полностью разрушена и TestDisk не восстановил разделы; нужно извлечь файлы из unallocated space; файлы были удалены и частично перезаписаны — PhotoRec вытащит то, что осталось.
PhotoRec распознаёт более 480 форматов файлов. Для CTF-заданий по форензике дисков критичны: PNG, JPEG, PDF, ZIP, DOCX, SQLite (базы данных браузеров).
Альтернативы — foremost и его более быстрый форк scalpel (оба делают carving по сигнатурам) и binwalk. По Trail of Bits CTF Field Guide, binwalk — «один из лучших инструментов для file carving». Особенно хорош для ситуаций «файл-в-файле»:
# binwalk: поиск встроенных файлов внутри образа
binwalk -e suspicious_image.dd
# foremost: carving файлов по сигнатурам из raw-образа
foremost -t png,jpg,pdf,zip -i working_copy.dd -o recovered/
Параметр -t задаёт типы файлов для извлечения, -o — директорию для результатов. После carving обязательно проверяйте извлечённые файлы командой file — расширение может не соответствовать реальному содержимому (и на CTF это случается постоянно).
| Ситуация | Инструмент | Почему |
|---|---|---|
| Образ с целой файловой системой | Autopsy | Полный GUI-анализ, таймлайн, keyword search, парсинг артефактов |
| Повреждённая таблица разделов | TestDisk → Autopsy | Сначала восстановить разделы, потом анализировать |
| Полностью затёртая ФС | PhotoRec / foremost | Carving по сигнатурам — единственный вариант |
| Файл-в-файле | binwalk | Рекурсивное извлечение вложенных данных |
| Быстрый первичный осмотр | file, strings, hexdump |
Определить тип и искать plain-text подсказки |
| Точечное извлечение файла по inode | fls + icat (Sleuth Kit) |
Когда знаешь, что ищешь, и нужна скорость |
Понимание внутреннего устройства файловых систем отделяет CTF-игрока, который решает задания за минуты, от того, кто тыкается наугад. Форензика файловых систем в CTF требует знания — где именно остаются следы после удаления.
MFT (Master File Table) — ядро NTFS. Каждый файл и директория описаны записью в MFT. При удалении файла запись не стирается — лишь помечается как свободная. Данные файла остаются на диске, пока не будут перезаписаны новыми.
Что это даёт на CTF: утилита fls из Sleuth Kit показывает записи MFT, включая удалённые (помечены символом *), а icat извлекает содержимое файла по номеру MFT-записи.
# Просмотр файлов (включая удалённые) через Sleuth Kit
# Для образов с таблицей разделов сначала: mmls image.dd, затем укажите смещение через -o
fls -o <offset> -r -d image.dd
# -o: смещение раздела (из mmls), -r: рекурсивно, -d: только удалённые
# Извлечение файла по inode
icat -o <offset> image.dd 62 > recovered_file.txt
В NTFS есть ещё одна хитрость — Alternate Data Streams (ADS). Дополнительные потоки данных, привязанные к файлу. Файл readme.txt выглядит обычным текстовым, но readme.txt:hidden может содержать флаг. Техника связана с T1564.001 (Hidden Files and Directories, Defense Evasion) по MITRE ATT&CK. Autopsy и fls отображают ADS, в Windows их можно обнаружить через dir /r.
FAT32 — файловая система без журналирования. При удалении файла первый символ имени в директории заменяется на 0xE5, а кластеры помечаются свободными в таблице FAT. Данные остаются нетронутыми. PhotoRec отлично работает с FAT32 — перезапись происходит последовательно и предсказуемо.
Slack space — пространство между концом данных файла и концом кластера. Файл занимает 500 байт, кластер — 4096 байт. Оставшиеся 3596 байт содержат данные от предыдущего файла, который сидел в этом кластере. На CTF флаги прячут именно в slack space — стандартный просмотр файла ничего не покажет, а hex-анализ в Autopsy обнаружит.
ext4 — стандартная ФС Linux. Использует inodes для описания файлов и journal для защиты от повреждений. При удалении ext4 обнуляет указатели на блоки в inode — это усложняет восстановление данных с диска по сравнению с NTFS. Но journal может содержать копии метаданных удалённого файла. extundelete и PhotoRec справляются с восстановлением в большинстве случаев.
На продвинутых CTF авторы заданий имитируют реального атакующего, который заметает следы. Знание техник антифорензики по MITRE ATT&CK помогает понять, что искать и где.
File Deletion (T1070.004, Defense Evasion) — удаление файлов для уничтожения улик. На CTF: ключевой файл удалён, и его нужно вытащить из unallocated space через Autopsy, fls/icat или PhotoRec.
Timestomp (T1070.006, Defense Evasion) — подделка временных меток. Файл с флагом может иметь дату создания 2005 года на образе системы, установленной в 2024. Как обнаружить: в NTFS каждая MFT-запись хранит два набора временных меток — $STANDARD_INFORMATION и $FILE_NAME. Первый легко подделать через стандартные API (SetFileTime), второй обновляется файловой системой автоматически при создании, переименовании, перемещении — и не может быть изменён через эти API напрямую. Расхождение между ними — надёжный индикатор timestomping. Autopsy показывает оба набора.
Hidden Files and Directories (T1564.001, Defense Evasion) — скрытие через атрибуты ОС: hidden/system в Windows, точка в начале имени в Linux, ADS в NTFS. На CTF всегда проверяйте все файлы без фильтрации — fls по умолчанию показывает всё.
Disk Content Wipe (T1561.001) и Disk Structure Wipe (T1561.002, Impact) — затирание содержимого диска или структуры разделов. На CTF это выглядит как повреждённый образ, где TestDisk и PhotoRec — единственные инструменты восстановления.
Direct Volume Access (T1006, Defense Evasion) — прямой доступ к тому в обход файловой системы (техника преимущественно для Windows). Данные записываются напрямую в unallocated space, минуя ФС. На CTF их обнаружат strings и binwalk, но не стандартный просмотр дерева директорий.
Этот чек-лист покрывает подавляющее большинство задач Forensics, связанных с дисковыми образами.
Шаг 1. Идентификация и защита образа
- Определить формат: file evidence.dd
- Посчитать хеш: sha256sum evidence.dd
- Создать рабочую копию: dd if=evidence.dd of=work.dd bs=4M
- Всё дальнейшее — только с копией в режиме read-only
Шаг 2. Быстрый первичный осмотр
- strings work.dd | grep -i "flag\|ctf{" — поиск флагов в открытом тексте (решает простые задания за 30 секунд). Флаг -o покажет смещение найденной строки для последующего carving через dd
- binwalk work.dd — проверка на вложенные файлы и архивы
- mmls work.dd (Sleuth Kit) — просмотр таблицы разделов и смещений
Шаг 3. Глубокий анализ в Autopsy - Открыть образ, запустить Ingest Modules - Проверить раздел Deleted Files - Пройти пользовательские директории: Desktop → Documents → Downloads → $Recycle.Bin (Windows) или /home → /tmp → /var/log (Linux) - Построить таймлайн и выделить кластеры подозрительной активности - Keyword search по паттернам флагов
Шаг 4. Если файловая система повреждена
- TestDisk → Quick Search → Deep Search → восстановить разделы
- PhotoRec → carving из unallocated space
- foremost -t all -i work.dd -o output/
Шаг 5. Проверка скрытых данных
- ADS в NTFS: fls -r image.dd | grep ":" — поиск альтернативных потоков данных
- Slack space: Autopsy → выбрать файл → вкладка Hex, смотреть байты после конца данных
- Скрытые файлы: fls -a -r image.dd — показать всё, включая скрытые
Шаг 6. Верификация
- Сверить хеш рабочей копии с оригиналом — убедиться, что ничего не повредили
- Каждый извлечённый файл проверить командой file — тип часто не соответствует расширению
Большинство CTF-заданий по форензике файловых систем решаются на шагах 2–3. Шаги 4–5 — для продвинутых задач, где авторы намеренно ломают структуру образа.
За четыре года участия в CTF и работы с инцидентами в лаборатории я вижу одну устойчивую проблему: формат CTF-задач по дисковой форензике застрял где-то в середине 2010-х. Большинство заданий сводится к «найди удалённый файл» или «восстанови картинку из unallocated space». Для тренировки базовых навыков — нормально, но реальную работу форензика это не отражает. В настоящем расследовании проблема не в том, чтобы найти файл, а в том, чтобы доказать — кто именно, когда и зачем его создал. Таймлайновый анализ, корреляция артефактов из разных источников (диск + память + трафик), работа с антифорензикой — эти навыки на типовых CTF прокачиваются слабо. Совет: если стандартные задачи уже не вызывают затруднений — переходите к составным кейсам, где образ диска дополняется дампом памяти и pcap-файлом. На стыке источников начинается настоящая цифровая криминалистика.
И ещё наблюдение, которое стоит зафиксировать: Autopsy и TestDisk покрывают процентов восемьдесят CTF-задач. Но оставшиеся двадцать требуют командной строки Sleuth Kit (fls, icat, mmls) и навыка писать скрипты на Python для работы с бинарными данными. GUI-инструменты скрывают детали — вы нажимаете «Recover» и не понимаете, что происходит на уровне MFT-записей или inode. Когда задание нестандартное, это понимание становится решающим. Попробуйте решить следующее задание по форензике без Autopsy — только fls, icat и hex-редактор. Разница в понимании будет ощутимой. На HackerLab есть лабы с дисковыми образами, где GUI не спасёт — именно для отработки этого навыка.
🚀 Хочешь закрепить на практике? Реши задачи по теме на HackerLab — категория «pentest-machines».
0 комментариев
Пожалуйста, войдите, чтобы оставить комментарий.
Загрузка комментариев...