
Коллекция инструментов стеганографии — помогает в решении задач CTF
Этот проект представляет собой Docker-образ, полезный для решения задач по стеганографии, подобных тем, что встречаются на CTF-платформах, таких как hackthebox.eu.
Образ поставляется с предустановленным множеством популярных инструментов (см. список ниже) и несколькими скриптами первичной проверки, которые можно использовать для быстрой оценки (например, выполните check_jpg.sh image.jpg, чтобы получить отчёт для JPG-файла).
Сначала убедитесь, что у вас установлен Docker (инструкция).
Затем вы можете использовать скрипты оболочки bin/build.sh и bin/run.sh из этого репозитория для сборки образа и запуска контейнера.
Вы попадёте в оболочку bash внутри контейнера.
В контейнере будет смонтирована папка data, в которую вы можете поместить файлы для анализа.
Если вы не используете скрипты, выполните следующие шаги:
docker build -t <имя_образа> .) или скачайте из Docker Hub (docker pull dominicbreuker/stego-toolkit)/data (docker run -it <имя_образа> -v /локальная/папка/с/данными:/data /bin/bash)check_jpg.sh image.jpg для быстрого отчёта или brute_jpg.sh image.jpg wordlist.txt для попытки извлечения скрытых данных с помощью различных инструментов и паролейstart_ssh.sh и подключитесь к контейнеру с перенаправлением X11start_vnc.sh и подключитесь к рабочему столу контейнера через браузерДополнительную информацию смотрите в следующих разделах:
Начните с docker run -it --rm -v $(pwd)/data:/data dominicbreuker/stego-toolkit /bin/bash.
Вы попадёте в оболочку контейнера в рабочем каталоге /data.
Ваша локальная папка $(pwd)/data будет смонтирована, и изображения внутри неё станут доступны.

Установлено множество различных инструментов для Linux и Windows. Инструменты для Windows поддерживаются через Wine. Некоторые инструменты можно использовать в командной строке, другие требуют поддержки графического интерфейса!
Эти инструменты можно использовать в командной строке. Всё, что вам нужно сделать, — это запустить контейнер и смонтировать файлы стеганографии, которые вы хотите проверить.
Инструменты для запуска в начале. Позволяют получить общее представление о том, с чем вы имеете дело.
Инструменты, предназначенные для обнаружения стеганографии в файлах. В основном выполняют статистические тесты. Они покажут скрытые сообщения только в простых случаях. Однако они могут дать подсказки, что искать, если обнаружат интересные аномалии.
Инструменты, которые можно использовать для сокрытия сообщений и последующего их раскрытия. Некоторые шифруют сообщения перед сокрытием. Если они это делают, то требуют пароль. Если у вас есть догадка, какой инструмент использовался или какой пароль может быть верным, попробуйте эти инструменты. Некоторые инструменты поддерживаются скриптами брутфорса, доступными в этом Docker-образе.
Все перечисленные ниже инструменты имеют графический интерфейс и не могут быть использованы через командную строку. Для их запуска необходимо сделать X11-сервер доступным внутри контейнера. Поддерживаются два способа:
start_ssh.sh, чтобы запустить SSH-сервер. Затем подключитесь с перенаправлением X11. Требуется X11-сервер на вашем хосте!start_vnc.sh, чтобы запустить VNC-сервер + клиент. Затем подключитесь через браузер к порту 6901, и вы получите рабочий стол Xfce. Зависимостей от хоста нет!Кроме того, вы можете найти другие способы сделать X11 доступным внутри контейнера. Существует множество различных вариантов (например, монтирование UNIX-сокетов).
Многие из перечисленных выше инструментов не требуют взаимодействия с графическим интерфейсом. Поэтому вы можете легко автоматизировать некоторые рабочие процессы для базовой проверки файлов, которые могут содержать скрытые сообщения. Поскольку подходящие инструменты различаются в зависимости от типа файла, для каждого типа файла существуют свои скрипты.
Для каждого типа файла есть два вида скриптов:
XXX_check.sh <stego-файл>: запускает базовые инструменты проверки и создаёт отчёт (+ возможно, каталог с отчётами в файлах)XXX_brute.sh <stego-файл> <словарь>: пытается извлечь скрытое сообщение из стего-файла с помощью различных инструментов, используя словарь (cewl, john и crunch установлены для генерации списков — старайтесь, чтобы они были небольшими).Поддерживаются следующие типы файлов:
check_jpg.h и brute_jpg.sh (брутфорс с использованием steghide, outguess, outguess-0.13, stegbreak, stegoveritas.py -bruteLSB)check_png.h и brute_png.sh (брутфорс с использованием openstego и stegoveritas.py -bruteLSB)Скриптам брутфорса, указанным выше, нужны словари. По моему скромному мнению, вряд ли поможет использование огромных стандартных словарей, таких как rockyou. Скрипты для этого слишком медленны, и стего-задачи, похоже, не рассчитаны на это. Более вероятный сценарий — вы догадываетесь, каким может быть пароль, но не знаете точно.
Для таких случаев включено несколько инструментов для генерации словарей:
john для создания множества их вариантов. Используйте john -wordlist:/путь/к/вашему/словарю -rules:Single -stdout > /путь/к/расширенному/словарю для применения обширных правил (~x1000) и john -wordlist:/путь/к/вашему/словарю -rules:Wordlist -stdout > /путь/к/расширенному/словарю для уменьшенного набора правил (~x50).crunch 6 6 abcdefghijklmnopqrstuvwxyz -t @@1984, что сгенерирует 26 * 26 = 676 паролей: aa1984, ab1984, ..., zz1984. Формат: crunch <мин-длина> <макс-длина> <набор-символов> <опции>, и мы использовали опцию шаблона. Ознакомьтесь с less /usr/share/crunch/charset.lst, чтобы увидеть наборы символов, поставляемые с crunch.cewl -d 0 -m 8 https://en.wikipedia.org/wiki/Donald_Trump, если подозреваете, что изображение Дональда Трампа содержит зашифрованное скрытое сообщение. Команда сканирует сайт и извлекает строки длиной не менее 8 символов.Образ содержит образцы изображений и аудиофайлов в различных форматах:
/examples/ORIGINAL.jpg/examples/ORIGINAL.png/examples/ORIGINAL.mp3/examples/ORIGINAL.wavТакже в нём есть скрипт /examples/create_examples.sh, который вы можете запустить, чтобы встроить скрытое сообщение («This is a very secret message!») в эти файлы с помощью различных методов.
После запуска этого скрипта вы найдёте эти файлы в /examples/stego-files с именами, указывающими на использованный инструмент для встраивания сообщения.
Вы можете запустить скрипты проверки, чтобы узнать, найдут ли они что-нибудь, или попытаться взломать их иным способом.
По умолчанию в Docker-контейнере нельзя запускать инструменты с графическим интерфейсом, так как X11-сервер недоступен. Чтобы это сделать, необходимо изменить ситуацию. То, что для этого требуется, зависит от вашей хост-системы. Если у вас:
brew install Xquartz)Используйте перенаправление X11 через SSH, если хотите пойти этим путём. Запустите start_ssh внутри контейнера для запуска сервера, убедитесь, что вы открыли порт 22 при запуске контейнера: docker run -p 127.0.0.1:22:22 ..., затем используйте ssh -X ... при подключении (скрипт выведет пароль).
Чтобы не зависеть от X11, образ поставляется с сервером TigerVNC и noVNC-клиентом.
Вы можете использовать его для открытия сессии HTML5 VNC через браузер для подключения к рабочему столу Xfce контейнера. Для этого запустите start_vnc.sh внутри контейнера для запуска сервера и клиента, убедитесь, что вы открыли порт 6901 при запуске контейнера docker run -p 127.0.0.1:6901:6901 ... и перейдите по адресу localhost:6901/?password=<пароль> (скрипт выведет пароль).

Команды из GIF для копирования и вставки:
# в 1-й оболочке хоста
docker run -it --rm -p 127.0.0.1:22:22 dominicbreuker/stego-toolkit /bin/bash
# внутри оболочки контейнера
start_ssh.sh
# во 2-й оболочке хоста (используйте для запуска GUI-приложений)
ssh -X -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no root@localhost

Команды из GIF для копирования и вставки:
# в 1-й оболочке хоста
docker run -it --rm -p 127.0.0.1:6901:6901 dominicbreuker/stego-toolkit /bin/bash
# внутри оболочки контейнера
start_vnc.sh
# в браузере подключитесь по адресу: http://localhost:6901/?password=<пароль_из_start_vnc>
Это коллекция полезных ссылок по стеганографии:
В этот репозиторий включены следующие примеры медиафайлов:
| Инструмент | Описание | Как использовать |
|---|
| file | Проверить, что это за файл | file stego.jpg |
| exiftool | Проверить метаданные медиафайлов | exiftool stego.jpg |
| binwalk | Проверить, нет ли встроенных или прикреплённых файлов | binwalk stego.jpg |
| strings | Проверить, есть ли в файле интересные читаемые символы | strings stego.jpg |
| foremost | Извлечь встроенные/прикреплённые файлы | foremost stego.jpg |
| pngcheck | Получить информацию о PNG-файле (или выяснить, является ли он чем-то другим) | pngcheck stego.png |
| identify | Инструмент GraphicMagick для определения типа изображения. Также проверяет, не повреждено ли изображение. | identify -verbose stego.jpg |
| ffmpeg | ffmpeg можно использовать для проверки целостности аудиофайлов и получения информации и ошибок | ffmpeg -v info -i stego.mp3 -f null - для перекодирования файла и отбрасывания результата |
| Инструмент | Типы файлов | Описание | Как использовать |
|---|
| stegoVeritas | Изображения (JPG, PNG, GIF, TIFF, BMP) | Широкий спектр простых и продвинутых проверок. Ознакомьтесь с stegoveritas.py -h. Проверяет метаданные, создаёт множество преобразованных изображений и сохраняет их в каталог, брутфорсит LSB, ... | stegoveritas.py stego.jpg для выполнения всех проверок |
| zsteg | Изображения (PNG, BMP) | Обнаруживает различные LSB-стего, а также openstego и инструмент Camouflage | zsteg -a stego.jpg для выполнения всех проверок |
| stegdetect | Изображения (JPG) | Выполняет статистические тесты, чтобы определить, использовался ли стего-инструмент (jsteg, outguess, jphide, ...). Подробнее см. man stegdetect. | stegdetect stego.jpg |
| stegbreak | Изображения (JPG) | Брутфорс-взломщик для JPG-изображений. Утверждается, что может взломать outguess, jphide и jsteg. | stegbreak -t o -f wordlist.txt stego.jpg, используйте -t o для outguess, -t p для jphide или -t j для jsteg |
| Инструмент | Типы файлов | Описание | Как скрыть | Как извлечь |
|---|
| AudioStego | Аудио (MP3 / WAV) | Подробности о работе в этом посте в блоге | hideme cover.mp3 secret.txt && mv ./output.mp3 stego.mp3 | hideme stego.mp3 -f && cat output.txt |
| jphide/jpseek | Изображения (JPG) | Довольно старый инструмент отсюда. Здесь установлена версия из другого источника, так как оригинальная постоянно падала. Запрашивает парольную фразу в интерактивном режиме! | jphide cover.jpg stego.jpg secret.txt | jpseek stego.jpg output.txt |
| jsteg | Изображения (JPG) | LSB-стего-инструмент. Не шифрует сообщение. | jsteg hide cover.jpg secret.txt stego.jpg | jsteg reveal cover.jpg output.txt |
| mp3stego | Аудио (MP3) | Старая программа. Шифрует и затем прячет сообщение (шифрование 3DES!). Инструмент для Windows, запускаемый через Wine. Требует WAV на входе (может выдавать ошибки для некоторых WAV-файлов. То, что работает у меня, например: ffmpeg -i audio.mp3 -flags bitexact audio.wav). Важно: используйте только абсолютные пути! | mp3stego-encode -E secret.txt -P password /path/to/cover.wav /path/to/stego.mp3 | mp3stego-decode -X -P password /path/to/stego.mp3 /path/to/out.pcm /path/to/out.txt |
| openstego | Изображения (PNG) | Различные LSB-стего-алгоритмы (см. этот блог). Всё ещё поддерживается. | openstego embed -mf secret.txt -cf cover.png -p password -sf stego.png | openstego extract -sf openstego.png -p abcd -xf output.txt (опустите -xf, чтобы создать файл с исходным именем!) |
| outguess | Изображения (JPG) | Использует «избыточные биты» для сокрытия данных. Доступен в двух версиях: старая=outguess-0.13 и новая=outguess. Для извлечения необходимо использовать ту же версию, что и для сокрытия. | outguess -k password -d secret.txt cover.jpg stego.jpg | outguess -r -k password stego.jpg output.txt |
| spectrology | Аудио (WAV) | Кодирует изображение в спектрограмме аудиофайла. | TODO | Используйте GUI-инструмент sonic-visualiser |
| stegano | Изображения (PNG) | Скрывает данные с помощью различных (LSB-основанных) методов. Также предоставляет некоторые инструменты для проверки. | stegano-lsb hide --input cover.jpg -f secret.txt -e UTF-8 --output stego.png или stegano-red hide --input cover.png -m "секретное сообщение" --output stego.png или stegano-lsb-set hide --input cover.png -f secret.txt -e UTF-8 -g $GENERATOR --output stego.png для различных генераторов (stegano-lsb-set list-generators) | stegano-lsb reveal -i stego.png -e UTF-8 -o output.txt или stegano-red reveal -i stego.png или stegano-lsb-set reveal -i stego.png -e UTF-8 -g $GENERATOR -o output.txt |
| Steghide | Изображения (JPG, BMP) и Аудио (WAV, AU) | Многофункциональный и зрелый инструмент для шифрования и сокрытия данных. | steghide embed -f -ef secret.txt -cf cover.jpg -p password -sf stego.jpg | steghide extract -sf stego.jpg -p password -xf output.txt |
| cloackedpixel | Изображения (PNG) | LSB-стего-инструмент для изображений | cloackedpixel hide cover.jpg secret.txt password создаёт cover.jpg-stego.png | cloackedpixel extract cover.jpg-stego.png output.txt password |
| LSBSteg | Изображения (PNG, BMP, ...) в несжатых форматах | Простые LSB-инструменты с очень хорошим читаемым кодом на Python | LSBSteg encode -i cover.png -o stego.png -f secret.txt | LSBSteg decode -i stego.png -o output.txt |
| f5 | Изображения (JPG) | Стеганографический алгоритм F5 с подробной информацией о процессе | f5 -t e -i cover.jpg -o stego.jpg -d 'secret message' | f5 -t x -i stego.jpg 1> output.txt |
| stegpy | Изображения (PNG, GIF, BMP, WebP) и Аудио (WAV) | Простая программа стеганографии на основе LSB-метода | stegpy secret.jpg cover.png | stegpy _cover.png |
| Инструмент | Типы файлов | Описание | Как запустить |
|---|
| Steg | Изображения (JPG, TIFF, PNG, BMP) | Работает с множеством типов файлов и реализует различные методы | steg |
| Steganabara (оригинальная ссылка не работает) | Изображения (???) | Интерактивное преобразование изображений, пока не найдёте что-то | steganabara |
| Stegsolve | Изображения (???) | Интерактивное преобразование изображений, просмотр цветовых схем по отдельности, ... | stegsolve |
| SonicVisualiser | Аудио (???) | Визуализация аудиофайлов в виде волновой формы, отображение спектрограмм, ... | sonic-visualiser |
| Stegosuite | Изображения (JPG, GIF, BMP) | Может шифровать и скрывать данные в изображениях. Активно развивается. | stegosuite |
| OpenPuff | Изображения, Аудио, Видео (многие форматы) | Сложный инструмент с долгой историей. Всё ещё поддерживается. Инструмент для Windows, запускается через wine. | openpuff |
| DeepSound | Аудио (MP3, WAV) | Аудио-стего-инструмент, которому доверяет сам Мистер Робот. Инструмент для Windows, запускается через wine (очень грязно, требуется VNC и запуск в виртуальном рабочем столе, MP3 сломан из-за отсутствующей DLL!) | deepsound только в сессии VNC |
| cloackedpixel-analyse | Изображения (PNG) | Визуализация LSB-стего для PNG — используйте для обнаружения подозрительно случайных LSB-значений в изображениях (значения, близкие к 0.5, могут указывать на встраивание зашифрованных данных) | cloackedpixel-analyse image.png |