Анализ методов обфускации

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

Рубрика Программирование, компьютеры и кибернетика
Вид статья
Язык русский
Дата добавления 06.03.2019
Размер файла 11,3 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Размещено на Allbest.ru

Аннотация

Современные компьютерные технологии делают актуальными различные задачи в сфере информационной безопасности. Например, для защиты авторских прав на изображения применяют методы стеганографии. Для решения задачи доказательства авторства (или наоборот скрытия такового) программного кода используют методы обфускамции. Обфускамция (от лат. Obfuscare - затенять, затемнять; и англ. Obfuscate - делать неочевидным, запутанным, сбивать с толку) или запутывание кода - это процесс приведения исходного текста или исполняемого кода программы к виду, сохраняющему ее функциональность, но затрудняющему анализ, понимание алгоритмов работы и модификацию при декомпиляции. В настоящее время имеются специальные программы, производящие обфускацию, называемые обфускаторами, которые решают поставленную задачу по-разному. В данной статье рассматриваются основные методы обфускации от самых простых полиморфных генераторов до изощренных обфускаторов, выполняющих математические преобразования программного кода, а так же взаимосвязь обфускации и повышения эффективности исполнения программного кода и уменьшению размера программы. Описано дальнейшее развитие методов обфускации. Ключевые слова: обфускация, стеганография, авторские права, защита информации, сокрытие информации, методы обфускации, распознавание, обфускатор, оптимизация, декомпиляция

стеганография обфускация

Abstract

Modern computer technology makes it a variety of tasks relevant to the field of information security. For example, for the protection of copyright in the images methods of steganography are used. To solve the problem of proving authorship (or vice versa) code obfuscation techniques are used. Obfuscation (from Lat. Obfuscare - obscure, obfuscate, and English. Obfuscate - make non-obvious, confusing, confusing) or obfuscated code - is the process of bringing the source code or executable program code to the form, that keeps its functionality, but complicates the analysis, understanding algorithms and modification during decompilation. Currently, there are special programs called obfuscators that performes obfuscation to solve the task in different ways. The article discusses the techniques of obfuscation from the most basic to sophisticated polymorphic generators obfuscators performing the mathematical transformation of the code, as well as the relationship of obfuscation and efficiency of program code execution and reduce the size of the program. The authors describe further development of obfuscation techniques.

Keywords:

optimization, obfuscator, recognition, methods of obfuscation, concealment of information, information protection, copyright, steganography, obfuscation, decompilation

Введение

В настоящее время имеются специальные программы, производящие обфускацию[1], называемые обфускаторами, которые решают поставленную задачу по-разному. Например, одни занимаются интерпретируемыми языками типа PHP и изменяют исходные тексты (удаляют комментарии, дают переменным бессмысленные имена, шифруют строковые константы и т. д.), другие изменяют байт-код виртуальных машин Java и. NET, что технически сделать намного труднее. Более развитые обфускаторы изменяют машинный код, вставляя бессмысленные инструкциями. Кроме того они могут делать структурные или математические преобразования, изменяющие программу до неузнаваемости.

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

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

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

Рассмотрим основные методы обфускации.

Методы обфускации

Первые, и самые простые, обфускаторы являются давно известными полиморфными генераторы. Они за небольшое время генерируют бесполезные команды вида nop, xchg reg, reg, никогда не выполняющимися переходами типа xor reg, reg/jnz junk, где xor - значимая команда, а junk - «мертвый код», и вставляя их в значимый код. Конечно, при этом происходит некоторая потеря эффективности, но это не критично.

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

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

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

Изощренные обфускаторы отслеживать зависимость по данным, внедряя осмысленные инструкции с «нулевым эффектом».

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

Разработка качественного и надежного запутывателя - сложная инженерная задача, но потраченное время стоит того[2]. Бесполезность «инструкций с нулевым эффектом» уже не распознается визуально, и обычный трассер тут ничем не поможет. Необходимо трассировать не только поток управления, но и поток данных, то есть отслеживать реальные изменения значений регистров/ячеек памяти, для чего обычно используются графы. Как только граф замыкается сам на себя, все «лишние» операции над данными удаляются и остается только суть.

Более совершенные обфускаторы выполняют математические преобразования программного кода. Например, команда «a++» может быть заменена на эквивалентную ей конструкцию a += abs (exp (I*x)), где abs (exp (I*x)) - модуль экспоненциального представления комплексной величины, вычисляемый при помощи разложения в ряд Тейлора. Распознать в такой записи исходную формулу очень трудно.

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

При выполнении обфускации зачастую ускоряется время работы и размер программы. Так, например, минимизация JavaScript приводит как к уменьшению размера программы, так и к ускорению её интерпретации.

В обфусцированном варианте данный код выглядит следующим образом:

public static void a1 (ArrayList a2) {

for (int a3=0; a3<a2. size () ; a3++) a2. set (a3, a2. get (a3) *0. 1) ;

}

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

Заключение

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

Далее, обфускация создает новую ситуацию в антивирусной индустрии. Чтобы взломать программу, анализировать ее алгоритм в общем-то необязательно. Зато обнаружить зловредный код (он же malware) без этого уже не удастся!

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

Библиография

1. Коробейников А. Г., Кувшинов С. С. Cистема скрытой передачи сообщений в графических изображениях формата JPEG//Научно-технический вест¬ник СПб ГУ ИТМО- СПб: СПбГУ ИТМО, 2008. - вып. 51. - с. 152-159.

2. Анализ запутывающих преобразований программ//CIT Forum URL: http: //citforum. ru/security/articles/analysis/ (дата обращения: 21. 03. 2012).

Размещено на Allbest.ru

...

Подобные документы

  • Основные методы запутывания программ. Общие сведения, разновидности и методы обфускации. Применение запутывающих преобразований. Алгоритмы процесса обфускации. Затруднение декомпиляции проприетарных программ с целью предотвращения обратной разработки.

    курсовая работа [505,3 K], добавлен 19.11.2013

  • Современные методы защиты информации средствами стеганографии. Анализ канала передачи сообщений, подходы к реализации стеганографического приложения. Алгоритмы методов последнего бита и передачи сообщений через стегоканал; ограничения его использования.

    курсовая работа [105,7 K], добавлен 05.11.2011

  • Система формирования режима информационной безопасности. Задачи информационной безопасности общества. Средства защиты информации: основные методы и системы. Защита информации в компьютерных сетях. Положения важнейших законодательных актов России.

    реферат [51,5 K], добавлен 20.01.2014

  • Понятие, цели и задачи информационной безопасности. Угрозы информационной безопасности и способы их реализации. Управление доступом к информации и информационным системам. Защита сетей и информации при работе в Интернете. Понятие об электронной подписи.

    контрольная работа [37,1 K], добавлен 15.12.2015

  • Понятие и сущность стеганографии, использование свойств формата файла-контейнера. Классификация методов стеганографии. Компьютерные вирусы и стеганография, гарантированное уничтожение информации. Методы воздействия на средства защиты информации.

    контрольная работа [80,2 K], добавлен 02.01.2018

  • Особенности решения транспортной задачи распределительным методом и анализ результатов. Построение математической модели, алгоритма. Создание программы для решения транспортной задачи распределительным методом в программной среде Borland Delphi 7.

    курсовая работа [1000,7 K], добавлен 23.06.2012

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

    дипломная работа [929,0 K], добавлен 27.10.2013

  • Обеспечение информационной безопасности в современной России. Анализ методов защиты информации от случайного или преднамеренного вмешательства, наносящего ущерб ее владельцам или пользователям. Изучение правового обеспечения информационной безопасности.

    контрольная работа [27,8 K], добавлен 26.02.2016

  • Решение задачи линейного программирования графическим методом, его проверка в MS Excel. Анализ внутренней структуры решения задачи в программе. Оптимизация плана производства. Решение задачи симплекс-методом. Многоканальная система массового обслуживания.

    контрольная работа [2,0 M], добавлен 02.05.2012

  • Основные принципы и условия обеспечения информационной безопасности. Защита информации от несанкционированного и преднамеренного воздействия, от утечки, разглашения и иностранной разведки. Цели, задачи и принципы системы ИБ. Понятие политики безопасности.

    презентация [118,4 K], добавлен 19.01.2014

  • Критерий эффективности и функции в системе ограничений. Общая постановка задачи линейного программирования. Составление математической модели задачи. Алгоритмы решения задачи симплексным методом. Построение начального опорного решения методом Гаусса.

    курсовая работа [232,4 K], добавлен 01.06.2009

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

    лекция [523,7 K], добавлен 25.07.2013

  • Описание алгоритма решения транспортной задачи по планированию перевозки зерна. Ход решения задачи вручную, в программе TORA методом наименьшего элемента, с помощью MS Excel. Разработка программы для решения задачи в общем виде средствами Delphi.

    курсовая работа [2,5 M], добавлен 22.11.2012

  • Понятие, значение и направления информационной безопасности. Системный подход к организации информационной безопасности, защита информации от несанкционированного доступа. Средства защиты информации. Методы и системы информационной безопасности.

    реферат [30,0 K], добавлен 15.11.2011

  • Применение итерационных методов численного решения системы линейных алгебраических уравнений при вычислении на ЭВМ. Математические и алгоритмические основы решения задачи, метод Гаусса. Функциональные модели и блок-схемы, программная реализация решения.

    курсовая работа [527,5 K], добавлен 25.01.2010

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

    курсовая работа [2,0 M], добавлен 12.02.2013

  • Задача о ранце как задача комбинаторной оптимизации. Задача о загрузке, рюкзаке, ранце. Постановка и NP-полнота задачи. Классификация методов решения задачи о рюкзаке. Динамическое программирование. Метод ветвей и границ. Сравнительный анализ методов.

    курсовая работа [1,7 M], добавлен 18.01.2011

  • Сущность информации, ее классификации и виды. Анализ информационной безопасности в эпоху постиндустриального общества. Исследование проблем и угроз обеспечения информационной безопасности современного предприятия. Задачи обеспечения защиты от вирусов.

    курсовая работа [269,0 K], добавлен 24.04.2015

  • Реализация информационной системы для компаний по продаже недвижимости. Обзор методов решения поставленной задачи. Описание программы для программиста. Диаграмма классов: FlatBase, Flat, House, Commercial, Human, ContH. Способы и алгоритмы решения задачи.

    курсовая работа [1,6 M], добавлен 18.08.2014

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

    курсовая работа [3,3 M], добавлен 12.01.2015

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.