Главная / Блог / Стеганография для начинающих: чек-лист CTF

9 мин.00

Стеганография для начинающих: чек-лист CTF

Стеганография для начинающих: чек-лист CTF

На недавнем CTF мне достался PNG с котиком весом 12 МБ — при нормальных 400-600 КБ для такого разрешения. Полтора часа я перебирал пароли к steghide, ковырял битовые плоскости через Stegsolve, даже накатал скрипт на Python для извлечения LSB. А потом запустил binwalk — и через три секунды получил вложенный ZIP-архив с флагом. Проблема была не в инструментах, а в порядке действий: я начал со сложного и пропустил элементарное. Ниже — разбор стеганографии для начинающих с конкретными командами и чек-листом, который выстроит правильный workflow раз и навсегда.

С чего начать: file, strings и базовая разведка

Главная ошибка новичков в стего-тасках — хвататься за специализированные инструменты для стеганографии, не сделав базовые проверки. Файл с расширением .png может оказаться переименованным ZIP-архивом, а флаг — лежать открытым текстом прямо внутри бинарных данных.

Команда file определяет реальный формат по magic bytes в заголовке, а не по расширению. Запускаете file suspicious.png и видите Zip archive data вместо PNG image — расширение врёт. Этот шаг занимает секунду, но экономит часы.

Дальше — strings. Утилита вытаскивает все читаемые текстовые последовательности из бинарного файла. В CTF-заданиях по форензике флаги часто спрятаны без какого-либо шифрования: strings image.png | grep -i "flag". Фильтрация через grep по ключевым словам (flag, ctf, key, password, hint) — обязательный приём. По данным hacklido.com, strings решает заметную часть стего-тасков начального уровня вообще без дополнительных инструментов. Серьёзно — просто strings и grep.

Если strings ничего не дал, заглядываем в hex-дамп: xxd image.png | head -50. Аномалии в заголовке, лишние данные после маркера конца файла (EOF), нестандартные последовательности байт — всё это видно именно здесь. Для работы с hex на Linux подойдёт xxd или hexdump, на Windows — HxD или 010 Editor.

Exiftool: метаданные изображений как источник подсказок

Анализ метаданных файлов — второй этап после базовой разведки. Авторы CTF-заданий регулярно прячут флаги и подсказки в EXIF-полях: Comment, Artist, Copyright, GPS-координаты, XMP и IPTC.

Exiftool — стандарт для извлечения метаданных. Работает с JPEG, PNG, TIFF, PDF, аудио, видео и десятками других форматов. Базовый вызов: exiftool file.jpg — выводит все доступные метаданные. На соревнованиях полезен прицельный поиск: exiftool file.jpg | grep -i "comment\|author\|flag".

На что смотреть в выводе:

  • Comment — самое популярное поле для скрытых данных на CTF
  • Artist / Author — иногда содержит base64-строку, которую нужно декодировать
  • GPS Coordinates — могут указывать на следующий этап многоэтапного задания
  • Software — если изображение обработано steghide или OpenStego, это прямой намёк на метод сокрытия
  • Thumbnail — встроенная миниатюра изредка отличается от основного изображения и содержит флаг

Главное преимущество exiftool — он показывает нестандартные и кастомные поля, которые обычные просмотрщики полностью игнорируют. Если автор задания вручную добавил произвольный тег, стандартные программы его пропустят, а exiftool — нет.

Любопытная деталь: exiftool присутствует в GTFOBins — списке Linux-утилит, применимых для post-exploitation. В CTF-контексте это скорее забавный факт, но в реальной цифровой форензике стоит помнить: обработка вредоносных файлов через exiftool может сама по себе стать вектором атаки.

Binwalk: примеры использования для извлечения вложенных файлов

Binwalk сканирует бинарный файл на известные сигнатуры (заголовки ZIP, RAR, gzip, ELF, файловых систем) и показывает их смещение. Это главный инструмент для обнаружения метода overlay — конкатенации файлов, когда к изображению просто приклеен архив или другой файл.

Метод overlay, подробно описанный в исследовании Securelist, — одна из самых распространённых техник стеганографии в CTF. Принцип прост: к JPEG приклеивается RAR-архив. Просмотрщик картинок читает данные до маркера конца JPEG, а архиватор пропускает всё до сигнатуры RAR!. Для человека файл выглядит как обычная картинка, но binwalk видит обе сигнатуры.

Базовый анализ: binwalk image.png. Типичный вывод:

DECIMAL       HEXADECIMAL     DESCRIPTION
0             0x0             PNG image, 800 x 600
1024567       0xFA037         Zip archive data, name: flag.txt
1048576       0x100000        End of Zip archive

Извлечение: binwalk -e image.png создаёт директорию _image.png.extracted/ с распакованными данными. Для рекурсивного извлечения (архив в архиве в картинке — бывает и такое, да) есть флаг -Me: binwalk -Me image.png.

Распространённая ловушка: binwalk иногда находит ложные сигнатуры — случайные последовательности байт, совпадающие с заголовками известных форматов. Если утилита показывает десятки находок в файле на 500 КБ — большинство из них шум. Проверяйте каждый извлечённый файл через file, прежде чем тратить время на анализ.

Steghide: извлечение данных и взлом пароля

Steghide — классика стеганографии в CTF. Работает только с четырьмя форматами: JPEG, BMP, WAV, AU. Это критически важно: если вам дали PNG — steghide бесполезен, переходите к zsteg.

Проверка наличия вложения: steghide info cover.jpg. Программа сообщит, есть ли встроенные данные, и запросит пароль.

Первое действие — всегда пробовать пустой пароль: steghide extract -sf cover.jpg (программа запросит пароль интерактивно — жмёте Enter для пустого; вариант с -p "" работает, но в некоторых шеллах кавычки могут интерпретироваться некорректно). На удивление часто авторы тасков либо не ставят пароль, либо пустой пароль и есть часть задачи. Если пароль непустой — проверяйте метаданные (exiftool мог показать подсказку), название файла и описание таска.

Извлечение с известным паролем: steghide extract -sf cover.jpg -p "s3cret". Результат — файл, имя которого steghide сообщит при извлечении.

Stegseek — быстрый брутфорс пароля steghide

Когда пустой пароль не подходит и подсказок нет, пригодится stegseek. Это самый быстрый инструмент для перебора паролей steghide — прогоняет словарь rockyou.txt за секунды, тогда как устаревший StegCracker тратит на то же самое минуты или часы. Разница на порядки.

Вызов: stegseek cover.jpg /usr/share/wordlists/rockyou.txt. При успехе stegseek покажет найденный пароль и автоматически извлечёт спрятанный файл. Установка на Kali/Debian: apt install stegseek.

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

LSB-стеганография: zsteg для анализа PNG и BMP

LSB-стеганография — метод, при котором скрытые данные записываются в младшие биты пикселей. Изменение последнего бита каждого цветового канала (R, G, B) практически незаметно визуально. При использовании 1 младшего бита на канал RGB для сокрытия 1 байта требуется примерно 8 байт данных контейнера — то есть для 1 МБ информации нужен графический файл объёмом около 8 МБ. (Помните мой котик на 12 МБ из начала? Вот вам и арифметика.)

Zsteg — специализированный инструмент для поиска LSB-стеганографии в PNG и BMP файлах. Установка: gem install zsteg (при ошибке прав доступа — gem install --user-install zsteg или используйте rbenv/rvm).

Полный анализ: zsteg -a file.png запускает все методы проверки по всем каналам и комбинациям бит. Вывод бывает объёмным — ищите строки, похожие на текст, base64 или файловые сигнатуры.

Извлечение конкретного payload: если zsteg показал данные в определённом канале (например, b1,rgb,lsb,xy), достать их можно командой zsteg -E b1,rgb,lsb,xy file.png > output.bin.

Для визуального анализа битовых плоскостей существует Stegsolve — Java-приложение с GUI. Оно позволяет переключаться между плоскостями стрелками и обнаруживать скрытые паттерны глазами. Когда автоматика zsteg ничего не находит, ручной просмотр плоскостей через Stegsolve иногда выручает — особенно если данные закодированы нестандартным способом или распределены по нескольким каналам.

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

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

Спектрограмма: визуальные сообщения в звуке

Самый частый тип аудио-стего на соревнованиях — скрытое изображение или текст в спектрограмме. Откройте WAV или MP3 в Sonic Visualizer (бесплатный, кроссплатформенный), добавьте слой спектрограммы через Layer → Add Spectrogram. Флаги часто «нарисованы» буквами в высокочастотном диапазоне (выше 15 кГц) — на слух ничего не заметите, но визуально текст виден отчётливо. Когда впервые видишь буквы на спектрограмме — ощущение магии.

LSB в WAV-файлах

WavSteg — Python-инструмент для извлечения данных из младших бит WAV-файлов. Вызов: python3 WavSteg.py -r -s audio.wav -o output.txt. Принцип аналогичен LSB в изображениях: контейнер — аудиосэмплы вместо пикселей.

Не забывайте проверять аудиофайлы (WAV, AU) через steghide — он поддерживает эти форматы наравне с JPEG и BMP. Команда steghide info audio.wav с пустым паролем — обязательный шаг.

Чек-лист: алгоритм разбора стего-таска на CTF

Порядок действий от простого к сложному. Каждый шаг выполняется до перехода к следующему — это принципиально:

  1. file task_file — реальный тип по magic bytes
  2. strings task_file | grep -i "flag\|ctf\|key\|pass" — текст в бинарных данных
  3. exiftool task_file — метаданные (Comment, Author, GPS)
  4. binwalk task_file — вложенные файлы; при находках: binwalk -e task_file
  5. Для JPEG/BMP/WAV/AU: steghide extract -sf task_file -p "" — пустой пароль
  6. Для PNG/BMP: zsteg -a task_file — LSB-анализ
  7. Для аудио: Sonic Visualizer → спектрограмма
  8. Если пароль steghide неизвестен: stegseek task_file rockyou.txt
  9. Hex-редактор — ручной поиск аномалий

По опыту, подавляющее большинство стего-тасков начального и среднего уровня решаются на шагах 1-6. Не прыгайте к LSB-анализу, пока не проверили метаданные и overlay. Я сам на том CTF с котиком нарушил этот порядок — и потерял полтора часа.

Стеганография в реальных кибератаках

Инструменты для стеганографии, которые мы разобрали, — не только CTF-развлечение. В реальных атаках стеганография работает как способ обхода детектирования. Согласно классификации MITRE ATT&CK, она зафиксирована минимум в двух тактиках:

  • Steganography (T1001.002, Command and Control) — данные C2-канала встраиваются в передаваемый контент (изображения, видео) для маскировки под легитимный трафик
  • Steganography (T1027.003, Defense Evasion) — вредоносная нагрузка скрывается в легитимных файлах для обхода антивирусов и DPI-систем

По данным исследования Securelist, стеганографию использовали такие семейства вредоносов как Microcin, NetTraveler, ZeusVM и Shamoon. Загрузчик Zero.T скачивал BMP-изображения, в младших битах которых были закодированы вредоносные модули. Визуально — обычные картинки. Binwalk и анализ битовых плоскостей раскрывали payload за секунды.

Три причины популярности стеганографии у авторов малвари (по Securelist): сокрытие факта загрузки данных (не только содержимого), обход DPI-систем в корпоративных сетях, уклонение от AntiAPT-продуктов, которые не успевают анализировать все графические файлы из-за дороговизны алгоритмов.

Навыки, отработанные на CTF-тасках — разбор файлов через binwalk, анализ метаданных через exiftool, поиск LSB-аномалий — переносятся в incident response напрямую. Тот же чек-лист применим, когда SOC-аналитик получает подозрительное вложение из почтового трафика.

Я не раз видел, как специалисты впервые сталкивались с настоящим стегоконтейнером на живом инциденте — и тратили часы на то, что решается за минуты, если есть CTF-бэкграунд. Но у соревновательной практики есть обратная сторона: на CTF ты знаешь, что флаг точно спрятан, а в реальной форензике 90% файлов окажутся чистыми. Переключение мышления с «ищи, оно здесь» на «скорее всего ничего нет, но проверь методично» — главный барьер при переходе от тасков к продакшн-задачам. Инструменты одни и те же, workflow тот же, а вот подход к принятию решений — принципиально другой. Если хочешь не просто writeup прочитать, а пройти атаку самому от разведки до эксфильтрации — на WAPT эта цепочка разложена по модулям с лабами и ментором на каждом этапе.

🚀 Хочешь закрепить на практике? Реши задачи по теме на HackerLab — категория «pentest-machines».

Поделиться

0 комментариев

Пожалуйста, войдите, чтобы оставить комментарий.

Загрузка комментариев...

Читайте также

SSRF уязвимость в CTF: обход фильтров на практике

13 мин.

4

SSRF уязвимость в CTF: обход фильтров на практике

Обход blacklist и whitelist фильтров SSRF, gopher-протокол до RCE, кража облачных токенов и blind SSRF — с конкретными пейлоадами для CTF-задач

14 СЕНТЯБРЬ, 2026

Burp Suite для начинающих: настройка и перехват

13 мин.

5

Burp Suite для начинающих: настройка и перехват

Пошаговая настройка Burp Suite Community: прокси, сертификат, FoxyProxy. Перехват и модификация HTTP на реальной CTF-задаче с разбором каждого шага.

13 СЕНТЯБРЬ, 2026

Криптография для CTF: от Цезаря до RSA

13 мин.

8

Криптография для CTF: от Цезаря до RSA

Пошаговый разбор шифров и RSA-атак для CTF: код на Python, частотный анализ, CyberChef-рецепты и чек-лист уязвимостей RSA. От новичка к солверу.

13 СЕНТЯБРЬ, 2026