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

Можно реализовывать с помощью встроенных и пристыковочных механизмов.

Встроенные – HASP API.

Пристыковочные HASP Envelopment.

Электронные ключи HASP Memo, Time и Net включают в себя подсистему полного управления доступом (FAS), позволяющую защитить одновременно несколько программ одного производителя, и ограничить их в зависимости от типа ключей по количеству запусков, по сроку действия, по количеству одновременно запущенных копий.

Электронные ключи HASP Memo, Time и Net обладают возможностью их удаленного перепрограммирования с помощью подсистемы RUS.

Для реализации удаленного управления формируется 2 утилиты: продавца и покупателя. Они формируются под конкретный электронный ключ, привязывающийся к его идентификационному номеру.

 

Pattern Code Security (Механизм защиты структурного кода)

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

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

 

Лекция № 8

Защита программного обеспечения от исследования

 

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

    В первом случае злоумышленник пытается получить листинг программы на каком-либо языке для возможности дальнейшего изучения и исследования логики защитных механизмов с использованием таких средств как Ida Pro, Soucer.

Большая часть средств защиты от отладки основывается на обнаружении отладчиков в оперативной памяти с целью дальнейшего противодействия отладке, либо на включенных в исполняемый код механизмов, которые не могут быть корректно выполнены под отладкой в режиме трассировки. Работа отладчиков в реальном режиме процессора основана на прерываниях int1, int3, которые устанавливают точки прерывания, в защищенном режиме работа отладчиков основана на использовании регистра отладки dr0 – dr7.

Приемы защиты:

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

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

push ss

pop ss

push f

pop ax

test ax, 100h

je debugger detected

 

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

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

4) В защищенном режиме можно воздействовать на регистры отладки dr0-dr7, например, периодически обнулять или использовать для своих нужд.

5) Обнаружение наличия отладчиков в оперативной среде путем использования преднамеренно оставленных в них «дыр»

6) Использование недокументированных возможностей процессора:

1. mov ax, cs:[100]=ds:es:cs:mov ax, [100]

2. cs:nop

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

 

Противодействие средствам статического анализа:

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

2. Самомодифицирование кода программы. Замена одних участков кода программы на другие.

3. Внедрение между инструкциями некой области данных

mov ax, 0CEBh

jmp label

db 1,2,3,4,5,6,7,8,9

label: mov ax, 1234h

 

4. Скрытие команд передачи управления

mov word ptr cs:label[1], 1234h

……

label jmp 0000h

 

5. Использование косвенной передачи управления

mov bx, 1234h

……….

Jmp cs:[bx]

6. Использование нестандартных способов передачи управления

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

Например:

Нормальный код Альтернативный код
…. jmp m …… m: …….. mov ax, offset m push ax ret …… m:….
call адрес подпрограммы m:…. адрес подпрограммы: …… ret mov ax, offset m push ax jmp адрес подпрограммы m:…. адрес подпрограммы:…… ret
… ret   … pop bx jmp bx

 

7. Перемешивание кода программы

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

push ss

pop ss

push f

pop ax

test ax,100h

je Debugger detected

 

Адреса Инструкция
00000000 push ss
00000001 jmp 0A
00000003 pop ax
00000004 jmp 0D
00000006 je debugger detected
000000A pop ss
000000B push f
000000C jmp 03
000000D test ax, 100h
000000E jmps 06

 

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

 

Лекция № 9

Классификация средств атаки на средства защиты программного обеспечения

 

    Программы-каталогизаторы – оболочки файловых систем, например, Far, Total Commander. С помощью данных средств возможно:

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

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

    Мониторы файловых операций (FileMon, RegMon, PortMon). Данные средства позволяют злоумышленнику проанализировать активность программы, «общение» программы с файлами, реестром, устройствами через порты ввода/вывода.

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

    Программы копирования областей оперативной памяти на внешние устройства (Advanced Memory Dumper).

    Средства декомпиляции (Cordon swf) представляют собой средства статического анализа исполняемого кода для изучения исходных текстов программ. Хорошо работают для Basic, Flash.

    Средства редактирования ресурсов (Passolo, Resource Hacker).

    Средства программы эмуляции аппаратных средств (Virtual CD).

    Средства эмуляции ЦП и ОС (VM Wave)

 

Защита от разрушающих программных воздействий (РПВ)

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

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

Эти программы могут реализовать следующие функции:

1. скрывать признаки своего присутствия в оперативной среде

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

3. способны разрушать код иных программ в оперативной памяти КС

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

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

РПВ делятся на следующие классы:

1. Вирусы. Особенностью является направленность на самодублирование и деструктивные функции. Задача скрытия своего присутствия в ПА среде часто не ставится

2. Программные «черви» - РПВ, основной функцией которых является самодублирование путем распространения в сетях, используя уязвимости прикладных систем и сетевых сервисов.

3. «Троянские кони». Для этих программ не свойственно деструктивное воздействие. Данный класс РПВ часто относят к вирусам, однако, основной функцией РПВ данного класса, как правило, заключается в краже информации, например, номеров кредитных карт, либо в имитации сбоя ЭВМ, чтобы под видом ремонта злоумышленник мог получить к ней доступ. Основная особенность – ассоциирование либо выдача себя за часто используемое ПО либо сервисы.

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

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

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

Если РПВ присутствует в ПА среде и загружено в оперативную память, то при отсутствии для него активизирующего события деструктивные особенности этого РПВ невозможны.

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

Основные модели работы РПВ

 

1) Перехват. РПВ внедряется в оперативную среду и осуществляет перехват и дальнейшее копирование требуемой информации в некие скрытые области оперативной памяти. Например, клавиатурные шпионы.

2) «Троянский конь» - РПВ встраивается в постоянно используемое ПО, либо сервис и выполняет кражу информации. Либо сервис при активном событии моделирует сбойную ситуацию.

3) «Наблюдатель» - РПВ встраивается в постоянно используемое ПО или сервис и осуществляет контроль обработки информации, реализует контроль других РПВ. (Trojan Downloader)

4) Искажение либо инициатор ошибок.

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

 

Выделяют 3 основные группы деструктивных функций РПВ:

1. Сохранение фрагментов информации во внешнюю память.

2. Изменение алгоритмов функционирования прикладных программ.

3. Блокировка определенных режимов работы прикладных программ.

Лекция № 10

Компьютерные вирусы как класс РПВ

Вирусы как класс РПВ обладают следующими функциями:

1. способность к самодублированию

2. способность к ассоциированию с другими программами

3. способность скрывать признаки своего присутствия до определенного момента

4. направлены на деструктивные функции

Компьютерные вирусы делятся на:

· файловые

· загрузочные

· макровирусы

Жизненный цикл вирусов включает 2 фазы: латентную, когда вирус не проявляет своего присутствия, и фазу непосредственного функционирования.

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

1) автоматическая загрузка при запуске операционной системы

2) внедрение в меню автозагрузки

3) через носители типа flash

Фаза исполнения вируса включает следующие этапы:

1) загрузка вируса в память

2) поиск «жертвы»

3) инфицирование

4) выполнение деструктивных функций

5) передача управления объекту-носителю вируса.

 

 По способу поиска «жертвы» вирусы делятся на:

1. те, которые выполняют активный поиск объектов

2. те, которые ведут пассивный поиск, то есть устанавливают ловушки на заражаемые объекты

 

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

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

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

Для защиты от вирусов наиболее часто применяют антивирусные мониторы, сканнеры, ПА средства, не допускающие заражение вирусами объектов операционной среды, не допускающие проникновение в КС.

Наиболее часто используемые пути проникновения вируса в КС:

1. носитель информации с зараженным объектом;

2. электронная почта;

3. компьютерная сеть.

Методы борьбы с РПВ

1. Контроль целостности, системных событий, прикладных программ, используемых данных

2. Контроль цепочек прерываний и фильтрация вызовов, критических для безопасности систем прерываний

3. Создание изолированной программной среды

4. Предотвращение результатов воздействия РПВ, например, аппаратная блокировка записи на диск

5. Поиск РПВ по свойственным им или характерным последовательностям – сигнатурам

Сигнатура – уникальная последовательность кода, свойственная вирусу, её присутствие в исполняемом коде говорит об однозначном присутствии РПВ. Можно поступить по-другому: разрешить запускать системе только те модули, которые имеют известную сигнатуру.

6. Поиск критических участков кода, путем его синтаксического анализа, выявление синтаксических характерных конструкций с точки зрения РПВ, например, вирусов.

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

8. Метод Мельсона – тестирование всех путей переходов программе.

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

 

Дата: 2019-12-10, просмотров: 373.