- •Вопросы и ответы по дисциплине “защита программ…”
- •Архитектура технических средств защиты по от несанкциони-рованного копирования
- •3. Методы защиты по от исследования
- •4. Разрушающие программные воздействий (рпв). Основные модели работы рпв
- •5. Функции специальных разрушающих программных воздействий - вирусов. Классификация вирусов .Жизненный цикл вирусов.Полиморфные вирусы. Вирусы как класс рпв обладают следующими функциями:
- •Описать типовые дефекты программного обеспечения
- •6. Описать методы аудита безопасности кода
- •7. Описать метод защиты программ – обфускацию программ
- •Обфускация данных
- •Обфускация управления
- •Что такое система обеспечения информационной безопасности и оценка безопасности по
- •Что такое уровень безопасности по
- •Кто потенциально может осуществить практическое внедрение программных дефектов деструктивного воздействия в исполняемый программный код
- •Каковы возможные мотивы действий субъекта, осуществляющего разработку деструктивного воздействия в исполняемый программный код
- •Лексическая обфускация
- •Что такое алгоритмические и программные закладки?
6. Описать методы аудита безопасности кода
Выделяют несколько методов аудита безопасности кода:
Просмотр (инспекция) кода вручную;
Статический анализ кода по шаблону;
Динамический анализ выполнения кода.
Первый подход считается самым эффективным с точки зрения полноты и точности проверок. Понятно, что только эксперт способен обнаружить сложные уязвимости и маскируемые программные закладки, а также дать рекомендации по исправлению уязвимостей или ограничению возможности их реализации.
К недостаткам метода относят высокую трудоемкость и требования к квалификации и опыту экспертов. Для исключения субъективизма в работе экспертов, может быть привлечены независимые группы тестирования, что является еще более затратным.
Статический анализ кода по шаблону заключается в использовании средств автоматизации поиска и анализа потенциально опасных конструкций кода (сигнатур) в исходном коде программ. Данный метод эффективен при поиске несложных уязвимостей и немаскируемых закладок, таких как переполнение буфера, парольные константы или «логические бомбы». К автоматизированным средствам проведения статического метода по шаблону относят сканеры уязвимостей кода.
К недостаткам метода относят то, что результаты строго ограничены набором предварительно определенных шаблонов известных классов уязвимостей. Кроме того, может быть получено огромное число ложных срабатываний, что снижает производительность труда.
Динамический анализ заключается в мониторинге действий программы при выполнении различных функций, связанных с безопасностью: инсталляции, изменении прав, пересылке паролей, очистке памяти и др. Наиболее известны следующие процедуры динамического анализа:
мониторинг работы программы и анализ трассы;
ручной просмотр в отладочном режиме работы подсистем безопасности.
Мониторинг работы программы и анализ трассы может быть выполнен путем включения контрольных точек (например, реализующих функции печати) в исходный текст программы и последующей ее перекомпиляции. Кроме того, можно использовать различные программы-мониторы системных вызовов. Например, таким образом может проверяться наличие системного вызова межсетевой фильтрации при различных вариантах межсетевого обмена. Перекомпиляция программы с включенными контрольными точками имеет ряд преимуществ. Во-первых, это позволяет оценить степень полноты тестирования (по статистике вызовов подпрограмм). Во-вторых, сама компиляционная среда может предоставить инструментальные средства и провести первичный разбор кода.
7. Описать метод защиты программ – обфускацию программ
В большинстве случаев для обхода защиты, взломщику требуется изучить принцип работы ее кода, и то, как она взаимодействует с самой защищаемой программой, этот процесс изучения называется процессом реверсивной (обратной) инженерии. Этот процесс часто зависит от свойств человеческой психики, поэтому использование этих свойств позволяет снизить эффективность самого процесса реверсивной инженерии.
Обфускация ("obfuscation" - запутывание), это один из методов защиты программного кода, который позволяет усложнить процесс реверсивной инженерии кода защищаемого программного продукта.
Обфускация может применяться не только для защиты ПП, она имеет более широкое применение, например она, может быть использована создателями вирусов, для защиты их творений и т.д.
Суть процесса обфускации заключается в том, чтобы запутать программный код и устранить большинство логических связей в нем, то есть трансформировать его так, чтобы он был очень труден для изучения и модификации посторонними лицами (будь то взломщики, или программисты которые собираются узнать уникальный алгоритм работы защищаемой программы).
Из этого следует, что обфускация одна не предназначена для обеспечения наиболее полной и эффективной защиты программных продуктов, так как она не предоставляет возможности предотвращения нелегального использования программного продукта. Поэтому обфускацию обычно используют вместе с одним из существующих методов защиты (шифрование программного кода и т.д.), это позволяет значительно повысить уровень защиты ПП в целом.
Выделяют следующие уровни процесса обфускации:
низший уровень, когда процесс обфускации осуществляется над ассемблерным кодом программы, или даже непосредственно над двоичным файлом программы хранящим машинный код.
высший уровень, когда процесс обфускации осуществляется над исходным кодом программы написанном на языке высокого уровня.
Осуществление обфускации на низшем уровне считается менее комплексным процессом, но при этом более трудно реализуемым по ряду причин. Одна из этих причин заключается в том, что должны быть учтены особенности работы большинства процессоров, так как способ обфускации, приемлемый на одной архитектуре, может оказаться неприемлемым на другой.
Большинство существующих алгоритмов и методов обфускации (включая те которые будут рассмотрены ниже) могут быть применены для осуществления процесса обфускации как на низшем, так и на высшем уровне.
Также иногда может быть неэффективно, подвергать обфускации весь код программы (например, из-за того, что в результате может значительно снизится время выполнения программы), в таких случаях целесообразно осуществлять обфускацию только наиболее важных участков кода.
Виды обфускации
