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

Инструменты и техники стегоанализа

Стегоанализ — это умение находить и доказывать, что в файле (картинке, аудио, документе) спрятано секретное сообщение, даже если оно выглядит как обычный файл. Это обратная сторона стеганографии: мы не прячем, а ищем следы. В CTF стегоанализ относится в первую очередь к категории Steganography, иногда пересекается с Forensics и Misc. Чаще всего такие знания нужны в задачах, где классические способы извлечения (LSB, steghide, пробелы) не сработали, а флаг всё равно где-то внутри. Новичку важно освоить базовый набор инструментов и простые проверки, потому что именно они позволяют за 5–30 минут понять, есть ли стего вообще, и в каком направлении копать дальше — это сильно ускоряет решение и спасает от бесполезного перебора.

Словарь терминов

Термин
Что это простыми словами

Стегоанализ

Поиск и доказательство наличия скрытых данных в файле

Stegsolve

Программа с кучей фильтров и плоскостей для анализа картинок

zsteg

Инструмент, который автоматически ищет стего в PNG и BMP

stegdetect

Старый детектор стего в JPEG-картинках (F5, OutGuess, JSteg)

stegbreak

Программа для подбора паролей к steghide и других

StegExpose

Набор статистических тестов для поиска стего в картинках

aletheia

Современный мощный инструмент для стегоанализа и извлечения

Binwalk

Ищет и извлекает встроенные файлы, архивы, прошивки из образа

foremost

Извлекает файлы по сигнатурам без учёта файловой системы

scalpel

Быстрый carveр файлов по заголовкам и футерам

Chi-square

Статистический тест, показывает, насколько данные случайны

RS-анализ

Тест на регулярность парности пикселей в картинке

SPA

Sample Pair Analysis — ищет следы изменения младших битов

YARA

Язык для создания правил поиска определённых байтовых паттернов

Stegsolve, zsteg, stegdetect, stegbreak

Stegsolve — это самая первая программа, которую стоит открыть почти с любой картинкой в стего-задаче. Она показывает картинку в разных цветовых каналах (R, G, B, A), плоскостях битов (bit 0 — младший, bit 7 — старший), применяет фильтры (XOR, инверсия, поворот и т.д.). Очень часто флаг сразу видно в одной из плоскостей или после XOR с каким-то числом.

zsteg автоматически проверяет PNG и BMP на десятки популярных методов встраивания: LSB, палитра, сжатие, chunk’и и т.д. Выдаёт готовые строки вида “text: флаг здесь”. Работает за секунды.

stegdetect — старый, но до сих пор полезный для JPEG. Показывает процент вероятности, что в картинке стоит F5, JSteg, OutGuess или другие классические JPEG-стего. stegbreak — это его напарник: подбирает пароли к steghide или brute-force’ит простые ключи.

В CTF эти инструменты — must-have для beginner и medium задач. На практике: открываешь картинку в Stegsolve → листаешь плоскости и каналы → если видишь странные полосы или текст — это почти всегда флаг. Запускаешь zsteg file.png → читаешь вывод. Если stegdetect говорит >50% — точно есть стего в JPEG.

StegExpose, StegSecret, aletheia

StegExpose — это набор статистических тестов (Primary Sets, Chi-square, RS, Sample Pairs и др.), которые показывают, насколько картинка “странная” по сравнению с обычными изображениями. Выдаёт таблицу с числами: чем выше — тем вероятнее стего.

StegSecret — более новый инструмент, который тоже делает статистику, но ещё пытается извлечь данные простыми методами (LSB разных порядков, палитра и т.д.).

aletheia — один из самых сильных открытых инструментов на сегодня. Умеет определять метод стего (включая адаптивные), извлекать payload, работать с JPEG и PNG, использовать машинное обучение для некоторых случаев. Часто находит то, что Stegsolve и zsteg пропускают.

В CTF эти инструменты появляются в medium-hard задачах, особенно когда нужно доказать наличие стего или извлечь данные без подсказок. Как применять: запускаешь StegExpose → если тесты сильно отличаются от нормы — точно спрятано. aletheia часто даёт готовый флаг или хотя бы метод, который использовали. Полезно, когда классика молчит.

Binwalk, foremost, scalpel для извлечения

Иногда стего — это просто другой файл, зашитый внутрь картинки, архива или дампа. Здесь помогают инструменты “carving” (вырезание по сигнатурам).

Binwalk ищет внутри файла заголовки ZIP, RAR, PNG, JPEG, исполняемых файлов, прошивок и т.д. и может автоматически извлечь их. Очень часто в задачах флаг лежит в маленьком заархивированном файле внутри большой картинки.

foremost и scalpel делают похожее, но быстрее и с упором на восстановление удалённых или частично перезаписанных файлов. Они ищут по “магии” (первые байты формата: PNG = 89 50 4E 47, ZIP = 50 4B 03 04 и т.д.).

В CTF это один из самых частых приёмов в forensics-стего и misc-задачах. На практике: binwalk -e подозрительный_файл → смотришь папку имя → там часто лежит другой файл с флагом. Если binwalk ничего не нашёл — пробуешь foremost или scalpel с конфигом на нужные типы (jpg, png, zip, pdf).

YARA-правила и статистические тесты (Chi-square, RS, SPA)

YARA — это язык, на котором пишут правила “если в файле есть такая последовательность байт — это подозрительно”. В стегоанализе YARA используют для поиска следов конкретных инструментов (steghide, snow, stegcloak), заголовков payload или аномальных строк.

Статистические тесты проверяют, насколько данные в картинке похожи на случайный шум:

  • Chi-square — если младшие биты слишком равномерны или, наоборот, слишком предсказуемы — вероятно LSB-встраивание.

  • RS-анализ — смотрит на пары пикселей и их регулярность после изменений.

  • SPA (Sample Pair Analysis) — ищет изменения в соотношении чётных/нечётных значений.

Эти тесты часто встроены в StegExpose, aletheia и другие программы.

В CTF YARA и статистика помогают в задачах, где нужно понять метод без подсказок или когда организаторы спрятали следы инструмента. На практике: если все визуальные проверки прошли — запускаешь статистику → аномалии в RS или Chi-square кричат “LSB есть”. YARA-правило на “flag{” или “ctf{” иногда сразу выдаёт координаты скрытого текста.

Главное запомнить: стегоанализ — это комбинация визуального поиска (Stegsolve), автоматического извлечения (zsteg, aletheia), статистики (StegExpose, RS, SPA) и поиска вложенных файлов (binwalk, foremost). Ключевые термины для запоминания: Stegsolve, zsteg, stegdetect, aletheia, Binwalk, Chi-square, RS-анализ, SPA, YARA, carving, StegExpose. Эти знания помогут тебе в 80% стего-задач: за пару минут понять, есть ли стего вообще, какой метод использовали и как быстро добраться до флага — вместо того чтобы часами гадать и пробовать всё подряд. С таким набором ты уже уверенно решишь beginner и большинство medium задач по стеганографии.


Метаданные и скрытие в заголовках файлов

Метаданные — это дополнительная информация, которую файл хранит о самом себе: кто создал, когда, какой программой, какие теги, комментарии, геолокация и даже иногда скрытые куски данных. В CTF эта тема относится в первую очередь к категориям Stego и Forensics. Чаще всего такие задачи встречаются в начальных и средних уровнях, где дают картинку, документ или PDF и просят найти флаг, ключ или спрятанный текст именно в метаданных или заголовках. Новичку важно освоить эту тему в первую очередь, потому что она одна из самых простых и быстрых для решения — часто флаг лежит буквально в двух кликах от открытия файла. Когда научишься сразу проверять EXIF, PNG-чанки, OLE и PDF-метаданные — сможешь решать 30–50% forensic- и stego-задач за 5–10 минут.

Словарь терминов

Термин
Что это простыми словами

метаданные

Скрытая служебная информация внутри файла (автор, дата, теги)

EXIF

Метаданные в фотографиях (камера, дата съёмки, GPS)

XMP

Современный формат метаданных (Adobe), хранится как XML

IPTC

Старый стандарт метаданных для фото (заголовок, автор, ключевые слова)

PNG chunk

Кусочек данных внутри PNG-файла (может содержать текст)

tEXt

Простой текстовый чанк в PNG (без сжатия)

zTXt

Сжатый текстовый чанк в PNG

iTXt

Текстовый чанк в PNG с поддержкой Unicode и сжатия

OLE-объект

Встроенные объекты в офисных документах Microsoft (Word, Excel)

DOCX/XLSX

Современные форматы Office (архивы с XML внутри)

PDF метаданные

Поля в PDF (Creator, Producer, Title, Keywords)

EXIF, XMP, IPTC в изображениях

EXIF — это метаданные, которые камера или редактор фото автоматически записывает в JPEG и некоторые другие форматы. Там лежит: модель камеры, дата съёмки, геолокация, ориентация, даже настройки вспышки и экспозиции.

XMP — более новый и гибкий формат от Adobe. Хранится как XML внутри файла, может содержать любые теги, включая длинные комментарии или скрытый текст.

IPTC — старый стандарт, чаще используется в профессиональной фотографии. Содержит заголовок, описание, ключевые слова, имя автора, копирайт.

В CTF метаданные — один из самых частых способов спрятать флаг или подсказку. Открываешь картинку → смотришь EXIF/XMP/IPTC → там часто лежит флаг, пароль или base64-строка.

Скрытие в PNG chunks (tEXt, zTXt, iTXt)

PNG-файл состоит из чанков — отдельных блоков данных. Некоторые чанки предназначены именно для текста и комментариев.

tEXt — простой текст без сжатия (ключ=значение). zTXt — сжатый текст (zlib). iTXt — текст с поддержкой Unicode и сжатия.

Авторы часто кладут флаг или ключ именно в эти чанки (tEXt — самый простой и частый). В CTF это решается за секунды: смотришь все текстовые чанки → находишь подозрительный текст → читаешь.

OLE-объекты и метаданные в офисных форматах (DOCX, XLSX)

DOCX и XLSX — это ZIP-архивы с XML-файлами внутри. Внутри можно спрятать:

  • обычные метаданные (автор, название, комментарий)

  • OLE-объекты — встроенные файлы (другой документ, картинка, макрос)

  • скрытые XML-теги или комментарии

В CTF часто дают офисный документ → внутри лежит либо флаг в метаданных, либо другой файл в OLE-объекте, либо зашифрованный кусок в скрытом XML.

Распаковываешь как ZIP → смотришь core.xml, app.xml, комментарии → находишь подозрительные строки или объекты.

Метаданные в PDF (Creator, Producer, скрытые объекты)

PDF — это тоже контейнер с кучей метаданных. Основные поля:

  • Creator — какая программа создала

  • Producer — какая конвертировала в PDF

  • Title, Subject, Keywords, Author

  • CreationDate, ModDate

Кроме того, в PDF можно спрятать:

  • скрытые объекты (не отображаются в просмотрщике)

  • комментарии и аннотации

  • встроенные файлы (attachments)

  • JavaScript или формы

В CTF PDF — один из любимых форматов авторов. Смотришь метаданные → ищешь скрытые объекты или вложения → часто там лежит флаг, архив или подсказка.

Итог

Главное, что нужно запомнить: метаданные и заголовки файлов — это первое место, куда авторы прячут флаги и ключи, потому что их очень легко добавить и очень легко забыть удалить.

Ключевые слова и термины для запоминания: метаданные, EXIF, XMP, IPTC, PNG chunk, tEXt, zTXt, iTXt, OLE-объект, DOCX/XLSX, PDF метаданные.

Эти знания помогают:

  • сразу проверить EXIF/XMP в любой картинке — часто флаг там

  • открыть PNG и посмотреть tEXt/zTXt/iTXt чанки — второй по частоте способ

  • распаковать DOCX/XLSX как ZIP и найти скрытый текст или OLE

  • посмотреть метаданные PDF и проверить вложения — третий по популярности метод

  • за 2–5 минут понять, что задача решается именно через метаданные, а не сложный стегоанализ

Начни каждую stego/forensics-задачу с проверки метаданных и заголовков — это решает 40–60% задач быстрее всего. Если там пусто — переходи к LSB или другим методам.


Основы стеганографии и её типов

Стеганография — это способ прятать одно сообщение внутри другого так, чтобы никто не заподозрил, что там вообще что-то спрятано. В CTF эта тема относится в первую очередь к категориям Stego (стеганография) и Forensics. Чаще всего встречается в задачах, где тебе дают картинку, аудио, видео или другой файл и просят найти внутри скрытый текст, флаг, ключ или картинку. Новичку важно её понять, потому что стего-задачи — одни из самых частых на тренировочных платформах и в соревнованиях начального-среднего уровня. Когда разберёшься в основных методах и как их искать — сможешь решать 60–70% всех стего-задач без долгих поисков и догадок.

Словарь терминов

Термин
Что это простыми словами

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

Прятание сообщения внутри другого файла незаметно для глаз

стегоанализ

Поиск и извлечение скрытого сообщения из файла

payload

То, что спрятано внутри файла (текст, картинка, флаг)

carrier

Файл-носитель, в который прячут payload (картинка, аудио)

пространственный метод

Изменение значений пикселей напрямую (LSB, замена младших бит)

трансформационный метод

Изменение в преобразованном виде (частоты, DCT, wavelet)

пассивный стегоанализ

Просто смотрим файл и пытаемся найти аномалии

активный стегоанализ

Создаём свои стего-файлы и сравниваем с подозрительным

PSNR

Метрика, показывает, насколько картинка изменилась визуально

SSIM

Метрика, оценивает структурную схожесть двух картинок

Классификация методов (пространственные, трансформационные, статистические, адаптивные)

Пространственные методы Работаем напрямую с пикселями или байтами файла. Самый популярный — LSB (Least Significant Bit): меняем младший бит каждого канала цвета (R, G, B). Человек почти не видит разницы, а мы можем спрятать 1 бит на канал → 3 бита на пиксель.

Трансформационные методы Сначала переводим картинку в другую область (DCT, wavelet), прячем данные там, потом обратно. Менее заметны при сжатии (JPEG), но сложнее реализовать и искать.

Статистические методы Меняют статистику файла (распределение значений, корреляции), чтобы спрятать данные. Очень трудно обнаружить визуально, но требуют сложного анализа.

Адаптивные методы Данные прячут не везде, а только в тех местах, где изменения будут наименее заметны (тёмные области, шумные участки). Самые скрытные, но и самые сложные для извлечения.

В CTF 80% задач — это простые пространственные методы (LSB в PNG/BMP). Если картинка выглядит «шумной» или имеет странные цвета — скорее всего LSB.

Разница между стеганографией, криптографией и водяными знаками

Стеганография — прячет сам факт наличия сообщения. Никто не должен заподозрить, что в картинке что-то есть.

Криптография — делает сообщение непонятным, даже если его нашли. Но все видят, что сообщение зашифровано.

Водяные знаки — тоже прячут информацию, но цель другая: доказать авторство или защитить от копирования. Их специально делают трудноудалимыми, даже если кто-то знает, что они есть.

В CTF стеганография почти всегда про скрытие флага. Если файл выглядит нормально, но в нём что-то спрятано — это стего. Если видно шифртекст — это крипто.

Пассивный и активный стегоанализ

Пассивный стегоанализ Смотрим только на подозрительный файл. Ищем аномалии: странное распределение цветов, шум в LSB, необычные значения в метаданных.

Активный стегоанализ Создаём свои картинки с известным скрытым сообщением → сравниваем их с подозрительной. Или специально искажаем файл и смотрим, как меняется поведение.

В CTF чаще всего пассивный:

  • смотрим LSB-плоскости (все младшие биты красного/зелёного/синего канала)

  • проверяем метаданные (EXIF, комментарии)

  • смотрим на гистограмму значений

Активный используют, когда подозревают сложный метод и хотят подтвердить наличие стего.

Метрики скрытности (PSNR, SSIM, chi-square тест)

PSNR (Peak Signal-to-Noise Ratio) Показывает, насколько сильно картинка изменилась. Чем выше PSNR — тем меньше заметны изменения (обычно >40–45 dB — почти незаметно).

SSIM (Structural Similarity Index) Оценивает, насколько похожи две картинки по структуре, яркости, контрасту. Значение ближе к 1 — картинки почти одинаковые.

Chi-square тест Статистический тест на случайность распределения значений. Если LSB-плоскость слишком «равномерная» — это подозрительно (скрытые данные часто делают распределение более равномерным).

В CTF метрики помогают понять, есть ли стего:

  • низкий PSNR/SSIM → явные изменения → скорее всего LSB

  • chi-square показывает аномалию в младших битах → там данные

Итог

Главное, что нужно запомнить: стеганография прячет сам факт наличия сообщения, а не делает его непонятным, поэтому ищем аномалии в файле, а не пытаемся сразу расшифровать.

Ключевые слова и термины для запоминания: стеганография, LSB, пространственный метод, трансформационный метод, стегоанализ, пассивный анализ, активный анализ, PSNR, SSIM, chi-square тест, payload, carrier.

Эти знания помогают:

  • сразу проверить картинку на LSB и вытащить скрытый текст/картинку

  • понять, что странный шум в младших битах — это не артефакт, а спрятанные данные

  • отличить стего от крипто (если видно шифртекст — это крипто)

  • использовать метрики, чтобы убедиться, что изменения не случайны

  • быстро решать 70–80% задач начального и среднего уровня в стего

Начни каждую стего-задачу с просмотра LSB-плоскостей и метаданных — это решает большинство задач быстрее всего. Если там ничего нет — переходи к гистограммам и статистике.


Палитровая стеганография и GIF/PNG

Палитровая стеганография — это способ спрятать данные внутри картинки, которая использует ограниченную палитру цветов (обычно 256 или меньше), меняя либо сами цвета в палитре, либо номера, которыми пиксели ссылаются на эти цвета. В CTF эта тема относится в первую очередь к категориям Stego и Forensics. Чаще всего такие задачи встречаются на начальном и среднем уровне, где дают GIF или индексированный PNG и просят найти скрытый текст, флаг или маленькую картинку. Новичку важно её понять, потому что это один из самых простых и частых способов стеганографии после обычного LSB, и решается быстрее всего. Когда разберёшься, как работает палитра и индексы — сможешь решать большинство таких задач за 5–20 минут.

Словарь терминов

Термин
Что это простыми словами

палитра

Таблица из 256 цветов (или меньше), которую использует картинка

индексированное изображение

Картинка, где каждый пиксель — это номер цвета из палитры

GIF

Формат, который почти всегда использует палитру (до 256 цветов)

индексированный PNG

PNG-8 — версия PNG с палитрой вместо полного RGB

индекс

Номер от 0 до 255, которым пиксель ссылается на цвет в палитре

прозрачность

Дополнительный байт в палитре, который говорит, насколько цвет прозрачный

palette sorting

Изменение порядка цветов в палитре для записи скрытых данных

LSB в индексах

Изменение младшего бита номера цвета для записи 1 бита данных

histogram anomalies

Неестественное распределение цветов или индексов — признак стего

Скрытие в палитре GIF и индексированных PNG

GIF и индексированный PNG (PNG-8) хранят цвета не для каждого пикселя отдельно, а в общей таблице — палитре. Каждый пиксель — это просто число от 0 до 255, которое указывает, какой цвет из палитры взять.

Скрытие данных происходит двумя основными способами:

  • меняют значения цветов в палитре (например младшие биты RGB-компонент)

  • меняют сами индексы пикселей (порядок или номера)

В CTF это самый частый метод для GIF-задач. Открываешь картинку → смотришь палитру → видишь странные маленькие изменения в цветах или индексах → вытаскиваешь биты → получаешь флаг.

Изменение порядка палитры и прозрачности

Порядок цветов в палитре можно менять без заметного ущерба для картинки. Если поменять местами два похожих цвета — глаз почти не заметит, а мы можем закодировать 1 бит (поменяли — 1, не поменяли — 0).

Прозрачность (альфа-канал в палитре) тоже можно использовать. Меняют младший бит прозрачности для каждого цвета → получаем ещё 1 бит на цвет палитры (до 256 бит).

В CTF часто дают GIF, где данные спрятаны именно в перестановке палитры или в альфа-битах. Сортируешь палитру по RGB → смотришь, какие цвета поменялись местами → читаешь биты.

Palette sorting и LSB в индексах

Palette sorting Сортируют палитру по какому-то правилу (например по яркости или по RGB-значению). Если автор спрятал данные — порядок после сортировки будет отличаться от ожидаемого → можно вытащить биты по разнице позиций.

LSB в индексах Меняют младший бит самого индекса пикселя (0–255 → можно поменять +1 или -1). Изменение одного младшего бита индекса обычно меняет цвет очень слабо — человек не замечает.

В CTF это частый способ для задач, где картинка выглядит почти нормально. Смотришь индексы пикселей → берёшь младшие биты → собираешь байты → получаешь сообщение.

Обнаружение палитровой стеганографии (histogram anomalies)

Когда автор прячет данные в палитре или индексах — статистика цветов или индексов становится неестественной. Обычная картинка имеет плавное распределение цветов. После стего — появляются лишние маленькие изменения или неравномерность.

Основные признаки:

  • гистограмма цветов палитры имеет слишком много похожих значений

  • индексы пикселей показывают аномально равномерное распределение младших бит

  • после сортировки палитры порядок сильно отличается от логичного

В CTF эти признаки помогают понять, что задача именно про палитру. Смотришь гистограмму индексов и цветов → видишь аномалию → сразу проверяешь палитру и индексы.

Итог

Главное, что нужно запомнить: в GIF и индексированном PNG данные прячут либо в самой палитре (изменение цветов или их порядка), либо в младших битах индексов пикселей — и это почти всегда выдаёт себя через неестественную статистику.

Ключевые слова и термины для запоминания: палитра, индексированное изображение, GIF, индексированный PNG, индекс, прозрачность, palette sorting, LSB в индексах, histogram anomalies.

Эти знания помогают:

  • сразу открыть GIF и посмотреть палитру — часто флаг там

  • проверить младшие биты индексов пикселей — второй по частоте способ

  • увидеть аномалию в гистограмме → понять, что задача именно про палитру

  • отсортировать палитру и найти изменения в порядке цветов

  • решать 70–80% задач с GIF/PNG-8 начального и среднего уровня за 5–20 минут

Начни каждую задачу с GIF или индексированного PNG с просмотра палитры и гистограммы индексов — это решает большинство таких задач быстрее всего. Если там ничего нет — переходи к обычному LSB в RGB.


Современные методы стеганографии

Современная стеганография — это уже не просто замена младших битов в картинке, а умные способы прятать данные так, чтобы даже очень хорошие программы-детекторы почти ничего не заметили. Здесь используются адаптивные алгоритмы, которые меняют картинку по минимуму именно там, где изменения меньше всего бросаются в глаза, и нейронные сети, которые учатся прятать и находить скрытое. В CTF это относится в первую очередь к категории Steganography (иногда пересекается с Misc и Forensics). Чаще всего такие методы встречаются в hard и expert задачах на больших соревнованиях, где обычные LSB, steghide и zsteg уже не работают. Новичку стоит хотя бы знать про это, чтобы не тратить часы на старые методы, когда флаг спрятан по-новому. Понимание помогает быстро переключиться на мысль "а вдруг тут нейронка или адаптив?" и не застревать.

Словарь терминов

Термин
Что это простыми словами

Адаптивная стеганография

Прятание данных с умным выбором мест, где изменения почти незаметны

Стоимость (cost)

Число, показывающее, насколько опасно менять этот пиксель

HUGO

Один из первых адаптивных методов, минимизирует заметные искажения

WOW

Адаптивный алгоритм, использует wavelet для поиска "безопасных" мест

S-UNIWARD

Универсальный адаптивный метод, работает без знания детектора

MG

Метод минимизации Gibbs-эффекта для лучшей скрытности

SteganoGAN

GAN-модель, которая прячет данные в картинке с высокой ёмкостью

HiDDeN

Нейросеть, которая учится прятать и извлекать данные end-to-end

Генератор

Часть GAN, которая создаёт стего-изображение

Дискриминатор

Часть GAN, которая пытается отличить стего от обычной картинки

Steganalysis

Поиск и доказательство наличия скрытых данных

CNN

Нейросеть с свёртками, основа большинства современных детекторов

SRNet

Одна из самых сильных CNN для поиска стего в картинках

Payload

Скрываемые данные (флаг, текст, файл)

Cover image

Обычная картинка, в которую прячут данные

Адаптивная стеганография (HUGO, WOW, S-UNIWARD, MG)

Адаптивная стеганография прячет данные не везде подряд, а только там, где изменения меньше всего повлияют на статистику картинки. Вместо равномерного изменения всех пикселей алгоритм считает для каждого пикселя "стоимость" — насколько опасно его менять. Чем выше стоимость, тем реже туда лезут.

HUGO (Highly Undetectable steGanOgraphy) одним из первых ввёл идею минимизировать расстояние между cover и стего в специальной метрике, близкой к тому, как работают детекторы. WOW использует вейвлет-преобразование, чтобы находить текстуры и края — там изменения почти незаметны. S-UNIWARD пошёл дальше и сделал универсальную стоимость без привязки к конкретному детектору. MG фокусируется на уменьшении "шумов" вроде Gibbs-эффекта после изменений.

Все эти методы сильно лучше классического LSB: детекторы на богатых моделях их ловят хуже, а иногда вообще не ловят при маленькой нагрузке (payload < 0.2–0.4 bpp).

В CTF такие алгоритмы часто используются в medium-hard задачах на изображениях, где stegsolve и zsteg ничего не показывают. На практике: если обычные инструменты молчат, а картинка выглядит естественно — подумай про адаптив. Иногда флаг лежит в младших битах, но только в "дешёвых" местах по стоимости WOW/S-UNIWARD — можно попробовать извлечь с помощью симуляции этих алгоритмов или посмотреть на разницу cover-stego.

Deep learning стеганография (SteganoGAN, HiDDeN)

Здесь вместо жёстких формул используются нейронные сети, которые учатся прятать данные. Модель видит тысячи картинок, учится менять их так, чтобы стего выглядело как обычное, и при этом можно было извлечь скрытое.

SteganoGAN — это GAN, где генератор прячет произвольные биты в картинке, а дискриминатор пытается их найти. Получается высокая ёмкость (до 4+ бит на пиксель) и очень хорошая скрытность против старых детекторов. HiDDeN — end-to-end система: одна сеть кодирует и прячет, другая извлекает, третья проверяет на незаметность. Всё учится вместе, без ручных формул стоимости.

Такие методы дают картинки, которые проходят даже современные CNN-детекторы при разумной нагрузке.

В CTF это пока редкость на beginner, но уже появляется на advanced соревнованиях 2024–2025 годов. Задача может быть: дана картинка, которая выглядит идеально, но содержит флаг, спрятанный нейронкой. Как применять: если ничего не находится классикой — подумай, не нейронка ли. Иногда организаторы дают намёк в описании ("AI", "deep", "hidden network") или оставляют модель/веса — тогда можно попробовать извлечь payload через декодер сети.

Генеративно-состязательные сети для стего

GAN (Generative Adversarial Networks) — это когда две сети дерутся: генератор пытается создать стего-картинку, дискриминатор пытается понять, где спрятано. Со временем генератор становится очень хитрым и делает изменения почти невидимыми.

В стего-GAN генератор получает cover и payload, выдаёт стего. Дискриминатор смотрит стего и cover, пытается сказать "это с секретом". Есть ещё сеть-извлекатель, которая должна вытащить payload без ошибок. Всё учится одновременно — получается баланс между скрытностью, качеством картинки и точностью извлечения.

Это один из самых современных подходов: стего почти неотличимо визуально и статистически.

В CTF GAN-стего встречается в экспертных задачах, часто с намёком в названии или описании. Иногда дают зашифрованную модель или просят понять, что это GAN. На практике: если картинка подозрительно чистая, но классика не работает — ищи следы GAN (аномалии в шуме, необычные артефакты после фильтров). В реальных задачах иногда дают decoder часть модели.

Обнаружение с помощью CNN и SRNet

Steganalysis — это обратная сторона: как найти, что в картинке что-то спрятано. Современные детекторы используют CNN — нейросети со свёртками, которые сами учатся находить слабые следы стего.

SRNet — одна из самых мощных на сегодня. Она не использует заранее придуманные фильтры, а сразу учится на сырых картинках, находя остатки шума от встраивания. Работает и на spatial, и на JPEG. Другие CNN (YeNet, XuNet) тоже сильные, но SRNet часто побеждает в тестах.

Эти детекторы ловят почти все классические и многие адаптивные методы при нагрузке >0.1–0.2 bpp.

В CTF знание про CNN-детекторы помогает понять, почему старые методы уже не прячут надёжно, и почему организаторы используют новые. Иногда задача — "обмануть" SRNet-подобный детектор или найти слабое место. На практике: если подозреваешь адаптив или GAN — помни, что SRNet их ловит лучше всего. Но в CTF редко дают запускать детектор — чаще нужно понять по картинке или описанию.

Главное запомнить: современная стего — это уже не грубые замены битов, а адаптивные стоимости (HUGO/WOW/S-UNIWARD/MG) и нейронные сети (SteganoGAN, HiDDeN, GAN-стего), которые учатся обманывать детекторы. Обнаружение теперь тоже на CNN, особенно SRNet. Ключевые термины для запоминания: адаптивная стеганография, HUGO, WOW, S-UNIWARD, SteganoGAN, HiDDeN, GAN, генератор, дискриминатор, SRNet, CNN steganalysis. Эти знания спасут тебя от тупика в hard-задачах: когда LSB и пробелы не работают, ты сразу подумаешь "а вдруг адаптив или нейронка?", правильно оценишь уровень сложности и быстрее перейдёшь к нужному подходу — будь то анализ шума, поиск аномалий или понимание, что флаг спрятан очень хитро.


Стеганография в аудиофайлах

Стеганография в аудиофайлах — это когда секретное сообщение (текст, картинку, флаг) прячут внутри звукового файла так, чтобы человек при прослушивании почти ничего не заметил. В CTF эта тема относится в первую очередь к категориям Stego и Forensics. Чаще всего такие задачи встречаются на начальном и среднем уровне, где дают WAV, MP3 или другой аудиофайл и просят найти скрытый текст, архив или другой файл. Новичку важно освоить эту тему, потому что аудио-стего — одна из самых частых и простых разновидностей стеганографии в соревнованиях. Когда поймёшь, как работают младшие биты в звуке и другие методы — сможешь решать большинство аудио-задач за 10–30 минут.

Словарь терминов

Термин
Что это простыми словами

LSB

Младший значащий бит — самый правый бит в байте звука

PCM

Несжатый формат звука — сырые образцы амплитуды (WAV)

WAV

Самый простой контейнер для PCM-звука

phase coding

Метод, который меняет фазу звука, чтобы спрятать данные

echo hiding

Прячет данные, добавляя очень тихое эхо с нужными интервалами

spread spectrum

Распределяет данные по всему спектру звука, как шум

parity coding

Меняет чётность (parity) значения образца для записи бита

least significant parity

Меняет младший бит так, чтобы чётность стала нужной

спектральный анализ

Смотрят на частоты звука, чтобы найти изменения

статистические тесты

Проверяют, насколько значения в звуке случайны

LSB в PCM и WAV-файлах

PCM — это когда звук записан как последовательность чисел (образцов), каждое число показывает, насколько высоко или низко колеблется мембрана динамика в данный момент. В WAV-файле эти числа обычно 16-битные (от -32768 до 32767). Младший бит каждого образца почти не влияет на то, как звучит аудио — человек не слышит разницы между 10000 и 10001.

Меняя только этот младший бит, можно спрятать 1 бит данных на каждый образец. Стерео-файл (два канала) даёт 2 бита на образец. Минутный трек 44100 Гц — это около 5 МБ данных, которые можно спрятать.

В CTF это самый частый метод в аудио-задачах. Достаёшь все младшие биты каждого образца → собираешь их в байты → получаешь скрытый текст или файл.

Phase coding, echo hiding, spread spectrum

Phase coding Разбивает звук на маленькие блоки, переводит каждый блок в частоты (FFT), меняет фазу некоторых частот. Потом обратно в звук. Человек почти не слышит изменений, потому что ухо плохо различает фазу.

Echo hiding Добавляет очень тихое эхо с определённым интервалом. Если интервал 0.001 секунды — бит 0, 0.002 секунды — бит 1. Эхо настолько тихое, что сливается с оригинальным звуком.

Spread spectrum Данные распределяются по всему спектру частот, как слабый шум. Чтобы извлечь — нужно знать ключ и провести корреляцию.

В CTF эти методы встречаются реже LSB, но иногда дают WAV с echo hiding или phase coding. Ищи подозрительные повторяющиеся тихие отголоски или изменения фазы в спектрограмме.

Parity coding и least significant parity

Parity coding Каждый образец имеет чётность (сумма битов чётная или нечётная). Для записи бита 0 делают чётность чётной, для 1 — нечётной. Меняют обычно младший бит, чтобы добиться нужной чётности.

Least significant parity То же самое, но явно меняют только младший бит, чтобы чётность стала правильной.

В CTF это почти то же самое, что LSB, только вместо прямой замены бита — замена для соблюдения чётности. Вытаскиваешь чётность каждого образца → получаешь биты сообщения.

Аудиостегоанализ (спектральный анализ, статистические тесты)

Спектральный анализ Переводят звук в спектрограмму — видят частоты по времени. Если в спектре появляется необычный шум, равномерный фон или артефакты — это признак spread spectrum или echo hiding.

Статистические тесты Проверяют распределение значений образцов. После LSB или parity coding значения младших бит становятся слишком равномерными (как случайные). Chi-square тест или RS-анализ на младших битах показывает аномалию.

В CTF стегоанализ помогает понять:

  • есть ли вообще стего в файле

  • какой метод использовали (LSB — равномерность младших бит, echo — повторяющиеся пики)

  • стоит ли тратить время на конкретный канал или диапазон частот

Итог

Главное, что нужно запомнить: в аудио чаще всего прячут данные в младших битах PCM-образцов (LSB или parity), а более сложные методы (echo, phase, spread spectrum) встречаются реже, но тоже сводятся к изменениям, которые можно найти в спектре или статистике.

Ключевые слова и термины для запоминания: LSB, PCM, WAV, phase coding, echo hiding, spread spectrum, parity coding, least significant parity, спектральный анализ, статистические тесты.

Эти знания помогают:

  • сразу вытащить данные из WAV, посмотрев младшие биты образцов

  • понять, что подозрительное эхо или равномерный шум — это спрятанные данные

  • отличить простой LSB от более хитрых методов (по спектру или статистике)

  • знать, где искать: младшие биты, чётность, повторяющиеся тихие сигналы

  • решать 70–80% аудио-стего задач начального и среднего уровня за 10–30 минут

Начни каждую аудио-задачу с извлечения младших битов из PCM — это решает большинство задач быстрее всего. Если там пусто — смотри спектрограмму на эхо или фазовые аномалии.


Стеганография в JPEG и DCT-коэффициентах

Стеганография в JPEG — это способ спрятать секретные данные внутри сжатой фотографии так, чтобы изменения были практически незаметны даже при внимательном рассмотрении. В CTF эта тема относится в первую очередь к категориям Stego и Forensics. Чаще всего такие задачи встречаются на среднем и высоком уровне, когда дают JPEG-картинку и просят найти спрятанный текст, архив, другой JPEG или флаг. Новичку важно понять эту тему, потому что JPEG — один из самых популярных форматов в реальных стего-задачах, и без знаний DCT и квантования ты просто не сможешь отличить обычную картинку от зашифрованной. Когда освоишь базовые принципы модификации коэффициентов — сможешь решать большинство JPEG-стего задач за 20–60 минут вместо долгих переборов.

Словарь терминов

Термин
Что это простыми словами

JPEG

Формат сжатой картинки, который использует потерю качества

DCT

Дискретное косинус-преобразование — способ разбить картинку на частоты

коэффициент

Число, которое показывает, насколько сильно выражена определённая частота в блоке 8×8 пикселей

квантование

Округление коэффициентов, чтобы уменьшить размер файла

таблица квантования

Матрица чисел, по которой округляют коэффициенты (чем больше число — тем сильнее округление)

F5

Популярный алгоритм стего в JPEG, который прячет данные в коэффициентах

JSteg

Простой метод, который меняет LSB коэффициентов после квантования

OutGuess

Ещё один метод, который старается не менять статистику картинки

Steghide

Программа, которая прячет данные в JPEG с помощью нескольких методов

стегоанализ

Поиск признаков, что в JPEG спрятано сообщение

FRIndex

Метрика, которая показывает изменения в частотных коэффициентах

DCT-коэффициенты и квантование в JPEG

JPEG разбивает картинку на маленькие блоки 8×8 пикселей. Каждый блок переводится в DCT — получается 64 коэффициента: первый (DC) отвечает за среднюю яркость, остальные (AC) — за детали и частоты. Потом все коэффициенты делят на значения из таблицы квантования и округляют — это и есть потеря качества, из-за которой JPEG маленький. После квантования многие коэффициенты становятся нулями или маленькими числами — именно в этих ненулевых коэффициентах и прячут данные.

В CTF чаще всего данные прячут именно в AC-коэффициентах после квантования. Если изменить слишком много или слишком сильно — картинка получит видимые артефакты (квадратики, шум). Поэтому хорошие методы меняют только младшие биты или используют специальные правила.

F5 алгоритм, OutGuess, JSteg, Steghide

JSteg Самый простой: берёт коэффициенты после квантования, меняет их LSB (младший бит), если он не ноль. Легко обнаруживается, потому что меняет статистику чётных/нечётных значений.

OutGuess Старается сохранить статистику коэффициентов, выбирая, какие именно менять. Сложнее обнаружить, но всё равно оставляет следы.

F5 Один из лучших старых методов. Меняет коэффициенты не напрямую, а с помощью матрицы Хэмминга — может исправлять ошибки и прячет данные очень аккуратно. Если коэффициент после изменения стал нулевым — пропускает и берёт следующий.

Steghide Программа, которая умеет использовать несколько методов (включая JSteg-подобный и свои). В CTF часто дают именно Steghide-задачи — достаточно знать, что пароль может быть пустым или очевидным.

В CTF эти методы встречаются в чистом виде или как часть задачи. Самый частый — F5 и Steghide.

Модификация коэффициентов без видимых артефактов

Чтобы изменения не были заметны глазу, нужно:

  • менять только ненулевые коэффициенты (нулевые не меняют, иначе появляются артефакты)

  • менять как можно меньше битов (обычно 1 бит на коэффициент)

  • избегать изменения DC-коэффициента (он отвечает за среднюю яркость блока)

  • учитывать таблицу квантования — чем больше коэффициент, тем менее заметно изменение

В CTF хорошие задачи используют именно эти правила. Если картинка после извлечения выглядит почти идентично оригиналу — значит метод сделан качественно. Если появились квадратики или цветовые пятна — скорее всего метод плохой или данные спрятаны неправильно.

Стегоанализ JPEG (histogram analysis, calibration, FRIndex)

Histogram analysis Смотрим на гистограмму значений коэффициентов. После LSB-изменений гистограмма становится более гладкой (меньше пиков и провалов).

Calibration Создаём свою версию картинки (пересжимаем JPEG) и сравниваем гистограммы. Если оригинал сильно отличается от пересжатого — в нём что-то спрятано.

FRIndex (Feature-based steganalysis) Считает специальные признаки (статистику пар коэффициентов, изменения в частотах). Если FRIndex сильно отличается от нормы — почти наверняка есть стего.

В CTF стегоанализ помогает понять:

  • стоит ли тратить время на конкретный метод

  • в каком диапазоне коэффициентов искать изменения

  • есть ли данные вообще или это ложная картинка

Итог

Главное, что нужно запомнить: в JPEG прячут данные в ненулевых AC-коэффициентах после квантования, меняя их минимально, чтобы не появились видимые квадратики и артефакты.

Ключевые слова и термины для запоминания: DCT-коэффициенты, квантование, AC-коэффициенты, F5, JSteg, OutGuess, Steghide, FRIndex, histogram analysis, calibration.

Эти знания помогают:

  • сразу понять, что в JPEG-картинке спрятаны данные, если она выглядит почти нормально

  • знать, что искать в ненулевых коэффициентах, а не во всех подряд

  • отличить простой LSB от более умных методов (F5, Steghide)

  • использовать статистику и калибровку, чтобы подтвердить наличие стего

  • быстро решать 70–80% JPEG-стего задач начального и среднего уровня

Начни каждую JPEG-стего задачу с проверки коэффициентов после квантования — именно там прячут почти всё. Если видишь изменения только в ненулевых AC — это почти всегда правильный путь к флагу.


Стеганография в текстовых файлах и документах

Стеганография — это способ прятать одно сообщение внутри другого так, чтобы никто даже не заподозрил, что там что-то спрятано. В отличие от шифрования (когда видно, что текст зашифрован), здесь всё выглядит как обычный текст, картинка или документ. В CTF стеганография чаще всего встречается в категориях Steganography, Misc и иногда Forensics. Новичку важно её понять, потому что примерно в 60–70% задач на стего именно текст или документы используются как контейнер. Зная базовые приёмы, ты сможешь за 5–15 минут понять, в какую сторону копать, вместо того чтобы часами перебирать всё подряд.

Словарь терминов

Термин
Что это простыми словами

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

Прятание сообщения внутри другого файла, чтобы никто не заметил

Контейнер

Файл, в котором прячут секретное сообщение

Payload

То секретное сообщение, которое спрятали

Zero-width space

Невидимый символ шириной 0, который почти никто не видит

Homoglyph

Похожие по виду символы из разных алфавитов (а и а́)

Лингвистическая стего

Прятание информации через выбор синонимов и перефразировки

Snow

Программа, которая прячет текст в пробелах и табуляциях

StegCloak

Инструмент для прятания текста между невидимыми символами

Metadata

Скрытые служебные данные внутри файла (автор, дата и т.д.)

RTF

Старый формат Word с кучей управляющих команд

DOCX

Современный формат Word (по сути zip-архив с xml-файлами)

Open stego

Прятание, когда можно легко доказать, что там что-то есть

Whitespace stego

Прятание данных в пробелах, табах и переносах строк

Пробельные символы (zero-width spaces, homoglyphs)

Самый простой и популярный способ спрятать данные в тексте — использовать невидимые или почти одинаковые символы.

Zero-width space (ZWSP, U+200B) и другие невидимые символы (ZWJ, ZWNJ, LTR, RTL и т.д.) не занимают места на экране, но компьютер их видит. Ими можно кодировать биты: например, ZWSP = 0, ZWJ = 1. Получается двоичный код, который потом превращают в буквы или байты.

Homoglyphs — это когда вместо обычной латинской «a» берут кириллическую «а», или греческую «а», или математическую жирную «a». На вид почти одинаково, а коды разные. Можно кодировать информацию выбором, какой именно «а» написать в каждом слове.

В CTF это встречается очень часто: дают txt-файл или кусок текста в описании задачи → копируешь в hex-редактор или используешь онлайн-детектор невидимых символов → видишь странные последовательности. На практике: выдели текст → вставь в notepad++ с включённым «показывать все символы» или в онлайн-инструмент типа «zero-width character detector» → сразу видно, где спрятаны данные.

Синонимы, синонимические замены, лингвистическая стеганография

Здесь сообщение прячут не символами, а смыслом и выбором слов.

Пример: вместо «большой» написать «огромный», вместо «быстро» — «мгновенно». Каждое такое решение может нести 1 бит информации. Если в тексте 100 мест, где можно выбрать синоним, то можно спрятать 12–13 байт (≈ 100 бит).

Иногда используют заранее придуманную таблицу: слово₁ = 00, слово₂ = 01, слово₃ = 10, слово₄ = 11. Автор заменяет слова по этой таблице, а решатель знает таблицу (или угадывает по контексту).

В CTF такой способ редкий, но встречается в сложных задачах Misc/Stego, особенно если тема связана с естественным языком или шпионскими историями. Как применять: внимательно читать текст, отмечать места, где можно было написать по-другому → искать закономерность в заменах → пытаться сопоставить с двоичным кодом или азбукой.

Скрытие в форматировании (RTF, DOCX, PDF)

Современные документы — это не просто текст. Внутри RTF, DOCX и PDF очень много служебной информации, куда легко спрятать байты.

  • RTF — вообще сплошные управляющие команды. Можно вставить мусорные команды {*\secret ...} или просто кучу бессмысленных \par между строк.

  • DOCX — это zip-архив. Внутри лежат xml-файлы. Часто прячут данные в ненужных тегах, в custom properties, в картинках размером 1×1 пиксель или в комментариях.

  • PDF — тоже сложный формат. Прятать можно в metadata, в невидимых объектах, в шрифтах, в комментариях, в слоях (OCG).

В CTF это одна из самых частых ситуаций: дают docx/pdf/rtf → надо понять, где именно лежит payload. На практике:

  • DOCX → переименовать в .zip → открыть → смотреть document.xml, customXml, props → искать длинные base64-строки

  • PDF → открывать в hex-редакторе или qpdf → искать /Type /EmbeddedFile или просто необычно длинные потоки

  • RTF → открывать в текстовом редакторе → искать куски после {*\ или просто очень длинные строки без смысла

Текстовая стеганография (Snow, StegCloak)

Snow и StegCloak — это классические программы именно для текста.

Snow прячет данные в пробелах и табах в конце строк. На вид файл обычный, а если включить «показать все символы» — видно, что в конце строк куча пробелов и табуляций. Программа умеет и кодировать, и извлекать.

StegCloak использует zero-width символы (в основном ZWSP, ZWNJ, ZWJ) и ставит их между словами. Получается очень чистый текст, который выглядит естественно, но несёт в себе закодированное сообщение. Часто используется с паролем (шифрование + стего).

В CTF эти два инструмента — must-know. Если видишь подозрительно «чистый» текст или текст с кучей пробелов в конце строк — это почти всегда Snow или StegCloak. Как решать:

  • копировать текст → сохранить в .txt → открыть в hex-редакторе или в редакторе с отображением пробелов

  • попробовать snow -C < файл.txt

  • попробовать stegcloak reveal (иногда без пароля, иногда с очевидным типо «ctf» или «password»)

Главное по теме — стеганография в тексте почти всегда использует либо невидимые символы, либо лишнее форматирование, либо выбор похожих слов/символов. Ключевые слова, которые стоит выучить наизусть: zero-width space, homoglyph, whitespace stego, Snow, StegCloak, RTF junk, DOCX zip, PDF streams, metadata. Эти знания помогут тебе в большинстве текстовых стего-задач за первые 5–20 минут понять, какой метод применили, и не тратить часы на перебор картинок, звуков и архивов, когда на самом деле секрет лежит в обычном .txt или .docx. С таким подходом ты уже сможешь решать beginner и medium задачи на стеганографию в текстах.


Стеганография в цифровых изображениях (LSB)

Стеганография в цифровых изображениях с использованием LSB — это самый простой и самый распространённый способ спрятать данные внутри картинки, изменяя младшие биты цветов так, чтобы человеческий глаз почти ничего не заметил. В CTF эта тема относится в первую очередь к категориям Stego и Forensics. Чаще всего LSB-задачи встречаются в начальных и средних уровнях соревнований, где дают картинку (PNG, BMP, иногда JPEG) и просят найти скрытый текст, флаг, архив или другую картинку. Новичку эту тему нужно освоить в первую очередь, потому что она встречается чаще всего и решается быстрее всего — часто за 5–15 минут. Когда поймёшь, как работают младшие биты и как их вытащить — сможешь решать большинство стего-задач без долгих поисков и специальных знаний.

Словарь терминов

Термин
Что это простыми словами

LSB

Младший значащий бит — самый правый бит в байте цвета

RGB-канал

Одна из трёх составляющих цвета: красный, зелёный, синий

пиксель

Точка на картинке, обычно состоит из 3 байт (RGB) или 4 (RGBA)

палитра

Таблица из 256 цветов в индексированных изображениях (GIF, PNG-8)

индексированное изображение

Картинка, где каждый пиксель — это номер цвета из палитры

плоскость битов

Все биты одного уровня из всех пикселей (например все младшие биты красного канала)

стегоанализ

Поиск признаков, что в картинке спрятано сообщение

Chi-square тест

Статистический тест, который показывает, случайны ли значения

RS-анализ

Метод обнаружения LSB по парам значений пикселей

Sample Pairs

Ещё один статистический метод поиска изменений в младших битах

Least Significant Bit (LSB) замена в RGB-каналах

LSB-метод работает так: каждый байт цвета (красный, зелёный, синий) состоит из 8 бит. Самый младший бит (LSB) почти не влияет на то, как цвет выглядит для глаза. Меняя только этот бит (с 0 на 1 или наоборот), можно спрятать 1 бит информации на каждый канал.

Один пиксель RGB даёт 3 бита скрытой информации. Картинка 1000×1000 пикселей может спрятать до ~375 килобайт данных (3 бита × 1 000 000 пикселей). Чаще всего прячут короткий текст или маленький архив.

В CTF почти все начальные стего-задачи — это именно LSB в RGB-каналах PNG или BMP. Достаёшь все младшие биты каждого канала → собираешь их в байты → получаешь скрытое сообщение.

LSB с использованием палитры и индексированных изображений

Индексированные изображения (GIF, PNG-8) используют палитру — таблицу максимум из 256 цветов. Каждый пиксель — это не RGB, а номер (индекс) цвета из палитры (0–255).

LSB здесь прячут двумя способами:

  • меняют младший бит самого индекса (1 бит на пиксель)

  • меняют порядок цветов в палитре или значения цветов в палитре

В CTF часто дают GIF, где данные спрятаны именно в палитре или в младших битах индексов. Смотришь палитру и индексы пикселей → вытаскиваешь изменения → собираешь сообщение.

Распределение битов по каналам и плоскостям

Данные не всегда прячут во всех трёх каналах подряд. Варианты распределения:

  • только в красном канале

  • только в зелёном + синем

  • чередуют каналы (пиксель 1 — красный, пиксель 2 — зелёный и т.д.)

  • используют альфа-канал (если есть RGBA)

  • берут не только LSB, а 2–3 младших бита

Плоскость битов — это когда собираешь все биты одного уровня из всех пикселей. Например, плоскость всех LSB красного канала — это чёрно-белая картинка, где белый = 1, чёрный = 0.

В CTF часто достаточно посмотреть на плоскости младших битов каждого канала по отдельности. Если видишь читаемый текст или QR-код — это и есть скрытое сообщение.

Обнаружение LSB (Chi-square, RS-анализ, Sample Pairs)

LSB меняет статистику значений младших битов — они становятся более равномерно распределёнными. Обычная картинка имеет неравномерное распределение (больше тёмных/светлых областей).

Chi-square тест Сравнивает реальное распределение значений с ожидаемым случайным. Если тест показывает очень низкую вероятность случайности — в картинке почти наверняка спрятано LSB-сообщение.

RS-анализ и Sample Pairs Смотрят на пары соседних пикселей и считают, как часто меняются младшие биты. После LSB-скрытия эти статистики сильно отличаются от естественных.

В CTF эти тесты помогают понять, стоит ли вообще тратить время на LSB. Если Chi-square кричит «аномалия» — сразу смотри плоскости битов.

Итог

Главное, что нужно запомнить: LSB — это изменение младших битов цветов, которое почти не видно глазу, но позволяет спрятать много данных, и именно с него начинается 80% стего-задач в CTF.

Ключевые слова и термины для запоминания: LSB, RGB-канал, плоскость битов, индексированное изображение, палитра, Chi-square тест, RS-анализ, Sample Pairs, стегоанализ, payload.

Эти знания помогают:

  • сразу проверить картинку на LSB и вытащить скрытый текст или картинку

  • понять, в каком канале или плоскости спрятаны данные

  • быстро отличить обычную картинку от стего (по статистике или визуально)

  • работать с GIF и палитрой, когда RGB не даёт результата

  • не тратить время на сложные методы, если Chi-square показывает аномалию в младших битах

Начни каждую стего-задачу с извлечения LSB-плоскостей каждого канала — это решает большинство задач быстрее всего. Если там ничего нет — смотри палитру и метаданные.


Стеганография в видеофайлах

Стеганография в видеофайлах — это когда секретные данные (текст, картинку, флаг, архив) прячут внутри видео так, чтобы при обычном просмотре человек ничего не заметил. В CTF эта тема относится в первую очередь к категориям Stego и Forensics. Чаще всего такие задачи встречаются на среднем и высоком уровне, где дают MP4, MKV или AVI и просят найти спрятанное сообщение, другой видеофрагмент или файл. Новичку важно понять эту тему, потому что видео — один из самых объёмных носителей для стего, и в нём можно спрятать гораздо больше данных, чем в картинке или звуке. Когда разберёшься в кадрах, motion vectors и метаданных — сможешь решать большинство видео-стего задач за 30–90 минут.

Словарь терминов

Термин
Что это простыми словами

кадр

Одна картинка в видео (как страница в книге)

I-frame

Полный кадр, который хранит всю картинку целиком

P-frame

Предсказательный кадр — хранит только изменения относительно предыдущего

B-frame

Двунаправленный кадр — использует предыдущий и следующий кадр для предсказания

motion vector

Стрелка, которая показывает, куда сдвинулся кусок картинки между кадрами

GOP

Group of Pictures — группа кадров от одного I-frame до следующего

субтитры

Текст, который показывают поверх видео (часто в отдельном потоке)

метаданные видео

Дополнительная информация в файле (название, автор, комментарии)

контейнер

Формат файла (MP4, MKV, AVI), который держит видео, звук, субтитры вместе

видеостегоанализ

Поиск признаков, что в видео спрятано сообщение

Скрытие данных в кадрах (I/P/B-frames), motion vectors

Видео состоит из кадров трёх типов:

  • I-frame — полный кадр, как обычная картинка

  • P-frame — хранит только разницу с предыдущим кадром

  • B-frame — разницу с предыдущим и следующим кадром

Данные чаще всего прячут в motion vectors (стрелках движения) или в остаточных разницах пикселей после предсказания. Можно менять младшие биты этих векторов или коэффициентов остатка — зритель почти ничего не заметит, потому что движение и так немного шумное.

В CTF это один из самых частых способов в видео-задачах. Смотришь motion vectors в P- и B-кадрах → вытаскиваешь младшие биты → собираешь скрытое сообщение.

Стеганография в субтитрах и метаданных видео (MP4, MKV, AVI)

Видеофайлы — это контейнеры, которые держат несколько потоков: видео, аудио, субтитры, метаданные.

Субтитры — отдельный поток текста, который можно заполнить скрытым сообщением (base64, hex). Или менять тайминги субтитров, чтобы закодировать биты.

Метаданные — поля вроде title, comment, description в MP4/MKV. Туда можно записать длинный текст или даже маленький файл.

В CTF это самый простой и частый способ в видео-задачах начального уровня. Открываешь контейнер → смотришь субтитры и метаданные → там часто лежит флаг или зашифрованный кусок.

Распределение данных по кадрам и GOP

Данные редко прячут в одном кадре — обычно распределяют по многим кадрам или по всему GOP. GOP — группа от одного I-frame до следующего (обычно 15–30 кадров).

Варианты распределения:

  • по одному биту на кадр (очень скрытно)

  • по несколько бит в motion vectors каждого P/B-кадра

  • только в I-frames (больше места, но заметнее)

  • чередуют кадры или GOP

В CTF чаще всего данные равномерно распределены по всем кадрам. Если в одном кадре ничего нет — смотри всю последовательность или конкретные типы кадров.

Видеостегоанализ (motion vector analysis, frame difference)

Motion vector analysis Смотрим на стрелки движения между кадрами. Если младшие биты векторов слишком равномерны или имеют странный паттерн — это признак стего.

Frame difference Вычитаем соседние кадры → видим остаточные разницы. Если в остатке появляется неестественный шум или паттерн — данные спрятаны именно там.

В CTF видеостегоанализ помогает понять:

  • в каком типе кадров (I/P/B) спрятаны данные

  • стоит ли смотреть motion vectors или остаточные разницы

  • есть ли стего вообще или это обычное видео

Итог

Главное, что нужно запомнить: в видео данные прячут либо в motion vectors и остаточных разницах P/B-кадров, либо в субтитрах и метаданных контейнера — и почти всегда изменения минимальны, чтобы не было заметных артефактов.

Ключевые слова и термины для запоминания: I-frame, P-frame, B-frame, motion vector, GOP, субтитры, метаданные видео, контейнер, motion vector analysis, frame difference.

Эти знания помогают:

  • сразу проверить субтитры и метаданные — это решает 40–50% видео-задач

  • знать, что смотреть motion vectors и остаточные разницы в P/B-кадрах

  • понять, почему в одном кадре ничего нет — данные распределены по всему видео

  • отличить обычное сжатие от стего по аномалиям в векторах движения

  • быстро решать задачи начального и среднего уровня, где прячут текст или маленький файл

Начни каждую видео-задачу с проверки субтитров и метаданных — это самый быстрый путь. Если там пусто — переходи к motion vectors в P/B-кадрах и анализу разниц между кадрами.