Как расшифровать стеганографию в ворде

Обновлено: 08.07.2024

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

Можно ли как-то обойтись без хитрых алгоритмов и тонких манипуляций с данными, и при этом все-таки обеспечить работоспособность контейнера и приемлемый уровень сохранности скрытых данных? Забегая вперед скажу — да, можно! И даже утилитку предложу.

Кровавые подробности метода

Основная идея проста, как удар дубиной по лбу: на диске есть области, в которые операционная система никогда не пишет (или пишет в редких случаях). Чтобы не нужно было искать эти области хитрыми алгоритмами, воспользуемся избыточностью — то есть много-много раз продублируем нашу скрытую информацию по всем секторам диска. Затем прямо поверх всего этого благолепия можно создавать нужные разделы, форматировать файловые системы, писать файлы и ставить ОСи — все равно часть секретных данных сохранится и ее можно будет извлечь, а многократное дублирование поможет нам составить из кусочков исходное целое.

Достоинство такого метода очевидно: мы не зависим ни от формата файлов, ни даже от типа используемой файловой системы.

Недостатки тоже, думаю, очевидны:

  • Секретные данные можно будет изменить только полной перезаписью всего диска, с последующим воссозданием видимого пользователю содержимого. При этом нельзя пользоваться софтом, воссоздающим диск из образа: он воссоздаст и предыдущие секретные данные.
  • Чем больше объем секретных данных, тем больше вероятность потери части информации.
  • Извлечение данных с диска может занять много времени. От нескольких минут до нескольких дней (современные диски больши-ие).

Понятно, что если просто размазать секретные данные по всему диску, то скрыты они будут только от невооруженного взгляда. Если вооружить взгляд, скажем, редактором диска, то данные предстанут во всей красе. Поэтому данные неплохо бы зашифровать, чтобы не отсвечивали. Шифровать будем простенько, но со вкусом: по алгоритму aes256-cbc. Ключ шифрования спросим у пользователя, пусть хороший пароль придумывает.

Следующий вопрос — в том, как нам отличить «правильные» данные от испорченных. Тут нам поможет контрольная сумма, да не простая, а SHA1. А что? Для git'а она достаточно хороша, значит, и нам подойдет. Решено: снабжаем каждый сохраненный фрагмент информации контрольной суммой, и если после расшифровки она совпала — значит, расшифровка удалась.

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

Проверяем метод на практике

Для проверки возьмем самый распространенный носитель — флэшку. У меня нашлась старенькая на 1 Гб, что вполне подойдет для экспериментов. Если вам, как и мне, пришла в голову мысль не париться с физическими носителями, а потестировать на файлике — образе диска, то сразу скажу: не выйдет. При форматировании такого «диска» линукс создает файл заново, и все неиспользуемые сектора будут заполнены нулями.

В качестве машины с линуксом, к сожалению, пришлось воспользоваться валяющейся на балконе метеостанцией на Raspberry Pi 3. Памяти там негусто, поэтому большие файлы прятать не будем. Ограничимся максимальным размером в 10 мегабайт. Слишком маленькие файлы тоже прятать смысла нет: утилитка пишет данные на диск кластерами по 4 Кб. Поэтому снизу ограничимся файлом в 3 кб — он влезает в один такой кластер.

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

  1. Быстрое форматирование в формате FAT16 с размером кластера 16 кб. Это то, что предлагает сделать Windows 7 с флэшкой, на которой отсутствует файловая система.
  2. Заполнение флэшки всяким мусором на 50%.
  3. Заполнение флэшки всяким мусором на 100%.
  4. «Долгое» форматирование в формате FAT16 (с перезаписью всего).

Total clusters read: 250752, decrypted: 158
ERROR: cannot write incomplete secretFile

Как видим, удалось успешно расшифровать только 158 кластеров (632 килобайта сырых данных, что дает 636424 байта полезной нагрузки). Понятно, что 10 мегабайт тут никак не наберется, а ведь среди этих кластеров явно есть дубликаты. Даже 1 мегабайт таким образом уже не восстановишь. Но зато можно гарантировать, что 3 килобайта секретных данных мы восстановим с флэшки даже после того, как ее отформатируют и запишут под завязку. Впрочем, опыты показывают, что с такой флэшки вполне возможно извлечь файл длиной 120 килобайт.

Последнее испытание, к сожалению, показало, что флэшка перезаписалась вся:

$ sudo ./steganodisk -p password /dev/sda
Device size: 250752 clusters
250700 99%
Total clusters read: 250752, decrypted: 0
ERROR: cannot write incomplete secretFile

Ни одного кластера не сохранилось… Печально, но не трагично! Попробуем перед форматированием создать на флэшке раздел, а уже в нем — файловую систему. Кстати, с завода она пришла именно с таким форматированием, так что ничего подозрительного мы не делаем.
Вполне ожидаемо, что доступное пространство на флэшке немного уменьшилось.

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

Total clusters read: 250752, decrypted: 405

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

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

Сводная таблица по тестированию:


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

Если вы когда-то разбивали жесткий диск на разделы, то могли обратить внимание, что далеко не всегда получается отвести все свободное пространство на диске. Первый раздел всегда начинается с некоторым отступом (обычно это 1 мегабайт, или 2048 секторов). За последним разделом тоже, бывает, остается небольшой «хвост» из неиспользуемых секторов. Да и между разделами иногда остаются промежутки, хотя и редко.

Другими словами, на диске есть сектора, к которым нет доступа при обычной работе с диском, но данные-то в эти сектора записать можно! А значит, и прочитать тоже. С поправкой на то, что есть еще таблица разделов и код загрузчика, которые как раз и расположены в пустой области в начале диска.

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

И-и-и — барабанная дробь! Ответ практически всегда будет — да! Ведь в большинстве случаев создание файловой системы сводится к тому, что на диск записывается только несколько блоков служебной информации, а в остальном содержимое раздела не меняется.

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

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

Утилита для экспериментов

Исходники утилиты можно пощупать здесь

Можно поменять размер кластера с 4 Кб на, скажем, 512 байт (в secretfile.h). При этом вырастут расходы на служебную информацию: заголовок и контрольная сумма занимают фиксированные 68 байт.

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

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Блинова Е.А., Сущеня А.А.

Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — Блинова Е.А., Сущеня А.А.

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

SEVERAL STEGANOGRAPHIC METHODS USING FOR EMBEDDING OF HIDDEN DATA IN ELECTRONIC TEXT DOCUMENTS

The description of the method and algorithm for embedding a hidden message or a digital watermark into files of Microsoft Word electronic documents in .DOCX format based on two steganographic methods is given. A Microsoft Word electronic document in .DOCX format is used as a steganographic container. One of the methods uses the features of displaying a document by a word processor and the word processor allows the displacement of hidden characters, such as spaces, tabs and paragraphs, in the text relatively to the line of text. The second method uses the feature of the .DOCX format electronic text document that a document is an archive containing Open XML format files and media files, so specialized steganographic methods for XML files can be used for embedding a hidden message. In this case the quotes replacement method is used. The embedding of a hidden message by one of the methods is used for checking the integrity of the other message through the second method. Depending on the capacity of the steganographic container a method can be chosen to embed the message anda method to control the integrity of the message. The algorithm of the inverse steganographic transformation for extracting a message and confirming the integrity of an electronic document is considered. The application is developed to perform the embedding of a hidden message in an electronic text document depending on the capacity of the container. The possibility of using of some steganographic methods is analyzed with the aim of forming a multi-key steganographic system intended for a digital watermarking of an electronic document Microsoft Word format .DOCX.

Текст научной работы на тему «Применение нескольких стеганографических методов для осаждения скрытых данных в электронных текстовых документах»

Е. А. БЛИНОВА, А. А. СУЩЕНЯ

ПРИМЕНЕНИЕ НЕСКОЛЬКИХ СТЕГАНОГРАФИЧЕСКИХ МЕТОДОВ ДЛЯ ОСАЖДЕНИЯ СКРЫТЫХ ДАННЫХ В ЭЛЕКТРОННЫХ ТЕКСТОВЫХ ДОКУМЕНТАХ

Белорусский государственный технологический университет

Ключевые слова: стеганография, электронный документ, формат .DOCX

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

В связи с широким распространением, электронные документы Microsoft Office часто используются в качестве файлов-контейнеров. Для них применяются методы, которые используют наравне с классическими методами текстовой стеганографии методы, свойственные контейнеру, такие как формат и смещение текста, размещение диакритических знаков, наличие истории редактирования и прочей служебной информации, что позволяет добиться увеличения скрытности и пропускной способности. В статье рассматривается совместное применение двух различных стеганографических методов осаждения скрытой информации в электронных документах Microsoft Word формата DOCX.

Метод изменения межстрочного расстояния, или line-shift coding, успешно применялся для маркирования технической документации для предотвращения утечек со стороны допу-

Была предложена модификация стегано-графического метода изменения межстрочного расстояния электронного документа, заключающаяся в том, чтобы производить смещение не всей строки, а только неотображаемых символов (пробелов, табуляций, знаков переноса строки, неразрывных пробелов, абзацев и т. д.) [2]. В качестве редактора электронных текстовых документов использовался редактор Microsoft Word 2010, однако изменение высоты строки, как для полной строки, так и для отдельных символов существует и в других текстовых редакторах. В Microsoft Word такое смещение производится как Шрифт/Интервал/ Смещение.

Отметим, что, как видно из рис. 1, б, изменение начертания и размера шрифта не влияют на отображение электронного текста из-за особенностей реализации контейнера. Также отметим, что стандартными средствами текстового редактора различные высоты смещения символов текста не определяются, в отличие от других свойств формата (размера, начертания и пр.), и могут быть определены только визуально, либо программно. При переносе текста между различными редакторами электронных текстовых документов смещение не-отображаемых символов переносится только в некоторых редакторах электронных документов. Было протестировано внедрение скрытой информации в некоторые, наиболее часто применяющиеся, редакторы электронных документов: Microsoft Word (версии от 2000 до 2010), Adobe InDesign версии CS5 и ранее, Corel версии X6 и ранее. При переносе в Adobe Acrobat изменение междустрочного интервала неото-бражаемых символов, к сожалению, невозможно из-за особенностей экспорта в формат .pdf [3].

Уровеньразвития современных технологий -позволяе компаниям создавать сложные корпоративные ■ инфраструктуры, объединяющие -в-себе множество ■ подсистем. -Зачястую япхитектуш сети настолько слс что-обеспеч ггь ее-пол [ую-защиту становится-непоси задачей-дажс ¡ьш крупных-корпораций,-выделяющих солидный бюджет на -защиту -своих -ресурсов. -Провед анализазащшценности-позволяетзаблаговременно-в] наиболее -уязвимые -компонаигагенстсгаяч!-устранил недостатки в обеспеченииз; щиты.1

Рис. 1. а - текст со смещенными неотображаемыми символами; б - Текст со смещенными неотображаемыми символами с изменением начертания и размера шрифта

Второй метод, использующий особенности описания электронного документа Microsoft Word формата .DOCX в формате XML, состоит в следующем. Файл формата .DOCX не является расширенным файловым форматом, а представляет собой архив. Формат файла основан на Open XML, подробно описанный в стандарте ECMA-376: Office Open XML File Formats, и использует сжатие по алгоритму ZIP для уменьшения размера файла. Данный архив содержит два типа файлов - файлы формата XML с расширениями xml и rels и медиа-файлы, например, изображения. Логически файл состоит из трех видов элементов: типов, частей и связей. Типы - это список сущностей, встречающихся в документе, например, типов меди-афайлов или частей документов, части - это отдельные части документа, для каждой части документа создан отдельный файл формата XML. Между частями документа устанавливаются связи. Таким образом, можно сказать, что файл формата .DOCX представляет собой набор сжатых файлов формата XML, причем все текстовое содержимое электронного документа Microsoft Word формата .DOCX находится в одном XML файле, а именно в document.xml. Файл document.xml представляет собой XML файл в элементной форме, где каждому элементу обычно соответствует один атрибут. Теги начинаются с «w:» и обозначают:

<w:document> - тег свойства документа, указываются пространства имен, используемые при построении XML файла;

<w:body> - тег тела документа, является корневым тегом для частей документа;

<w:p> - тег абзаца документа, где указываются свойства абзаца, такие как выравнивание, абзацные отступы и т. д.;

<w:r> - тег фрагмента текста, для которого указываются особенности форматирования данного участка текста, такие как размер шрифта, высота межстрочного интервала, цвет и т. д.;

<w:t> - тег текста, в котором содержится текст части документа.

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

/ч Name Size Packed Type

LLrels Папка с файлами

theme Папка с файлами

M document,xml 8143 1 467 Документ XML

@fontTable.xml 1 334 465 Документ XML

[H?]settinq5.xml 2486 938 Документ XML

¡^1 styles,xml 28719 2860 Документ XML

Г= webSettings.xml 576 280 Документ XML

Рис. 2. Структура документа форматаЮОСХ

Рис. 4. Интерфейс программного средства SpaceQuoteStego

ния для неотображаемых символов как S, а метод замены типа кавычек с двойных на одинарные - Q.

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

1. Урбанович, П. П. Защита информации методами криптографии, стеганографии и обфускации: учеб.метод. пособие / П. П. Урбанович. - Минск: БГТУ, 2016. - 220 с.

2. Блинова, Е. А. Стеганографический метод на основе изменения межстрочного расстояния неотображаемых символов строк электронного текстового документа // Материалы 80 конференции профессорско-преподавательского состава БГТУ - Минск. - 2016. - с. 11.

3. Блинова, Е. А. Стеганографический метод на основе изменения междустрочного расстояния неотображаемых символов строк электронного текстового документа // Труды БГТУ Сер. Физико-мат. науки и информатика № 6. -Минск: БГТУ - 2016. - С. 166-169.

5. Сущеня, А. А. Способ стеганографического осаждения информации в документ с расширением .DOCX / А. А. Сущеня // XXI Республиканская научная конференция студентов и аспирантов, 19-21 марта, Гомель: сборник научных работ / Гомельский государственный университет имени Ф. Скорины. - C. 303-304.

6. Сущеня, А. А. Идея и архитектура веб-приложения, использующего в качестве стеганографического контейнера документы формата DOCX / А. А. Сущеня // Международная научно-практическая конференция, 14-18 мая, Минск: сборник научных работ / Белорусский государственный университет. - C. 170.

7. Сущеня, А. А., Блинова Е. А., Урбанович П. П. Модификация стеганографического метода изменения междустрочного расстояния электронного документа // Технические средства защиты информации: Тезисы докладов XVI Белорусско-российской научно-технической конференции, 5 июня 2018 г Минск. Минск: БГУИР, 2018. - С 90-91.

8. Сущеня, А. А. Программное средство стеганографического преобразования текстов-контейнеров на основе языка разметки XML / А. А. Сущеня // 69-я научно-техническая конференция учащихся, студентов и магистрантов, 2-13 апреля, Минск: сборник научных работ: в 4 ч. Ч. 4 / Белорусский государственный технологический университет. -Минск: БГТУ, 2018. - С. 81-84.

1. Urbanovich P. P. Zaschita informatsii metodami kriptografii, steganografii I obfuskatsii [The protection of information based on the methods by cryptography steganography and obfuscation]. Minsk. BSTU Publ., 2017. 220 p.

2. Blinova E. The steganography method based on the line-shift coding method on non-displayed symbols of the electronic text document, Proc. of 80th International Scientific Conference on Belarusian State Technological University of Faculty members, Researchers and graduate students, Minsk, Belarus, 2016, р. 11.

3. Blinova E. The steganography method based on the line-shift coding method on non-displayed symbols of the electronic text document // Trudy BGTU [Proceedings of BSTU], series 3, Physics and Mathematics. Informatics, 2016, no. 6, pp. 166-169.

4. Sushchenia, A. A. Steganography transformation text containers based on markup languages / A. A. Sushchenia // 68 scientific conference of students, students and undergraduates: collection of scientific works, Minsk, April 17-22, 2017: in 4 parts/Belarusian State University of Technology. -Mn.: BSTU, 2017. -Ch. 4. - C. 145-149.

5. Sushchenia, A. A. Steganographic method of information embedding into a document with the extension Sushchenia / A. A. Sushchenia // XXI Republican Scientific Conference of Students and Postgraduates, March 19-21, Gomel: Collection of Scientific Works / F. Skorina Gomel State University. - C. 303-304.

6. Sushchenia, A. A. The idea and architecture of a web application that uses DOCX-format documents as a stegano-graphic container / A. A. Sushchenia // International Scientific and Practical Conference, May 14-18, Minsk: collection of scientific papers / Belarusian State University. - C. 170.

7. Sushchenia, A. A., Blinova E. A., Urbanovich P. P. Steganographic method modification of the changing line distance of an electronic document // Technical means of information protection: Abstracts of the 16th Belarusian-Russian Scientific and Technical Conference, June 5, 2018, Minsk. Minsk: BSUIR, 2018. - C 90-91.

8. Sushchenia, A. A. Software for steganographic transformation of text-containers based on XML markup language / A. A. Sushchenia // 69th Scientific and Technical Conference of Pupils, Students and Undergraduates, April 2-13, Minsk: a collection of scientific work: at 4 pm. Part 4 / Belarusian State Technological University. - Minsk: BSTU, 2018. - p. 81-84.

Поступила После доработки Принята к печати

11.05.2019 23.06.2019 01.07.2019

BLINOVA E. A., SUSCHENIA A. A.

SEVERAL STEGANOGRAPHIC METHODS USING FOR EMBEDDING OF HIDDEN DATA IN ELECTRONIC TEXT DOCUMENTS

The description of the method and algorithm for embedding a hidden message or a digital watermark into files of Microsoft Word electronic documents in .DOCX format based on two steganographic methods is given. A Microsoft Word electronic document in .DOCXformat is used as a steganographic container. One of the methods uses the features of displaying a document by a word processor and the word processor allows the displacement of hidden characters, such as spaces, tabs and paragraphs, in the text relatively to the line of text. The second method uses the feature of the .DOCX format electronic text document that a document is an archive containing Open XML format files and media files, so specialized steganographic methods for XML files can be used for embedding a hidden message. In this case the quotes replacement method is used. The embedding of a hidden message by one of the methods is used for checking the integrity of the other message through the second method. Depending on the capacity of the steganographic container a method can be chosen to embed the message and

a method to control the integrity of the message. The algorithm of the inverse steganographic transformation for extracting a message and confirming the integrity of an electronic document is considered. The application is developed to perform the embedding of a hidden message in an electronic text document depending on the capacity of the container. The possibility of using of some steganographic methods is analyzed with the aim offorming a multi-key steganographic system intended for a digital watermarking of an electronic document Microsoft Word format .DOCX.

Keywords: steganography, electronic document, line-shift coding.

Блинова Евгения Александровна - старший преподаватель кафедры ИСИТ Белорусского государственного технологического университета. Научные интересы: стеганография, базы данных, обработка данных.

Сущеня Артём Александрович закончил Белорусский государственный технологический университет по специальности «Информационные системы и технологии» (2018), обучается в магистратуре по специальности «Системный анализ, управление и обработка информации». Научные интересы: стеганографические методы скрытой передачи информации.

Sushchenia Artsiom graduated from Belarusian State Technological University with a specialty in «Information systems and technologies» (2018), working on master degree «System Analysis, Information Control and Processing». Scientific interests: steganography methods of hidden information transfer.


Однако прогресс не стоит на месте — и в последнее время всё чаще используются другие способы скрытия данных, например, PNG-наполнение. Посмотрим, как это делается.

Начнём с небольшого теоретического введения по «невидимым» частям PNG.

На экране компьютера при отображении картинки цвета создаются сочетанием красного, зелёного и синего компонентов. Эти три цветовые плоскости называются каналами. Обычно они записываются как RGB.

Кроме этих трёх каналов, в PNG может быть ещё четвёртый канал, называемый альфа (обозначается буквой А) для определения уровня прозрачности. Полученное изображение RGBA определяет видимые цвета и степень прозрачности.

В большинстве графических форматов альфа-канал является значением от 0% до 100% (или от 0 до 255 в байтах). Значение 0% (чёрный) обозначает место на изображении, где должна быть полная прозрачность — тут значение RGB игнорируется, и полностью виден фон под картинкой. Значение альфа-канала 100% (белый) означает, что каналы RGB полностью непрозрачны. Промежуточные значения определяют, насколько нужно смешать фон со значением RGB-пикселя.



Альфа-градиент в PNG

Значения альфа-градиента обычно используются для наложения изображения на другое изображение или на веб-страницу. Альфа-градиенты есть в PNG, WebP, ICO, ICN и других растровых форматах. Формат GIF поддерживает только логическое значение (пиксель либо прозрачен, либо нет).

Альфа-канал — только один из вариантов для размещения скрытого текста. Переходим к PNG-наполнению (padding) для прямой записи данных в бинарный файл.

Формат PNG достаточно прост. Каждый файл начинается с восьми стандартных байт подписи, вот её десятичные значения: 137 80 78 71 13 10 26 10 . Первый байт выбран за пределами ASCII, чтобы никакой редактор случайно не принял изображение за текстовый файл. Следующие три байта соответствуют буквам P, N, G. Затем разрыв строки DOS (13 10), маркер DOS окончания файла (26), чтобы программа type не выдавала весь бинарный мусор, и маркер Unix новой строки.

После заголовка начинаются блоки данных (chunks) со стандартной структурой. Сначала идёт блок IHDR с указанием ширины и высоты изображения, цветового пространства, количества бит на пиксель, методом сжатия, методом фильтрации и указанием наличия/отсутствия чересстрочного кодирования. Для ширины и высоты выделено по четыре байта, для остальных параметров — по одному байту.

Затем следует опциональный блок tEXt с текстовыми метаданными, например, с названием программы, которая сгенерировала данный файл PNG. В текстовые блоки можно записывать текстовую информацию в открытом виде.

За IHDR и tEXt следуют блоки IDAT со сжатыми значениями RGB или RGBA для растровых пикселей. При рендеринге PNG обрабатывается IHDR, выделяется буфер в памяти для изображения, данные извлекаются из сжатого формата и попиксельно записываются в буфер. Файл PNG завершается блоком IEND.

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

Обычно изображения PNG содержат 8 или 16 бит информации на каждый канал RGB или RGBA, то есть выходит от трёх до восьми байт на пиксель. В таком формате все байты заняты полезной информацией о цвете и прозрачности, так что в конце каждой строки графического изображения у нас нет места для записи произвольных данных.

Но для задач стеганографии нужно знать, что PNG поддерживает и меньшую глубину цвета: 1 бит (2 цвета), 2 бита (4 цвета) и 4 бита (16 цветов). В такой ситуации получается, что в одном байте хранится информация о нескольких пикселях. Вот здесь и появляется теоретическая возможность для «горизонтального» наполнения PNG посторонними данными. Если ширина картинки в пикселях не кратна восьми, то в последнем байте строки остаётся неиспользуемые биты, которые все вместе формируют целый неиспользуемый «столбец пикселей».

В случае 1-битного изображения в конце каждой строки может остаться до 7 свободных бит, которые не будут обработаны парсером. В случае 2-битного изображения в последнем байте остаётся до 3 свободных бит. Онлайновый инструмент FotoForensics находит такие неиспользуемые «столбцы пикселей» в изображениях PNG.

Впрочем, PNG-картинки с малой глубиной цвета встречаются очень редко, поэтому и данный метод стеганографии можно считать экзотикой. Если вам попалось PNG-изображение с 2, 4 или 16 цветами, один этот факт уже вызывает подозрение и может инициировать проверку PNG-наполнения по столбцам.

Совсем другое дело — PNG-наполнение за границами картинки. Это более простой метод стеганографии, который позволяет спрятать в изображении гораздо больше информации.

PNG-наполнение за границами картинки (post-pixel padding) часто используется в различных играх, головоломках и конкурсах, не только хакерских. Вот как работает этот метод:

    Берём изображение PNG (с любой глубиной цвета).

Несложно догадаться, что в «секретной» части картинки можно спрятать не только текстовую надпись, но и произвольные данные. Например, мы можем записать туда запароленный архив RAR. Картинка с секретным посланием может быть опубликована на Habrastorage или любом другом общедоступном хостинге. Послание получит только тот человек, с которым вы заранее договорились о способе передачи информации и согласовали пароль. Таким способом вредоносные программы могут передавать полезную нагрузку через Хабр и другие общедоступные хостинги.

На правах рекламы

VDS для размещения сайтов — это про наши эпичные! Все серверы «из коробки» защищены от DDoS-атак, автоматическая установка удобной панели управления VestaCP. Лучше один раз попробовать ;)


Мануал

Сокрытие данных

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

Чем стеганография отличается от криптографии?

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

Вот некоторые инструменты для стеганографии:

1.SilentEye

Допустим, что у нас есть файл pass.txt, который содержит учетные данные для доступа к информационным системам. И мы собираемся скрыть этот файл в изображение с помощью инструмента SilentEye.


a. Перетащим изображение в стартовое окно программы, которое мы хотим использовать для скрытия данных.

b. После добавления изображения нажмем на опцию кодирования (Encode)



d. Изображение после кодирования будет сохранено в папке назначения указанную в предыдущем шаге. Мы видим, что закодированное изображение выглядит точно так же, и в нем трудно обнаружить какой-либо скрытый файл.
e. Теперь, чтобы декодировать это изображение, нажмем на опцию Decode



g. Декодированный файл показан на рисунке


2. iSteg


3. OpenStego

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

Интерфейс программы прост и приятен. Для скрытия данных в поле Message File выбираем наш файл с паролями, который мы хотим спрятать, в поле Cover File выбираем исходную картинку, которая будет являться контейнером для текстового файла, в поле Output Stego File задаем имя итогового изображения с секретом. После выбираем алгоритм шифрования (AES256 в указанном случае) и задаем пароль. После наживаем Hide Date и получаем результат


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


Для обратных действий, соответственно, на вкладке Extract Data необходимо выбрать файл со скрытыми данными, выбрать путь для сохранения файла на выходе, ввести пароль и нажать Extract Data и мы получим наш файл passwords.txt


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

Генерируем электронную подпись в формате *.sig


Проставляем водяной знак для itsecforu с использованием заранее сгенерированного файла подписи и получаем подписанный файл изображения isecforu_sig.jpg


Для проверки водяного знака на вкладке Verify Watermark необходимо, соответсвенно выбрать файл с водяным знаком и файл подписи


4. Open Puff


Для скрытия предлагается ввести 3 разных пароля, однако пароль B и С можно отключить, сняв флажки с параметров Enable (B) и Enable (C), так мы и поступим и введем пароль в поле А. Затем в блоке Data выберем файл с паролями passwords.txt. На 3-м шаге выберем файл изображения itsecforu.jpg в качестве носителя. Далее выберем формат файла на выходе и стойкость, нажимаем Hide Data! и выбираем директорию для сохранения файла со скрытыми данными.


Для извлечения файла, необходимо, соответсвенно выбрать в стартовом меню Unhide, ввести парольв блок А, выбрать контейнер itsecforu.jpg и нажать Unhide!


Как видим, мы получаем наш файл password.txt


Процесс маркировки файлов также прост и понятен, поэтому рассмотривать его не станем.

5. Steghide

Принцип работы аналогичен при работе в ОС Windows


Для скрытия файла password.txt в в файл изображения itsecforu.jpg введем:

Затем вводим пароль и подтверждение пароля и получаем наш файл itsecforu.jpg уже со скрытыми данными


Соответсвенно для извлечения скрытых данных введем:

Вводим пароль и получаем наш файл password.txt




Вообще, советую обратить на указанный ресурс внимание

  • Hide and Seek
  • JPEG-JSTEG
  • Pretty Good Envelope
  • StegoDos
  • Stegano Wav
  • PGP Stealth

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

  1. Выбираем данные которые необходимо скрыть
  2. Выбираем носитель, куда прячуться данные
  3. Задаем пароль

Методы обнаружения Стеганографии

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

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