Анализ защищенности программного обеспечения

Дипломная работа - Компьютеры, программирование

Другие дипломы по предмету Компьютеры, программирование

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

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

Помимо этих двух основных инструментов исследования, можно использовать:

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

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

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

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

Защита от отладчиков.

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

Регистрация отладчиков обычно осуществляется по специфическим особенностям программно-аппаратной среды, указывающих на наличие того или иного отладчика - следам отладчика. Практически каждый отладчик имеет свои специфические особенности, знание и использование которых позволит разработчику значительно повысить надежность создаваемых средств защиты [12]. Такие особенности специфичны для каждого из отладчиков, хотя в некоторых ОС существуют и штатные средства регистрации наличия в памяти отладчика, например, в Windows существует специальный программный интерфейс средств отладки.[12]

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

Защита от эмулирующих отладчиков.

Существует класс инструментов отладки ПО, отличающихся по принципу работы от обычных отладчиков. Это, так называемые эмулирующие отладчики. В них реализована описанная нами ранее виртуальная машина, исполняющая машинный код процессора, для которого написано отлаживаемое ПО. При этом код ПО реально не исполняется, а лишь эмулируется результат его исполнения. Так же эмулируются все изменения состояния программно-аппаратной среды, которые вызвала бы отлаживаемое ПО, если бы исполнялось в реальности. Такой отладчик имеет гораздо более высокую степень контроля за действиями ПО из-за того, что виртуальная машина логически изолирована от реальной программно-аппаратной среды. Примером такого инструмента является эмулирующий отладчик TRW. Таким образом, система защиты ПО теоретически не имеет возможности ни обнаружить такой отладчик, ни повлиять на каким-либо образом на него, например, выгрузив его. Практически в таких эмуляторах часто не учитываются и не эмулируются различные тонкости и недокументированные особенности работы аппаратных средств и операционной системы. Поэтому, используя такие особенности и проверяя результат их выполнения, ПО имеет возможность определить тот факт, что оно запущено под таким эмулятором. Например, в эмуляторе могут быть не учтены различные недокументированные кома?/p>