Forensic / цифровая криминалистика

Образы дисков, память, PCAP, логи, метаданные, мобилки, стего. Идеальный мануал для CTF-форензики: бери и решай.
Информацию собрал: Владимир Щеголев

Disk/FS RAM PCAP Logs Wireshark Timeline

Что такое Forensic в CTF и в ИБ

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

В CTF дают «улику» (дамп памяти, PCAP, образ диска, фото, лог) и просят найти флаг. В реальной ИБ — расследование инцидентов: как попали, что украли, какие следы оставили.

Linux/FS основы: inode, superblock, MFT, MBR/GPT

Ключевые структуры для криминалистики ФС:

  • inode (ext4): права, владелец, размеры, mtime/atime/ctime/btime, ссылки. stat, debugfs для чтения.
  • superblock: метаданные ФС, резервные копии superblock по блочным группам.
  • журнал ext4: недописанные транзакции → следы недавних изменений.
  • NTFS MFT: записи с атрибутами ($STANDARD_INFORMATION, $FILE_NAME), времена SI/FN могут отличаться; ADS (альт. потоки) хранят скрытые данные.
  • MBR/GPT: таблицы разделов; GPT хранит резервную таблицу в конце диска.
  • mount options: noatime/relatime влияют на метрики времени.

Linux-артефакты и логи

  • /etc/passwd, /etc/shadow, /etc/sudoers, /var/log/auth.log, /var/log/secure.
  • journalctl (systemd-journald бинарные логи): journalctl --since "2025-08-20 00:00"
  • last/lastlog/who — входы пользователей; utmp/wtmp как источники.
  • logrotate: проверь архивы .gz старых логов.

Категории техник в Forensic

Файловые системы и метаданные

  • Скрытые данные: slack space, unallocated, NTFS ADS.
  • Метаданные: EXIF/ID3, PDF/XMP, ZIP-внутри DOCX/PPTX (это ZIP-контейнеры).
  • Восстановление удалённого: carving по сигнатурам (PNG/JPEG/ZIP и т.п.).
  • Журналирование: NTFS $LogFile/USN, ext4 journal — источники временных следов.

Память (RAM dump)

  • Процессы/модули, сокеты, дескрипторы, DLL/so.
  • Секреты в адресном пространстве: пароли, ключи, куки.
  • Fileless malware — только в памяти, но со следами.

Сетевой анализ

  • PCAP → reassembly TCP-потоков, экспорт HTTP-объектов.
  • Аномалии: DNS-tunnel, странные UA/Host, внезапные порты.
  • Разбор TCP: handshake, teardown, retransmit, RST.

Логи и таймлайны

  • Linux: /var/log, journalctl, last, auth.log, bash_history.
  • Windows: Security/System/Application, Prefetch, Shimcache, AmCache.
  • Сбор в единый timeline: log2timeline/plaso, timesketch.

Мобильные артефакты

  • SQLite-базы приложений, media/thumbnails, кеши.
  • EXIF-гео, журнал звонков/сообщений.

Стеганография

  • LSB, битовые плоскости, скрытые контейнеры.
  • ZIP внутри PNG/JPG, аудио/видео-стего.

Сигнатуры файлов (magic bytes)

В криминалистике и CTF часто важно определить тип файла по его «магическим байтам» (file signatures). Это первые несколько байт в начале файла, которые не зависят от расширения. Полный список можно найти в таблице на Википедии.

  • JPEG: FF D8 FF(начало), конец — FF D9
  • PNG: 89 50 4E 47 0D 0A 1A 0A
  • GIF: 47 49 46 38 37 61 или 47 49 46 38 39 61
  • ZIP: 50 4B 03 04 (также 50 4B 05 06 или 50 4B 07 08)
  • RAR: 52 61 72 21 1A 07 00 (v4), 52 61 72 21 1A 07 01 00 (v5)
  • PDF: 25 50 44 46 2D / «%PDF-»
  • ELF: 7F 45 4C 46 / «\x7fELF»
  • Windows PE (EXE/DLL): 4D 5A («MZ»)
  • GZIP: 1F 8B
  • BZ2: 42 5A 68 («BZh»)
  • TAR: 75 73 74 61 72 («ustar» на смещении 257)
  • WAV/AVI: 52 49 46 46 / «RIFF»
  • MP3: 49 44 33 (ID3 header) или FF FB

Логи: быстрый разбор + grep/ripgrep

Частые места в Linux: /var/log/syslog, /var/log/auth.log, /var/log/nginx/access.log, /var/log/nginx/error.log, /var/log/apache2/, ~/.bash_history, journalctl.

К слову, до сих пор пишешь регулярки через нейронки? Хороший навык ИБ-шника (да и вообще IT-специалиста) — понимать регулярки и писать их самостоятельно. Очень вдумчиво советую пройти данный курс (в противном случае не будет никакого толку от его прохождения), — и получите все необходимые знания. Я, как его прошёл, преисполнился в регулярках.

  • journalctl: последние 500 записей по sshd
    journalctl -u ssh --no-pager -n 500
  • grep по датам/паттернам:
    grep -RinE "failed|denied|error|unauthorized" /var/log
  • ripgrep (rg) быстрее:
    rg -n --stats -e "POST /login" -e "401|403" /var/log/nginx
  • с контекстом:
    rg -n -C3 "sudo:.*COMMAND" /var/log/auth.log
  • вытащить IP:
    rg -oN --pcre2 "(?<ip>\\d{1,3}(?:\\.\\d{1,3}){3})" access.log | sort -u
  • таймлайн из логов (Nginx → CSV):
    awk '{print $4,$5,$1,$9,$7}' access.log | sed 's/\\[//;s/\\]//' > nginx.csv

Кому не понятно чё написано, какие-то / какие-то \, че-то d{1,3}.. Курс — выше :)

Мини-кейс: найти подозрительные sudo-команды

Ищем sudo с передачей скриптов и бинарей во временные каталоги:

rg -n -C1 -e "sudo:.*COMMAND=.*(/tmp|/dev/shm|/var/tmp).*(sh|bash|python|perl)" /var/log/auth.log

Wireshark: быстрые фильтры и микро-кейсы

Горячее: Follow → TCP Stream File → Export Objects → HTTP

Частые дисплей-фильтры

  • http, http.request.method == "POST", http.host contains "admin"
  • dns, dns.qry.name contains "ctf"
  • tcp.port == 80, tcp.stream == N, tcp.len > 0
  • tcp.flags.syn==1 && tcp.flags.ack==0 (SYN), tcp.flags.reset == 1 (RST)
  • frame contains "flag{" (поиск строки в любом протоколе)
  • tls.handshake, ssl (устар.), udp.port == 53

Мини-кейс: найти логины по HTTP

  1. Фильтр:
    http.request.method == "POST" или http && frame contains "password"
  2. Правой кнопкой по пакету → Follow → TCP Stream
  3. Ищем пары username= / password=в теле.

Мини-кейс: определить TCP-поток с утечкой

Шаги: tcp.len > 0 → сортировка по Bytes → выбрать топ-поток → Follow.

TCP: Handshake / Teardown / Флаги

  • 3-way handshake: SYNSYN,ACKACK. Начальные Seq/Ack номера.
  • Teardown: 4-way FIN (FINACK ×2) или внезапный RST.
  • Полезные признаки: tcp.analysis.retransmission, tcp.analysis.duplicate_ack, tcp.window_size.
  • Фильтры:
    tcp.flags.syn==1 && tcp.flags.ack==0 tcp.flags.fin==1 tcp.flags.reset==1 tcp.stream==N
  1. Мини-кейс: соберать только рукопожатия с помощью фильтра:
    tcp.flags.syn==1 || (tcp.flags.syn==1 && tcp.flags.ack==1)

Брутфорс и словари. Базовый в CTF — rockyou.txt

В CTF задачи на подбор пароля встречаются часто: хэши, архивы, стего/документы. Классика — rockyou.txt.

  • Brute-force — полный перебор.
  • Словари — John/Hashcat.
  • Правила/манглинг — модификации слов (замены/добавления).
  • Маски — шаблоны (?u?l?d и т.п.).
  • Гибрид — словарь + префикс/суффикс.

Мини-кейс: подбор пароля к ZIP через john

Шаг 1: подготовить hash файла:
$ zip2john secret.zip > hash.txt

Шаг 2: запуск со словарём:
$ john --wordlist=rockyou.txt hash.txt

Вывод (пример):

Using default input encoding: UTF-8
Loaded 1 password hash (PKZIP [32/64])
Press 'q' or Ctrl-C to abort, almost any other key for status
password123  (secret.zip/flag.txt)
1g 0:00:00:02 DONE  0.49g/s 5000p/s 5000c/s

Восстановление данных

При анализе повреждённых носителей и «сырых» дампов используем file carving — поиск фрагментов по сигнатурам (magic bytes), когда метаданных ФС не осталось.

  • foremost / scalpel / photorec — карверы по сигнатурам.
  • TestDisk — восстановление таблиц разделов и загрузочных записей.
  • Журналы ФС (NTFS $LogFile, USN; ext4 journal) — имена/пути/времена.
  • SSD/флешки: FTL/GC/ wear-leveling и TRIM могут безвозвратно очищать блоки → карвинг затруднён; снимай образ как можно раньше.

Информация выше. Но, опять же, частые magic bytes:

  • JPEG: FF D8 FF
  • PNG: 89 50 4E 47 0D 0A 1A 0A
  • ZIP: 50 4B 03 04, RAR5: 52 61 72 21 1A 07 01 00
  • PDF: 25 50 44 46 2D, GZIP: 1F 8B, ELF: 7F 45 4C 46

Мини-кейс: битый JPG (неверный magic)

Открываем hex и правим первые байты на FF D8 FF, затем используем jpegrepair или exiftool -r для восстановления структуры.

Инструменты для Forensic

Образы дисков / ФС

Autopsy / Sleuth Kit

Анализ ФС, поиск удалённого.

FTK Imager

Съём образов, предпросмотр.

dd / dc3dd

Побитовые копии, потоки, скип/сик.

testdisk / photorec

Разделы, загрузочные записи, carving по сигнатурам.

foremost / scalpel

Карвинг на лету по magic bytes.

Память

Volatility / Rekall

Процессы, сокеты, DLL/модули, артефакты.

strings

Быстрый поиск строк/паттернов.

LiME

Снятие RAM-дампов в Linux.

Сеть

Wireshark

PCAP, фильтры, reassembly, экспорт объектов.

tcpdump

CLI-захват/фильтрация пакетов.

NetworkMiner

Извлечение файлов/метаданных из PCAP.

Метаданные и стего

exiftool

Метаданные всех мастей.

binwalk

Извлечение встроенных файлов/архивов.

zsteg / stegsolve

PNG/BMP анализ, плоскости/битовые слои.

stegseek

Брут паролей для steghide.

Поиск артефактов и утилиты

grep / ripgrep

Регэксп-поиск по дампам/логам.

bulk_extractor

Emails/URLs/CC/телефоны из сырых данных.

xxd / hexdump

Hex-представление, правка подписи/магии.

diff / cmp

Сравнение файлов/потоков.

hashdeep / md5sum / sha256sum

Контроль целостности, дедупликация.

log2timeline / plaso

Единый таймлайн артефактов.

Первые минуты: быстрый чек-лист

  • Тип данных: file, magic bytes (PNG 89 50 4E 47..., ZIP 50 4B 03 04...).
  • Контейнеры: не доверяй расширениям (картинка+ZIP внутри).
  • Метаданные: exiftool на всё — автор, софт, GPS, скрытые поля.
  • PCAP: фильтры (http, dns, tcp.stream==N), экспорт объектов, Follow TCP.
  • TCP: смотри handshake/teardown, RST/ретрансляции.
  • RAM: Volatility (pslist/psscan/netscan/handles/strings -p).
  • Логи: rg/grep + journalctl + log2timeline.
  • Carving: если всё «битое» — binwalk, foremost, scalpel, photorec.