Алексей Качалин / Денис Сигаев, 5 курс

На этом форуме публикуются и уточняются постановки задач студентам, а также отслеживается ход их выполнения

Модератор: staff

Закрыто
Бычков Иван
Аспирант
Сообщения: 179
Зарегистрирован: 23 сен 2008 01:19 pm

Алексей Качалин / Денис Сигаев, 5 курс

Сообщение Бычков Иван »

Соруководитель Игорь Коннов.

Тема:
Обнаружение программ с защитой от обратной инженерии
Актуальность:
Одним из методов защиты кода от анализа является обфускация. Обфускация может быть использована и для скрытия вредоносного кода. Анализ такого кода, как автоматический, так и с привлечением экспертов, существенно затруднён. В свете этого задача обнаружения фрагментов маскированного (обфусцированного) кода является актуальной на данный момент. Решение этой задачи позволит определять потенциально опасные для пользователя программы и их фрагменты.
*Если в постановке привязываться к байткоду java, то можно сказать о том, что плоха ситуация с полноценными деобфускаторами (их почти нет). Это можно объяснить нелегальностью reverse engineering’a
План работы:
1. Проведение обзора и выбор существующих средств обфускации.
2. Выбор целевой платформы, на которой работают программы, и средств анализа кода. Предположительно, Java или .NET.
3. Анализ подходов к обфускации, используемых в практических средствах обфускации.
4. Разработка методов обнаружения:
a. На основе метрик кода.
b. Определение известных алгоритмов обфускации.
c. Использование методов статического анализа (вскрытие непрозрачных предикатов; поиск фрагментов, статический анализ которых затруднён).
5. Реализация разработанных методов
6. Проведение тестирования и анализ результатов
Планируемые цели работы:
1. Обзор средств обфускации с описанием технологий и методов, используемых в каждом из них
2. Описание реализации техник обфускации в практических средствах.
3. Формирование тестовой выборки обфусцированного кода, которую можно будет использовать не только в рамках текущей работы.
4. Реализация методов обнаружения техник выбранных средств обфускации.
5. Результаты тестирования (надеюсь, позитивные) и их анализ.
Сигаев Денис
Выпускник
Сообщения: 3
Зарегистрирован: 15 дек 2008 07:14 pm
Контактная информация:

Формальная постановка задачи

Сообщение Сигаев Денис »

Пусть задано множество To обфусцирующих преобразований:
a)Непрозрачные предикаты вида x == C.
b)Добавление в код (bytecode) инструкций безусловного перехода
c)Добавление в код (bytecode) ложных trap конструкции для обработки исключений
d)Табличная интерпретация.

Задача:
Разработать алгоритм D обнаружения обфусцированного кода:

Дано:
- Программа P, написанная на языке Java, в виде байткода, возможно подвергнута обфусцирующим преобразованиям из множества To.
- Метод M класса C программы P

Требуется:
a.Алгоритм D(P, C, M) выдает ответ из множества {да, нет, не знаю}
b.Если P обфусцирована методами из To, то выдается ответ «да» и указываются методы из To
c.Если P не обфусцирована методами из To, то выдается ответ «нет» или «не знаю»
Сигаев Денис
Выпускник
Сообщения: 3
Зарегистрирован: 15 дек 2008 07:14 pm
Контактная информация:

Сообщение Сигаев Денис »

Тема работы:
Обнаружение программ с защитой от обратной инженерии

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

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

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

План работы на семестр
1.Проведение обзора и выбор существующих средств обфускации.
Для получения защищенных кодов планируется использовать существующие доступные обфускаторы для Java и программы с открытыми исходными кодами. Среди существующих обфускаторов планируется выбрать несколько наиболее эффективных. Для этого необходимо провести обзор.
2.Анализ подходов к обфускации, используемых в практических средствах обфускации. Такой анализ поможет с большим успехом обнаруживать программы и их фрагменты, обфусцированные при помощи этих средств.
3.Разработка методов обнаружения на основе метрик кода.
Этот подход заключается в установлении зависимости метрик для исходной и обфусцированной программы. После, на основе установленной зависимости, делается вывод о том, защищена программа от обратной инженерии или нет.
4.После реализации средства необходимо будет провести его тестирование и проверку на специально сформированной выборке программ, защищенных от обратной инженерии. Формирование выборки необходимо начать уже на этапе изучения существующих средств обфускации.

Достигнутые результаты
На данный момент обзор проведен, его результаты законспектированы. Среди обфускаторов были выделены ZKM, JBCO и SmokeScreen. Эти средства позволяют проводить обфускацию графа потока управления в отличие от остальных рассмотренных.
Анализ подходов, используемых в выбранных средствах обфускации, был проведен. На его основе было сформировано множество обфусцирующих преобразований, наиболее часто применяемых рассмотренными средствами обфускации. Преобразования из этого множества планируется обнаруживать при помощи разрабатываемого средства.
Реализовано тестовое приложение, которое позволяет считать наиболее известные и популярные метрики кода и находить непрозрачные предикаты, вскрываемые техникой продвижения и раскрытия констант. Приложение написано с использованием среды Soot и является модулем, работающим в рамках среды.
Тестовая выборка была частично сформирована. Она состоит из части кодов приложения MouseGestures, кодов приложения Columba (почтовый клиент) и кодов приложения GFP (средство учета личных финансовых расходов), обфусцированных при помощи выбранных средств (ZKM, JBCO, SmokeScreen).

Дальнейшая работа
В следующем семестре планируется:
1.Разработка методов обнаружения:
Противодействующих подходам обфускации, используемых изученными средствами.
Методы обнаружения должны использовать специфику методов обфускации, принадлежащих множеству обфусцирующих преобразований, наиболее часто применяемых рассмотренными средствами обфускации.
На основе методов статического анализа (вскрытие непрозрачных предикатов; поиск фрагментов, статический анализ которых затруднён). Этот подход заключается в использовании методов статического анализа. В частности, может быть использован метод обратного анализа графа потока управления или данных. Эффективная обфускация графа потока управления не может обойтись без введения непрозрачных предикатов в код. В силу специфики конструкции таких предикатов, может оказаться, что обратный анализ графа потока управления или данных может дать лучшие результаты по сравнению со стандартным прямым подходом.
Возможно, для доказательства того, что тот или иной предикат является непрозрачным (то есть имеет постоянное значение), необходимо будет использовать одно из существующих автоматических средств проверки выполнимости формул булевой логики.
2.Реализация разработанных методов в рамках разрабатываемого средства;
3.Проведение тестирования и анализ результатов.

Список литературы:
1.C. Collberg, C. Thomborson, D. Low. A Taxonomy of Obfuscating Transformations. Department of Computer Science, The University of Auckland, 1997. http://www.cs.arizona.edu/~collberg/Res ... rsonLow97a
2.C. Collberg, C. Thomborson, D. Low. Breaking Abstractions and Unstructuring Data Structures. In IEEE International Conference on Computer Languages, ICCL'98, Chicago, IL, May 1998.
3.C. Collberg, C. Thomborson, D. Low. Manufacturing Cheap, Resilient, and Stealthy Opaque Constructs. In Principles of Programming Languages 1998, POPL'98, San Diego, CA, January 1998.
4.Чернов А. В., Исследование и разработка методологии маскировки программ // Диссертация
5.C. Wang. A Security Architecture for Survivability Mechanisms. PhD Thesis. Department of Computer Science, University of Virginia, 2000. http://www.cs.virginia.edu/~survive/pub/wangthesis.pdf
6.B. Barak, O. Goldreich, R. Impagliazzo, S. Rudich, A. Sahai, S. Vadhan, K. Yang. On the (Im)possibility of Obfuscating Programs. LNCS, 2001, 2139, pp. 1-18.
7.Чернов А. В., Анализ запутывающих преобразований программ // Труды Института Системного программирования РАН
8. Smokescreen, http://www.leesw.com/smokescreen/licensedownload.html
9. Zelix Klassmaster, http://www.zelix.com/klassmaster/download1.html
10. JBCO, http://www.sable.mcgill.ca/publications ... 2006-5.pdf
11. Jad, http://www.kpdus.com/jad.html
12. SourceAgain, http://www.ahpah.com/cgi-bin/suid/~pah/demo.cgi
13. DAVA, http://www.sable.mcgill.ca/publications ... 2006-2.pdf
14. Soot Java Optimization Framework, http://www.sable.mcgill.ca/soot/
15.Opt4j, http://opt4j.sourceforge.net/index.html
16.Chord, http://chord.stanford.edu/э
17.Ernst M. D. Static and dynamic analysis: synergy and duality // MIT Lab for Computer Science Cambridge. 2003. P. 1-4
18.Hongying Lai. A comparative survey of Java obfuscators available on the Internet // The University of Auckland. 2001. P. 1-115
19.Michael Batchelder, Laurie Hendren Obfuscating Java: the most pain for the least gain // McGill University School of Computer Science Sable Research Group, 2006, P. 1-17
20.Christian S. Collberg Watermarking, Tamper-Proofing, and Obfuscation Tools for Software Protection // 2002. P. 1-13
21.Everald E. Mills Software Metrics // Seattle University. 1988. http://www.sei.cmu.edu/pub/education/cm12.pdf
Сигаев Денис
Выпускник
Сообщения: 3
Зарегистрирован: 15 дек 2008 07:14 pm
Контактная информация:

Рецензия Козлова Д. Д.

Сообщение Сигаев Денис »

Итого для рецензии:
1. Замечания по тексту отчета разъяснены, но не исправлены.
2. Обзора в доступной рецензенту форме нет.
3. Результатов анализа подходов (см. пз) в доступной рецензенту форме нет (со слов н.р.)
4. Тестовая выборка якобы сформирована, но текста с описанием методики экспер. иссл. и методики формир. тест выборки не предъявлено.
5. Разработка методов... - не предъявлено.
6. Разработка средства и его тестирование. - Разработано что-то "тестовое приложение, которое позволяет считать наиболее известные и популярные метрики кода и находить непрозрачные предикаты, "
- не понимаю адекватность этого поставленной задаче.
7. Введение в диплом содержит очень странный раздел 1, который описывает все на свете и непонятно зачем нужен. В таком виде для диплома это неприемлемо.

итого все это на троечку.
Закрыто