Цифровая стеганография: Программы и другие способы реализации

стеганография программы спрятать информацию в изображении

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

Возможность скрывать одни данные внутри других может позволить злоумышленнику скрытно украсть массу конфиденциальной информации.

Проблема сокрытия данных волнует человечество с древних времен. Для защиты информации обычно используют шифры. Надежность их может быть разной, но к тому моменту, когда врагу все же удастся его взломать, информация будет уже старой.

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

Если раньше не совсем честному работнику, чтобы вынести какой-нибудь секретный чертеж или документ, нужно было скрывать бумажную копию, то в эпоху цифровых технологий выносить секреты стало намного легче. Зашифрованный файл можно отослать по сети, а можно скинуть на съемный носитель, флешку и скрытно вынести в кармашке.

В первом случае все относительно просто, есть очень много решений по контролю трафика. Для борьбы с копированием на флешки тоже существуют средства предотвращения вторжений DLP (Data Leak Prevention). Вообще большая часть DLP-решений контролирует все каналы утечки данных на компьютере, как сетевые, так и периферию. Так что правильно настроенная система предотвращения утечек данных может не только создать злоумышленнику проблемы при хищении информации, но и даст возможность администраторам контролировать все его действия, тем самым выявляя, какими секретами он интересуется и какие средства и способы применяет для кражи информации.

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

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

Статья в Википедии говорит нам, что стеганография (буквально переводится с греческого как «тайнопись») -это наука о скрытой передаче информации путем сохранения в тайне самого факта передачи. В отличие от криптографии, которая скрывает содержимое секретного сообщения, стеганография скрывает сам факт его существования. Хотя обычно эти две технологии используют совместно.

Стеганографию используют для всевозможных целей. Нередко ее используют не для воровства, а для борьбы с похитителями. Например, при защите авторского права, когда в документе прячут некую скрытую закладку, позволяющую определять того, кому принадлежит данная копия файла. В случае если такая метка будет затем обнаружена где-либо на торрентах, правообладатели смогут найти, кто именно его выложил, и предъявить ему соответствующие претензии.

Но в статье я буду описывать использование стеганографии именно как средства хищения данных. Начнем с рассмотрения некоторых теоретических вопросов. Сразу оговорюсь, что, рассказывая о технических способах реализации стеганографии, буду затрагивать только цифровой стеганографии, то есть сокрытия информации внутри других цифровых данных. При этом не стану касаться способов, основанных на использовании различными файловыми системами зарезервированных разделов жесткого или гибкого диска, или методик, связанных с особенностями функционирования всевозможных аппаратных платформ и операционных систем. В данной статье нас будут интересовать только файлы различных форматов и возможности создания тайников в них.

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

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

Методы типа LSB (Least Significiant Bit, наименьший значащий бит) и аналогичные. Их суть заключается в замене последних значащих битов в контейнере (изображения, аудио или видеозаписи) на биты скрываемого сообщения. Возьмем в качестве примера графический файл. Наглядно это выглядит следующим образом: мы меняем младшие биты в коде цвета пикселя на картинке. Если считать, что код цвета имеет 32-битное значение, то замена 0 на 1 или наоборот не приведет к сколько-нибудь существенному искажению картинки, ощутимому для органов восприятия человека. А между тем в этих битах для большой картинки можно что-то спрятать.

Рассмотрим небольшой пример. Допустим, имеется 8-битное изображение в градациях серого. 00h (00000000Ь) обозначает черный цвет, FFh (11111111Ь) — белый. Всего имеется 256 градаций ( ). Также предположим, что сообщение состоит из 1 байта — например, 01101011Ь. При использовании двух младших бит в описаниях пикселей нам потребуется 4 пикселя. Допустим, они черного цвета. Тогда пиксели, содержащие скрытое сообщение, будут выглядеть следующим образом: 00000001 00000010 00000010 00000011. Тогда цвет пикселей изменится: первого — на 1/255, второго и третьего — на 2/255 и четвертого — на 3/255. Такие градации, мало того, что незаметны для человека, могут вообще не отобразиться при использовании низкокачественных устройств вывода.

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

Стоит отметить, что методы LSB являются неустойчивыми к разного рода «шуму». Например, в случае если на передаваемый контент накладываются какие-либо «мусорные» биты, это искажает как исходный контент, так и (что для нас особенно важно) скрытое сообщение. Иногда оно даже становится нечитаемым. Аналогичная методика используется и для других форматов.

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

И третий метод — использование особенностей форматов файлов. К примеру, это может быть запись информации в метаданные, используемые данным форматом файла, или в различные другие, не используемые зарезервированные поля. Например, это может быть документ Microsoft Word, внутри которого будет спрятана информация, никак не отображаемая при открытии данного документа.

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

Еще один способ сокрытия информации применим только к аудиофайлам — это эхо-метод. Он использует неравномерные промежутки между эхо-сигналами для кодирования последовательности значений. В общем случае возможно создание условий, при которых данные сигналы будут незаметны для человеческого восприятия. Эхо-сигнал характеризуется тремя параметрами: начальной амплитудой, степенью затухания и задержкой. При достижении некоего порога между сигналом и эхом они смешиваются. В этой точке человеческое ухо не может уже отличить эти два сигнала. Для обозначения логического нуля и единицы используется две различных задержки. Они обе должны быть меньше, чем порог чувствительности уха слушателя к получаемому эху.

Однако на практике этот метод тоже не слишком надежен, так как не всегда можно точно определить, когда был передан ноль, а когда единица, и в результате велика вероятность искажения скрытых данных.

Другой вариант использования стеганографии в аудиофайлах — фазовое кодирование (phase coding). Происходит замена исходного звукового элемента на относительную фазу, которая и является секретным сообщением. Фаза подряд идущих элементов должна быть добавлена таким образом, чтобы сохранить относительную фазу между исходными элементами, в противном случае возникнет искажение, заметное для человеческого уха.

На сегодняшний день фазовое кодирование является одним из самых эффективных методов скрытия информации.

Программы для стеганографии

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

В качестве файла для хранения данных я использовал изображение 1680х1050, сохраненное в различных форматах: ВМР, PNG, JPEG. Скрываемым документом выступал текстовый файл размером порядка 40 Кб. Все описанные программы справились с поставленной задачей: текстовый файл был успешно сохранен и затем извлечен из исходного файла. При этом сколько-нибудь заметных искажений картинки обнаружено не было. Представленные далее утилиты можно скачать с сайта.

Автором всех рассмотренных в данном обзоре программ, является Александр Мясников.

ImageSpyer G2

Утилита для сокрытия информации в графических файлах с использованием криптографии. При этом поддерживается около 30 алгоритмов шифрования и 25 хеш-функций для шифрования контейнера. Скрывает объем, равный числу пикселей изображения. Опционально доступна компрессия скрываемых данных.

Программа стеганографии ImageSpyer
Программа стеганографии ImageSpyer

Утилита совместима с Windows 8. В качестве исходных графических файлов могут использоваться форматы ВМР, JPEG, WMF, EMF, TIFF.

Это одна из древ­них ути­лит, ког­да‑то написан­ных Алек­сан­дром Мяс­никовым и ныне встре­чающаяся лишь на прос­торах фай­лопомо­ек. Офи­циаль­ный сайт у нее если ког­да‑то и был, то дав­но не работа­ет. Тем не менее прог­рамма зас­лужива­ет вни­мания.

ImageSpyer пря­чет сек­ретные фай­лы толь­ко в кар­тинки и даже раз­реша­ет ста­вить пароль, что­бы зашиф­ровать дан­ные перед внед­рени­ем. Прог­рамма под­держи­вает око­ло 30 алго­рит­мов шиф­рования внед­ряемой информа­ции и 25 хеш‑фун­кций для под­писи, что­бы убе­дить­ся, что встро­енный в кар­тинку файл не побил­ся при переда­че.

Боль­шой плюс — наличие гра­фичес­кого интерфей­са с понят­ными пояс­нени­ями и мно­жес­твом нас­тро­ек. Выход­ных фор­матов все­го два: BMP и TIFF.

Скрыть данные в изображение

Пос­мотрим, нас­коль­ко силь­но уве­личил­ся объ­ем фотог­рафии.

Спрятать информацию в изображение
Сле­ва — пос­ле обра­бот­ки, спра­ва — до

Как видишь, из малень­кого котика с раз­мером 59,6 Кбайт мы сде­лали тол­сто­го кота на целых 1530 Кбайт. Резуль­тат неп­лохой, да и работа­ет ImageSpyer быс­тро, так что сме­ло рекомен­дуем к исполь­зованию.

Скачать бесплатно ImageSpyer G2, вы можете по этой ссылке.

RedJPEG

Интерфейс этой программы, как и следует из названия, выполнен в красном стиле. Эта простая в использовании утилита предназначена для сокрытия любых данных в JPEG в изображении (фото, картинка) с помощью авторского стеганографического метода. Использует открытые алгоритмы шифрования, поточный шифр AMPRNG и Cartman II DDP4 в режиме хеш-функции, LZMA-компрессию.

Программа стеганографии RedJPEG
Программа стеганографии RedJPEG

Профессиональная расширенная версия RedJPEG ХТ дополнена маскировкой факта внедрения и усиленной процедурой инициализации поточного шифра на основе характеристик изображения. Включены х86 и х86-64 сборки.

Нас­трой­ки RedJPEG
Нас­трой­ки RedJPEG

А что у нас по объ­ему пос­ле запаков­ки тек­ста в кар­тинку?

Программа для скрытия информации в изображение

Впе­чат­ления исклю­читель­но позитив­ные. Прог­рамма поз­воля­ет хорошо спря­тать и зашиф­ровать любую нуж­ную информа­цию. Под­ходит для пос­тоян­ного исполь­зования.

Также имеется RedJPEG ХТ for ТС WCX плагин Total Comanderг, обладающий аналогичным функционалом.

Скачать бесплатно RedJPEG, вы можете по этой ссылке.

DarkCryptTC и Проект «Заря»

Эту программу, можно назвать наиболее мощным стеганографическим решением. Она поддерживает более сотни различных симметричных и асимметричных криптоалгоритмов. Включает в себя поддержку собственной системы плагинов, предназначенной для блочных шифров (BlockAPI), текстовую, аудио и графическую стеганографию (включая реальную стеганографию JPEG), мощный генератор паролей и систему уничтожения информации и ключей.

 

стеганография: способы реализации
DarkCryptTC и Проект «Заря»

Список поддерживаемых форматов действительно впечатляет: *.txt, *.html, *.xml, *.docx, *. odt, *.bmp, *jpg, *.tiff, *.png, *.jp2, *.psd, tga, *.mng, *.wav, *.ехе, *.dll.

Набор программ для стеганографии не слишком большой, но он вполне достаточен для того, чтобы эффективно скрывать информацию в файлах различных форматов.

Скачать бесплатно DarkCryptTC, вы можете по этой ссылке.

OpenStego

Про­ект OpenStego реали­зован на Java, име­ет под­дер­жку шиф­рования AES и край­не популя­рен сре­ди жела­ющих поз­накомить­ся со сте­ганог­рафи­ей. Под­держи­вает пла­гины, что­бы ты сам смог реали­зовать какой‑нибудь сте­ганог­рафичес­кий алго­ритм. Есть вер­сии и для Windows, и для Linux.

Программа сокрытия информации в изображении OpenStego
Программа для сокрытия информации в изображении OpenStego

Как и ImageSpyer, OpenStego зна­читель­но раз­дува­ет раз­меры фай­ла, хоть и не нас­толь­ко силь­но. Под­держи­вает­ся так­же все­го один спо­соб упа­ков­ки, но это лег­ко поп­равить пла­гина­ми. Выход­ные фай­лы могут быть толь­ко в фор­мате PNG, но это нель­зя наз­вать сов­сем уж боль­шим минусом, тем более что на вход мож­но подавать поч­ти любой фор­мат.

Есть и инте­рес­ная фун­кция, которой я не нашел у кон­курен­тов, — Digital Watermarking. Она поз­воля­ет тай­ком пометить фотог­рафию, что­бы лег­ко най­ти вора. Для это­го прог­рамма внед­ряет в кар­тинку незамет­ный иден­тифика­тор, который в даль­нейшем мож­но будет дос­тать и про­верить, кто взял кар­тинку без спро­са.

Прог­рамма не тре­бует уста­нов­ки, а запус­кает­ся бат­ником.

Как скрыть данные в картинке
Сравнения файлов

Файл на выходе получил­ся куда тол­ще, чем был, — раз­мер уве­личил­ся поч­ти на 800 Кбайт.

По срав­нению с ImageSpyer OpenStego все же более богат фичами, что мне пон­равилось.

Скачать OpenStego с GitHub

SilentEye

SilentEye — кросс‑плат­формен­ный софт с прос­тым интерфей­сом. Обла­дает мно­жес­твом пла­гинов и при­ятным GUI. Исполь­зует сов­ремен­ные алго­рит­мы сте­ганог­рафии и мас­киров­ки.

Программа для сокрытия информации в картинку SilentEye
Программа для сокрытия информации в картинку SilentEye

Из оче­вид­ных пре­иму­ществ отме­чу ввод мас­киру­емо­го тек­ста пря­мо в окне прог­раммы вмес­то заг­рузки тек­сто­вых фай­лов из сто­рон­него редак­тора. Серь­езно, фича прос­тая, а ник­то до это­го не додумал­ся. Фор­маты выход­ных фай­лов кар­тинок — BMP, JPEG, PNG, GIF, TIFF, зву­ка — толь­ко WAV.

SilentEye
SilentEye

Мож­но нас­тро­ить качес­тво выход­ного изоб­ражения — оно опре­деля­ет, сколь­ко потерь будет при кодиро­вании в JPEG.

Для шиф­рования внед­ренных дан­ных при­меня­ется AES, но нас­тро­ек куда боль­ше, чем у OpenStego.

Настройки SilentEye
Настройки SilentEye

При про­вер­ке уве­личе­ния объ­ема приш­лось исполь­зовать дру­гую кар­тинку в качес­тве исходной, но вид­но, что объ­ем поч­ти не изме­нил­ся, то есть прог­рамма работа­ет эффектив­но.

Спрятать информацию в картинке

Раз­мер фай­ла с кар­тинкой уве­личил­ся все­го на 13,5 Кбайт — очень хороший резуль­тат!

Ути­лита может спо­кой­но заменить ста­рич­ка OpenStego. Работа­ет она чуть мед­леннее кон­курен­тов, но зачас­тую это нек­ритич­но. Тоже рекомен­дую.

ImageJS

ImageJS — Linux утилита, которая пред­назна­чена не сов­сем для сок­рытия информа­ции от людей. Вмес­то это­го она помога­ет обма­нывать бра­узе­ры, которые совер­шенно обос­нован­но пред­полага­ют, что в валид­ных кар­тинках ничего пос­торон­него быть не дол­жно.

ImageJS поз­воля­ет соз­дать кар­тинки, которые одновре­мен­но пред­став­ляют собой нас­тоящие JS-скрип­ты. Это нуж­но, что­бы упростить про­веде­ние более опас­ных XSS-атак, в которых иног­да тре­бует­ся под­гру­зить скрипт имен­но с ата­кован­ного домена. Вот тут на помощь при­ходит воз­можность заг­рузить туда ава­тар­ку, которая одновре­мен­но содер­жит JavaScript payload для даль­нейшей ата­ки. Прог­рамма под­держи­вает внед­рение в фор­маты BMP, GIF, WEBP, PNG и PDF.

Для сбор­ки нуж­ны пакеты build-esential и cmake. Даль­ше все прос­то:

$ git clone https://github.com/jklmnn/imagejs.git
$ cd imagejs
$ mkdir build
$ cd build
$ cmake ..
$ make

Да­вай соз­дадим script.js со сле­дующим кодом, а потом упа­куем его в image.gif:

alert("Hello, XAXA!");
./imagejs gif script.js -i image.gif

На выходе будет файл с двой­ным рас­ширени­ем, но это не беда.

Сей­час мы про­верим все в деле! Соз­давай HTML-стра­нич­ку со сле­дующим кодом и сох­раняй ее рядом с нашей заряжен­ной кар­тинкой.

Сох­раня­ем и откры­ваем. Дол­жно получить­ся как на скрин­шоте.

Раз­мер кар­тинки поч­ти не меня­ется, что нам очень на руку.

Спрятать информацию в изображение с помощью ImageJS
Спрятать информацию в изображение с помощью ImageJS

Прог­рамма шикар­на, хоть и при­мени­ма толь­ко в очень спе­цифич­ных целях.

Скачать ImageJS с GitHub

StegoTC G2 TC

Стеганографический архиваторный плагин (wcx) для Total Comander позволяет скрывать данные в любом изображении, при этом поддерживаются форматы ВМР, TIFF и PNG.

Скачать бесплатно StegoTC G2, вы можете по этой ссылке.

Стеганография своими руками

Для тех, кто хорошо знаком с программированием, в частности, с Visual Studio и С#, могу порекомендовать также довольно интересный сайт, в котором можно найти исходные тексты стеганографических утилит для различных форматов данных: для работы с графическими форматами и для сокрытия информации, например, в ZIP-архивах. Общий принцип такого преобразования заключается в использовании заголовков архивируемых файлов. Фрагмент исходного кода для работы с ZIP-архивами выглядит следующим образом:

private void ZipFiles(string destinationFileName, ↵
string password)
{
FileStream outputFileStream = ↵
new FileStream(destinationFileName, ↵
FileMode.Create);
ZipOutputStream zipStream = ↵
new ZipOutputStream(outputFileStream);
bool isCrypted = false;
if (password != null && password.Length > 0)
{ //encrypt the zip file, if password is given
zipStream.Password = password;
isCrypted = true;
}
foreach(ListViewItem viewItem in lvAll.Items)
{
inputStream = new FileStream(viewItem.Text, ↵ FileMode.Open);
zipEntry = new ICSharpCode.SharpZipLib.Zip.ZipEntry( ↵ Path.GetFileName(viewItem.Text));
zipEntry.IsVisible = viewItem.Checked;
zipEntry.IsCrypted = isCrypted;
zipEntry.CompressionMethod = ↵ CompressionMethod.Deflated;
zipStream.PutNextEntry(zipEntry);
CopyStream(inputStream, zipStream);
inputStream.Close();
zipStream.CloseEntry();
}
zipStream.Finish();
zipStream.Close();
}

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

Заключение

За­менить кросс‑плат­формен­ный и богатый фичами OpenStego слож­но, но при желании мож­но. SilentEye будет неп­лохим выбором, но и ути­лит­ки Алек­сан­дра Мяс­никова тоже рекомен­дую поп­робовать, если у тебя Windows. Если же ты фанат кон­соли или мас­теришь какую‑то авто­мати­зиро­ван­ную сис­тему, то тебе может при­годить­ся один из вари­антов, написан­ных на Pyhton.

Также, на нашем сайте представлены и другие материалы касающиеся Стеганографии. Для поиска всех программ и книг, сделайте поиск по слову «Стеганография».

ВКонтакте
OK
Telegram
WhatsApp
Viber

4 комментария

  1. Avatar
    Nik

    а как запустить darkcrypt?

  2. Avatar
    81k

    в darckcrypt`e файл xdc.exe антивирус kingsoft показует наличие Win32.TrojDownloader.Banload.(kcloud)

  3. Avatar
    John Doe

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

    • Falcon
      Falcon

      Пруфы пожалуйста!

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *