Научная статья на тему 'Опыт сигнатурного анализа стеганографической программы S-Tool'

Опыт сигнатурного анализа стеганографической программы S-Tool Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
667
187
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
СТЕГАНОАНАЛИЗ / СТЕГАНОДЕТЕКТОР / СТЕГАНОДЕКОДЕР / СИГНАТУРНЫЙ АНАЛИЗ / МЕТОД НАИМЕНЬШИХ ЗНАЧАЩИХ БИТ / ДИЗАССЕМБЛИРОВАНИЕ / BMP-ФАЙЛ / STEGANALYSIS / STEGODETECTOR / CTEGODECODER / SIGNATURE ANALISYS / DISASSEMBLING / S-TOOL / BMP-FILE

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Солодуха Роман Александрович, Машуков Денис Викторович

Описан алгоритм работы программы S Tool по извлечению стегановложения, полученный путем дизассемблирования. Сделаны выводы о возможностях сигнатурного анализа стеганоконтейнеров.

i Надоели баннеры? Вы всегда можете отключить рекламу.

Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — Солодуха Роман Александрович, Машуков Денис Викторович

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

THE EXPERIENCE OF THE STEGANOGRAPHY PROGRAM S-TOOL SIGNATURE ANALYSIS

The S Tool extracting algorithm obtained by disassembling is described. The conclusions about the possibilities of the stego-cover signature analysis are presented.

Текст научной работы на тему «Опыт сигнатурного анализа стеганографической программы S-Tool»

Р.А. Солодуха, Д.В. Машуков

ОПЫТ СИГНАТУРНОГО АНАЛИЗА СТЕГАНОГРАФИЧЕСКОЙ

ПРОГРАММЫ S-TOOL

THE EXPERIENCE OF THE STEGANOGRAPHY PROGRAM S-TOOL

SIGNATURE ANALYSIS

Описан алгоритм работы программы S-Tool по извлечению стегановложения, полученный путем дизассемблирования. Сделаны выводы о возможностях сигнатурного анализа стеганоконтейнеров.

The S-Tool extracting algorithm obtained by disassembling is described. The conclusions about the possibilities of the stego-cover signature analysis are presented.

Введение

В соответствии с [1,2] все известные на настоящий момент методы обнаружения встроенных скрытых методами стеганографии сообщений — методы стеганоанализа могут быть разделены на две группы: методы специализированного стеганоанализа и методы универсального стеганоанализа.

Методы специализированного стеганоанализа ориентированы на обнаружение встроенных сообщений при априори известных методе встраивания и особенностях контейнеров. Наиболее эффективными методами стеганоанализа пространственной области изображения являются: классификация статистик, классификация распределений, RS-стеганоанализ, оценка артефактов компрессии, сравнение центра масс изображения [1,3].

Универсальные методы стеганоанализа ориентированы на выявление нескольких методов стеганографии и обработку контейнера, поступающего в области пространственно-временного представления. Как правило, возможна адаптация к особенностям форматов файлов и новых методов стеганографии. Методы данной группы являются многофакторными, т.е. для проведения стеганоанализа используется набор признаков, а также учёт характера их изменения при встраивании информации для заполненного и пустого стеганоконтейнеров. Наиболее эффективными методом стеганоанализа пространственной области изображения является построение вектора признаков путем последовательного вейвлет-преобразования и обучение с помощью нейросети [4].

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

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

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

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

Сигнатурный анализ стеганографической программы включает в себя два этапа :

1. Определение алгоритма определения наличия вложения (стеганографической программы ).

2. Определение параметров вложения (алгоритм, пароль) и его извлечение.

Работа по реализации первого этапа сигнатурного стеганоанализа на примере

стеганографических программ S-Tool и StegoMagic путем дизассемблирования. В результате алгоритмы работы стеганодетекторов данных программ восстановлены. Часть работы связанная с программой StegoMagic изложена в [5]. В настоящей статье приводится алгоритм работы S-Tool по извлечению вложения.

Описание и предварительный анализ программы S-Tool

S-Tools (Steganography Tools) — один из лучших и самых распространенных продуктов для платформы Windows95/NT, имеющий статус freeware. Программа позволяет скрывать файлы как в изображениях формата GIF и BMP, так и в аудиофайлах формата WAV. При этом S-Tool сочетает в себе методы стеганографии и криптографии, потому что файл, подлежащий сокрытию, еще и шифруется с помощью одного из криптографических алгоритмов с симметричным ключом: DES, тройной DES или IDEA.

S-Tool использует стандартные библиотеки Windows: ntdll.dll, kernel32.dll, KernelBase.dll, winmm.dll, msvcrt.dll, user32.dll, gdi32.dll, lpk.dll, usp10.dll и другие, возможности данных библиотек можно найти в справочнике по WinAPI. Также используются следующие нестандартные библиотеки:

GIFutil.dll — библиотека для работы с GIF изображениями;

zlib.dll — свободная кроссплатформенная библиотека для сжатия данных;

cryptlib.dll — кроссплатформенная криптографическая библиотека с открытым исходным кодом.

Общая схема осуществления вложения программой S-Tool приведена на рис. 1.

Процесс определения сигнатуры программы S-Tool

Задача заключается в изучении алгоритма работы стеганодекодера программы S-Tool, для чего был использован дизассемблер IDA PRO версии 5.5. Данная программа позволяет превратить бинарный код программы в ассемблерный текст, который может быть применен для анализа работы программы. Так как полный анализ кода программы весьма трудоемок, было принято решение дизассемблировать только те участки кода, которые необходимы для решения поставленной задачи, т.е. работу программы по извлечению вложения с момента ввода пользователем пароля и алгоритма шифрования.

Для определения адреса вызова функции после ввода данных пользователем, была использована программа API Monitor. Используя команду Hook new Process, определили используемые библиотеки и функции в приложении и адрес функции, которая обрабатывает ввод данных пользователя в диалоговом окне «Revealing from».

После ввода данных в диалоговом окне «Revaling form» создается новый поток, в памяти он располагается по адресу 004110B0. По этому адресу вызывается функция _AfxThreadEntry, создающая новый поток. Данный поток отвечает за наличие вложения, извлечение и расшифровку вложения. Функция _AfxThreadEntry возвращает 1 или

0, т. е. код завершения потока (deExitCode). Данное значение передается функции AfxEndThread(DWORD dwExitCode, int), которая решает, продолжить или завершить выполнение данного потока. Функция AfxEndThread вызывается по адресу 0042428A.

Далее по адресу 0040577D вызывается функция UpdateData, которая получает пароль и метод шифрования, введенные пользователем.

Рис. 1. Общая схема осуществления вложения программой S-Tool

Затем выделятся память, которую условно можно разделить на две части, в первую часть записывается хеш, полученный из введенного пароля с помощью алгоритма MD5, этот хеш равен 128 бит. Во второй части выделенной памяти содержится хеш, полученный из первого хеша. Таким образом, происходит двойное хеширование. Из второго хеша берется столько бит, сколько требуется для выбранного пользователем алгоритма шифрования. Например, для IDEA 128 бит, а для DES 56 бит.

Далее по адресу 004057F9 вызывается функция createMD5, которой передается пароль. Функция возвращает хеш MD5(firstMD5), длина которого 128 бит, полученный хеш сохраняется в выделенную ранее область памяти. Данный хеш используется для нахождения байт контейнера, хранящих биты вложения. Далее полученный хеш хешируется повторно, и, в зависимости от выбранного пользователем алгоритма шифрования, берется нужное количество бит и сохраняется в выделенную ранее область памяти. Данный хеш (secondMD5) будет использоваться для расшифровки вложенного сообщения.

Затем определяется максимальный размер вложения для изображения, начиная с адреса 004018C3 по 004018DF. Максимальный размер вложения в байтах определяется по следующей формуле : Ширина*Высота*3/8 - 16.

Далее по адресу 00406598 вызывается функция queryAlgoModelnformation библиотеки cryptlib.dll, данная функция возвращает объект, описывающий процесс шифрования, передав функции следующие аргументы: режим шифрования CFB и алгоритм шифрования IDEA. Далее по адресу 004057CA вызывается функция loadCryptContext полученного объекта с одним аргументом (firstMD5). Данная функция устанавливает пароль для данного объекта. Этот объект (objAdrEncry) будет использоваться для поиска байт, содержащих биты вложения.

Дальнейший анализ кода внутри созданного потока до вызова функции AfxEndThread показал, что код завершения возвращается функцией, вызывающейся по адресу 00424233. Следовательно, дальнейший анализ нужно продолжить с данной функции. Адрес вызывающейся функции хранится в регистре ECX. Узнав адрес перехода (004110B0), дадим осмысленное название вызванной функции, назовем данную функцию VerificationPsw.

В функции VerificationPsw по адресу 00401B15 вызывается функция FindAdress, которая возвращает адрес в памяти, где хранится bitmap изображения.

Далее выполняется цикл, в котором вызывается функция findAdrBit по адресу 00401B82 с одним аргументом в виде объекта описывающего процесс шифрования. Функция возвращает адрес байта контейнера содержащего один бит размера вложения. Цикл состоит из 64 повторений. Полученные 64 бита располагаются в массиве buff и представляют размер вложения в зашифрованном виде. Функция findAdrBit для поиска адреса использует функцию шифрования encryptBuffer библиотеки cryptlib.dll.

По адресу 00401BE3 вызывается функция InfoDec, которая создает объект, описывающий процесс расшифрования, передав функции режим шифрования CFB и выбранный пользователем алгоритм шифрования. Затем устанавливаем пароль для данного объекта. Пароль — это хеш, полученный повторным хешированием (secondMD5).

Далее по адресу 00401BF4 вызывается функция decryptBuffer библиотеки cryptlib.dll. Аргументом для данной функции является 64 бита зашифрованного размера вложения. Затем расшифрованное значение сравнивается с максимально возможным размером вложения. Если размер вложения не превышает максимального, то размер выделяемой памяти для вложения рассчитывается следующим образом: к расшифрованному значению прибавляем 7h, затем AND 0FFFFFFF8h.

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

По адресу 00401D3F вызывается функция decryptBuffer библиотеки cryptlib.dll. Она обрабатывает объект описывающий процесс расшифрования и зашифрованное вложение, на выходе — следующий данные: путь откуда был загружен файл; размер сжатого вложения; размер декомпрессионых данных в байтах; само сжатое вложение.

Для декомпрессии данных по адресу 00407575 вызывается функция inflate() библиотеки zlib.dll, которой передается сжатое вложение, а возвращается декомпрессионное.

Восстановленный алгоритм работы программы S-Tool по извлечению вложения представлен на рис. 2, 3.

password = введенный пар оль encryAlgo = выбранный алгоритм шифрования

Использование пароля, создание хеша для поиска бит вложения в файле firstMD5 = creationMD5 (password)

С помощью firstMD5 создается еще один хеш для расшифровки. В зависимости от алгоритма шифрования из хеша берется для IDEA 10h байт, для DES 7h байт. secondMD5 = creationMD5 (firstMD5)

___ і ________________________________________

Определяется размер максимального вложения masSizeOfStego = Ш*В*3/8 -16

_______________________ I _______________________

Создается объект, который описывает алгоритм шифрования.

В примере используется режим шифрования CFB, алгоритм шифрования IDEA objAdrEncry = createObj(CFB, IDEA, firstMD5)

i = 1..8

i = 1..8

Определяем адрес бита размера вложения findAdrBit(objAdrEncry, buff)

binaryArray[j] = 0 / рэ ] \ ^ / \х, / binaryArray[j] = 0

byteArray[i] = BinaryToHex(binaryArray)

______________________________________________________________________________ж.

Создается объект, который описывает алгоритм расшифрования вложения.

В примере используется режим шифрования СББ, алгоритм шифрования епсгуА^о о^Весг = сгеа1еОЬі(СРБ, епсгуА^о, secondMD5)

г -

sizeOfStego = decrypt( objDecr, byteArray)

Рис. 2. Алгоритм работы стеганодетектора S-Tool (часть 1)

Определяем размер вложения sizeOfStego = (sizeOfStego + 7) AND FFFFFFF8h

I

Рис. 3. Алгоритм работы стеганодетектора S-Tool (часть 2)

Заключение

Проведенный анализ алгоритма работы программы S-Tool показал, что определить наличие вложения без знания пароля невозможно, т.к. при определении адресов значащих байт используется библиотека cryptlib.dll с алгоритмом шифрования IDEA (режим шифрования CFB) и паролем, который вычисляется по алгоритму МИ5 на базе введенного пользователем пароля.

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

ЛИТЕРАТУРА

1. Стеганография, цифровые водяные знаки и стеганоанализ / А. В. Аграновский [и др.]. — М.: Вузовская книга, 2009. — 220 с.

2. Конахович Г.Ф., Пузыренко А.Ю. Компьютерная стеганография. Теория и практика. — К.: МК-Пресс, 2006. — 288 с.

3. Швидченко И. В. Методы стеганоанализа для графических файлов // Штучний інтелект. — 2010. —4. — С.697—705.

4. Рублев Д.П. Разработка и исследование высокочувствительных методов стегоа-нализа: дис. ... канд. техн. наук: 05.13.19 / Юж. федер. ун-т. — Таганрог, 2007. — 139 с.

5. Солодуха Р. А. Опыт сигнатурного анализа программы StegoMagic // Математические методы и информационно-технические средства: труды VIII Всероссийской научно-практической конференции. — Краснодар: Краснодарский университет МВД России, 2012. — С. 210—215.

i Надоели баннеры? Вы всегда можете отключить рекламу.