Forensic / цифровая криминалистика
Образы дисков, память, PCAP, логи, метаданные, мобилки, стего. Идеальный мануал для CTF-форензики: бери и решай.
Информацию собрал: Владимир Щеголев
Что такое 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
- Фильтр:
http.request.method == "POST"
илиhttp && frame contains "password"
- Правой кнопкой по пакету → Follow → TCP Stream
- Ищем пары
username=
/password=
в теле.
Мини-кейс: определить TCP-поток с утечкой
Шаги: tcp.len > 0
→ сортировка по Bytes → выбрать топ-поток → Follow.
TCP: Handshake / Teardown / Флаги
- 3-way handshake:
SYN
→SYN,ACK
→ACK
. Начальные Seq/Ack номера. - Teardown: 4-way FIN (
FIN
↔ACK
×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
- Мини-кейс: соберать только рукопожатия с помощью фильтра:
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
.