1 Лекция 4 СУБЪЕКТНО-ОРИЕНТИРОВАННАЯ МОДЕЛЬ КОМПЬЮТЕРНОЙ СИСТЕМЫ Учебные вопросы: 1. Описание субъектно-ориентированной модели компьютерной системы. 2. Модели взаимодействия программной закладки с атакуемой системой. 1. Описание субъектно-ориентированной модели компьютерной системы. Одной из наиболее опасных угроз для защищенной компьютерной системы является атака системы с помощью программных закладок (другие названия: разрушающие программные средства, троянские кони). Программная закладка - это преднамеренно внесенный в программное обеспечение функциональный объект, который при определенных условиях инициирует реализацию недекларированных возможностей программного обеспечения. (ГОСТ Р 51275-2006 "Защита информации. Объект информатизации. Факторы, воздействующие на информацию. Общие положения"). "Недекларированные возможности" - функциональные возможности ПО, не описанные или не соответствующие описанным в документации, при использовании которых возможно нарушение конфиденциальности, доступности или целостности обрабатываемой информации. (РД ФСТЭК «Защита от несанкционированного доступа к информации Часть 1. Программное обеспечение средств защиты информации. Классификация по уровню контроля отсутствия недекларированных возможностей.Утверждено решением председателя Государственной технической комиссии при Президенте Российской Федерации от 4 июня 1999 г. N 114). Основная опасность программных закладок заключается в том, что закладка, являясь частью атакованной системы, способна принимать активные меры по маскировке своего присутствия в системе. Как правило, программные закладки, применяющиеся злоумышленниками, выявляются либо из-за неаккуратного использования злоумышленниками информации, полученной с помощью закладки, либо из-за ошибок, допущенных при программировании закладки, либо чисто случайно. Для формального описания взаимодействия программной закладки с атакуемой компьютерной системой наиболее часто применяется субъектноориентированная модель компьютерной системы, предложенная А. Ю. Щербаковым. Рассмотрим основные положения этой модели. Компьютерная система рассматривается как конечное множество объектов {𝐎𝐢 }, в котором выделено подмножество субъектов {𝐒𝐢 }. На множестве объектов определены операция поток информации и бинарное отношение ассоциирования субъекта с объектом. Характеристическим свойством субъектов в данной модели является 2 интуитивно ясное свойство «быть активным» или «получать управление». Например, процессы являются субъектами, а текстовые файлы не являются таковыми. Разделение элементов компьютерной системы на множества {𝐒𝐢 } и {𝐒𝐢 }\{𝐎𝐢 } считается априорным, т.е. постулируется наличие некоего безошибочного критерия, позволяющего для каждого объекта рассматриваемой системы определить, является ли данный объект субъектом. Операции «поток информации» 𝑺𝒕𝒓𝒆𝒂𝒎 (𝑺, 𝑺𝟏 , 𝑺𝟐 , … , 𝑺𝒏 , 𝑶𝑺𝟏 , 𝑶𝑺𝟐 , … , 𝑶𝑺𝒎 ) → 𝑶𝒅𝟏 , 𝑶𝒅𝟐 , … , 𝑶𝒅𝒌 рассматриваемой формальной модели соответствует произвольное действие, в результате которого субъект S, пользуясь услугами субъектов 𝑺, 𝑺𝟏 , 𝑺𝟐 , … , 𝑺𝒏 изменяет состояние объектов 𝑶𝒅𝟏 , 𝑶𝒅𝟐 , … , 𝑶𝒅𝒌 (возможно, создавая и (или) удаляя при этом один или несколько объектов), используя текущее состояние объектов 𝑶𝑺𝟏 , 𝑶𝑺𝟐 , … , 𝑶𝑺𝒎 . При этом объекты 𝑶𝑺𝟏 , 𝑶𝑺𝟐 , … , 𝑶𝑺𝒎 называются источниками, а объекты 𝑶𝒅𝟏 , 𝑶𝒅𝟐 , … , 𝑶𝒅𝒌 — приемниками. Множество объектов-источников может пересекаться с множеством объектов-приемников. В роли приемника может выступать пустой объект NULL, что позволяет описывать операцию удаления объекта с помощью той же операции Stream. Объект О считается ассоциированным с субъектом S в некоторый момент времени t (обозначается S(O)t или S(O)), если содержимое объекта О повлияло на состояние субъекта S в следующий момент времени, или, другими словами, в момент времени t субъект S использует информацию, содержащуюся в объекте О. Очевидно, что для каждого субъекта верно S(S), т. е. каждый субъект ассоциирован сам с собой. Также очевидно, что если Stream (S, О1,) → O2, то объект О, ассоциирован с субъектом S. Если в результате выполнения операции Stream создается новый объект, являющийся субъектом, эта операция называется операцией порождения субъекта и обозначается 𝑪𝒓𝒆𝒂𝒕𝒆 (𝑺𝒋 , 𝑶𝒊 ) → 𝑺𝒎 . «из объекта 𝑶𝒊 порожден субъект 𝑺𝒎 при активизирующем воздействии субъекта 𝑺𝒋 ». Доступом субъекта к объекту называется применение субъектом к объекту операции Stream. Если Stream (S, О1) → O2, то говорят, что субъект S осуществляет доступ на чтение к объекту О1, и доступ на запись к объекту О2. Порождение и удаление объекта рассматриваются как частные случаи доступа к объекту на запись. Все множество возможных доступов субъектов к объектам делится на два априорно заданных непересекающихся подмножества: множество санкционированных доступов L и множество несанкционированных доступов N. Предполагается, что существует безошибочный критерий определения санкционированности любого доступа. Формальное описание множества L называется правилами разграничения 3 доступа или просто разграничением доступа. Операция Stream (S, О1) → O2 может изменить правила разграничения доступа в отношении объекта О2, т. е. доступ для изменения атрибутов защиты объекта рассматривается как частный случай доступа на запись. Традиционно разграничение доступа реализуется в современных компьютерных системах с помощью монитора безопасности объектов — специального субъекта, автоматически активизируемого при выполнении каждого доступа субъекта к объекту. При наличии в системе монитора безопасности объектов каждая операция Stream (S, О1) → O2 фактически имеет вид Stream (S, M(L), О1) → O2, где М — монитор безопасности объектов; L — множество санкционированных доступов, априорно заданное для монитора безопасности объектов. Если осуществляемый доступ принадлежит множеству L, операция выполняется точно так же, как и при отсутствии монитора безопасности объектов в системе. В противном случае операция прерывается. Формальное описание множества L может не соответствовать неформальным требованиям, предъявляемым к разграничению доступа в данной системе. Если действующие в системе правила разграничения доступа включают в множество L один или несколько доступов, которые, согласно неформальным требованиям к разграничению доступа, должны быть отнесены к множеству N , имеет место возможность несанкционированного доступа. Очевидно, что НСД может вызываться одной из двух причин: 1) некорректное функционирование монитора М (алгоритмические или программные ошибки при реализации монитора безопасности объектов); 2) некорректное описание множества L (неадекватная политика безопасности). Поскольку М является субъектом рассматриваемой системы, его ассоциированные объекты и он сам (как объект) могут выступать в роли приемника операции Stream. В результате такой операции множество L может быть расширено, при этом в него включаются некоторые доступы, ранее принадлежавшие множеству несанкционированных доступов N. Это изменение может быть как прямым, так и косвенным — через изменение функциональности М, в последнем случае формальное описание L остается неизменным, но при проверке корректности доступа М использует другие правила разграничения доступа. Опосредованный несанкционированный доступ понимается как действия (инициирование информационных потоков) некоторого субъекта или совокупности субъектов в рамках поддерживаемой монитором безопасности объектов политики безопасности, которые: • либо создают новые объекты в компьютерной системе, либо изменяют ассоциированные объекты ее субъектов; • осуществляются субъектом автономно (без управления каким- либо пользователем); • в дальнейшем с использованием измененных либо порожденных 4 субъектов пользователь через другие субъекты инициирует информационные потоки, принадлежащие множеству N. Указанный субъект (или совокупность субъектов), реализующий опосредованный НСД, называется программной закладкой. Программная закладка может включать в себя один субъект либо несколько субъектов, взаимодействующих между собой. В первом случае закладка называется простой, во втором случае — составной. Составная программная закладка обычно включает в себя основную часть — субъекты, непосредственно выполняющие задачи, поставленные перед закладкой, и инсталлирующую часть — субъекты, осуществляющие активизацию основной части закладки. Принципиальным отличием опосредованного НСД от других форм НСД является то, что программная закладка, являясь автономно функционирующим субъектом, способна выполнять действия, невыполнимые для традиционных средств и методов НСД, в том числе: • выполнять воздействия на атакуемую систему, требующие постоянного присутствия в системе субъекта, осуществляющего НСД (например, перехват тех или иных информационных потоков); • скрывать следы своего присутствия в системе путем модификации информационных потоков, которые могут быть использованы для выявления программных закладок. В последние годы для формального моделирования безопасности управления доступом и информационными потоками в компьютерных системах разработано семейство формальных моделей — ДП – модели (доступ и потоки). Данное семейство моделей позволяет получить более строгое и детализированное формальное описание процесса функционирования компьютерной системы в различных условиях, в том числе и в условиях взаимодействия системы с одной или несколькими закладками. Для анализа особенностей функционирования программных закладок в компьютерных системах, а также для научного обоснования методов защиты от программных закладок можно рекомендовать ДП-модель с функционально ассоциированными субъектами - сущностями (ФАС ДП-модель), а также ДПмодель с функционально и параметрически ассоциированными субъектамисущностями (ФПАС ДП-модель). 2. Модели взаимодействия программной закладки с атакуемой системой В большинстве случаев взаимодействие программной закладки с атакуемой компьютерной системой описывается одной из следующих формальных моделей: 1) наблюдатель — по некоторому активизирующему событию закладка инициирует нетипичный для атакуемой системы информационный поток или моделирует сбойную ситуацию; 2) перехват — закладка производит сохранение всех или избранных фрагментов вводимой или выводимой информации в скрытую область локальной или удаленной внешней памяти либо в открытый канал связи; 3) искажение — закладка искажает информационные потоки атакуемой 5 системы либо инициирует или подавляет возникающие при работе системы ошибки. Рассмотрим каждую модель подробнее. 2.1. Модель «наблюдатель» Программная закладка встраивается в атакуемую систему в качестве отдельного субъекта доступа S. Получив некоторый сигнал Stream (S, M ( L ) , O1) → O2, программная закладка инициирует выполнение операции Stream (S, M ( L ) , O3) → O4 где O3 и O4 — некоторые объекты, в общем случае не имеющие никакого отношения к объектам О1 и O2, с помощью которых была инициирована операция. На практике данная модель чаще всего применяется для организации скрытного удаленного контроля операционных систем. Обычно программная закладка данного вида состоит из двух частей: серверной и клиентской. Серверная часть (сервер) скрытно инсталлируется на атакуемом компьютере, клиентская часть (клиент) используется нарушители для работы с сервером. В ходе работы клиент посылает серверу команды, управляющие работой атакуемого компьютера, сервер в ответ высылает клиенту результаты выполнения команд. Иногда сервер также содержит специальные средства скрытия своего присутствия в системе. Как правило, программные закладки данного класса поддерживают следующие функции удаленного контроля: • управление файловыми системами; • управление конфигурацией системы; • управление процессами. Следует особо отметить, что, в отличие от обычных средств удаленного администрирования, программные закладки позволяют пользователю осуществлять несанкционированный контроль атакованной системы. Как правило, программные закладки рассматриваемого класса принимают специальные меры для скрытия своего присутствия в атакованной системе. Из множества современных средств скрытного удаленного контроля выделяются два наиболее ярких представителя — Back Orifice и NetBus. Подавляющее большинство других распространенных закладок данного класса представляют собой подражания либо Back Orifice, либо NetBus. Программная закладка Back Orifice разработана хакерской группой Cult of the Dead Cow. Закладка функционирует под управлением Windows 95 и 98 (версия Back Orifice 2000 — также под Windows семейства NT начиная с версии 4.0). Закладка инсталлируется в качестве системного сервиса Windows и оставляет в реестре заметные следы. После инсталляции закладка позволяет пользователюнарушителю осуществлять удаленное управление операционной системой компьютера, на котором она установлена. Поддерживаются функции управления файловой системой, реестром, списком процессов и многое другое. Помимо средств удаленного контроля закладка содержит средства перехвата клавиатурного ввода и сбора хеш-образов ранее введенных паролей для последующего подбора самих паролей. 6 Программная закладка NetBus разработана Карлом-Фридрихом Найктером (Carl-Fredrik Neikter). В отличие от Back Orifice NetBus предназначен для работы под управлением Windows NT, в остальном эти закладки различаются только деталями технической реализации. NetBus более громоздок (в одной из версий серверная часть, внедряемая в атакуемую операционную систему, занимает 1 114 Кбайт) и поэтому на практике реже применяется нарушителями. Современным средствам скрытного удаленного контроля в той или иной мере свойственны следующие недостатки: • уязвимость для антивирусных средств — такие антивирусы, как Dr Web и «Антивирус Касперского», «излечивают» программные закладки наравне с вирусами; • присутствие множества практически бесполезных для осуществления НСД функций (открыть/закрыть привод CD-ROM, подвигать указателем мыши и т.п.); • отсутствие функций взаимодействия с подсистемой безопасности Windows; • большой размер серверной части (до 1 200 Кбайт). Перечисленные недостатки накладывают большие ограничения на использование программных закладок данного класса для осуществления НСД к ресурсам операционных систем. Этим и объясняется сравнительно низкая эффективность практического применения средств скрытного удаленного контроля, особенно против современных версий Windows, имеющих подсистему безопасности, затрудняющую функционирование программных закладок. Помимо непосредственного воздействия на атакуемую систему программные закладки модели «наблюдатель» могут применяться для решения целого ряда дополнительных задач, в частности: • первоначального получения доступа к атакуемому компьютеру; • внедрения других программных закладок; • управления другими программными закладками; • обеспечения передачи пользователю-нарушителю информации, перехваченной другими программными закладками; • противодействия попыткам выявления программных закладок пользователями атакованного компьютера. В последние годы модель «наблюдатель» редко применяется в чистом виде, программные закладки данного класса обычно оснащаются дополнительными средствами, формально выводящими закладку за рамки модели «наблюдатель». В качестве примера можно привести программную закладку Pinch, которая в основном используется в рамках модели «наблюдатель», но может самостоятельно и автономно выполнять ряд действий, относящихся к модели «перехват», в частности перехват клавиатурного ввода, извлечение сохраненных паролей из настроек популярных программ и т.п. Программные закладки модели «наблюдатель» часто применяются хакерами для организации несанкционированного показа рекламы пользователю атакованного компьютера, имитации просмотра интернет-рекламы пользователем, отправки спама от имени пользователя атакованного компьютера, 7 организации распределенных атак класса «отказ в обслуживании» и т. п. Для связи с нарушителем, осуществляющим удаленный контроль над атакованной операционной системой, закладки, как правило, используют протокол IP. При этом закладка подключается к одному из неиспользуемых портов, обычно выбирается порт с очень большим номером, поскольку такие порты редко используются легальными программами. Часто номера портов, используемых закладками, выглядят странно и сразу бросаются в глаза при просмотре списка открытых портов (666, 6969, 12345 и т.д.). Функционирование серверной части программной закладки модели «наблюдатель» в общем случае иллюстрируется схемой, приведенной на рис. 1. Рисунок 1 – Схема функционирования программной закладки модели «наблюдатель» Как правило, протокол взаимодействия клиента и сервера закладки весьма примитивен. Запрос клиента содержит идентификатор команды и блок параметров, размер и формат которого однозначно определяется идентификатором команды. Формат ответа сервера однозначно определяется идентификатором команды клиента, на которую выдается ответ. Иногда протокол взаимодействия клиента и сервера предусматривает обязательную аутентификацию клиента перед началом работы с закладкой. Обычно сервер закладки поддерживает в каждый момент времени работу только с одним клиентом. К серверной части программной закладки модели «наблюдатель» предъявляются два взаимоисключающих требования: развитые функциональные возможности и минимальный объем кода. Наиболее «продвинутые» образцы программных закладок модели «наблюдатель» решают это противоречие с помощью модульной архитектуры сервера, заключающейся в том, что большая часть функциональности сервера выносится в модули расширения — динамически подгружаемые библиотеки, загружаемые на атакованный компьютер уже после внедрения закладки. Ядро закладки в этом случае может быть сделано минимального размера. Как минимум, ядро сервера закладки может поддерживать всего пять команд: 1) скопировать на атакованный компьютер модуль расширения, предоставленный клиентом; 8 2) включить заданный модуль расширения, уже загруженный на атакованный компьютер; 3) выключить заданный модуль расширения; 4) удалить с атакованного компьютера заданный модуль расширения; 5) передать клиенту список модулей расширения, имеющихся на атакованном компьютере. Использование программной закладкой протокола IP имеет ряд недостатков, важнейший из которых заключается в том, что все современные пакетные фильтры, межсетевые экраны и системы обнаружения вторжений легко обнаруживают несанкционированное открытие сокетов программой, неизвестной системе защиты, и либо пресекают его, либо оповещают пользователя. Поэтому многие программные закладки модели «наблюдатель» используют маскировку протокола взаимодействия клиента с сервером под протоколы прикладного уровня, не выглядящие так подозрительно, как «голый» IP, с точки зрения дополнительных средств защиты информации. Наиболее часто программными закладками используется маскировка под следующие прикладные протоколы: • HTTP — протокол информационного обмена между веб-клиентом и веб-сервером; • SMTP + POP3/IMAP — протоколы отправки и получения электронной почты; • протокол информационного обмена между экземплярами программы моментальной передачи сообщений (ICQ). В ближайшем будущем можно ожидать появления протоколов взаимодействия клиентских и серверных частей программных закладок модели «наблюдатель», маскирующихся под протоколы файлообменных сетей наподобие eMule и BitTorrent. 2.2. Модель «перехват» Программная закладка встраивается в программное обеспечение субъекта, обслуживающего информационные потоки определенного класса. Информационные потоки, проходящие через программную закладку, полностью или частично дублируются. Другими словами, операция Stream (S, M(L), O1) →O2 преобразуется в пару операций: Stream {S', M ( L) , O 1 ) → O 2 ; Stream ( S ' , M ( L ) , O 1 ) → O N , где S ' — субъект, полученный в результате внедрения программной закладки в субъект S ; O N — объект, используемый для несанкционированного хранения информации. В роли объекта перехвата ( O 1 ) обычно выступают объекты, связанные со следующими устройствами атакуемой системы: • клавиатура (в первую очередь закладку интересуют вводимые с клавиатуры пароли); 9 файловые системы; • физические и логические устройства, осуществляющие прием сетевого трафика. Перехват паролей, вводимых с клавиатуры, может осуществляться по одной из трех схем. - Перехватчики паролей 1 рода; - Перехватчики паролей 2 рода (клавиатурные фильтры); - Перехватчики паролей 3 рода (заместители подсистемы аутентификации). Перехватчики паролей первого рода Перехватчики паролей первого рода действуют по следующему алгоритму. Нарушитель запускает программу, которая имитирует приглашение пользователю для входа в систему и ждет ввода. Когда пользователь вводит имя и пароль, закладка сохраняет их в доступном нарушителю месте, после чего завершает работу и осуществляет выход из системы пользователя-нарушителя (в большинстве операционных систем выход пользователя из системы можно осуществить программно). По окончании работы закладки на экране появляется настоящее приглашение для входа пользователя в систему. Пользователь, ставший жертвой закладки, видит, что он не вошел в систему и что ему снова предлагается ввести имя и пароль. Пользователь предполагает, что при вводе пароля произошла ошибка, и вводит имя и пароль повторно. После этого пользователь входит в систему, и дальнейшая его работа протекает нормально. Некоторые закладки, функционирующие по данной схеме, перед завершением работы выдают на экран правдоподобное сообщение об ошибке, например: «Пароль введен неправильно. Попробуйте еще раз». Основным достоинством этого класса перехватчиков паролей является то, что написание подобной программной закладки не требует от нарушителя никакой специальной квалификации. Единственная проблема, которая может здесь возникнуть, заключается в программной реализации выхода пользователя из системы. Однако соответствующий системный вызов документирован для всех многопользовательских операционных систем. Если нарушитель не поленится внимательно изучить документацию по операционной системе, то он решит данную проблему очень быстро. Перехватчики паролей первого рода представляют наибольшую опасность для операционных систем, в которых приглашение пользователю на вход имеет очень простой вид. Например, в большинстве версий UNIX это приглашение выглядит следующим образом: login: user password: Перехватчики паролей второго рода (клавиатурные фильтры) Программные закладки, осуществляющие перехват клавиатурного ввода, обычно ориентированы на перехват паролей, вводимых пользователями с клавиатуры. Такие программные закладки называют клавиатурными фильтрами или перехватчиками паролей второго рода. Простейшие клавиатурные фильтры осуществляют полное дублирование клавиатурного ввода, • 10 более совершенные программные закладки анализируют перехваченные данные и отсеивают информацию, заведомо не имеющую отношения к паролям. Клавиатурный фильтр может быть построен для любой операционной системы, допускающей переключение раскладки клавиатуры при вводе пароля. Действительно, если для операционной системы существует программа локализации раскладки клавиатуры и если эта программа используется при вводе пароля, то в этой программе существует код, имеющий доступ к введенному пользователем паролю в тот момент, когда этот пароль находится в оперативной памяти. Если добавить в эту программу функцию сохранения или передачи пароля, программа превращается в клавиатурный фильтр. Перехватчики паролей третьего рода (заместители подсистемы аутентификации) Программная закладка, перехватывающая пароли пользователей, также может быть встроена в субъект атакуемой системы, осуществляющий аутентификацию пользователей. В этом случае программная закладка перехватывает только те данные, вводимые пользователем с клавиатуры, которые имеют отношение к его аутентификации. Такие программные закладки называются перехватчиками паролей третьего рода или заместителями подсистемы аутентификации. Перехватчики паролей третьего рода более эффективны, чем клавиатурные фильтры (не стоит задача отсеивания перехваченной информации, заведомо не имеющей отношения к паролям пользователей), но их разработка и внедрение значительно сложнее, чем у клавиатурных фильтров. Программные закладки, перехватывающие информационные потоки, связанные с файловыми системами, называются мониторами файловых систем. Поскольку в современных компьютерных системах интенсивность обмена данными между оперативной памятью и файловыми системами может достигать нескольких десятков мегабайт в секунду, применять тотальный мониторинг обращений к файлам в большинстве случаев нецелесообразно. Более эффективен мониторинг только отдельных файлов, наиболее критичных для общей защищенности атакуемой системы. К таким файлам относятся: • файлы, содержащие список пользователей; • файлы, описывающие текущую политику безопасности; • файлы, в которых хранится журнал аудита; • файлы, содержащие заранее определенные ключевые слова или фразы. Несмотря на большие возможности мониторов файловых систем известно очень мало примеров программных закладок, относящихся к этому классу, большинство из них весьма примитивны. Это объясняется трудностями автоматического выделения информации, интересующей нарушителя, среди огромного объема информации, копируемой из оперативной памяти во внешнюю и обратно. Программные закладки, перехватывающие сетевой трафик, называются мониторами сети. Монитор сети может быть основан на одном из следующих 11 принципов: • перехват информационных потоков, проходящих через сетевое программное обеспечение операционной системы; • перехват информации, передаваемой по общей шине сегмента локальной сети (прослушивание сегмента). Каждая из этих идей имеет свои достоинства и недостатки. В первом случае монитор сети позволяет перехватывать информацию, идущую через глобальные сети. Во втором случае эта возможность отсутствует, но зато такой монитор позволяет перехватывать информационный обмен всех компьютеров сегмента локальной сети, в котором расположен компьютер, пораженный программной закладкой. Другими словами, во втором случае не обязательно внедрять программную закладку на компьютер сети, являющийся объектом атаки. Впрочем, прослушивание сегмента сети имеет смысл лишь в том случае, если данный сегмент построен с использованием сетевого концентратора (hub), но не коммутатора (switch). При организации мониторинга сети перехватывать весь сетевой трафик нецелесообразно. Имеет смысл ограничиться перехватом только сетевых пакетов отдельных типов, например: • пакеты, передаваемые при аутентификации пользователя; • пакеты, передаваемые при смене пароля пользователя; • фрагменты файлов, передаваемых по сети; • фрагменты документов, распечатываемых на сетевом принтере; • пакеты, содержащие заранее определенные ключевые слова или фразы. 2.3. Модель «искажение» Программная закладка встраивается в программное обеспечение, обслуживающее информационные потоки определенного класса, чаще всего в код системных программных модулей, используемое всеми субъектами доступа. Информационные потоки, проходящие через программную закладку, полностью или частично искажаются. Другими словами, операция Stream (S, M ( L ) , O1 ) → O2 преобразуется в совершенно другую операцию Stream'(S', M ( L) , O1) → O2. Наибольший практический интерес представляет частный случай, когда Stream' (S', M ( L) , O1) → O2 ~ Stream (S, M ' ( L ) , O 1 ) → O2, т. е. искажения затрагивают монитор безопасности объектов. В этом случае программная закладка скрытно и несанкционированно модифицирует политику безопасности, принятую в атакованной системе, в результате чего граница между множеством санкционированных доступов L и множеством несанкционированных доступов N смещается в ту или иную сторону, и некоторые доступы, бывшие легальными, становятся нелегальными и наоборот. 12 В первом случае легальный пользователь не может получать доступ к обычно доступным ему объектам (отказ в обслуживании), во втором случае пользователь-нарушитель несанкционированно повышает свои полномочия в атакованной системе. На практике вторая ситуация встречается значительно чаще первой. Рассмотрим основные полномочий пользователей. методы несанкционированного повышения 2.3.1. Несанкционированное использование средств динамического изменения полномочий В процессе функционирования любой операционной системы время от времени возникают ситуации, когда пользователь для выполнения некоторых действий должен получить полномочия, недоступные ему в другое время. Например, пользователь должен иметь возможность изменять свой пароль. Но для этого пользователь должен иметь доступ на запись к базе паролей, что недопустимо — тогда пользователь сможет менять и чужие пароли. Для решения данной проблемы в операционных системах применяются средства динамического изменения полномочий. Несанкционированное использование этих средств может приводить к несанкционированному повышению полномочий пользователя. Например, в операционных системах семейства UNIX полномочия процесса определяются двумя идентификаторами: эффективным идентификатором пользователя (EUID) и эффективным идентификатором группы (EGID). Обычно эти идентификаторы совпадают с идентификаторами пользователя, запустившего процесс, и одной из групп, к которым он принадлежит. Но если в атрибутах защиты исполняемого файла, который используется для запуска процесса, установлены биты SUID (set user ID upon execution - «установка ID пользователя во время выполнения») и SGID (set group ID upon execution — «установка ID группы во время выполнения»), процесс запускается не от имени пользователя, его запустившего, а от имени пользователя, который является владельцем исполняемого файла. Для того чтобы пользователь-нарушитель мог превысить свои полномочия, в UNIX ему достаточно создать в системе исполняемый файл, обладающий следующими 13 свойствами: • владельцем файла является пользователь, обладающий большими полномочиями, чем пользователь-нарушитель; • в атрибутах защиты файла установлены биты SUID и SGID; • процесс, порожденный с помощью этого файла, позволяет пользователю порождать другие процессы. Обычно в качестве такого файла выбирается исполняемый файл командного интерпретатора. Нарушителю достаточно скопировать этот файл в свою домашнюю директорию и изменить его владельца и атрибуты защиты. Следует отметить, что UNIX содержит специальные средства, позволяющие организовать надежную защиту от данного метода несанкционированного повышения полномочий пользователя. Для того чтобы подобная программная закладка могла быть внедрена в операционную систему, нарушитель должен либо на некоторое время получить права администратора, либо воспользоваться ошибкой в программном обеспечении или политике безопасности атакуемой системы. В Windows для динамического изменения полномочий применяется механизм олицетворения (impersonation), заключающийся в том, что процесссервер, выполняющийся с большими полномочиями, временно понижает полномочия в одном или нескольких своих потоков до уровня полномочий клиента, обращающегося к данному серверу. Технически это реализуется путем назначения потоку, выполняющемуся в контексте безопасности клиента, маркера доступа пользователя-клиента. Если бы олицетворение клиентов в Windows не поддерживалось, каждому процессу-серверу, обслуживающему запросы каждого процесса-клиента, при каждом обращении к каждому объекту операционной системы приходилось бы явно проверять достаточность прав доступа клиента к данному объекту. При этом достаточно пропустить всего лишь одну проверку прав доступа клиента и в системе появляется критическая уязвимость. При наличии механизма олицетворения процесс-сервер может не заботиться о полномочиях клиента — все необходимые проверки делаются автоматически. Заметим, что несанкционированное повышение полномочий пользователей с помощью несанкционированного использования средств динамического повышения полномочий может применяться (и чаще всего применяется) как эксплуатация уязвимости защиты системы, без предварительного внедрения в атакуемую систему программной закладки. 2.3.2. Порождение дочернего процесса системным процессом Системные процессы, как правило, обладают в операционных системах практически неограниченными полномочиями. Если один из таких процессов порождает дочерний процесс, порожденный процесс наследует полномочия процесса-родителя. При использовании данного метода нарушитель несанкционированно порождает от имени одного из системных процессов в качестве дочернего процесса командный интерпретатор или любую другую программу, 14 позволяющую нарушителю выполнять обращения к объектам операционной системы, порождать новые процессы и выполнять другие подобные действия. 2.3.3. Модификация машинного кода монитора безопасности объектов Данный метод заключается в том, что программная закладка внедряет в монитор безопасности объектов атакуемой системы одну или несколько новых функций, позволяющих пользователю-нарушителю выполнять в системе действия, недоступные для него в отсутствие закладки. Фактически при этом происходит подмена оригинального монитора безопасности объектов атакуемой системы тем монитором, который предоставляет нарушителю требуемые полномочия. Модель «искажение» может применяться также при организации взаимодействия программной закладки с внедрившим ее пользователемнарушителем. В этом случае программная закладка модифицирует программное обеспечение, ответственное за обслуживание тех или иных информационных потоков, таким образом, что некоторые заранее определенные последовательности данных обрабатываются как управляющие сигналызакладки. 2.3.4. Стелс-технологии Другое интересное применение модели «искажение» — это так называемые стелс-технологии, делающие абсолютно невозможным обнаружение наличия закладки в атакованной системе ее штатными средствами. Программные закладки, содержащие в себе стелс-средства, обычно обнаруживаются в результате либо проявления программных ошибок в теле закладки (чаще всего несовместимость закладки с обновленной версией операционной системы или с вновь установленным дополнительным программным обеспечением), либо неаккуратного использования закладки (очень высокая загрузка аппаратных ресурсов системы, чрезмерно большой сетевой трафик и т.п.). В современных операционных системах полноценная реализация стелсмеханизмов, как правило, возможна лишь в режиме ядра. Закладка, содержащая средства сокрытия своего присутствия в системе, должна либо являться драйвером, либо (чаще) содержать в своем теле упакованный драйвер (так называемый стелс-драйвер), который в ходе внедрения закладки в операционную систему распаковывается, инсталлируется и в дальнейшем обеспечивает сокрытие внешних проявлений закладки. К основным функциям стелс-драйвера относятся следующие: 1. Скрытие новых файлов, создаваемых закладкой. Традиционно реализуется посредством перехвата низкоуровневой системной функции поиска файлов NtQueryDirectoryFile (аналогичная функция в Linux называется getdents). Выходные данные функции перед отправкой клиенту проверяются драйвером и, если там обнаруживается скрываемый файл, соответствующая запись удаляется из буфера. Достоинством данного подхода является то, что каждый из скрываемых файлов остается доступным для всех 15 клиентов пользовательского режима, заранее знающих имя данного файла. В результате стелс- механизм абсолютно не мешает работе самой закладки и нет необходимости вносить в ядро закладки специальные функции для поддержки стелс-механизма. 2. Скрытие элементов реестра, создаваемых закладкой. Реализуется аналогично скрытию новых файлов, единственное отличие состоит в том, что перехватываются не функции поиска файлов, а функции поиска элементов реестра. 3. Скрытие процессов, порожденных закладкой. Реализуется путем перехвата низкоуровневой функции NtQuerySystemlnformation, с помощью которой осуществляется получение информации о процессах системы. Перед отправкой клиенту выходные данные модифицируются, из них удаляются сведения об активности закладки. 4. Скрытие используемых вирусом TCP- и UDP-портов. Осуществляется путем перехвата диспетчерской функции драйвера ТСР/ IP. 5. Скрытие сервисов. Реализуется путем несанкционированного изменения глобальных данных диспетчера сервисов в адресном пространстве процесса services.exe. Кроме того, должны быть скрыты ключи реестра, описывающие конфигурацию скрываемого сервиса. Данная функция может быть реализована в режиме пользователя, без использования драйверов. 6. Рисунок 2 – Классификация типичных схем взаимодействия программной закладки с атакованной системой Итоги рассмотрения вопросов взаимодействия программной закладки с атакованной системой удобно представить в виде диаграммы, приведенной на рис. 2.