Разработка методик защиты программ от анализа и модификации на основе запутывания кода и данных тема диссертации и автореферата по ВАК РФ 05.13.19, кандидат технических наук Щелкунов, Дмитрий Анатольевич

  • Щелкунов, Дмитрий Анатольевич
  • кандидат технических науккандидат технических наук
  • 2009, Москва
  • Специальность ВАК РФ05.13.19
  • Количество страниц 143
Щелкунов, Дмитрий Анатольевич. Разработка методик защиты программ от анализа и модификации на основе запутывания кода и данных: дис. кандидат технических наук: 05.13.19 - Методы и системы защиты информации, информационная безопасность. Москва. 2009. 143 с.

Оглавление диссертации кандидат технических наук Щелкунов, Дмитрий Анатольевич

ВВЕДЕНИЕ.

ГЛАВА 1. ПРОБЛЕМА ЗАЩИТЫ ПРОГРАММ ОТ КОМПЬЮТЕРНОГО ПИРАТСТВА И ПОСТАНОВКА ЗАДАЧИ ИССЛЕДОВАНИЯ.

1.1. Защита программ от анализа и модификации как фактор противодействия компьютерному пиратству.

1.2. Современные методы защиты программ.

1.2.1. Методы, основанные на особенностях среды функционирования программы.

1.2.2. Автоматическая упаковка исполняемого модуля.

1.2.3. Методы защиты программ, основанные на запутывании кода и данных

1.3. Анализ существующих подходов к обфускации.

1.3.1. Обфускация на основе виртуализации кода.

1.3.2. Задачи обфускации в криптографии.

1.3.3. Обфускация по Бараку.

1.3.4. Обфускация на уровне промежуточного представления программы.

1.3.5. Обфускация методом Вонга.

1.4. Постановка задачи исследования и общая схема ее решения.

1.4.1. Особенности защиты программного обеспечения на основе существующих методов обфускации.

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

1.4.3. Общая схема решения задачи исследования.

1.5. Выводы по главе 1.

ГЛАВА 2. ПРАВИЛА ПОСТРОЕНИЯ ЗАПУТЫВАЮЩИХ

ПРЕОБРАЗОВАНИЙ.

2.1. Функциональные свойства подпрограмм и отношения между ними.

ТУР-полнота задачи деобфускации.

2.3. Правила построения запутывающих преобразований.

2.4. Выводы по главе 2.

ГЛАВА 3. РАЗРАБОТАННЫЕ МЕТОДИКИ ОБФУСКАЦИИ.

3.1. Общая структура процесса обфускации.

3.2. Обфускация на уровне промежуточного представления.

3.2. Обфускация на уровне машинного кода.

3.3. Контроль целостности запутанного кода.

3.4. Метод запутывания графа потока управления при помощи сетей Петри.

3.5. Внедрение кода защиты в приложение.

3.6. Методика перевода машинного кода в промежуточное представление.

3.10 Выводы по главе 3.

ГЛАВА 4. ПРАКТИЧЕСКАЯ РЕАЛИЗАЦИЯ МЕТОДИК ОБФУСКАЦИИ И ИХ ОЦЕНКА.

4.1. Концепция построения обфускатора. Платформозависимый компонент.

4.2. Платформонезависимый компонент.

4.3. Оценки увеличения объема кода и замедления.

4.4. Оценка качества запутывающих преобразований.

4.5. Выводы по главе 4.

Рекомендованный список диссертаций по специальности «Методы и системы защиты информации, информационная безопасность», 05.13.19 шифр ВАК

Введение диссертации (часть автореферата) на тему «Разработка методик защиты программ от анализа и модификации на основе запутывания кода и данных»

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

Основы методологии создания подобного рода механизмов заложены такими учёными, как Варновский Н.П, Захаров В.А., Гайсарян С.С, Чернов А.В, Коллберг К.

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

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

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

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

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

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

В рамках решения указанной задачи в диссертации:

1. Обоснована необходимость добавления в запутываемую программу дополнительных входных и выходных данных, называемых далее «фальшивым» глобальным контекстом.

2. Сформулирована и доказана теорема о тУР-полноте задачи деобфускации.

3. Обосновано применение разработанных правил построения запутывающих преобразований.

4. Разработана методика статического и полу статического анализа машинного кода программы с целью его последующего перевода в промежуточное представление.

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

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

Научная новизна диссертации заключается в следующем:

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

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

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

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

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

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

На защиту выносятся следующие научные положения:

1. Формулировка и доказательство теоремы о ЫР-полноте задачи деобфускации в случае добавления к запутываемой программе дополнительных входных и выходных данных.

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

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

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

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

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

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

В заключении изложены основные теоретические и практические результаты диссертационной работы.

Похожие диссертационные работы по специальности «Методы и системы защиты информации, информационная безопасность», 05.13.19 шифр ВАК

Заключение диссертации по теме «Методы и системы защиты информации, информационная безопасность», Щелкунов, Дмитрий Анатольевич

Основные результаты работы можно представить в следующих пунктах.

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

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

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

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

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

6. Разработанные в диссертационной работе методики позволили повысить качество обфускации по сравнению с качеством, обеспечиваемым технологией виртуализации кода, на 30%. Оценка качества производилась по методике, описанной в работе Гайсаряна, Чернова, Белеванцева и др. Скорость работы запутанного в соответствии с разработанными методиками кода на порядок превышает скорость работы кода, запутанного при помощи технологии виртуализации.

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

ЗАКЛЮЧЕНИЕ

Список литературы диссертационного исследования кандидат технических наук Щелкунов, Дмитрий Анатольевич, 2009 год

1. Скляров Д.В. Искусство защиты и взлома информации. СПб.: БХВ-Петербург, 2004. - 288 е.: ил.

2. Брюс Шнайер Прикладная криптография. Протоколы, алгоритмы, исходные тексты на языке Си. М.: Триумф, 2002. - 816 е.: ил.

3. Щелкунов Д.А. Автоматическая защита программ от исследования и отладки // Интеллектуальные системы (INTELS 2006): Сб. Трудов VII Международ, сим-поз. Краснодар, 2006. - 221 с.

4. Рихтер Дж. Windows для профессионалов: создание эффективных Win32 приложений с учетом специфики 64-разрядной версии Windows/Пер, англ 4-е изд. -СПб; Питер; М.: Издательско-торговый дом «Русская Редакция», 2001. - 752 е.;ил.

5. Microsoft portable executable and Coramon Object File Format Spécification. http://download.microsoft.eom/download/9/c/5/9c5b2167-8017-4bae-9fde-d599bac8184a/pecoffv8.doc

6. Руссинович M., Соломон Д. Внутреннее устройство Microsoft Windows: Windows Server 2003, Windows XP и Windows 2000. Мастер-класс. / Пер. с англ. (4-е изд.). СПб.: Питер, 2005. - 992 стр.: ил.

7. Шрайбер С. Недокументированные возможности Windows 2000. Библиотека программиста. СПб.: Питер, 2002. - 544 е.: ил.

8. Чернов А. В. Об одном методе маскировки программ http://www.citforum.ru/security/articles/mask/

9. Щелкунов Д.А. Обфускация. Теоретические и практические аспекты, //Труды международной конференции РусКрипто, 1-4 февраля 2007http://www.ruscrypto.ru/sources/conference/rc2007/

10. Airapetyan R., Schneider Т. Protecting Applications with Petri Nets. //The Code-Breakers-Journal. Vol. 1. No. 1http://www.codebreakersjournal.com/cbj/2004/CBJll2004SchneiderProtectionwithPetriNets.zip

11. K. S. Ivanov, V.A. Zakharov Program obfuscation as obstruction of program static analysis //Труды Института системного программирования: Том 6. /Под ред. В.П.Иванникова/ -М.: ИСП РАН, 2004. 198 с.

12. Казарин О.В. Теория и практика защиты программ. М.: МГУЛ, 2004. - 450 с.

13. Cullen Linn, Saumya Debray. Obfuscation of Executable Code to Improve Resistance to Static Disassembly.http://www.cs.arizona.edu/solar/papers/CCS2003.pdf

14. Gregory Wroblewski. General method of program code obfuscation. PHD thesis. http://citeseer.ist.psu.edu/wroblewski02general.html

15. N.P. Varnovsky. A note on the concept of obfuscation. //Труды Института системного программирования: Том 6. /Под ред. В.П.Иванникова/ -М.: ИСП РАН,2004. 198 с.

16. Эриксон Д. Хакинг: Искусство эксплоита/ Пер. с англ. СПб: Символ-Плюс,2005.-240с., ил.

17. Ховард М., Лебланк Д. Защищенный код/ Пер. с англ. (2-е изд., испр.). М.: Издательско-торговый дом «Русская редакция», 2004. - 704 стр.: ил.

18. Хогланд Г., Мак-Гроу Г. Взлом программного обеспечения: анализ и использование кода/ Пер. с англ. — М.: Издательский дом "Вильяме", 2005. — 400 е.: ил.

19. Wang С. Hill, J. Knights, J. Davidson, Software Tamper Resistance: Obstructing Static Analysis of Programs http://citeseer.ist.psu.edu/wangOOsoftware.html

20. Breaking Abstractions and Unstructuring Data Structures (1998). Christian Coll-berg, Clark Thomborson, Douglas Low International Conference on Computer Languages.http://citeseer.ist.psu.edu/collberg98breaking.html

21. Bill Home, Lesley Matheson, Casey Sheehan, Robert E. Dynamic Self-Checking Techniques for Improved Tamper Resistance http://citeseer.ist.psu.edu/horne01dynamic.html

22. Douglas Low. Java Control Flow Obfuscation (1998) http://citeseer.ist.psu.edu/low98java.html

23. A. Main, P.C. van Oorschot. Software Protection and Application Security: Understanding the Battleground.http://citeseer.ist.psu.edu/736121 .html

24. Ryan Wishart, Karen Henricksen, Jadwiga Indulska. Context Obfuscation for Privacy via Ontological Descriptions (2005) http://citeseer.ist.psu.edu/wishart05context.html

25. Фомичев B.M. Дискретная математика и криптология. Курс лекций / Под общ. ред. д-ра физ.-мат. н. Н.Д. Подуфалова. М.: ДИАЛОГ-МИФИ, 2003 - 400 с.

26. Логачев О.А., Сальников А.А., Ященко В.В. Булевы функции в теории кодирования и криптологии М.: МЦНМО, 2004. - 470 с.

27. Н.П. Варновский, А.В. Шакуров Гомоморфное шифрование Труды Института Системного программирования: Том 12, /под ред. В.П. Иванникова. — М.: ИСПРАН, 2006.-122 с.

28. Barak В. Non-Black-Box Techniques in Cryptography., Thesis for the Ph.D. Degree, Department of Computer Science and Applied Mathematics. The Weizmann Institute of Science. January 6, 2004http://www.cs.princeton.edu/~boaz/Papers/introductionsa.ps

29. Гайсарян С.С., Чернов A.B., Белеванцев A.A., Маликов О.Р., Мельник Д.М., Меньшикова A.B. О некоторых задачах анализа и трансформации программ. http://www.citforum.ru/programming/digest/gaisarian/

30. Collberg С., Thomborson С., Low D. A Taxonomy of obfuscating transformation. http://www.cs.arizona.edu/~collberg/Research/Publications/CollbergThomborsonLow 97a/index.html

31. Exception Handling forx64 64-Bit http://msdn2.microsoft.com/en-us/library/ms794259.aspx

32. Matt Pierek, A Crash Course on the Depths of Win32 Structured Exception Handlinghttp://www.microsoft.eom/msj/0197/Exception/Exception.aspx

33. Matt Pietrek, Everything You Need To Know To Start Programming 64-Bit Windows Systemshttp://msdn2.microsoft.com/en-us/magazine/cc300794.aspx

34. Unwind Data for Exception Handling, Debugger Support http ://msdn2 .microsoft. com/ en-us/library/0kd71 у 96 (VS. 80) .aspx

35. Dennis Hofheinz, John Malone-Lee, Martijn Stam Obfuscation for Cryptographic Purposes.http://www.springerlink.com/index/d46ul37715n0q4xv.pdf

36. S. Chow, P. Eisen, H. Johnson, P.C. van Oorschot. White-Box Cryptography and an AES Implementation (2002) http://citeseer.ist.psu.edu/736207.html

37. Hoeteck Wee. On Obfuscating Point Functions (2005). http://citeseer.ist.psu.edu/wee05obfiiscating.html

38. Amit Sethi. Digital Rights Managment and Code Obfuscation (2003).http://citeseer.ist.psu.edu/sethi03digital.html

39. Andrew W. Appel. Deobfuscation is in NP. http://citeseer.ist.psu.edu/553532.html

40. Boaz Barak, Oded Goldreich, Russell Impagliazzo, Steven Rudich. On the (Im)possibility of Obfuscating Programs (Extended Abstract) (01). http://citeseer.ist.psu.edu/barak01impossibility.html

41. B.H. Крупский. Введение в сложность вычислений. М: Вакториал Пресс, 2006. -128 с.

42. Ахо А., Сети Р., Ульман Д. Компиляторы: принципы, технологии, инструменты. /Пер. с англ. М. : Издательский дом «Вильяме», 2003. - 768 е.: ил.

43. Sanjiv К. Gupta Naveen Sharma Alias Analysis for Intermediate Code HCL Technologies, Noida, India. http://mirror-fpt-telecom.fpt.net/gccsummit/2003/Alias%20analysis%20for%20intermediate%20code.pdf

44. Abel N.E., Bell J.R. Global optimization in compilers //First USA-Japan Computer Conf. — Montvale.: AFIPS Press, 1972. 331 p.

45. Chow F.A. Portable Machine-Independent Global Optimizer, Ph. D. Thesis http://portal.acm.org/citation.cfm?id=911259

46. Michael Hind, Anthony Pioli. Which Pointer Analysis Should I Use? http://www.cs.uiuc.edu/class/cs426/Papers/hind.issta00.pdf

47. Андрей Боровский. Алгоритмы поиска в тексте. //RSDN Magazine 2002г http://www.rsdn.ru/article/alg/textsearch.xml

48. Котов В.Е. Сети Петри М.: Наука. Главная редакция физико-математической литературы, 1984. — 160с.;

49. Gogul Balakrishnan, Thomas Reps. Analyzing Memory Accesses in x86 Binary Executables.http://citeseer.ist.psu.edu/762285.html

50. Prolog Code forx64 64-Bit.http://msdn2.microsoft.com/en-us/library/ms794659.aspx

51. Epilog Code forx64 64-Bit.http://msdn2.microsofl.com/en-us/library/ms794540.aspx

52. AMD64 Architecture Programmer's Manual Volume 1: Application programming, http ://www. amd.com/ usen/assets/contenttype/whitepapersandtechdocs/24592.pdf

53. AMD64 Architecture Programmer's Manual Volume 2: System programming. http://www.amd.com/usen/assets/contenttype/whitepapersandtechdocs/24593.pdf

54. AMD64 Architecture Programmer's Manual Volume 3: General-purpose and system instructions.http://www.amd.com/usen/assets/contenttype/whitepapersandtechdocs/24594.pdf

55. AMD64 Architecture Programmer's Manual Volume 4: 128-bit media instructions http://www.amd.com/usen/assets/contenttype/whitepapersandtechdocs/26568.pdf

56. AMD64 Architecture Programmer's Manual Volume 5: 64-bit media and x87 floating point instructions.http://www.amd.com/usen/assets/contenttype/whitepapersandtechdocs/26569.pdf

57. IA-32 Intel® Architecture Software Developer's Manual Volume 1: Basic Architecture.http://download.intel.com/design/processor/manuals/253665.pdf

58. IA-32 Intel® Architecture Software Developer's Manual Volume 2A: Instruction Set Reference, A-M.http://download.intel.com/design/processor/manuals/253666.pdf

59. IA-32 Intel® Architecture Software Developer's Manual Volume 2B: Instruction Set Reference, N-Z.http://download.intel.com/design/processor/manuals/253667.pdf

60. IA-32 Intel® Architecture Software Developer's Manual Volume 3: System Programming Guide.http://download.intel.com/design/processor/manuals/253668.pdf

61. Intel® Extended Memory 64 Technology Software Developer's Guide.http://download.intel.com/design/processor/manuals/253668.pdf

62. Пирогов В.Ю. Асемблер для Windows. (2-е изд., перераб. и доп). СПб.: БХВ-Петербург, 2003. - 656 е.: ил.

63. Юров В.И. Assembler. Учебник для вузов. 2-е изд. СПб.: Питер, 2004. - 637 е.: ил.

64. Christian Collberg, Clark Thomborson Software Watermarking: Models and Dynamic Embeddings (1999)http://citeseer.ist.psu.edu/collberg99software.html

65. Руководство разработчика Guardant www.guardant.ru134nPHJIO)KEHHiIdeclspec( naked) void TestFunc()

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