- •Введение
- •Основные понятия и определения предмета защиты информации
- •Правовое обеспечение информационной безопасности
- •Статья 272 ук рф
- •Статья 273 ук рф
- •Статья 274 ук рф
- •Статья 146 ук рф
- •Статья 147 ук рф
- •Организационно – распорядительная документация
- •Концепция защиты свт и ас от нсд к информации
- •1.3. Санкционированный и несанкционированный доступ
- •1.4. Угрозы безопасности и каналы реализации угроз
- •1.5. Основные принципы обеспечения информационной безопасности
- •1.6. Ценность информации
- •1.7. Меры обеспечения безопасности компьютерных систем
- •1.8. Характеристика способов защиты компьютерной информации
- •2. Разграничение доступа к ресурсам
- •Политики безопасности
- •Дискреционные политики безопасности
- •Мандатные политики безопасности
- •Контроль доступа, базирующийся на ролях
- •Политика безопасности сети
- •3. Идентификация и аутентификация субъектов
- •3.1. Классификация подсистем идентификации и аутентификации субъектов
- •3.2. Парольные системы идентификации и аутентификации пользователей
- •Методы и средства криптографической защиты
- •4.1. Принципы криптографической защиты информации
- •4.2. Традиционные симметричные криптосистемы
- •4.2.1. Шифрование методом замены
- •Шифрование методом Цезаря
- •Простая моноалфавитная замена
- •Шифр Гронсфельда
- •Шифрование методом Вернама
- •4.2.2. Шифрование методами перестановки
- •Метод простой перетановки
- •Алгорита Гамильтона
- •Шифрование методом гаммирования
- •4.3.Элементы криптоанализа
- •4.4. Современные симметричные системы шифрования
- •4.5. Асимметричные криптосистемы
- •4.5.1. Принципы асимметричного шифрования
- •4.5.2. Однонаправленные функции
- •Целочисленное умножение
- •Модульная экспонента
- •4.5.3. Алгоритм шифрования rsa
- •Алгоритм формирования ключевой пары пользователем а
- •Шифрование и дешифрование сообщений в криптосистеме rsa
- •Действия получателя а
- •Действия отправителя b
- •Действия пользователя a
- •4.6. Сравнение симметричных криптосистем с асимметричными
- •Контроль целостности информации. Электронно-цифровая подпись
- •5.1. Проблема обеспечения целостности информации
- •Алгоритм вычисления контрольной суммы
- •5.2. Функции хэширования и электронно-цифровая подпись
- •5.3. Инфраструктура открытых ключей pki
- •Структура, сервисы и архитектура pki
- •Политика и регламент pki
- •Программные средства поддержки pki
- •Хранение и распределение ключевой информации
- •Типовые схемы хранения ключевой информации
- •Алгоритм идентификации и аутентификации для схемы 1
- •Алгоритм идентификации и аутентификации для схемы 2
- •Защита баз данных аутентификации в ос Windows nt и unix
- •Алгоритм хэширования lanman
- •Алгоритм хэширования ntlm
- •Иерархия ключевой информации
- •Распределение ключей
- •Распределение ключевой информации с использованием центров распределения ключей
- •Прямой обмен сеансовыми ключами между пользователями
- •Протокол Диффи-Хеллмана
- •Протоколы безопасной удаленной аутентификации пользователей
- •Протокол chap (Challenge Handshaking Authentication Protocol)
- •Протокол одноразовых ключей s/key
- •Реализация метода «запрос-ответ» в oc Windows при сетевой аутентификации
- •Алгоритм формирования ответа
- •7. Защита от разрушающих программных воздействий
- •7.1. Понятие разрушающего программного воздействия
- •Модели взаимодействия прикладной программы и рпв
- •Компьютерные вирусы как класс рпв
- •Классификация файловых вирусов по способу заражения
- •Перезаписывающие вирусы
- •Вирусы-компаньоны
- •Защита от рпв. Изолированная программная среда
- •Эвристическая методика выявления рпв в bios
- •8. Защита информации в компьютерных сетях
- •8.1. Основные угрозы и причины уязвимости сети internet
- •Классификация типовых удаленных атак на интрасети.
- •Анализ сетевого трафика
- •Подмена доверенного субъекта
- •Введение ложного объекта компьютерной сети
- •Отказ в обслуживании (DoS)
- •Сканирование компьютерных сетей
- •Ограничение доступа в сеть. Межсетевые экраны
- •Фильтрующие маршрутизаторы (пакетные фильтры)
- •Шлюзы сетевого уровня
- •Шлюз прикладного уровня
- •Виртуальные частные сети (vpn)
- •Доменная архитектура в Windows nt. Служба Active Directory
- •Протокол skip
- •Централизованный контроль удаленного доступа. Серверы аутентификации
- •Прокси – сервер
- •9. Защита программного обеспечения
- •9.1. Проблема защиты программного обеспечения
- •Модульная архитектура технических средств защиты по
- •9.3.Функционирование подсистем и модулей системы защиты по
- •9.4.Электронные ключи hasp
- •9.4. Защита по от изучения
- •9.4.1. Базовые методы нейтрализации систем защиты
- •Понятие и средства обратного проектирования
- •Локализация кода модуля защиты
- •Базовые методы противодействия отладчикам
- •Защита от отладчиков реального режима
- •Защита от отладчиков защищенного режима
- •Базовые методы противодействия дизассемблированию по
- •Защита от отладки
- •Использование недокументированных инструкций
- •Шифрование кода программы
- •Лабораторный практикум
- •10.1. Помехоустойчивые коды
- •10.2. Алгоритм кодирования и декодирования Хаффмена
- •Порядок выполнения лабораторной работы
- •Контрольные вопросы
- •Дискреционная модель политики безопасности
- •Порядок выполнения лабораторной работы
- •Контрольные вопросы
- •Подсистемы парольной аутентификации пользователей
- •Порядок выполнения лабораторной работы
- •Контрольные вопросы
- •Методы криптографической защиты информации
- •Порядок выполнения лабораторной работы
- •Контрольные вопросы
- •Литература
Понятие и средства обратного проектирования
В разделе 9.4.1. отмечается, что основными угрозами для программного продукта, защищенного от несанкционированного использования, являются угроза нарушения функциональности модуля защиты и угроза раскрытия эталонных характеристик среды. Реализация первой угрозы может заключаться в обходе либо полном отключении модуля защиты путем модификации кода программы. Реализация второй – в выяснении эталонных характеристик среды путем исследования программно-аппаратной среды функционирования защищенной программы.
В любом случае, существует ряд задач, которые злоумышленник должен решить при реализации данных угроз [Error: Reference source not found].
1. Задача локализации кода защитного механизма в коде программы. Следует отметить, что для современного ПО без использования специализированных программных средств эта задача злоумышленником не может быть решена за приемлемое время, что обусловлено следующими причинами.
Код защитного механизма занимает сравнительно малый объем в общем объеме кода программы. Задача ручного поиска блоков установки, сравнения характеристик среды, и ответной реакции, занимающих размер 100 – 200 байт в коде программы, занимающем сотни мегабайт, без использования специализированных средств не может быть решена за приемлемое для злоумышленника время.
Анализ кода ПО злоумышленником в значительной степени затрудняется тем, что производится анализ не исходного текста на языке высокого уровня, а машинного кода, сформированного компилятором. На его разборку и понимание уходит значительное время даже у специалистов высокого класса. Также, при анализе машинного кода исследователю приходится увязывать в единую последовательность действий как минимум 10-20 команд, чтобы понять скрываемый за ними результат. Это усложняет анализ программы.
Задача исследования модуля защиты и понимания принципов его действия. Злоумышленник должен понять, каким образом построена защита, где она хранит (если хранит) эталонные характеристики среды, где сохраняет (если сохраняет) свои метки и ключи, на каком этапе принимается решение о регистрации программы либо об отклонении регистрации. При этом злоумышленник сталкивается с проблемой анализа машинного кода, что приводит к аналогичным трудностям, представленным выше.
Однако необходимо отметить, что на самом деле сложности, перечисленные выше, для подготовленного злоумышленника в большинстве случаев таковыми не являются. Существует множество программных продуктов, облегчающих ему решение задач 1 и 2: их реализация, в отдельных случаях доводится до автоматизма.
Одна из основных задач, решаемая злоумышленником при исследовании ПО, – анализ логики работы программы, поиск в ней участков кода, отвечающих за реализацию защитных механизмов, детальное исследование принципов работы модулей защиты. При этом ставится задача представления машинного кода на как можно более высоком уровне абстракции с целью упрощения его понимания.
Под обратным проектированием (reverse engineering) понимают процесс исследования и анализа машинного кода, нацеленный на понимание общих механизмов функционирования программы, а также на его перевод на более высокий уровень абстракции (более высокий уровень языка программирования) вплоть до восстановления текста программы на исходном языке программирования.
Основными методами обратного проектирования являются отладка и дизассемблирование программ. При этом используются следующие средства (инструменты).
Отладчики – программные средства, позволяющие выполнять программу в пошаговом режиме, контролировать ее выполнение, вносить изменения в ход выполнения. Данные средства позволяют проследить весь механизм работы программы и являются средствами динамического исследования работы программ. В качестве примера одного из наиболее мощных отладочных средств можно привести отладчик SoftIce.
Дизассемблеры – программные средства, позволяющие получить листинг программы на языке ассемблера, с целью его дальнейшего статического изучения. Дизассемблеры являются средствами статического исследования.
По способу реализации интерфейса взаимодействия с пользователем, существующие дизассемблеры можно разделить на две категории — автономные и интерактивные.
Автономные дизассемблеры требуют от пользователя задания всех указаний до начала дизассемблирования и не позволяют вмешиваться непосредственно в сам процесс. Если же конечный результат окажется неудовлетворительным, пользователь либо вручную правит полученный листинг, либо указывает дизассемблеру на его ошибки и повторяет всю процедуру вновь и вновь, порой десятки раз. Такой способ общения человека с дизассемблером непроизводителен и неудобен, но его легче запрограммировать.
Интерактивные дизассемблеры обладают развитым пользовательским интерфейсом, благодаря которому приобретают значительную гибкость, позволяя человеку "вручную" управлять разбором программы, помогая автоматическому анализатору там, где ему самому не справиться — отличать адреса от констант, определять границы инструкций и т.д.
Примером автономного дизассемблера является SOURCER, а интерактивного — IDA Pro.
Мониторы событий – программные средства, позволяющие отслеживать определенные типы событий, происходящие в системе.
Редакторы кода занимают отдельное место среди средств обратного проектирования. Данные средства, как правило, включают функции дизассемблирования, но позволяют также вносить изменения в код программы. Данные средства предназначены, в основном, для исследования программ, занимающих небольшой объем.
Классификацию средств обратного проектирования ПО можно представить в виде следующей схемы (рис 9.3).
Средства обратного проектирования
Средства динамического исследования
Средства статического исследования
Мониторы событий
Отладчики
Дизассемблеры
Редакторы кода
Мониторы файловых операций
Мониторы операций с реестром
Отладчики реального режима
Отладчики защищенного режима
Рис. 9.3. Классификация средств обратного проектирования
Таким образом, использование техники обратного проектирования позволяет злоумышленнику детально разобраться с принципами функционирования программы, в том числе и модулей защиты. Это может ему позволить в дальнейшем атаковать отдельные модули системы защиты. Производитель ПО должен стремиться не допустить этого, он должен противодействовать внутреннему исследованию кода своей программы злоумышленником. Таким образом, защита своих программ от внутренного исследования (в особенности критических модулей, ответственных за безопасность), является одной из актуальных задач для производителя ПО. Производитель должен уметь противостоять всем средствам обратного проектирования, облегчающих злоумышленнику задачу взлома.
