Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

3204

.pdf
Скачиваний:
9
Добавлен:
15.11.2022
Размер:
3.44 Mб
Скачать

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

выявление конкретных отладчиков по косвенным признакам. Например, отладчик Soft ICE обычно создает устройства с именами NTICE и SIWVID, большинство отладчиков пользовательского режима имеют характерные заголовки окон и т.п.;

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

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

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

перехват прерываний 1 и 3, используемых

отладчиками;

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

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

101

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

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

102

2. ПРОГРАММНЫЕ ЗАКЛАДКИ, ПУТИ ИХ ВНЕДРЕНИЯ, СРЕДСТВА И МЕТОДЫ

ПРОТИВОДЕЙСТВИЯ ПРОГРАММНЫМ ЗАКЛАДКАМ 2.1. Общие сведения

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

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

Случаи применения программных закладок для осуществления НСД известны с конца 1970-х гг. Наиболее известны следующие программные закладки:

«Турбо Криптон» – подменяет драйвер криптографической платы «Криптон-3» и заменяет шифр ГОСТ 28147 – 89 шифром простой замены;

Back Orifice – позволяет злоумышленнику осуществлять практически неограниченный удаленный контроль ОС

Windows 95/98, а начиная с версии Back Orifice 2000 – и Windows NT/2000;

NetBus – позволяет злоумышленнику осуществлять практически неограниченный удаленный контроль операционной системы Wrndows NT/2000.

103

До конца 1990-х гг. случаи несанкционированного доступа (НСД), осуществляемого с помощью программных закладок, практически не упоминались в литературе. Видимо, это обусловлено практически полным отсутствием закладок на рынке программного обеспечения. Злоумышленник, который хотел применить программную закладку для осуществления НСД к ресурсам той или иной системы, должен был разработать закладку самостоятельно, что обычно требует весьма значительных затрат времени и сил.

Ситуация в корне изменилась в 2000 г. с появлением в свободном доступе программной закладки Back Orifice 2000. С этого момента злоумышленнику больше не требуется заниматься трудоемким и нетривиальным программированием, все, что нужно злоумышленнику, чтобы получить в свое распоряжение полнофункциональную программную закладку – скачать ее программные файлы с соответствующего сайта Интернета. А с момента появления в свободном доступе исходных текстов Back Orifice программные закладки окончательно перестали быть «уделом избранных», теперь любой начинающий хакер может не только воспользоваться стандартной закладкой, легко обнаруживаемой любым антивирусом, но и создать на основе имеющихся исходных текстов свою уникальную закладку, отсутствующую в антивирусных базах. Начиная с 2002 г. хакерские сайты превратились в настоящий «зоопарк», где любой желающий может найти программную закладку или живое тело вируса на любой вкус. К настоящему времени усилиями правоохранительных органов дистрибутивы программных закладок в основном вытеснены с общедоступных веб-сайтов в закрытые форумы и файлообменные сети, но добывание в Интернете работоспособной программной закладки попрежнему является делом нескольких дней, а то и часов.

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

104

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

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

2.2. Субъектно-ориентированная модель компьютерной системы

Для формального описания взаимодействия программной закладки с атакуемой компьютерной системой наиболее часто применяется субъектно-ориентированная модель компьютерной системы, предложенная А. Ю. Щербаковым. Рассмотрим основные положения этой модели.

Компьютерная система рассматривается как конечное множество объектов {ОД}, в котором выделено подмножество субъектов {Sy}. На множестве объектов определены операция

поток информации и бинарное отношение ассоциирования

субъекта с объектом.

Характеристическим свойством субъектов в данной модели является интуитивно ясное свойство «быть активным» или «получать управление». Например, процессы являются субъектами, а текстовые файлы не являются таковыми. Разделение элементов компьютерной системы на множества {Ј} и {Sj}\{Oj} считается априорным, т.е. постулируется наличие некоего безошибочного критерия, позволяющего для каждого объекта рассматриваемой системы определить, является ли данный объект субъектом.

Операции «поток информации»

Stream (S, Sp S2, ..., Sn, 0\, ОД ..., 0*J -> 0\, Od2, ..., 0\

рассматриваемой формальной модели соответствует произвольное действие, в результате которого субъект S,

105

пользуясь услугами субъектов 6j, 5*2, ..., Sn, изменяет состояние объектов ОД, Od2, ..., Odk (возможно, создавая и (или) удаляя при этом один или несколько объектов), используя

текущее состояние объектов ОД, Os2, ..., Osm. При этом объекты ОД, Os2, ..., Osm называются источниками, а объекты ОД, Od2,

..., Odk приемниками. Множество объектов-источников может пересекаться с множеством объектов-приемников. В роли приемника может выступать пустой объект NULL, что позволяет описывать операцию удаления объекта с помощью той же операции Stream.

Объект О считается ассоциированным с субъектом S в некоторый момент времени / (обозначается S(0)t или S(O)), если содержимое объекта О повлияло на состояние субъекта S в следующий момент времени, или, другими словами, в момент времени / субъект S использует информацию, содержащуюся в объекте О. Очевидно, что для каждого субъекта верно S(S), т. е. каждый субъект ассоциирован сам с собой. Также очевидно, что если Stream (S, ОД –> 02, то объект О, ассоциирован с субъектом S.

Если в результате выполнения операции Stream создается новый объект, являющийся субъектом, эта операция

называется операцией порождения субъекта и обозначается

Create (S, SbS2, ..., S„, О,, 02, ..., О J Sd.

Доступом субъекта к объекту называется применение субъектом к объекту операции Stream. Если Stream (S, ОД) –> 02, то говорят, что субъект S осуществляет доступ на чтение к объекту Оь и доступ на запись к объекту 02. Порождение и удаление объекта рассматриваются как частные случаи доступа к объекту на запись.

Все множество возможных доступов субъектов к объектам (некоторое подмножество декартова произведения {о71-}х{01-}х{01-}) делится на два априорно заданных

непересекающихся

подмножества:

 

множество

санкционированных

доступов

L

и

множество

несанкционированных доступов N. Предполагается, что

существует

безошибочный

критерий

 

определения

106

санкционированноспЬ любого доступа. Формальное описание множества L называется правилами разграничения доступа или просто разграничением доступа. Операция Stream (S, 0{) –> 02

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

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

автоматически активизируемого при выполнении каждого доступа субъекта к объекту. При наличии в системе монитора безопасности объектов каждая операция

Stream (S, 0{) –> 02

фактически имеет вид

StreamiS, M(L), О х) -> 02,

где М – монитор безопасности объектов; L – множество санкционированных доступов, априорно заданное для монитора безопасности объектов.

Если осуществляемый доступ принадлежит множеству L, операция выполняется точно так же, как и при отсутствии монитора безопасности объектов в системе. В противном случае операция прерывается.

Формальное описание множества L может не соответствовать неформальным требованиям, предъявляемым к разграничению доступа в данной системе. Если действующие в системе правила разграничения доступа включают в множество L один или несколько доступов, которые, согласно неформальным требованиям к разграничению доступа, должны быть отнесены к множеству N, имеет место возможность несанкционированного доступа. Очевидно, что НСД может вызываться одной из двух причин:

некорректное функционирование монитора М (алгоритмические или программные ошибки при реализации монитора безопасности объектов);

некорректное описание множества L (неадекватная

107

политика безопасности).

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

Опосредованный несанкционированный доступ

понимается как действия (инициирование информационных потоков) некоторого субъекта или совокупности субъектов в рамках поддерживаемой монитором безопасности объектов политики безопасности, которые:

либо создают новые объекты в компьютерной системе, либо из меняют ассоциированные объекты ее субъектов;

осуществляются субъектом автономно (без управления каким-либо пользователем);

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

Указанный субъект (или совокупность субъектов), реализующий опосредованный НСД, называется программной закладкой. Программная закладка может включать в себя один субъект либо несколько субъектов, взаимодействующих между собой. В первом случае закладка называется простой, во втором случае – составной. Составная программная закладка обычно включает в себя основную часть – субъекты, непосредственно выполняющие задачи, поставленные перед закладкой, и инсталлирующую часть – субъекты,

осуществляющие активизацию основной части закладки.

108

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

выполнять воздействия на атакуемую систему, требующие постоянного присутствия в системе субъекта, осуществляющего НСД (например, перехват тех или иных информационных потоков);

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

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

Для анализа особенностей функционирования программных закладок в компьютерных системах, а также для научного обоснования методов защиты от программных закладок можно рекомендовать ДП-модель с функционально ассоциированными субъектами-сущностями (ФАС ДП-модель) [1], а также ДП-модель с функционально и параметрически ассоциированными субъектами-сущностями (ФПАС ДПмодель) [6]. Подробное рассмотрение перечисленных моделей выходит за рамки данного учебного пособия.

2.3.Модели взаимодействия программной закладки

сатакуемой системой

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

109

одной из следующих формальных моделей:

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

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

искажение – закладка искажает информационные потоки атакуемой системы либо инициирует или подавляет возникающие при работе системы ошибки.

Рассмотрим каждую модель подробнее.

2.3.1. Модель «наблюдатель»

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

Stream (S, M(L), ОС) -> 02,

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

Stream (S, M(L), 03) -> Оф

где Оэ и 04 – некоторые объекты, в общем случае не имеющие никакого отношения к объектам Ог и 02, с помощью которых была инициирована операция.

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

110

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]