Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lecture13.doc
Скачиваний:
83
Добавлен:
16.04.2013
Размер:
151.04 Кб
Скачать

13.4.2. Подсистема внедрения управляющих механизмов

Системы защиты от НСК по способу ассоциации (внедрения) защитного механизма можно подразделить на два типа:

1) встроенные (внедряются при создании программного продукта);

2) пристыковочные (подключаются к уже готовому программному продукту).

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

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

работу, не подозревая о том, что она была изменена.

Такой подход к внедрению в исполняемые файлы имеет ряд существенных недостатков. Во-первых, исходный код защищаемой программы остается практически в неизменном виде, что значительно упрощает нейтрализацию защиты. Во-вторых, в случае файла большого размера и, как следствие, сложной структуры код, находящийся в его конце, при запуске файла загружен не будет, а значит, ПМ не получит управление. Попытка добавить программную секцию по такому принципу, например, к исполняемому модулю BorlandС, объем которого 1,5 Мбайта, приведет в лучшем случае к "зависанию" компьютера. В принципе данные недостатки можно устранить, если записать в начало исполняемого кода защищаемой программы не одну команду перехода, а весь код защиты, при этом шифруя исходный файл. Единственным условием успешной реализации данного подхода является то, что программа, к которой пристыковывается такой защитный код, не должна иметь межсегментных ссылок и переходов, так как в противном случае DOS, настраивая при загрузке межсегментные ссылки, может испортить код как ПМ, так и программы.

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

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

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

К преимуществам защит пристыковочного типа относятся:

- простота тиражирования программных систем защиты на объекты заказчика и разработчика;

- простота технологии применения — защита поставляется в виде законченного продукта, которым нужно обработать защищаемую программу;

- обеспечение в большинстве случаев достаточного уровня защищенности данных;

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

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

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

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

- первая загрузка исследуемой программы;

- определение границ занятой программой памяти;

- сброс первого дампа в файл;

- вторая загрузка исследуемой программы;

- определение границ занятой программой памяти;

- сброс второго дампа в файл;

- поиск перемещаемых элементов;

- построение таблицы перемещаемых элементов;

- построение . ЕХЕ файла.

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

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

Обобщая указанные достоинства и недостатки двух типов внедряемых защит, можно сформулировать следующие требования к ПМ:

- ПМ должен подключаться к файлам любого размера;

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

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

Соседние файлы в предмете Предмет и задачи программно-аппаратной защиты информации