КАТЕГОРИИ:
АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Защита программ от изучения, отладки и дизассемблирования, защита от трассировки по прерываниям; защита от разрушающих программных воздействий (РПВ).Задача анализа программного обеспечения возникает в различных ситуациях. Например, для создания антивирусной программы сначала надо понять принципы работы вируса или, например, при создании надежной системы информации, необходимо стать в позицию злоумышленника и попытаться преодолеть защиту, реализуемую тестируемой системой. При проведении такой экспертизы неизбежно возникает задача анализа программного обеспечения тестируемой системы. Анализ программ можно применять не только для защиты, но и для «нападения» - получения незаконных копий программ, встраивания в программу закладок и вирусов и т.д. Задачу изучения программы в общем виде можно сформулировать так. Имеется бинарный код программы (например. exe-файл) и минимальная информация о том, что эта программа делает. Нужно получить более детальную информацию о функционировании этой программы. Другими словами, известно, что делает программа, и необходимо узнать, как она это делает. В настоящее время наиболее широко применяются статический и динамический методы восстановления алгоритмов, реализуемых программой. Основу статического метода составляют дизассемблеры – программы, которые переводят последовательность машинных кодов в листинг, близкий к исходному тексту программы на языке ассемблера. Дальнейшая работа после дизассемблирования сводится к анализу полученных листингов, поиску участков, отвечающих за защиту информации, и переводу описания процедур функционирования алгоритмов защиты на понятный аналитику язык. Динамический метод использует отладочные средства. Отладчик – это программа, которая загружает в память другую программу и предоставляет пользователю возможность наблюдать за ходом выполнения этой программы. Задача защиты от изучения сводится к решению двух взаимосвязанных задач: - выявлению отладчика; - направлению работы защищенной программы или отладчика по «неверному пути». Атаки злоумышленника на логику работы СЗИ сводятся к декомпозиции программного кода на множество отдельных команд (инструкций), каждая из которых рассматривается отдельно. Условно такие атаки можно разделить на статистические – декомпозиция всего кода программы, основанная на анализе логики исполнения команд и логики вызовов различных функций (дизассемблирование); и динамические – разбор по командам, сопряженный с выполнением программы. Способы защиты от исследования можно разделить на 4 класса: 1. Влияние на работу отладочного средства через общие программные или аппаратные ресурсы. В данном случае наиболее известны: использование аппаратных особенностей микропроцессора; использование общего программного ресурса с отладочным средством и разрушение данных или кода отладчика, принадлежащих общему ресурсу; переадресация обработчиков отладочных событий от отладочного средства к защищаемой программе. 2. Влияние на работу отладочного средства путем использования особенностей его аппаратной или программной среды. 3. Влияние на работу отладчика через органы управления или устройства отображения информации. 4. Использование принципиальных особенностей работы управляемого человеком отладчика. В данном случае защита от исследования состоит в навязывании для анализа избыточного большого объема кода. В ряде способов защиты от отладки идентификация отладчика и направление его по ложному пути происходит одновременно, в одном и том же фрагменте кода. В других случаях ложный путь в работе программы формируется искусственно. Часто для этого используют динамическое преобразование программы (шифрование) во время ее исполнения. Преобразование кода во время исполнения программы может преследовать 3 основные цели: противодействие файловому дизассемблированию программы; противодействие работе отладчику; противодействие считыванию кода программы в файл из оперативной памяти. Основные способы организации преобразования кода программы: 1. замещение фрагмента кода функцией от находящихся на данном месте команд или некоторых данных. 2. Определение стека в области кода и перемещение фрагментов кода с использованием стековых команд. 3. Преобразование кода в зависимости от содержания предыдущего фрагмента кода или некоторых условий, полученных при работе предыдущего фрагмента. 4. Преобразование кода в зависимости от внешней к программе информации. 5. Преобразование кода, совмещенное с действиями, характерными для работы отладочных средств. Возможной задачей является защита от трассировки программы по заданному событию. В качестве защиты можно выделить следующие способы: - Пассивная защита – запрещение работы при переопределении обработчиков событий относительно заранее известного адреса. - Активная защита первого типа – замыкание цепочек обработки событий, минуя программы трассировки. - Активная защита второго типа – программирование функций, исполняемых обработчиками событий, другими способами, не связанными с вызовом «штатных» обработчиков или обработчиков событий, которые в текущий момент не трассируются. Встраивание защитных механизмов можно выполнить следующими основными способами: 1. вставкой фрагмента проверочного кода в исполняемый файл; 2. преобразованием исполняемого файла к неисполняемому виду (например, с использование шифрования) и применением для загрузки не ОС, а некоторой программы, в теле которой и осуществляются необходимые проверки. 3. вставкой проверочного механизма в исходный код на этапе разработки и отладки программного продукта. 4. комбинированием указанных способов. Программой с потенциально опасными последствиями, называют некоторую программу, которая способна выполнить любое непустое подмножество функций: - скрыть признаки своего присутствия в программной среде компьютерных систем (КС). - реализовать самодублирование, ассоциирование себя с другими программами или перенос своих фрагментов в другие области оперативной или внешней памяти. - разрушить или исказить произвольным образом код программ (отличных от нее) в оперативной памяти КС. - перенести фрагменты информации из оперативной памяти в некоторые области оперативной или внешней памяти прямого доступа. - имеет потенциальную возможность исказить произвольным образом, заблокировать или подменить выводимый во внешнюю память или в канал связи массив информации, образовавшийся в результате работы прикладных программ или уже находящийся во внешней памяти, либо изменить его параметры. Существуют следующие модели закладок: 6. Модель «перехват». Программная закладка встраивается в ПЗУ, ОС или прикладное программное обеспечение и сохраняет все или избранные фрагменты вводимой или выводимой информации в скрытой области локальной или удаленной внешней памяти прямого доступа. 7. Модель «троянский конь». Закладка встраивается в постоянно используемое ПО и по некоторому активизирующемуся событию моделирует сбойную ситуации на средствах хранения информации или в оборудовании компьютера. 8. Модель «наблюдатель». Закладка встраивается в сетевое или телекоммуникационное оборудование или ПО и осуществляет контроль за процессами обработки информации на данном компьютере, установку и удаление закладок, а также съем накопленной информации. 9. Модель «компрометация». Закладка либо передает заданную злоумышленником информацию, либо сохраняет ее, не полагаясь на гарантированную возможность последующего приема или снятия. 10. Модель «искажение или инициатор ошибок». Программная закладка искажает потоки данных, возникающие при работе прикладных программ, либо искажает входные потоки информации. 11. Модель «уборка мусора». Навязывается такой порядок работы, чтобы максимизировать количество остающихся фрагментов ценной информации. 12. Перехват информации может происходить в основном следующими способами: 13. - встраиванием в цепочку прерывания int 9h; 14. -анализом содержания клавиатурного порта или буфера клавиш по таймерному прерыванию. Методы внедрения программных закладок: - Маскировка закладки под «безобидное» ПО. - Маскировка закладки под «безобидный» модуль расширения программной среды. - Подмена закладкой одного или нескольких программных модулей атакуемой среды. - Подмена закладкой одного или нескольких программных модулей атакуемой среды. - Прямое ассоциирование. - Косвенное ассоциирование. Под компьютерным вирусом принято понимать программный код, обладающий следующими необходимыми свойствами: 1. способностью к созданию собственных копий, не обязательно совпадающих с оригиналом, но обладающих свойствами оригинала. 2. наличием механизма, обеспечивающего внедрение создаваемых копий в исполняемые объекты вычислительной системы. Для защиты систем от закладок необходимо полностью исключить наличие РПВ (разрушающих программных воздействий) или допустить присутствие РПВ с вероятностью не выше заданной и очень малой, т.е. создать изолированную среду. Программная среда называется изолированной при выполнении следующих условий. 1. на компьютере с проверенной BIOS установлена проверенная ОС. 2. достоверно установлена неизменность ОС и BIOS для данного сеанса работы. 3. кроме проверенных программ в данной программно-аппаратной среде не запускалось и не запускается никаких иных программ. 4. исключен запуск проверенных программ в какой-либо иной ситуации, т.е. вне проверенной среды.
|