Инструкция для системного администратора по осуществлению защиты кода от анализа

Организация защиты кода от анализа

Цель: изучение опыта организации защиты кода от анализа

Теоретическое обоснование

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

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

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

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

Сейчас защита от анализа включается в программы довольно редко, в основном в следующие виды программного обеспечения:

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

Пожалуй, самым известным примером чрезмерного увлечения разработчиков программного обеспечения защитой от анализа являются системы защиты от копирования, разработанные компанией StarForce.

На сегодняшний день существует несколько методов защиты программного кода:

–      обфускация – внесение запутывающих преобразований в исходные коды программ, написанных на языках высокого уровня;

–      шифрование – криптографическое закрытие защищаемого кода на том или ином этапе эксплуатации системы;

–      антиотладка – защита кода от средств отладки и исследования;

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

Существуют специальные программные средства StarFuck и StarForce Nightmare, отключающие защиту от копирования StarForce. Известны и методы обхода некоторых систем StarForce, не использующие специально разработанное программное обеспечение, а использующие лишь широко распространенные программные продукты Alcohol 120 % и Daemon Tools

Методические указания

Для выполнения практической работы вам понадобиться материал с сайтов:

Разработка ПО: защита от промышленного шпионажа — http://www.copyprotection.ru/press/articles/?news=2772

Анализ кода и технологии защиты — http://www.itsec.ru/articles2/crypto/analiz-koda-i-tehnologii-zaschity/

Анализ проблем защиты от внешнего нарушителя — http://www.securitylab.ru/analytics/397848.php

Анализ рынка средств защиты от копирования и взлома программных средств — http://citforum.ru/security/articles/analis/

Методика и программное средство защиты кода от несанкционированного анализа — http://www.swsys.ru/index.php?page=article&id=3337

Задания

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

Контрольные вопросы

  1. В чём заключается анализ кода и как это может навредить?
  2. Какие способы существуют для защиты от анализа кода?
  3. Какие средства существуют для защиты от анализа кода?

Форма отчёта

Конспект, проверка письменной работы, ответы на вопросы

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

В основе практически любого метода преодоления систем безопасности ПО лежит предварительное исследование кода, отвечающего за его защиту. Цель такого исследования в том, чтобы восстановить алгоритм защиты, выделить его слабые стороны или недокументированные возможности для его последующей модификации и (или) автоматизации процесса преодоления. Такое преодоление гарантированно достигается за определенное время вследствие конечности программы, а время, за которое злоумышленник преодолеет систему, зависит от его квалификации и сложности системы защиты [1]. Этой ситуации способствует широкий выбор (более 100 наименований) инструментов для исследования программного кода.

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

На сегодняшний день существует несколько методов защиты программного кода:

–      обфускация – внесение запутывающих преобразований в исходные коды программ, написанных на языках высокого уровня;

–      шифрование – криптографическое закрытие защищаемого кода на том или ином этапе эксплуатации системы;

–      антиотладка – защита кода от средств отладки и исследования;

–      полиморфизм – генерация различных версий бинарного кода одного алгоритма; чаще всего технологию полиморфизма для защиты бинарного кода используют компьютерные вирусы, чтобы защитить собственный код; для исследования таких объектов, как правило, используются специально разрабатываемые для каждого кода алгоритмы анализа [2].

Описание методики

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

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

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

Соответствующий уровень абстракции может быть получен путем декомпиляции программного кода. Рассмотрим алгоритм работы декомпилятора подробно (рис. 1).

Методика интерпретации инструкций, предложенная авторами данной статьи [3], рассматривает инструкции как совокупность элементарных операций над ресурсами, где в качестве ресурса могут выступать регистры, память или регистры флагов процессора. Все операции в рамках методики были сгруппированы в базовый набор операций: сложение и вычитание (+ и –); умножение (*); целочисленное деление (/); взятие остатка от деления (%); логическое «И»; логическое «ИЛИ»; логическое «Исключающее ИЛИ»; циклический битовый сдвиг влево (<<); циклический битовый сдвиг вправо (>>); доступ к отдельным битам ([]); запись в память по некоторому адресу ([<–); чтение из памяти по некоторому адресу (<–]); логическое «НЕ»; перенос информации от одного ресурса к другому (Транзит); обозначение константы (Const); обозначение группы специальных инструкций, которые нецелесообразно расщеплять на элементарные операции (Special).

Для отображения информации об инструкции предлагается следующая схема: ресурс, соответствующий регистру, обозначается фигурными скобками, в которые заключен его номер; ресурс оперативной памяти обозначается квадратными скобками, в которые заключен адрес ресурса; номер такого ресурса выносится за скобки; результат отделяется знаком «=»; операции и константы записываются как есть. Такая форма записи позволяет представлять инструкции в виде математических формул. Например, инструкции add eax,ecx и inc eax запишутся в виде R2=R1+R0; R3=R2+1, что наглядно показывает процесс преобразования информации для участка машинного кода.

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

Развивая методику сборки, для установки связи между операциями было предложено использовать аппарат синтаксических деревьев с целью описания преобразований ресурсов. В таком дереве узлы представляют собой операторы из базового набора операций, описанного выше, а листья соответствуют ресурсам или константам. Рассмотрим следующий пример для описания предложенного аппарата: R2=R0+R1; R4=R2*R3.

В результате будем иметь итоговое выражение R4=(R0+R1)*R3. А синтаксическое дерево примет вид, представленный на рисунке 2.

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

Для определения выходных ресурсов можно использовать несколько утверждений.

1. Выходным называется ресурс, который не является промежуточным.

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

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

Для учета ресурсов процессора необходимо учитывать не только регистры и флаги процессора, но и регистры, которые используются для адресации памяти (например mov[eax],3), так как их изменение в некоторых случаях может привести к нарушению алгоритма работы участка кода.

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

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

Общий алгоритм полиморфной генерации кода изображен на рисунке 3.

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

Рассмотрим общий алгоритм генерации инструкции (рис. 4).

На этапе генерации кода производится выбор инструкции из множества поддерживаемых генератором инструкций, выбор ресурса-приемника и ресурса-источника информации, где ресурс-приемник формируется исходя из данных о задействованных ресурсах. Следует отметить, что инструкция может оперировать как одним, так и двумя (и более) ресурсами. Если инструкция оперирует одним ресурсом, нужно установить, изменяется ли ресурс этой инструкцией в процессе выполнения.

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

Для трансляции сгенерированных ранее инструкций в бинарный код необходимо учитывать то, как процессор интерпретирует команды. Рассмотрим формат инструкций архитектуры x86 (рис. 5).

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

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

Для реализации полиморфного генератора были использованы как существующие [4], так и оригинальные разработки. Для оценки качества полиморфного генератора и визуализации разработан интерфейс ПО, включивший в себя дизассемблер и оригинальный декомпилятор, позволяющий наглядно продемонстрировать те действия, которые реализует полиморфный генератор в бинарном коде защищаемого объекта.

Рассматривая структуру разработанного программного комплекса (рис. 6), необходимо отметить, что она имеет модульную архитектуру и создавалась с учетом возможности использования модулей отдельно друг от друга. Помимо самого программного средства, была разработана и заполнена БД, а также реализована СУБД для решения задачи поддержки новых инструкций.

Такая структура ПО позволяет обеспечить переносимость всей разработки на различные платформы, а также использовать модули программного средства для других задач, отличных от полиморфной генерации бинарного кода, и переносить их (за исключением СУБД) на другие платформы (например UNIX и т.п.).

Таким образом, описываемая методика была реализована в виде программного средства, которое представляет собой анализатор программного кода, полиморфный генератор кода, СУБД и БД, содержащие соответствие инструкций их алгоритмам.

При использовании разработанного програм- много средства в защищаемом коде появляется избыточность: количество операций увеличивается с 12 до 46, выходных ресурсов – с 5 до 8. Поэтому для анализа защищенного кода злоумышленнику потребуется больше ресурсов (в большей степени временных).

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

Литература

1.     Золотарев В.В. Метод исследования программных средств защиты информации на основе компонентной модели информационной среды // Изв. ЮФУ: Технич. науки. 2008. Вып. 8. С. 87–94.

2.     Буинцев Д.Н. Метод защиты программных средств на основе запутывающих преобразований. Дис… канд. техн. наук. Томск, 2006.

3.     Кукарцев А.М., Лубкин И.А. Методика защиты программного кода от несанкционированной модификации и исследования посредством его хеширования // Вестн. СибГАУ. 2008. Вып. 1. С. 56–60.

4.     Hacker Disassembler Engine. URL: http://vx.netlux.org (дата обращения: 23.01.2012).

Руководство Администратора информационной безопасности

АННОТАЦИЯ

Система удаленного централизованного управления средствами защиты информации от несанкционированного доступа «Аккорд» (далее – Система, СУЦУ) предназначена для централизованного мониторинга событий ИБ и управления средствами защиты информации от несанкционированного доступа «Аккорд».

Данный документ описывает действия Администратора информационной безопасности СУЦУ, связанные с непосредственной эксплуатацией подсистемы в штатном режиме функционирования.

СОДЕРЖАНИЕ

1 Введение
1.1 Область применения
1.2 Функции Администратора ИБ СУЦУ
1.3 Комплект поставки
2 Назначение и условия применения
2.1 Назначение
2.2 Условия применения
3 Планирование работы и эксплуатация комплекса
3.1 Общие сведения
3.2 Изменение настроек средств защиты информации
3.3 Предварительная настройка сетевого идентификатора
3.4 Оперативное наблюдение за работой пользователей
3.5 Оперативное управление работой пользователей
3.6 Предварительная синхронизация базы на сервере централизованного управления с локальными базами пользователей ПКО
4 Работа с сервером централизованного управления
4.1 Общие принципы управления
4.2 Вкладка «Пользователи»
4.3 Вкладка «Роли»
4.4 Вкладка «Тех. участки»
4.4.1 Общие сведения
4.4.2 Создание технологического участка
4.4.3 Изменение параметров технологического участка
4.4.4 Удаление технологического участка
4.5 Вкладка «Идентификаторы»
4.6 Вкладка «Компьютеры»
4.7 Вкладка «Учётные записи»
4.8 Работа с журналами
4.8.1 Общие сведения
4.8.2 Оперативный журнал
4.8.3 Журнал ASM
4.8.4 Журнал АРМ АБИ
4.9 Настройка ASM
4.9.1 Основные настройки
4.9.2 Настройка фильтров оперативного журнала
4.9.3 Настройка фильтров экспорта журналов
5 Перечень оповещающих сообщений
6 Перечень сообщений журнала ASM
7 Перечень сообщений ПАК «Аккорд» на подконтрольных объектах
8 Перечень сообщений журнала АРМ АБИ
9 Файлы конфигурации
9.1 Файл конфигурации ASM.INI
9.2 Файл конфигурации AcCon32.ini
9.3 Файл конфигурации AcWs32.ini
9.4 Файл конфигурации rabbitmq.config
10 Перечень принятых сокращений



скачать документ PDF

если вам есть что скрывать

Инструкция

администратору безопасности информации АС __________ №___________, защищенной от несанкционированного доступа

Настоящая Инструкция определяет функции, права и обязанности Администратора безопасности информации АС _____________ №___________ по вопросам обеспечения информационной безопасности при подготовке и исполнении секретных документов на данной АС.

Администратор безопасности информации назначается из числа сотрудников (наименование организации) и обеспечивает правильность использования и нормальное функционирование установленной системы защиты информации (СЗИ).

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

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

2.2 Настройка и сопровождение в процессе эксплуатации подсистемы управления доступом на АС:

  • реализация полномочий доступа (чтение, запись) для каждого пользователя к элементам защищаемых информационных ресурсов (файлам, каталогам, принтеру и т.д.);

  • ввод описаний пользователей АС в информационную базу установленной на АС СЗИ от несанкционированного доступа (НСД);

  • своевременное удаление описаний пользователей из базы данных СЗИ при изменении списка допущенных к работе на АС лиц.

2.3 Контроль доступа лиц в помещение №___, где установлена АС, в соответствии со списком сотрудников, допущенных к работе на АС.

2.4 Контроль за ежемесячным проведением смены паролей для доступа к АС пользователями АС.

2.5 Настройка и сопровождение подсистемы регистрации и учета действий пользователей при работе на АС:

  • введение в базу данных установленной на АС СЗИ от несанкционированного доступа описания событий, подлежащих регистрации в системном журнале;

  • регулярное проведение анализа системного журнала для выявления попыток несанкционированного доступа к защищаемым ресурсам;

  • своевременное информирование Начальника спецотдела о несанкционированных действиях персонала и проведение расследования попыток НСД;

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

2.6 Сопровождение подсистемы обеспечения целостности информации на АС:

  • периодическое тестирование функций установленной на АС СЗИ от НСД, особенно при изменении программной среды и полномочий исполнителей;

  • восстановление программной среды, программных средств и настроек СЗИ при сбоях;

  • ведение двух копий программных средств СЗИ от НСД и контроль их работоспособности;

  • поддержание установленного порядка и правил антивирусной защиты информации на АС;

  • контроль за отсутствием на магнитных носителях остаточной информации по окончании работы пользователей;

  • периодическое обновление антивирусных средств (баз данных), установленных на АС, контроль за соблюдением пользователями порядка и правил проведения антивирусного тестирования АС.

2.7 Сопровождение подсистемы защиты информации от утечки за счет ПЭМИН, контроль соблюдения требований по размещению и использованию АС, указанных в Предписании на эксплуатацию.

3. Администратор безопасности информации имеет право:

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

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

4. Администратор безопасности информации обязан:

  • обеспечивать функционирование и поддерживать работоспособность средств и систем защиты информации в пределах возложенных функций;

  • проводить инструктаж пользователей по правилам работы на АС с установленной СЗИ от НСД;

  • в случае отказа средств и систем защиты информации принимать меры по их восстановлению;

  • докладывать Начальнику спецотдела о неправомерных действиях пользователей, приводящих к нарушению требований по защите информации;

  • вести документацию на АС в соответствии с требованиями нормативных документов.

Руководитель ответственный за эксплуатацию АС

Понравилась статья? Поделить с друзьями:
  • Инструкция для смартфона для пожилых людей
  • Инструкция для сборки лего в картинках
  • Инструкция для сборки лего ev3
  • Инструкция для сборки детской кровати
  • Инструкция для санитарки в мед учреждение