Лекция 29 Базовые методы противодействия дизассемблированию по
Дизассемблирование машинного кода злоумышленником проблематично даже в том случае, когда противодействие ему не предусмотрено. Задача автоматической идентификации какого-то участка программы как данных или как кода довольно сложна и неоднозначна: программист может использовать код как данные или наоборот.
Методы защиты ПО от дизассемблирования пытаются «обмануть» дизассемблера, заставить его сбиться, произвести дизассемблирование неверно, перепутать код и данные, выдать на своем выходе «мусор». В этом случае злоумышленник не сможет правильно исследовать логику работы ПО.
Рассмотрим несколько основных подходов к защите ПО от дизассемблирования.
1. Шифрование кода программы. Защищаемый участок кода шифруется каким-либо алгоритмом, а в программу добавляется модуль дешифрования, который в нужный момент дешифрует его и передаст ему управление. Защищаемый участок кода перед дизассемблером предстанет в зашифрованном виде и будет воспринят дизассемблером неверно, на выходе дизассемблера будет сформирован «мусор».
Данный метод при неправильном использовании достаточно уязвим ввиду того, что алгоритм расшифровки доступен взломщику, необходимо лишь найти его и произвести расшифровку. Поэтому шифрование должно производиться на секретном ключе, который доступен только легальному пользователю и никому другому.
2. Сокрытие команд передачи управления. Реализация данного подхода к защите приводит к тому, что дизассемблер не может построить граф передачи управления, и, соответственно, человек должен будет сам вычислять адрес перехода. Например, можно модифицировать адреса переходов при выполнении программы. Если команда модификации и модифицируемая команда достаточно далеко разнесены друг от друга, то велика вероятность того, что человек упустит эту модификацию из виду.
Пример 3.
Mov word ptr cs:m[1],1234h; | модификация адреса перехода |
…… |
|
m: jmp place; | вместо метки place ранее внесен другой адрес |
…… |
|
Пример 4.
mov word ptr cs:m[1],es; | модификация адреса вызываемой подпрограммы |
mov word ptr cs:m[3],5678h |
|
…… |
|
m: CALL far 0000h; | данный адрес перехода был ранее модифицирован |
…… |
|
3. Использование косвенной передачи управления.
Данный подход к защите можно проиллюстрировать следующим примером.
Пример 5
Movbx, 1234h
…
Jmpdwordptrcs:[bx]
4. Использование нестандартных способов передачи управления
Для затруднения изучения дизассемблированного кода могут использоваться нестандартные способы передачи управления, по каким либо адресам. Разработчик может, например, моделировать работу операторов JMP, CALL, INT… средствами других операторов, что затруднит понимание листинга на языке ассемблера. Примеры возможных альтернативных записей команд передачи управления приведены в таблице 8.1.
Табл. 8.1. Примеры возможных альтернативных записей команд передачи управления
Первичный код | Альтернативный код |
… Jmp m … m: … | Mov ax, offset m Push ax Ret … m: |
… Call subr m: … subr: … Ret | Mov ax, offset m Push ax Jmp subr m: … subr: … Ret |
… int13h | … pushf; флаги в стек pushcs movax,offsetm pushax; занести в стек адрес возврата xor ax,ax mov es,ax jmp dword ptr es:[13h*4] m: … |
… ret | … pop bx jmp bx |
Iret | Movbp,sp Jmpdwordptr[bp]; переход на точку возврата из прерывания … addsp, 4; точка возврата popf |
5. Осуществление короткого переходавперед, а между командой перехода и адресом перехода добавление «мусора». В данном случае, можно добиться совершенно неверного результата дизассемблирования, в особенности для автоматических дизассемблеров.
Пример 6
Seg000:0100addsi, 6; фрагмент кода
Seg000:0103jmpsi; фрагмент кода
Seg000:0105db0B9h; фрагмент данных
Seg000:0106movsi, 114h; фрагмент кода
В приведенном выше примере дизассемблер не сможет в автоматическом режиме определить адрес перехода во второй строке и попытается интерпретировать код с адреса 0000:0005 как инструкции. В этом случае результат дизассемблирования будет совершенно неверен и будет выгладеть следующим образом:
Seg000:0000 add si,6;
Seg000:0003 jmp si;
Seg000:0005 mov cx, 14BEh;
Seg000:0008 add [di+5691h], bp
- Министерство образования и науки российской федерации
- Лекция 1
- Предмет и задачи программно-аппаратной защиты информации.
- Лекция 2
- Информационная безопасность
- В компьютерных системах
- Компьютерная система как объект защиты информации
- Понятие угрозы информационной безопасности в кс
- Классификация и общий анализ угроз информационной безопасности в кс
- Лекция 3 Случайные угрозы информационной безопасности
- Лекция 4 понятие политики безопасности в компьютерных системах
- 1. Разработка политики информационной безопасности
- 2. Методология политики безопасности компьютерных систем
- 3. Основные положения политики информационной безопасности
- 4. Жизненный цикл политики безопасности
- 5. Принципы политики безопасности
- Лекция 5 Идентификации субъекта. Понятие протокола идентификации. Идентифицирующая информация. Пароли. Программно-аппаратные средства идентификации и аутентификации пользователей
- Идентификация и аутентификация. Основные понятия и классификация
- Лекция 6 Простая аутентификация
- 1. Аутентификация на основе многоразовых паролей
- 2. Аутентификация на основе одноразовых паролей
- 3. Аутентификация, на основе сертификатов
- Лекция 7
- 2. Строгая аутентификация
- 2.1. Протоколы аутентификации с симметричными алгоритмами шифрования
- 2.2. Протоколы, основанные на использовании однонаправленных ключевых хэш-функций
- Лекция 8 Аутентификация с использованием асимметричных алгоритмов шифрования
- Электронная цифровая подпись (эцп). Аутентификация, основанная на использовании цифровой подписи
- Протоколы аутентификации с нулевой передачей значений
- Упрощенная схема аутентификации с нулевой передачей знаний
- Лекция 9 системы идентификации и аутентификации
- Классификация систем идентификации и аутентификации
- Комбинированные системы
- Лекция 10 Бесконтактные смарт-карты и usb-ключи
- Гибридные смарт-карты
- Биоэлектронные системы
- 1. Ключи. Организация хранения ключей
- Утверждение о подмене эталона
- Защита баз данных аутентификации операционных систем класса Windows nt.
- Алгоритм вычисления хэша lanman
- Хэш ntlm
- 2. Распределение ключей
- Лекция 12 Использование комбинированной криптосистемы
- Метод распределения ключей Диффи-Хеллмана
- Протокол вычисления ключа парной связи ескер
- Лекция 13 Основные подходы к защите данных от нсд. Защита пэвм от несанкционированного доступа
- 1) Физическая защита пэвм и носителей информации;
- 1. Полностью контролируемые компьютерные системы.
- Программная реализация функций кс.
- Аппаратная реализация функций кс.
- 2. Частично контролируемые компьютерные системы.
- Основные элементы и средства защиты от несанкционированного доступа. "Снег-2.0"
- Лекция 15 Устройства криптографической защиты данных серии криптон.
- Устройства для работы со смарт-картами.
- Лекция 16 Программные эмуляторы функций шифрования устройств криптон
- Системы защиты информации от несанкционированного доступа Система криптографической защиты информации от нсд криптон –вето
- Лекция 17 Комплекс криптон -замок для ограничения доступа компьютеру.
- Система защиты конфиденциальной информации Secret Disk.
- Система защиты данных Crypton Sigma.
- Лекция 18 Модель компьютерной системы. Методы и средства ограничения доступа к компонентам эвм. Понятие изолированной программной среды.
- 1. Понятие доступа и монитора безопасности
- 2. Обеспечение гарантий выполнения политики безопасности
- 3. Методология проектирования гарантированно защищенных кс
- Лекция 19 Метод генерации изолированной программной среды
- Лекция 20
- Модели управления доступом
- Системы разграничения доступа
- Диспетчер доступа
- Списки управления доступом к объекту
- Списки полномочий субъектов
- Атрибутные схемы
- Лекция 21
- 1. Подходы к защите информационных систем Устойчивость к прямому копированию
- Устойчивость к взлому
- Аппаратные ключи
- 2. Структура системы защиты от несанкционированного копирования
- Блок установки характеристик среды
- 3. Защита дискет от копирования
- Лекция 22 Электронные ключи hasp
- Лекция 23
- 1. Разрешения для файлов и папок
- 2. Шифрующая файловая система (efs)
- 2.1. Технология шифрования
- 2.2. Восстановление данных
- Лекция 24
- 1. Драйвер еfs
- 2. Библиотека времени выполнения efs (fsrtl)
- 4. Win32 api
- 11.4. Взаимодействие файловой системы защиты ntfs и защиты ресурса общего доступа (Sharing)
- 11.5. Типовые задачи администрирования
- Оснастка Локальные пользователи и группы (Local Users and Groups)
- 11.6. Администрирование дисков в Windows 2000
- Лекция 25
- 2. Обзор современных средств защиты
- Лекция 26 Защита файлов от изменения. Защита программ от изучения. Защита от дизассемблирования. Защита от отладки. Защита от трассировки по прерываниям. Защита от исследований.
- Обычные проблемы хакера
- Защита от исследований на уровне текстов
- Защита от исследований в режиме отладки.
- Защита программ от трассировки
- Лекция 27
- 1. Базовые методы нейтрализации систем защиты от несанкционированного использования
- 2. Понятие и средства обратного проектирования
- Лекция 28 Локализация кода модуля защиты посредством отлова WinApi функций в режиме отладки
- Базовые методы противодействия отладчикам
- Лекция 29 Базовые методы противодействия дизассемблированию по
- Защита от отладки, основанная на особенностях конвейеризации процессора
- Лекция 30 Использование недокументированных инструкций и недокументированных возможностей процессора
- Шифрование кода программы как универсальный метод противодействия отладке и дизассемблированию
- Основные модели работы рпв
- Компьютерные вирусы.
- Классификация вирусов
- Лекция 32 Механизмы заражения компьютерными вирусами
- Признаки появления вирусов
- Методы и средства защиты от компьютерных вирусов
- Лекция 33
- Ibm antivirus/dos
- Viruscan/clean-up
- Panda Antivirus
- Профилактика заражения вирусами компьютерных систем
- Антивирус. Алгоритм работы
- Проверочные механизмы
- Постоянная проверка и проверка по требованию
- Лекция 34 Структура антивирусной защиты предприятия
- Функциональные требования
- Общие требования
- Пример вируса
- Список литературы Основная литература
- Дополнительная литература
- Периодические издания
- Методические указания к лабораторным занятиям
- Методические указания к практическим занятиям
- Методические указания к курсовому проектированию и другим видам самостоятельной работы