
- •Случайные угрозы безопасности информации и способы противодействия им
- •Преднамеренные угрозы безопасности информации и способы противодействия им
- •Способы и средства защиты информации от несанкционированного доступа
- •Свойства информации, обеспечивающиеся в автоматизированных системах, и угрозы для информационной безопасности
- •Уровни доступа к информации в автоматизированных системах и методы реализации угроз информационной безопасности
- •Основные принципы обеспечения информационной безопасности автоматизированных системах
- •Каналы доступа к информации и способы их перекрытия
- •Классификация криптографических систем
- •Симметричные криптосистемы: схема реализации, виды криптоалгоритмов
- •Алгоритмы подстановки
- •Метод перестановки
- •Метод замены с секретным ключом
- •Гаммирование
- •Криптосистемы с открытым ключом: схема реализации, алгоритм rsa
- •Криптоалгоритмы des и гост 28147-89 и их сравнение с rsa
- •Идентификация и классификация ключевых (идентификационных) признаков
- •Виды электронных ключей
- •Криптоанализ
- •Управление (разграничение) доступом
- •Методы защиты внешнего периметра
- •Методы защиты программ
- •Методы взлома программ
Методы взлома программ
Эмуляция ключа
Данный метод взлома является наиболее очевидным, но и наиболее трудоемким. Алгоритм взлома состоит в том, что с помощью определенных программно-аппаратных средств снимается протокол обмена программы и ключа и сохраняется в файле. Далее полученная информация анализируется и на ее основе создается эмулятор ключа. В зависимости от способностей взломщика, эмулятор может быть
программный
аппаратный
Программный эмулятор реализуется в виде драйвера защищенного режима, который перехватывает операции обращения к портам ввода/вывода и передает программе те данные, которые она должна считать из порта. При этом, очевидно, эмулятор должен распознавать команды обращения именно к ключу, игнорируя обращения к внешним устройствам.
Аппаратный эмулятор представляет собой электронное устройство с такой логикой работы, которая позволит генерировать такие же выходные значения, как и электронный ключ. Для эмуляции сложных ключей приходится использовать схемы на однокристальных микропроцессорах с созданием и записью в память процессора соответствующих микропрограмм.
Для предотвращения таких попыток обычно принимаются следующие меры, усложняющие задачу взломщика до сложности задачи криптоанализа.
Нестандартная элементная база при изготовлении ключа (заказные ASIC микросхемы).
Зашумление и динамическое изменение протокола обмена с ключом. Данная мера предусматривает обмен программы с ключом большим количеством информации, не имеющей значения («мусор»). Это затруднит взломщику поиск закономерностей и восстановление оригинального протокола.
Реализация в ключе функции f(х), достаточно сложной для того, чтобы ее анализ невозможно было провести за приемлемое время.
И хотя данный способ взлома из-за своей сложности относится к разряду экзотических, все же существуют широко рекламируемые и серийно выпускаемые платы-эмуляторы. Примером являются платы P-CARD — эмулятор ключа SentinelPro, и C-CARD — эмулятор более простых ключей SentineIC и Sentinel Scribe. Обе платы-эмулятора выпускаются компанией Safesoft Systems и предназначены для установки в ISA-слот.
Взлом с использованием отладчиков
Суть его состоит в том, что взломщик, используя отладчик, анализирует логику защищенной программы, и, в первую очередь, защитных механизмов. Найдя места, где осуществляется проверка значений, полученных из ключа и принятие решения о дальнейшем выполнении приложения, он изменяет код таким образом, что приложение выполняется вне зависимости от наличия ключа. В настоящее время для изучения логики работы защит и защищенных приложений используются инструменты, которые можно разбить на 3 группы.
Отладчики реального режима
В данную группу входят «классические» отладчики реального режима DOS, такие как DOS Debug, AFD, Turbo Debugger. В настоящее время отладчики из этой группы практически не используются для реинжиниринга, поскольку они традиционно используют для своей работы отладочные и трассировочные прерывания (INT1/INT3), стек отлаживаемой программы, оставляют следы в теле программы и в стеке. Даже примитивные антитрассировочные меры, например, использование в защитных процедурах векторов прерываний INT1/INT3, ставят взломщика, пользующегося отладчиком из данной группы, в затруднительное положение.
Отладчики защищенного режима
В данную группу входят отладчики, получившие наибольшее распространение в последнее время. Отладчики защищенного режима работают в качестве супервизоров режима V86 и предоставляют гораздо больше возможностей, чем отладчики из предыдущей группы. В качестве примеров можно привести широко известные в хакерских кругах SoftICE, WinICE, и, менее популярный Turbo Debugger/386. С одной стороны, отладчики из данной группы оставляют гораздо меньше следов, по которым их можно идентифицировать. Например, для установки контрольной точки в теле исполняемой программы используется не стандартное прерывание контрольной точки INT3, которое можно легко обнаружить, а аппаратное прерывание по выполнению инструкции. С другой стороны, дополнительные возможности в виде прерываний по доступу к памяти или портам ввода/вывода делают такие отладчики очень мощным инструментом для реинжиниринга.
Эмуляторы процессора
В данную группу входят средства, эмулирующие аппаратную среду процессоров 80x86 и периферийного оборудования. Очевидно, кроме собственно эмулятора, в состав таких средств входят подсистемы отладки, реализующие все функции отладчиков. Эмуляторы процессора могут быть как программными, так и аппаратными. Таким образом, программа получает полную иллюзию работы на обычном процессоре и не может определить, что кроме процессора существует еще подсистема отладки. Данные средства потенциально представляют наибольшую опасность для защитных механизмов, поскольку их наличие определить невозможно. Прием сохранения дампа памяти, описанный в предыдущем разделе, настолько универсален для взлома конвертов, что были созданы специальные инструменты для автоматического снятия защиты с использованием данного приема. Условно такие инструменты называют автоматическими распаковщиками. Автоматические распаковщики используют следующие основные режимы работы.
Распаковка трассировкой
В данном режиме защищенная программа запускается с включенной трассировкой. После каждой инструкции анализируется значение сегментного регистра кода (CS) и в случае его изменения делается предположение о том, что защитные механизмы отработали и управление передалось прикладной программе. Данный режим малоэффективен против защит с мощными антитрассировочными механизмами.
Распаковка с поддержкой таблиц
Данный режим основан на том, что каждый компилятор при генерации ЕХЕ файла помещает в его начало абсолютно одинаковый для всех программ startup-код. Например, любая программа, скомпилированная Borland С, начинается с инструкций mov ah,30h; int 21h. Для каждого компилятора можно выделить последовательность инструкций, однозначно идентифицирующую данный компилятор. Как правило, для определения таких последовательностей используется перехват программных прерываний, вызываемых из startup-кода.