Хакер - Картинки с секретами. Тестируем восемь утилит для сокрытия данных
Если ты думаешь, что в фотках с котиками не может скрываться ничего постороннего, — спешу тебя разочаровать (или, наоборот, порадовать!). Сейчас я покажу, как внедрить в картинку, архив или песню любую постороннюю информацию, да так, чтобы ее никто там не заметил. Интересно? Погнали!
О принципах стеганографии мы уже не раз писали — смотри, к примеру, статью «Прячем файлы в картинках: семь стеганографических утилит для Windows». Однако в ней перечислены далеко не все утилиты и прицел сделан на Windows. Сегодня мы рассмотрим восемь альтернативных утилит, в основном — кросс‑платформенные.
CLOAKIFY
- Платформа: любая
- Где скачивать: GitHub
CloakifyFactory — это большая и легко расширяемая программа, которая использует скрипты Cloakify Toolset. Особенность ее в том, что перед маскировкой нагрузки она кодируется в Base64.
У программы есть огромный плюс — она умеет маскировать что угодно не просто в картинках, а еще и в видео, музыке и даже программах, хоть и с последними получается плохо — выходной файл сильно раздувается.
Работает Cloakify на Python 2.7, который уже морально и физически устарел, а использование Base64 для скрытия информации от невооруженного глаза приводит к сильному увеличению размера, не давая никакого заметного преимущества.
Для примера давай обычный текстовый документ внедрим в картинку формата JPEG. Мой исходный файл называется save.txt
и лежит в одной директории с самой программой. Внедрение файла крайне простое и выглядит примерно так.
Пропускаем функцию добавления шумов. Для нас они погоды не сделают, но, если ты хочешь дополнительно замаскировать информацию, могут помочь.
Как ты уже мог догадаться, этот софт для сокрытия действительно секретной информации применять стремно. Но есть и плюсы, вроде простоты работы и того, что выходных форматов чуть более чем куча.
STEGHIDE
- Платформа: любая
- Где скачивать: GitHub
Steghide — консольная утилита, написанная на C++. Скрывает информацию в стандартных файлах форматов JPEG, BMP, WAV и AU. В арсенале программы полно шифров — даже Blowfish, которого я у других не замечал. Теоретически использование такой экзотики может помочь запутать следы еще сильнее.
Steghide умеет не просто упаковывать данные в картинку или трек, а еще и шифровать секретную нагрузку.
Но есть и минус: не все фотографии и аудиофайлы подойдут для внедрения в них секретной нагрузки. Если файл слишком маленький — внедрить в него ничего нельзя.
Давай попробуем объединить картинку cats.jpg
и секретный файлик save.txt.
Открываем терминал и пишем:
steghide embed -cf cats.jpg -ef save.txt
--embedfile [-ef]
— файл, который мы будем встраивать;--coverfile [-cf]
— файл‑обложка, в который внедряется секретная инфа;--compress [-z]
— сжимать данные перед упаковкой;--encryption [-e]
— шифровать внедряемые данные.
Распаковка так же проста, как упаковка:
Ключ --stegofile [-sf]
позволяет выбрать файл со скрытой информацией, а --passphrase [-p]
указывает пароль.
Из‑за применения сжатия разница размеров до и после внедрения минимальна.
Мне понравилась возможность ставить пароли и сжимать данные. Однозначно хорошая штука, которую можно использовать в любительских целях. К тому же можно создать цепочку из объектов, которые будут спрятаны друг в друге. А минус только в том, что не всякое изображение подходит для этой манипуляции, но мы же живем в XXI веке, и найти новую фотку вообще не вопрос, правда?
SPECTROLOGY
- Платформа: любая
- Где скачивать: GitHub
Название программы Spectrology говорит само за себя — она позволяет превращать изображения в аудиодорожки с «заряженными» спектрограммами, из которых потом можно достать картинки. Звучит круто, но без проблем не обошлось.
Перед первым запуском нужно поставить модуль pillow
.
python3 -m pip install --upgrade pip
python3 -m pip install --upgrade Pillow
Сразу бросается в глаза второй огромный минус — крайне медленная работа. Хоть он и с лихвой перекрывается плюсами в виде необычного алгоритма работы и переносимости (написана на Python).
Давай запакуем изображение BMP в файл WAV. Делается это так:
python spectrology.py your_filename.bmp -o music.wav
--output [-o]
— флаг, отвечающий за название выходного аудиофайла;--botton [-b]
задает нижний частотный диапазон;--pixels [-p]
позволяет установить количество пикселей в секунду;--sampling [-s]
ставит частоту дискретизации.
Давай посмотрим, какого размера будет готовый аудиофайл.
В целом работает медленно и из коробки даже не запускается — приходится недостающие модули ставить вручную. Не производит впечатления хорошо проработанного инструмента, хотя задумка, безусловно, классная.
IMAGESPYER G2
Это одна из древних утилит, когда‑то написанных Александром Мясниковым и ныне встречающаяся лишь на просторах файлопомоек. Официальный сайт у нее если когда‑то и был, то давно не работает. Тем не менее программа заслуживает внимания.
ImageSpyer прячет секретные файлы только в картинки и даже разрешает ставить пароль, чтобы зашифровать данные перед внедрением. Программа поддерживает около 30 алгоритмов шифрования внедряемой информации и 25 хеш‑функций для подписи, чтобы убедиться, что встроенный в картинку файл не побился при передаче.
Большой плюс — наличие графического интерфейса с понятными пояснениями и множеством настроек. Выходных форматов всего два: BMP и TIFF.
Посмотрим, насколько сильно увеличился объем фотографии.
Как видишь, из маленького котика размером 59,6 Кбайт мы сделали толстого кота на целых 1530 Кбайт. Результат неплохой, да и работает ImageSpyer быстро, так что смело рекомендуем к использованию.
REDJPEG
Еще один стегозавр авторства Александра Мясникова. На этот раз — с собственным алгоритмом внедрения изображения в картинки, сжатием LZMA и оформлением для ностальгирующих по СССР.
А что у нас по объему после запаковки текста в картинку?
Впечатления исключительно позитивные. Программа позволяет хорошо спрятать и зашифровать любую нужную информацию. Подходит для постоянного использования.
OPENSTEGO
- Платформа: любая
- Где скачивать: GitHub
Проект OpenStego реализован на Java, имеет поддержку шифрования AES и крайне популярен среди желающих познакомиться со стеганографией. Поддерживает плагины, чтобы ты сам смог реализовать какой‑нибудь стеганографический алгоритм. Есть версии и для Windows, и для Linux.
Как и ImageSpyer, OpenStego значительно раздувает размеры файла, хоть и не настолько сильно. Поддерживается также всего один способ упаковки, но это легко поправить плагинами. Выходные файлы могут быть только в формате PNG, но это нельзя назвать совсем уж большим минусом, тем более что на вход можно подавать почти любой формат.
Есть и интересная функция, которой я не нашел у конкурентов, — Digital Watermarking. Она позволяет тайком пометить фотографию, чтобы легко найти вора. Для этого программа внедряет в картинку незаметный идентификатор, который в дальнейшем можно будет достать и проверить, кто взял картинку без спроса.
Программа не требует установки, а запускается батником.
Файл на выходе получился куда толще, чем был, — размер увеличился почти на 800 Кбайт.
По сравнению с ImageSpyer OpenStego все же более богат фичами, что мне понравилось.
SILENTEYE
- Платформа: любая
- Где скачивать: сайт на GitHub
SilentEye — кросс‑платформенный софт с простым интерфейсом. Обладает множеством плагинов и приятным GUI. Использует современные алгоритмы стеганографии и маскировки.
Из очевидных преимуществ отмечу ввод маскируемого текста прямо в окне программы вместо загрузки текстовых файлов из стороннего редактора. Серьезно, фича простая, а никто до этого не додумался. Форматы выходных файлов картинок — BMP, JPEG, PNG, GIF, TIFF, звука — только WAV.
Можно настроить качество выходного изображения — оно определяет, сколько потерь будет при кодировании в JPEG.
Для шифрования внедренных данных применяется AES, но настроек куда больше, чем у OpenStego.
При проверке увеличения объема пришлось использовать другую картинку в качестве исходной, но видно, что объем почти не изменился, то есть программа работает эффективно.
Размер файла с картинкой увеличился всего на 13,5 Кбайт — очень хороший результат!
Утилита может спокойно заменить старичка OpenStego. Работает она чуть медленнее конкурентов, но зачастую это некритично. Тоже рекомендую.
IMAGEJS
- Платформа: Linux
- Где скачивать: GitHub
ImageJS предназначена не совсем для сокрытия информации от людей. Вместо этого она помогает обманывать браузеры, которые совершенно обоснованно предполагают, что в валидных картинках ничего постороннего быть не должно.
ImageJS позволяет создать картинки, которые одновременно представляют собой настоящие JS-скрипты. Это нужно, чтобы упростить проведение более опасных XSS-атак, в которых иногда требуется подгрузить скрипт именно с атакованного домена. Вот тут на помощь приходит возможность загрузить туда аватарку, которая одновременно содержит JavaScript payload для дальнейшей атаки. Программа поддерживает внедрение в форматы BMP, GIF, WEBP, PNG и PDF.
Для сборки нужны пакеты build-esential
и cmake
. Дальше все просто:
$ git clone https://github.com/jklmnn/imagejs.git
Давай создадим script.js
со следующим кодом, а потом упакуем его в image.gif
:
./imagejs gif script.js -i image.gif
На выходе будет файл с двойным расширением, но это не беда.
Сейчас мы проверим все в деле! Создавай HTML-страничку со следующим кодом и сохраняй ее рядом с нашей заряженной картинкой.
<title>Knock, Knock, Neo</title>
<img src="script.js.gif" alt="Matrix">
<script src="script.js.gif"></script>
Сохраняем и открываем. Должно получиться как на скриншоте.
Размер картинки почти не меняется, что нам очень на руку.
Программа шикарна, хоть и применима только в очень специфичных целях.
ВЫВОДЫ
Заменить кросс‑платформенный и богатый фичами OpenStego сложно, но при желании можно. SilentEye будет неплохим выбором, но и утилитки Александра Мясникова тоже рекомендую попробовать, если у тебя Windows. Если же ты фанат консоли или мастеришь какую‑то автоматизированную систему, то тебе может пригодиться один из вариантов, написанных на Pyhton.
В таблице я свел воедино информацию об упомянутых программах и протестировал стеганографирование в картинки текстового файла размером 1,07 Кбайт.