Misc
Форензика файлов и артефакты ОС
Форензика файлов и артефакты ОС — это поиск следов действий пользователя и системы в файлах, временных данных и скрытых местах операционной системы. Когда человек что-то делает на компьютере (открывает файл, заходит в интернет, запускает программу), остаются крошечные записи, которые не видны при обычном просмотре. В категории forensics на CTF эта тема встречается в большинстве задач: флаг прячут в удалённом файле, в истории команд, в метаданных или в артефактах Windows/Linux. Новичку важно понять, что даже если файл удалён или история очищена — следы почти всегда остаются. Знание этих мест и способов поиска поможет тебе находить флаг там, где другие видят пустую папку или чистую историю.
Словарь терминов
File carving
Поиск и восстановление файлов по их началу и концу, без метаданных
Метаданные
Скрытая информация о файле: автор, дата создания, программа
EXIF
Метаданные в фотографиях (камера, дата, координаты)
OLE
Старый формат Office для вставки объектов в документы
OOXML
Современный формат Office (docx, xlsx, pptx) — zip с XML
PDF streams
Потоки данных внутри PDF-файла (текст, картинки)
LNK
Ярлык в Windows (.lnk), хранит путь к файлу и время открытия
Prefetch
Файлы Windows, где хранится, какие программы запускались
Jump Lists
Список последних файлов/программ в меню Пуск Windows
Shimcache
Кэш в Windows, где хранится история запуска программ
Bash history
История команд в терминале Linux
.ssh
Папка в Linux с ключами SSH и историей подключений
Cron
Планировщик задач в Linux, хранит команды по расписанию
tmp files
Временные файлы в /tmp, часто содержат следы работы программ
File carving и восстановление удалённых данных
File carving — это поиск файлов по их сигнатурам (началу и концу), когда файловая система повреждена или файл удалён. Например, JPEG начинается с байтов FF D8, PNG — с 89 50 4E 47. Программа сканирует весь диск и собирает всё, что похоже на файл.
Удалённые данные часто остаются на диске, пока их не перезапишут. В FAT и NTFS метаданные могут сохраниться, но даже если нет — carving находит содержимое.
В CTF file carving — один из самых частых способов достать флаг. Образ диска пустой, но внутри лежат удалённые файлы с флагом.
На практике: видишь образ диска без файловой системы — запускаешь carving по сигнатурам — получаешь восстановленные картинки, документы или архивы с флагом.
Анализ метаданных (EXIF, OLE, OOXML, PDF streams)
Метаданные — это информация о файле, которую программа записывает автоматически: автор, дата создания, название софта, компьютер, где редактировали.
EXIF — метаданные в фотографиях JPEG (камера, дата съёмки, GPS). Очень часто флаг прячут в поле "Комментарий" или "Автор".
OLE — старый формат Office (doc/docx до 2007). Внутри можно прятать объекты (вложенные файлы, макросы).
OOXML — современный формат (docx, xlsx, pptx). Это zip-архив с XML-файлами. Метаданные в docProps/core.xml и app.xml.
PDF streams — потоки внутри PDF (текст, картинки). Удалённый текст иногда остаётся в старых потоках.
В CTF метаданные — первое, что проверяют. Флаг часто в поле "Автор", "Комментарий" или в XML внутри docx.
На практике: видишь картинку — проверяешь EXIF; docx — распаковываешь как zip и читаешь core.xml; PDF — смотришь метаданные и потоки.
Windows artifacts (LNK, Prefetch, Jump Lists, Shimcache)
LNK — файлы ярлыков (.lnk). Хранят путь к файлу, время открытия, аргументы. Даже если файл удалён — LNK остаётся.
Prefetch — папка Windows Prefetch. Записывает, какие программы запускались, сколько раз и когда.
Jump Lists — список последних файлов в меню Пуск и панели задач. Показывает, какие документы открывали.
Shimcache — кэш в реестре, где Windows запоминает запущенные exe-файлы.
В CTF Windows artifacts — классика. Флаг часто в LNK-файле или в Prefetch как аргумент команды.
На практике: видишь образ Windows — ищешь в Prefetch файлы с подозрительными именами; в Jump Lists — последние открытые файлы с флагом; в LNK — путь к flag.txt.
Linux artifacts (bash history, .ssh, cron, tmp files)
Bash history — файл ~/.bash_history с историей команд в терминале. Очень часто флаг вводят командой cat flag.txt — и она остаётся в истории.
.ssh — папка с ключами SSH, known_hosts (список подключённых серверов) и authorized_keys.
Cron — планировщик задач. В /etc/cron* и ~/.cron лежат команды по расписанию — иногда флаг в скрипте cron.
tmp files — временные файлы в /tmp. Программы часто пишут туда пароли, ключи или флаги.
В CTF Linux artifacts — один из самых простых способов найти флаг. История bash — первое, что проверяют.
На практике: видишь образ Linux — открываешь /home/user/.bash_history — ищешь cat flag.txt или echo CTF; в /tmp — ищешь подозрительные файлы с флагом.
Итог
Форензика файлов и артефакты ОС — это поиск следов действий пользователя в метаданных, логах и остатках удалённых данных. В forensics CTF это одна из самых важных тем: флаг почти всегда остаётся в истории, метаданных или временных файлах.
Главное запомнить: file carving восстанавливает удалённые файлы по сигнатурам; метаданные EXIF и OOXML — первое, что проверять; Windows оставляет LNK, Prefetch и Jump Lists; Linux — bash history, cron и /tmp.
Ключевые слова/термины выучить: file carving, метаданные, EXIF, OLE, OOXML, PDF streams, LNK, Prefetch, Jump Lists, Shimcache, bash history, .ssh, cron, tmp files.
Эти знания помогут тебе сразу после получения образа системы проверять метаданные файлов и историю bash — и находить флаг в комментарии картинки или в команде cat flag.txt. В задачах ты сможешь восстановить удалённый документ через carving, прочитать автора в метаданных docx или увидеть подозрительную команду в Prefetch — и получить флаг без сложного поиска.
Генерация и анализ QR-кодов / штрихкодов
QR-коды и штрихкоды — это способы закодировать информацию (текст, ссылку, флаг) в виде картинки, которую легко прочитать камерой телефона или сканером. В CTF это одна из самых частых тем в категориях misc, stego и forensics: флаг почти всегда спрятан внутри QR-кода или штрихкода. Новичку важно понять их внутреннее устройство, потому что обычное сканирование показывает только видимый текст, а секрет часто лежит глубже — в структуре, масках или даже в повреждённых частях. Знание этих механизмов позволит тебе не просто сканировать код, а разбирать его вручную, находить скрытые данные и извлекать флаг, даже если код сломан или модифицирован.
Словарь терминов
QR-код
Квадратная картинка с чёрно-белыми модулями для хранения данных
Error correction
Возможность восстановить данные, если часть кода повреждена
Version
Размер QR-кода (от 1×1 до 177×177 модулей)
Mask patterns
Специальные узоры, которые накладывают на QR для лучшей читаемости
Custom QR
QR-код, изменённый вручную или с дополнительными данными
Стеганография в QR
Скрытие сообщения внутри структуры QR-кода
ZXing
Библиотека для чтения и генерации QR и штрихкодов
Code128
Популярный линейный штрихкод с буквами и цифрами
EAN
Штрихкод для товаров (EAN-13, EAN-8)
UPC
Американский штрихкод для товаров (UPC-A, UPC-E)
PDF417
Двумерный штрихкод, похожий на стопку линий
QR-код структура, error correction, version, mask patterns
QR-код состоит из маленьких квадратиков — модулей (чёрных и белых). По краям находятся три больших квадрата — alignment patterns (помогают камере понять положение). В центре есть маленькие квадраты — version и format information.
Version — число от 1 до 40, определяет размер: версия 1 — 21×21 модуль, версия 40 — 177×177. Чем выше версия — тем больше данных помещается.
Error correction — встроенная защита от повреждений. Есть 4 уровня: L (7%), M (15%), Q (25%), H (30%). Если повредить до 30% модулей — код всё равно читается.
Mask patterns — 8 специальных узоров, которые накладывают на данные, чтобы избежать больших чёрных или белых областей (это мешает сканеру). Маска выбирается так, чтобы после неё было меньше ошибок.
В CTF структура QR — основа большинства задач. Флаг часто прячут в повреждённой части или в неверной маске.
На практике: видишь QR — смотришь размер и уровень коррекции; если код читается частично — пробуешь разные маски или восстанавливаешь по ошибкам.
Custom QR и стеганография в QR
Custom QR — это когда кто-то меняет стандартный QR: добавляет лишние модули, меняет маску, встраивает картинку или прячет данные в неиспользуемых областях.
Стеганография в QR — скрытие сообщения внутри структуры кода. Можно менять младшие биты модулей (LSB), прятать в alignment patterns или в области после маски.
В CTF custom QR — очень популярный способ. Флаг прячут в изменённой маске, в повреждённой части или в дополнительном сообщении.
На практике: видишь странный QR (с картинкой внутри или лишними линиями) — пробуешь прочитать стандартным сканером — если не работает — смотришь вручную на модули или пробуешь разные уровни коррекции.
ZXing, zbar, qrtools, pyzbar
ZXing — самая мощная библиотека для чтения и генерации QR и штрихкодов. Умеет восстанавливать даже сильно повреждённые коды.
zbar — лёгкая библиотека, быстро читает QR и штрихкоды, но менее устойчива к повреждениям.
qrtools и pyzbar — удобные обёртки для работы с QR в скриптах.
В CTF эти библиотеки — основной способ быстро проверить QR. Если стандартный сканер не читает — пробуют разные библиотеки.
На практике: видишь QR — пробуешь прочитать ZXing — если не получилось — пробуешь zbar или pyzbar; если код повреждён — используешь восстановление ошибок.
Barcode formats (Code128, EAN, UPC, PDF417)
Code128 — линейный штрихкод, поддерживает буквы, цифры и спецсимволы. Очень распространён в логистике.
EAN (EAN-13, EAN-8) — штрихкод для товаров в Европе и России. Только цифры.
UPC (UPC-A, UPC-E) — американский аналог EAN, тоже только цифры.
PDF417 — двумерный штрихкод (стопка линий). Может хранить много текста, часто используется в документах.
В CTF штрихкоды — частый способ спрятать флаг. Code128 и PDF417 могут содержать длинный текст с секретом.
На практике: видишь полоски — определяешь формат по виду (Code128 — переменная ширина полос, PDF417 — стопка линий); читаешь содержимое — находишь флаг.
Итог
Генерация и анализ QR-кодов / штрихкодов — это умение читать и разбирать закодированную информацию в картинках. В stego, misc и forensics CTF это одна из самых частых тем: флаг почти всегда спрятан в QR или штрихкоде.
Главное запомнить: QR имеет структуру с версией, масками и коррекцией ошибок; LSB и метаданные — первое, что проверять; DCT — для JPEG; штрихкоды (Code128, PDF417) хранят текст напрямую.
Ключевые слова/термины выучить: QR-код, error correction, version, mask patterns, LSB, DCT, palette-based, metadata hiding, Code128, EAN, UPC, PDF417.
Эти знания помогут тебе сразу после получения картинки или аудио проверить её на простые кодировки и метаданные. В задачах ты сможешь прочитать флаг из Base64 в комментарии, увидеть текст на спектрограмме аудио, извлечь скрытое сообщение из палитры GIF или из субтитров видео — и получить флаг за минуты.
Различные кодировки и их декодирование
Кодировки — это способы превратить одни данные (текст, числа, файлы) в другой вид, чтобы их можно было передать или спрятать. В CTF они встречаются почти в каждой категории: флаг часто прячут именно в закодированном виде. В crypto, stego, misc и даже forensics это одна из самых частых тем. Новичку важно уметь быстро узнавать кодировку по виду строки и декодировать её, потому что без этого многие задачи остаются нерешёнными. Знание кодировок поможет тебе за минуты превращать непонятный набор символов в читаемый текст и находить флаг там, где другие видят мусор.
Словарь терминов
Кодировка
Способ записи данных в другом виде (буквы вместо байтов)
Base64
Кодировка байтов в 64 символа (A-Z, a-z, 0-9, +, /, =)
Base32
Кодировка в 32 символа (A-Z, 2-7)
Base85
Кодировка в 85 символов (часто используется в PDF)
Base91
Более компактная кодировка (91 символ)
Hex
Шестнадцатеричная запись (0-9, A-F)
Binary
Двоичная запись (только 0 и 1)
Octal
Восьмеричная запись (0-7)
URL encoding
Кодировка для адресов (пробел → %20, кириллица → %XX%XX)
UTF-8
Самая популярная кодировка текста (поддерживает все языки)
Morse code
Точки и тире для букв и цифр
Bacon cipher
Кодировка букв через два символа (A/B или 0/1)
ASCII art
Картинки из символов текста
Brainfuck
Эзотерический язык программирования с 8 командами
Whitespace
Программа, написанная только пробелами, табами и переводами строк
Base encodings (Base64, Base32, Base85, Base91, custom bases)
Base-кодировки превращают любые байты в текст из ограниченного набора символов. Это удобно для передачи через текст (почта, форумы, JSON).
Base64 — самый популярный: использует 64 символа (A-Z, a-z, 0-9, +, /) и = для заполнения. Длина строки всегда кратна 4.
Base32 — 32 символа (A-Z, 2-7), без спецсимволов, часто используется в крипто-ключах.
Base85 — 85 символов, более компактный, популярен в PDF и git.
Base91 — ещё плотнее, 91 символ, редко встречается.
Custom bases — когда автор задачи придумывает свою базу (base36, base62, base100 и т.д.).
В CTF base-кодировки — это 80% начальных задач. Флаг почти всегда закодирован хотя бы в Base64.
На практике: видишь строку с = в конце — это Base64, декодируешь; видишь только буквы и цифры 2-7 — это Base32; странные символы — пробуешь Base85 или Base91.
Binary encodings (hex, binary, octal, URL encoding, percent encoding)
Hex — каждый байт записан двумя символами (0-9, A-F). Самая читаемая бинарная кодировка.
Binary — полная двоичная запись (0 и 1). Длинная, но иногда флаг прячут именно так.
Octal — восьмеричная запись (0-7), редко используется.
URL encoding (percent encoding) — запрещённые символы заменяют на %XX (пробел → %20, русский текст → %D0%9F).
В CTF hex и URL encoding встречаются постоянно. Флаг может быть в hex-дампе или закодирован в URL.
На практике: видишь строку из 0-9 и A-F — это hex, переводишь в текст; видишь много %XX — это URL encoding, декодируешь.
Text encodings (UTF-8/16/32, Morse code, Bacon cipher, ASCII art)
UTF-8 — самая распространённая кодировка текста: английские буквы — 1 байт, кириллица — 2 байта, эмодзи — до 4 байт.
UTF-16 и UTF-32 — фиксированная длина (2 или 4 байта на символ), часто используются в Windows.
Morse code — точки и тире для букв и цифр. Иногда флаг записан морзянкой в звуке или тексте.
Bacon cipher — каждая буква кодируется 5 битами (A/B или 0/1). Выглядит как бессмысленный текст из двух символов.
ASCII art — картинки из символов текста. Флаг могут нарисовать буквами.
В CTF text encodings — частая маскировка. Флаг может быть в UTF-16 (выглядит как мусор) или в морзянке.
На практике: видишь странные квадратики или мусор — пробуешь UTF-16/UTF-32; видишь точки-тире — это морзянка; видишь чередование двух символов — это Bacon.
Custom/obfuscated encodings (brainfuck, malbolge, whitespace)
Brainfuck — эзотерический язык с 8 командами (+ - < > . , [ ]). Программа выглядит как набор этих символов. Флаг могут написать на brainfuck.
Malbolge — самый сложный эзотерический язык, код почти невозможно читать. Иногда задачи специально дают код на нём.
Whitespace — программа пишется только пробелами, табами и переводами строк. Обычный текст — это комментарий, а код — в пробелах.
В CTF custom encodings — это способ запутать. Если видишь бессмысленный текст — это может быть brainfuck или whitespace.
На практике: видишь строку из +-<>[],. — это brainfuck, запускаешь интерпретатор; видишь только пробелы и табы — это whitespace.
Итог
Различные кодировки — это превращение данных в текст или символы, чтобы их спрятать или передать. В CTF это основа почти всех категорий: флаг всегда закодирован, и нужно его раскодировать.
Главное запомнить: Base64 — самая частая (с = в конце); hex — для бинарных дампов; UTF-16 часто маскирует текст; морзянка и Bacon — простые шифры; brainfuck и whitespace — эзотерические языки.
Ключевые слова/термины выучить: кодировка, Base64, Base32, Base85, Base91, hex, binary, octal, URL encoding, UTF-8, Morse code, Bacon cipher, ASCII art, brainfuck, whitespace.
Эти знания помогут тебе сразу после получения строки проверить её на Base64 или hex и быстро декодировать. В задачах ты сможешь превратить непонятный набор символов в текст флага, прочитать морзянку в аудио, найти скрытое сообщение в пробелах или запустить brainfuck-код — и получить флаг за минуты.
Разное (Misc-specific техники)
Разное (Misc) в CTF — это категория для задач, которые не подходят под web, crypto, reverse, pwn или forensics. Здесь собраны самые необычные и творческие способы спрятать флаг. В Misc задачи чаще всего строятся на странных языках программирования, хитрых форматах файлов, файлах-оборотнях и передаче данных через неожиданные каналы. Новичку важно понять, что Misc — это про креативность и умение замечать нестандартное: флаг может быть спрятан в пробелах, в картинке внутри PDF или в DNS-запросах. Знание этих техник поможет тебе не паниковать при виде непонятного файла или кода, а сразу начать проверять самые дикие варианты — и часто именно они оказываются правильными.
Словарь терминов
Esoteric language
Необычный язык программирования, созданный для прикола или запутывания
Brainfuck
Язык с 8 командами (+-<>[].,) — код выглядит как куча символов
Malbolge
Один из самых сложных языков, код почти невозможно читать
Whitespace
Программа пишется только пробелами, табами и переводами строк
Polyglot file
Один файл, который одновременно является несколькими форматами (например ZIP и JPG)
Data exfiltration
Тайная передача данных из системы наружу
DNS exfiltration
Передача данных через DNS-запросы (в поддоменах)
ICMP exfiltration
Передача данных в ping-пакетах
Amiga IFF
Старый формат файлов от Amiga (звук, картинки, текст)
MIDI
Формат для музыки (ноты, инструменты, темп)
RTF
Текстовый формат от Microsoft с форматированием
PostScript
Язык описания страниц для принтеров
Brainfuck, malbolge, whitespace, esoteric languages
Esoteric languages — это языки программирования, созданные не для удобства, а для прикола, сложности или запутывания. Они используются в CTF, чтобы заставить тебя вручную разобрать код или написать интерпретатор.
Brainfuck имеет только 8 команд: + (увеличить), - (уменьшить), > (вправо), < (влево), . (вывод), , (ввод), [ ] (циклы). Код выглядит как набор символов без смысла.
Malbolge — самый сложный: каждая команда меняет сама себя и соседние. Почти невозможно написать программу вручную.
Whitespace — программа пишется только пробелами, табами и переводами строк. Всё остальное — комментарий.
В CTF esoteric languages — классика Misc. Флаг часто выводится через точку в brainfuck или спрятан в пробелах whitespace.
На практике: видишь строку из +-<>[],. — это brainfuck, запускаешь интерпретатор; видишь только пробелы и табы — это whitespace, игнорируешь видимый текст и читаешь пробелы как код.
Esoteric file formats (Amiga IFF, MIDI, RTF, PostScript)
Esoteric file formats — редкие или старые форматы файлов, которые авторы задач используют, чтобы запутать.
Amiga IFF — формат 1985 года для картинок, звука и текста на компьютерах Amiga. Структура с чанками (FORM, BODY, BODY и т.д.).
MIDI — формат для музыки: ноты, темп, инструменты. Можно спрятать текст в названии трека, в комментариях или в лишних байтах.
RTF — текстовый формат Microsoft с форматированием. Поддерживает вставку объектов и комментариев — туда прячут данные.
PostScript — язык описания страниц для принтеров. Код выглядит как программа — можно вставить комментарии или вычислить флаг.
В CTF такие форматы дают, чтобы ты не открывал файл в обычном просмотрщике, а разбирал структуру.
На практике: видишь файл с расширением .mid — открываешь как текст — ищешь комментарии или названия треков с флагом; RTF — ищешь скрытые объекты; PostScript — читаешь как код и находишь вычисляемый флаг.
Polyglot files (ZIP/JPG/PDF polyglots)
Polyglot file — это один файл, который одновременно является несколькими форматами (например и ZIP, и JPG, и PDF). Это достигается хитрой расстановкой заголовков и байтов.
Самый популярный — ZIP/JPG polyglot: файл открывается и как архив, и как картинка. В архиве прячут флаг, а картинка — для маскировки.
ZIP/PDF, JPG/PNG, RAR/JPG — тоже частые комбинации.
В CTF polyglot — классический способ спрятать флаг в файле, который выглядит безобидно.
На практике: видишь картинку — пробуешь открыть как ZIP — внутри архив с флагом; видишь PDF — пробуешь как ZIP или RAR — находишь спрятанный файл.
Data exfiltration через необычные каналы (DNS, ICMP, audio)
Data exfiltration — тайная передача данных из системы наружу. В CTF это часто делается через протоколы, которые редко проверяют.
DNS exfiltration — данные прячут в поддоменах запросов (очень длинные имена).
ICMP exfiltration — данные в поле данных ping-пакетов.
Audio exfiltration — данные в спектре звука, в фазе, в эхе или в LSB сэмплов.
В CTF такие каналы — способ передать флаг из «закрытой» системы или спрятать его в дампе.
На практике: видишь много DNS-запросов с длинными поддоменами — собираешь их и декодируешь; видишь ping с большими пакетами — читаешь содержимое; слышишь странный звук — смотришь спектрограмму или LSB.
Итог
Задачи на анализ и генерацию шрифтов / изображений — это поиск скрытых данных в файлах шрифтов и картинок. В stego и forensics CTF это одна из самых популярных тем: флаг прячут в глифах, метаданных, пикселях или в форме самой картинки.
Главное запомнить: шрифты содержат глифы — их формы могут скрывать текст; метаданные и чанки PNG/JPEG — первое, что проверять; визуальный анализ и разделение каналов показывают скрытое; ASCII art и emoji — простые способы кодирования.
Ключевые слова/термины выучить: TTF/OTF, glyph, font subsetting, PNG chunks, pixel art, ASCII art, braille, emoji encoding, steganalysis, визуальный анализ.
Эти знания помогут тебе сразу после получения картинки или шрифта проверять метаданные и младшие биты. В задачах ты сможешь найти флаг в комментарии PNG, увидеть скрытый текст в глифе шрифта, прочитать сообщение из последовательности эмодзи или обнаружить QR-код после инверсии цветов — и получить флаг за минуты.
Reverse engineering бинарных файлов без явной архитектуры
Reverse engineering бинарных файлов без явной архитектуры — это разбор неизвестной программы, когда заранее не известно, на каком процессоре она написана (x86, ARM, AVR и т.д.) и как её запускать. Это как открыть коробку с загадочной игрушкой без инструкции и понять, как она работает. В категориях reverse и pwn на CTF эта тема встречается в большинстве задач: флаг прячут внутри бинарника, и сначала нужно понять, что это вообще за файл. Новичку важно научиться быстро определять тип программы и обходить простые защиты, потому что без этого даже простые задачи остаются нерешёнными. Знание этих шагов поможет тебе шаг за шагом разбирать неизвестный файл и находить флаг в коде или строках.
Словарь терминов
Бинарный файл
Программа в виде последовательности байтов (без исходного кода)
Архитектура
Тип процессора, для которого написана программа (x86, ARM и т.д.)
x86
Самая распространённая архитектура для компьютеров и CTF
ARM
Архитектура для телефонов, роутеров и многих устройств
AVR
8-битная архитектура (Arduino, простые микроконтроллеры)
MIPS
Архитектура для роутеров и старых игровых консолей
WebAssembly
Бинарный код, который запускается в браузере
Strings
Читаемые текстовые строки внутри бинарника
Entropy
Мера "случайности" байтов (высокая — зашифровано или сжато)
Binwalk
Поиск встроенных файлов и структур внутри бинарника
Foremost
Восстановление файлов по сигнатурам из бинарника
Custom VM
Самодельная виртуальная машина с собственным языком команд
Bytecode
Промежуточный код для виртуальной машины
Packing
Сжатие и запутывание бинарника для усложнения анализа
Obfuscation
Запутывание кода, чтобы его было сложно читать
Распознавание архитектуры (x86, ARM, AVR, MIPS, WebAssembly)
Распознавание архитектуры — первый шаг при работе с неизвестным бинарником. Нужно понять, для какого процессора написан код, чтобы правильно его разобрать.
x86 — самая частая в CTF, начинается с байтов 7F 45 4C 46 (ELF) или 4D 5A (PE), инструкции начинаются с 55 8B EC или 48 83 EC.
ARM — часто в дампах роутеров и IoT, ARM Thumb начинается с 4x или Bx инструкций, ELF-заголовок имеет machine type 0x28.
AVR — 8-битный, часто в дампах микроконтроллеров, инструкции короткие, много jmp и rjmp.
MIPS — для роутеров, ELF machine type 0x08, инструкции начинаются с 3C xx или 8F xx.
WebAssembly — начинается с \0asm, часто в задачах на браузерные CTF.
В CTF определение архитектуры — ключевой момент. Если ошибёшься — дизассемблер покажет мусор.
На практике: открываешь файл в hex-редакторе — смотришь первые байты (ELF/PE) — по заголовку определяешь архитектуру — выбираешь правильный дизассемблер.
Strings, entropy analysis, binwalk, foremost
Strings — поиск всех читаемых текстовых строк в бинарнике. Флаги часто лежат открыто или в зашифрованном виде рядом с "flag{".
Entropy analysis — измерение случайности байтов. Высокая энтропия — зашифровано или сжато, низкая — обычный код или текст.
Binwalk — сканирует бинарник и находит встроенные архивы, образы файловых систем, картинки, другие бинарники.
Foremost — carving: восстанавливает файлы по сигнатурам даже из середины дампа.
В CTF эти техники — первые шаги. Если видишь высокую энтропию — ищешь сжатие; если много строк — ищешь флаг.
На практике: запускаешь strings — ищешь "flag" или "CTF"; смотришь энтропию — если участок случайный — запускаешь binwalk; извлекаешь встроенные файлы.
Custom VM и bytecode reverse (PicoCTF VM, custom interpreters)
Custom VM — самодельная виртуальная машина, где код написан не на обычном ассемблере, а на собственном языке (bytecode).
Bytecode — промежуточный код для этой VM: последовательность байтов с командами (push, add, jmp и т.д.).
В CTF custom VM — популярный способ запутать. Вместо обычного кода дают байты и описывают VM.
На практике: видишь байты и описание VM (команды 0x01 = push, 0x02 = add) — пишешь эмулятор — запускаешь код — видишь, где выводится флаг.
Anti-RE техники (packing, obfuscation, anti-debug)
Packing — сжатие и запутывание бинарника. После распаковки код становится читаемым, но часто с защитой от отладки.
Obfuscation — запутывание кода: лишние инструкции, ложные ветки, шифрование строк, перемешивание функций.
Anti-debug — техники обнаружения отладчика: проверка времени, количества точек останова, наличие процесса отладчика.
В CTF anti-RE — способ усложнить задачу. Если код выглядит как мусор — это обфускация или packing.
На практике: видишь маленький бинарник с высокой энтропией — это packing, распаковываешь; видишь много jmp и мусорных инструкций — это обфускация; программа выходит при запуске в отладчике — это anti-debug.
Итог
Reverse engineering бинарных файлов без явной архитектуры — это разбор неизвестной программы, когда не знаешь процессор и защиту. В reverse и pwn CTF это основа большинства задач: флаг внутри бинарника.
Главное запомнить: сначала определяешь архитектуру по заголовкам и байтам; strings и энтропия — первые шаги; custom VM требует написания эмулятора; packing и обфускация — запутывание кода.
Ключевые слова/термины выучить: бинарный файл, архитектура, x86, ARM, AVR, MIPS, WebAssembly, strings, entropy, binwalk, foremost, custom VM, bytecode, packing, obfuscation, anti-debug.
Эти знания помогут тебе сразу после получения неизвестного файла определить его тип и архитектуру. В задачах ты сможешь по заголовку узнать ARM или AVR, найти флаг в strings, распаковать сжатый бинарник, эмулировать custom VM и обойти простую обфускацию — и достать флаг без долгого блуждания.
Steganography в различных форматах
Стеганография — это искусство прятать секретное сообщение внутри обычного файла (картинки, аудио, видео) так, чтобы никто не заметил подмены. В отличие от шифрования, где видно, что данные зашифрованы, здесь файл выглядит абсолютно нормально. В категориях stego и forensics на CTF эта тема встречается почти в каждой второй задаче — флаг чаще всего спрятан именно в медиафайле. Новичку важно понять основные способы скрытия, потому что большинство задач на стего строятся на них. Знание поможет быстро определить, где и как спрятан флаг, и извлечь его без лишних догадок.
Словарь терминов
Стеганография
Скрытие сообщения внутри другого файла (картинки, звука)
LSB
Скрытие данных в самых младших битах цвета или звука
DCT
Математика в JPEG, где прячут данные в частотах
Palette-based
Скрытие в палитре цветов (GIF, PNG с индексами)
Metadata hiding
Прятание данных в метаданных файла (EXIF, комментарии)
Phase coding
Скрытие в фазе звуковой волны
Echo hiding
Добавление незаметного эха в звук
Spread spectrum
Распределение данных по всему спектру звука
JPEG
Формат сжатия фото с потерями качества
PNG
Формат без потерь, поддерживает прозрачность
GIF
Формат с палитрой до 256 цветов и анимацией
BMP
Простой формат без сжатия
LSB (Least Significant Bit) в изображениях, аудио, видео
LSB — самый простой и самый частый способ стеганографии. Каждый пиксель изображения состоит из трёх каналов (красный, зелёный, синий), каждый канал — число от 0 до 255. Младший бит (самый правый в двоичной записи) почти не влияет на цвет — человек разницы не видит. Можно заменить младшие биты на биты секретного сообщения.
В аудио то же самое: звук — это последовательность сэмплов (чисел от -32768 до 32767 в 16 бит). Младший бит меняет звук настолько слабо, что ухо не замечает.
В видео — LSB применяют либо к каждому кадру как к картинке, либо к аудиодорожке.
В CTF LSB — это 70% всех стего-задач на изображениях и звуке. Если картинка выглядит обычной, но подозрительной — почти всегда LSB.
На практике: берёшь изображение — извлекаешь младший бит каждого канала каждого пикселя — собираешь байты — получаешь скрытый текст или картинку с флагом.
DCT-based steganography (JPEG, F5, OutGuess, Steghide)
JPEG сжимает изображение через DCT — дискретное косинусное преобразование. Картинка разбивается на блоки 8×8, к ним применяется математика, и получаются коэффициенты частот. Низкие частоты — это основная картинка, высокие — детали.
В DCT-стего данные прячут в средних и высоких коэффициентах — они меньше влияют на качество. F5, OutGuess и Steghide — старые, но популярные методы именно для JPEG.
В CTF DCT-стего дают в задачах на JPEG-файлы. Если картинка в JPEG и выглядит чистой — это часто F5 или Steghide.
На практике: видишь JPEG — проверяешь, есть ли изменения в DCT-коэффициентах; если да — извлекаешь данные из средних частот — получаешь флаг.
Palette-based и metadata hiding (PNG, GIF, BMP)
Palette-based — это когда изображение использует палитру (таблицу цветов до 256 штук). В GIF и PNG с индексным цветом можно менять порядок цветов в палитре или использовать неиспользуемые цвета для хранения данных.
Metadata hiding — прятание в метаданных: в PNG это tEXt, zTXt, iTXt; в GIF — комментарии; в BMP — padding в конце файла.
В CTF palette-based — классика для GIF и PNG с малым количеством цветов. Metadata — первое, что проверяют в любом изображении.
На практике: видишь GIF — смотришь порядок цветов в палитре — там может быть закодирован текст; в PNG и BMP сразу проверяешь метаданные и конец файла.
Audio steganography (phase coding, echo hiding, spread spectrum)
Phase coding — данные прячут в фазе звуковой волны (сдвиг волны влево-вправо). Звук почти не меняется, но фазу можно прочитать.
Echo hiding — добавление очень тихого эха с определённой задержкой. Ухо эхо не слышит, а компьютер может извлечь.
Spread spectrum — данные распределяют по всему спектру звука (как шум). Очень устойчиво к сжатию и шуму, но сложно спрятать много информации.
В CTF audio-стего — частые задачи на WAV и MP3. Флаг прячут в фазе, эхе или спектре.
На практике: видишь аудио — проверяешь фазу волны — находишь сдвиги с данными; смотришь спектрограмму — видишь скрытый текст; слушаешь очень тихое эхо — извлекаешь биты.
Итог
Стеганография в различных форматах — это скрытие данных внутри картинок, звука и видео так, чтобы файл выглядел нормально. В stego и forensics CTF это одна из главных тем: флаг почти всегда спрятан именно в медиафайле.
Главное запомнить: LSB — самый простой и частый способ; метаданные и палитра — первое, что проверять; DCT — для JPEG; phase coding и echo — для аудио.
Ключевые слова/термины выучить: стеганография, LSB, DCT, palette-based, metadata hiding, phase coding, echo hiding, spread spectrum, JPEG, PNG, GIF, BMP.
Эти знания помогут тебе сразу после получения картинки или аудио проверять метаданные и младшие биты. В задачах ты сможешь извлечь флаг из LSB пикселей изображения, прочитать текст на спектрограмме аудио, найти сообщение в палитре GIF или в метаданных PNG — и получить флаг за минуты.
Задачи на анализ и эксплуатацию протоколов
Анализ и эксплуатация протоколов — это разбор правил общения между устройствами (компьютерами, датчиками, картами, автомобилями) и поиск в них ошибок или слабых мест. Протокол — это как язык, на котором два устройства договариваются, что и как передавать. В категориях network, hardware, IoT и иногда web на CTF эта тема встречается очень часто — флаг обычно передаётся или прячется именно в сообщениях по необычному или самописному протоколу. Новичку важно понять, что большинство протоколов не шифруют данные и легко перехватываются, а многие имеют простые ошибки проверки. Знание помогает быстро понять, что передаётся, повторить нужное сообщение или подменить его, чтобы устройство выдало флаг.
Словарь терминов
Протокол
Правила, по которым устройства обмениваются данными
Custom protocol
Самописный протокол, придуманный автором задачи
Modbus
Простой промышленный протокол для датчиков и контроллеров
DNP3
Протокол для энергетики и SCADA-систем
BACnet
Протокол для управления зданиями (вентиляция, освещение)
Bluetooth
Беспроводной протокол ближней связи
RFID
Бесконтактная идентификация (пропуска, метки)
NFC
Близкая бесконтактная связь (телефоны, оплата)
DNS
Преобразование имён сайтов в IP-адреса
ICMP
Протокол для проверки связи (ping) и ошибок
HTTP smuggling
Обход фильтров через неоднозначную интерпретацию HTTP-запросов
Sniffing
Перехват (прослушка) сообщений по протоколу
Replay
Повтор ранее перехваченного сообщения
Custom network protocols (CTF-specific, Wireshark dissector)
Custom protocol — это когда автор задачи придумывает собственные правила общения: свой формат пакета, заголовок, контрольную сумму, порядок байтов. Обычно это 4–20 байт заголовка + полезная нагрузка + CRC или XOR.
В CTF такие протоколы — классика. Флаг передаётся в ответе устройства или в специальной команде.
На практике: видишь обмен между двумя устройствами — смотришь повторяющиеся байты в начале пакетов — это заголовок; считаешь длину полезной нагрузки; проверяешь последний байт или два — это часто контрольная сумма; отправляешь свою команду с правильной суммой — получаешь флаг.
Modbus, DNP3, BACnet, proprietary IoT protocols
Modbus — очень простой промышленный протокол: адрес устройства + функция + данные + CRC. Функции 0x03 — чтение, 0x06 — запись.
DNP3 — протокол энергетики: сложнее Modbus, с защитой и подтверждениями, но часто в CTF дают упрощённую версию.
BACnet — протокол для зданий: управляет светом, климатом, лифтами. Сообщения начинаются с байта 0x55.
Proprietary IoT protocols — самописные протоколы умных устройств (лампочки, розетки, датчики). Часто на базе UDP или TCP с простым заголовком.
В CTF эти протоколы дают в задачах на промышленные системы или IoT. Флаг читают командой Modbus 0x03 или подменяют значение в BACnet.
На практике: видишь пакет с функцией 0x03 — это Modbus чтение; отправляешь запрос на адрес 1, функцию 0x03 — получаешь данные с флагом.
Bluetooth, RFID, NFC sniffing и replay
Bluetooth — беспроводной протокол. Перехват пакетов показывает имя устройства, сервисы, ключи pairing.
RFID — бесконтактные метки на 125 кГц. Перехват команд и ответов даёт UID и блоки данных.
NFC — то же, но на 13.56 МГц (телефоны, карты). Команды: SELECT, AUTH, READ, WRITE.
Sniffing — запись всего обмена. Replay — повтор сообщения от атакующего.
В CTF Bluetooth/RFID/NFC — классика. Флаг в блоке карты или в ответе устройства.
На практике: перехватываешь обмен с картой — видишь команду READ BLOCK 4 — повторяешь её — получаешь блок с флагом; эмулируешь карту с нужным UID — получаешь доступ.
DNS, ICMP, HTTP smuggling, protocol smuggling
DNS — протокол превращения имён в IP. Часто используется для передачи данных (DNS-туннель).
ICMP — протокол ping и ошибок. Можно прятать данные в поле данных ping-пакетов.
HTTP smuggling — неоднозначность в обработке заголовков Content-Length и Transfer-Encoding. Позволяет подменить запросы.
Protocol smuggling — прятание одного протокола внутри другого (HTTP внутри DNS, SSH внутри ICMP).
В CTF DNS-туннели и HTTP smuggling — частые задачи. Флаг передаётся в длинных DNS-запросах или в подменённом HTTP.
На практике: видишь много DNS-запросов на один домен с длинными поддоменами — собираешь их и декодируешь; видишь странные HTTP-запросы — пробуешь разные варианты Content-Length.
Итог
Анализ и эксплуатация протоколов — это понимание, как устройства общаются между собой и поиск ошибок в этих правилах. В network, hardware и IoT CTF это одна из главных тем: флаг передаётся или прячется именно в сообщениях.
Главное запомнить: большинство протоколов не шифруют данные — их легко перехватить; custom протоколы разбирают по повторяющимся заголовкам; RFID/NFC — бесконтактные карты с блоками; CAN — автомобильный протокол с общим проводом.
Ключевые слова/термины выучить: протокол, custom protocol, Modbus, DNP3, BACnet, Bluetooth, RFID, NFC, sniffing, replay attack, DNS, ICMP, HTTP smuggling.
Эти знания помогут тебе сразу после получения трафика или дампа понять, какой протокол используется. В задачах ты сможешь перехватить и повторить сообщение по NFC, прочитать блок MIFARE-карты, разобрать самописный протокол по заголовку и контрольной сумме, или собрать флаг из поддоменов DNS-туннеля — и получить флаг без сложных вычислений.
Задачи на анализ и генерацию шрифтов / изображений
Анализ и генерация шрифтов и изображений — это поиск скрытой информации внутри файлов шрифтов (.ttf, .otf) и картинок, а также понимание, как в них можно спрятать данные. В категориях stego, forensics и misc на CTF такие задачи встречаются очень часто: флаг прячут в глифах шрифта, в метаданных PNG или в пикселях картинки. Новичку важно понять, что обычный просмотр файла показывает только видимую часть, а секрет лежит в структуре шрифта, в невидимых чанках или в младших битах пикселей. Знание этих механизмов поможет быстро распознавать подозрительные файлы и находить флаг там, где другие видят просто буквы или обычную картинку.
Словарь терминов
TTF / OTF
Форматы файлов шрифтов (TrueType, OpenType)
Glyph
Один символ шрифта (буква, цифра, знак)
Font subsetting
Уменьшенный шрифт, где оставлены только нужные символы
PNG chunks
Блоки данных внутри PNG-файла (метаданные, текст, картинка)
Pixel art
Картинка, нарисованная по пикселям (часто с низким разрешением)
ASCII art
Картинка из символов текста
Braille
Шрифт для слепых (выпуклые точки)
Emoji encoding
Скрытие данных через последовательность эмодзи
Steganalysis
Поиск следов скрытых данных в изображении
Визуальный анализ
Ручной просмотр картинки на аномалии и скрытые символы
TTF/OTF шрифты, glyph reverse, font subsetting
TTF и OTF — это файлы шрифтов. Внутри них лежат глифы — формы каждой буквы, цифры или знака. Каждый глиф — это набор точек и линий (векторная графика).
Glyph reverse — это разбор глифов: смотрят на форму букв и ищут, не нарисованы ли там точки, линии или пиксели, которые складываются в текст или QR-код.
Font subsetting — когда из полного шрифта оставляют только нужные символы. Иногда в subset прячут лишние глифы с секретным сообщением.
В CTF шрифты — популярный способ спрятать флаг. Если дают .ttf или .otf — это почти всегда задача на анализ глифов.
На практике: видишь шрифт — открываешь его в редакторе шрифтов — смотришь глифы букв — находишь лишние точки или линии, которые складываются в флаг.
Image metadata и hidden data в PNG chunks
Метаданные изображения — это скрытая информация внутри файла: автор, дата создания, программа, комментарий, геолокация.
В PNG всё хранится в chunks (блоках): tEXt — обычный текст, zTXt — сжатый текст, iTXt — международный текст, iCCP — цветовой профиль. Флаг часто кладут в tEXt или zTXt.
В JPEG метаданные — в EXIF, в GIF — в комментариях, в BMP — в конце файла.
В CTF метаданные — первое, что проверяют. Флаг в 30–40% задач на изображения лежит именно там.
На практике: видишь PNG — сразу проверяешь tEXt и zTXt chunks; в JPEG — EXIF; если метаданные пустые — смотришь другие chunks или конец файла.
Pixel art, ASCII art, braille, emoji encoding
Pixel art — картинка, где каждый пиксель нарисован вручную. Флаг могут спрятать в цветах пикселей или в форме самой картинки.
ASCII art — картинка из символов текста. Флаг часто пишут буквами прямо в ASCII-арт.
Braille — шрифт для слепых (6 точек на символ). Иногда флаг кодируют в брайле и рисуют точками.
Emoji encoding — сообщение записывают последовательностью эмодзи. Каждый эмодзи — это символ или бит.
В CTF эти техники — простой, но эффектный способ спрятать флаг. Особенно популярны ASCII art и emoji.
На практике: видишь картинку из символов — читаешь её как текст; видишь точки в определённом порядке — переводишь в брайль; видишь цепочку эмодзи — декодируешь по таблице.
Steganalysis и визуальный анализ изображений
Steganalysis — поиск следов стеганографии: странные цвета, шум в младших битах, аномалии в гистограмме, изменения в метаданных.
Визуальный анализ — ручной просмотр картинки: увеличение, инверсия цветов, просмотр каналов RGB по отдельности, сравнение с оригиналом.
В CTF steganalysis — ключ к задачам, где стего не очевидно. Если картинка выглядит чуть странно — это намёк.
На практике: открываешь изображение — смотришь каналы R, G, B отдельно — в одном из них виден скрытый текст; инвертируешь цвета — появляется QR-код; увеличиваешь — видишь точки с флагом.
Итог
Анализ и генерация шрифтов / изображений — это поиск скрытых данных в файлах шрифтов и картинок. В stego и forensics CTF это одна из самых частых тем: флаг прячут в глифах, метаданных, пикселях или в форме самой картинки.
Главное запомнить: шрифты содержат глифы — их формы могут скрывать текст; PNG и JPEG хранят метаданные и чанки; визуальный анализ и разделение каналов показывают скрытое; ASCII art и emoji — простые способы кодирования.
Ключевые слова/термины выучить: TTF/OTF, glyph, font subsetting, PNG chunks, pixel art, ASCII art, braille, emoji encoding, steganalysis, визуальный анализ.
Эти знания помогут тебе сразу после получения картинки или шрифта проверять метаданные и младшие биты. В задачах ты сможешь найти флаг в комментарии PNG, увидеть скрытый текст в глифе шрифта, прочитать сообщение из последовательности эмодзи или обнаружить QR-код после инверсии цветов — и получить флаг за минуты.
Задачи на анализ логов и временных меток
Анализ логов и временных меток — это чтение «дневника» компьютера и проверка времени создания/изменения файлов, чтобы понять, что и когда происходило. Логи — это записи всех важных событий (вход в систему, запуск программ, ошибки), а временные метки — точное время операций с файлами. В категории forensics на CTF такие задачи встречаются почти в каждой второй задаче: флаг часто прячут в истории команд, в подозрительном событии лога или в подделанном времени файла. Новичку важно научиться быстро находить нужные строки в логах и замечать, когда время выглядит неправильно. Эти знания помогут тебе за минуты увидеть, кто и когда запускал команду с флагом, или обнаружить, что злоумышленник пытался скрыть свои действия.
Словарь терминов
Лог
Запись событий системы: время, кто и что сделал
Временные метки
Точное время создания, изменения, доступа к файлу
Timestomping
Подделка времени файла, чтобы скрыть реальную дату
MACB
Четыре метки файла: Modification, Access, Change, Birth
Event Logs
Журнал событий Windows (входы, ошибки, запуск программ)
Sysmon
Расширенный лог Windows для процессов и соединений
PowerShell history
История введённых команд в PowerShell
journalctl
Современный журнал логов в Linux (systemd)
auth.log
Журнал авторизаций в Linux (SSH, sudo)
access.log
Журнал запросов веб-сервера (Apache/Nginx)
Временные аномалии
Подозрительные расхождения во времени событий
Timezone conversions
Перевод времени из одной часовой зоны в другую
Timestomping и манипуляции MACB timestamps
Timestomping — это когда злоумышленник специально меняет время файла, чтобы оно выглядело, будто файл создали давно или недавно. Например, ставит дату создания на год назад, чтобы скрыть, что файл только что появился.
MACB — это четыре метки файла:
Modification (M) — когда меняли содержимое
Access (A) — когда читали файл
Change (C) — когда меняли метаданные (права, имя)
Birth (B) — когда создали файл (только в NTFS)
В CTF timestomping — классический способ запутать следы. Если время файла выглядит подозрительно старым, но при этом в логах он только что открывался — это манипуляция.
На практике: видишь файл flag.txt с датой создания 2010 года, но в логах запись о его открытии вчера — значит timestomping; сравниваешь MACB с другими файлами в той же папке — находишь аномалию.
Анализ Windows Event Logs, Sysmon, PowerShell history
Event Logs — главный журнал Windows. В нём записаны входы в систему (ID 4624), создание процессов (ID 4688), изменения прав и ошибки. Security-лог показывает, кто заходил, System — что запускалось.
Sysmon — дополнительный журнал, который видит больше: создание процессов с аргументами, сетевые соединения, изменения файлов. Очень полезен, когда обычные логи пустые.
PowerShell history — файл, куда записываются все команды, введённые в PowerShell. Часто именно там остаётся cat flag.txt или type flag.txt.
В CTF Windows-логи — один из самых простых источников флага. Он почти всегда в истории PowerShell или в событии запуска подозрительной команды.
На практике: открываешь Security.log — ищешь ID 4624 (вход) и 4688 (запуск процесса) — находишь команду с флагом; в PowerShell history видишь строку с type flag.txt.
Парсинг journalctl, auth.log, Apache/Nginx access logs
journalctl — современный журнал в Linux (systemd). Можно фильтровать по времени, службе или тексту. Показывает всё: входы, ошибки, запуск служб.
auth.log — журнал авторизаций. Здесь видно, кто заходил по SSH, когда использовали sudo, неудачные попытки входа.
access.log (Apache/Nginx) — журнал веб-запросов: IP, время, путь, код ответа. Часто флаг передаётся в запросе или в User-Agent.
В CTF Linux-логи — классика. Флаг часто в команде sudo или в подозрительном GET-запросе.
На практике: в auth.log ищешь строки с sudo или ssh — видишь cat flag.txt; в journalctl фильтруешь по sshd — находишь подозрительный вход; в access.log смотришь запросы с длинными строками — это может быть exfiltration.
Временные аномалии и timezone conversions
Временные аномалии — это когда время событий выглядит неправильно: файл создан раньше, чем родительская папка, или все события в логах в одном часовом поясе, а одно — в другом.
Timezone conversions — перевод времени из одной зоны в другую. Часто логи пишут в UTC, а человек смотрит в местном времени — возникает путаница.
В CTF аномалии помогают найти подделку: если время создания файла 1970 года — это ошибка или timestomping; если лог в UTC, а событие в +03:00 — это подозрительно.
На практике: видишь, что файл создан в 1970 году, но в логах его открывали вчера — значит подделка; переводишь все времена в один пояс — видишь реальную последовательность событий.
Итог
Анализ логов и временных меток — это чтение дневника компьютера и проверка времени файлов, чтобы восстановить последовательность действий. В forensics CTF это одна из самых частых тем: флаг почти всегда остаётся в истории команд или в поддельном времени.
Главное запомнить: timestomping подделывает MACB; логи Windows (Event Logs, Sysmon, PowerShell) показывают команды и входы; Linux-логи (journalctl, auth.log) — авторизации и sudo; временные аномалии выдают манипуляции.
Ключевые слова/термины выучить: лог, временные метки, timestomping, MACB, Event Logs, Sysmon, PowerShell history, journalctl, auth.log, access.log, временные аномалии, timezone conversions.
Эти знания помогут тебе сразу после получения образа системы открывать логи и искать команды с флагом. В задачах ты сможешь найти в PowerShell history строку type flag.txt, в auth.log — sudo cat flag.txt, заметить timestomping по аномальному времени файла или перевести все метки в один пояс — и восстановить реальную картину событий для получения флага.
Задачи на генерацию и анализ seed / RNG
Генерация и анализ seed / RNG — это изучение того, как программы создают «случайные» числа и как эти числа можно предсказать или восстановить. RNG (random number generator) — это функция, которая должна выдавать непредсказуемые числа, но на практике почти всегда содержит слабые места. В категории crypto на CTF такие задачи встречаются очень часто — флаг прячут в «случайном» числе, seed или предсказуемом выводе генератора. Новичку важно понять, что настоящей случайности в программах почти не бывает, а слабые генераторы ломаются за минуты. Знание этих уязвимостей поможет тебе предсказывать следующий «случайный» номер, восстанавливать seed и получать флаг в лотереях, играх, подписях и генераторах токенов.
Словарь терминов
RNG
Генератор случайных чисел
Seed
Начальное значение, от которого зависят все последующие числа
Predictable RNG
Генератор, числа которого легко угадать
mt_rand
Функция случайных чисел в PHP (Mersenne Twister)
Mersenne Twister
Один из самых популярных алгоритмов RNG
LCG
Линейный конгруэнтный генератор (очень простой и слабый)
Linear congruential generator
Простейший RNG с формулой next = (a × current + c) mod m
Commit-reveal scheme
Схема: сначала прячешь число, потом открываешь его
Blockchain RNG attacks
Атаки на генераторы случайных чисел в блокчейне
Nonce
Одноразовое случайное число (часто используется в подписях)
Predictable RNG (mt_rand, rand, Java SecureRandom)
Predictable RNG — это когда генератор случайных чисел использует слабый или предсказуемый алгоритм. Самые частые примеры:
mt_rand в PHP — реализация Mersenne Twister. Если знаешь 624 последовательных числа — восстанавливаешь всё состояние и предсказываешь будущее.
rand в C — часто слабый линейный генератор или mt_rand.
Java SecureRandom — в старых версиях или при неправильном использовании seed может быть предсказуем.
В CTF predictable RNG — одна из самых простых и частых тем. Дают несколько «случайных» чисел — просят следующее или seed.
На практике: видишь 5–10 чисел из mt_rand — берёшь 624 значения (или меньше при известном seed) — восстанавливаешь состояние — предсказываешь следующий номер и получаешь флаг.
Mersenne Twister reverse engineering
Mersenne Twister (MT19937) — очень популярный алгоритм RNG. Он генерирует 624 числа, потом перемешивает их и выдаёт. После 624 чисел цикл повторяется.
Reverse engineering — восстановление внутреннего состояния по выданным числам. Зная 624 последовательных значения, можно полностью восстановить массив и предсказывать всё вперёд и назад.
В CTF Mersenne Twister — классика. Дают 624 или чуть меньше чисел — нужно предсказать следующее или восстановить seed.
На практике: собираешь 624 значения из mt_rand — применяешь untempering (обратное перемешивание) — получаешь состояние — генерируешь любые будущие числа и находишь нужное.
LCG cracking, linear congruential generators
LCG — самый простой генератор случайных чисел. Формула: next = (a × current + c) mod m Где a — множитель, c — приращение, m — модуль.
Если известны хотя бы 3–6 последовательных чисел — можно решить систему уравнений и найти a, c, m, а потом предсказывать всё вперёд и назад.
В CTF LCG — одна из первых тем для новичков. Дают 4–5 чисел — просят следующее или seed.
На практике: видишь числа 12345, 67890, 23456 — предполагаешь m = 2³² — решаешь систему — находишь a и c — предсказываешь следующее число и получаешь флаг.
Commit-reveal schemes, blockchain RNG attacks
Commit-reveal scheme — схема, где сначала все участники отправляют хэш от своего числа (commit), потом открывают числа (reveal), и из них получается общее «случайное» значение.
Атака: последний участник видит все предыдущие числа и может отказаться раскрывать своё, если результат ему невыгоден.
Blockchain RNG attacks — когда блокчейн использует block hash, timestamp или RANDAO как источник случайности. Майнер может слегка повлиять на результат.
В CTF commit-reveal — частая тема в задачах на игры и лотереи. Blockchain RNG — в задачах на смарт-контракты.
На практике: видишь схему commit-reveal — ждёшь, пока все кроме тебя раскрыли числа — решаешь, выгодно ли тебе раскрывать своё — если нет, не раскрываешь и побеждаешь.
Итог
Задачи на генерацию и анализ seed / RNG — это предсказание и восстановление «случайных» чисел в программах и блокчейне. В crypto CTF это одна из самых частых тем: флаг прячут в предсказуемом выводе генератора.
Главное запомнить: mt_rand ломается по 624 числам; LCG решается по 3–6 значениям; commit-reveal уязвим для последнего участника; blockchain RNG можно предсказать или повлиять на него.
Ключевые слова/термины выучить: RNG, seed, predictable RNG, mt_rand, Mersenne Twister, LCG, linear congruential generator, commit-reveal scheme, blockchain RNG attacks.
Эти знания помогут тебе в любой задаче, где есть «случайное» число — сразу проверить, не mt_rand ли это, не LCG ли, или не commit-reveal. Ты сможешь предсказать следующий номер в лотерее, восстановить seed по нескольким значениям или отказаться раскрывать commit и выиграть — и получить флаг за минуты.