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

3204

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

перехватом только сетевых пакетов отдельных типов, например:

пакеты, передаваемые при аутентификации пользователя;

пакеты, передаваемые при смене пароля пользователя;

фрагменты файлов, передаваемых по сети;

фрагменты документов, распечатываемых на сетевом принтере;

пакеты, содержащие заранее определенные ключевые слова или фразы.

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

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

Stream (S,M(L), О) -> NULL

в пары информационных потоков вида

Stream (S', M(L), О) -^NULL; Stream' (S', M(L), О) -> 0

где S' – субъект, полученный в результате внедрения программной закладки в субъект S, ON – объект атакованной системы, используемый для несанкционированного хранения собранной информации. Фактически здесь имеет место частный случай модели «перехват».

На практике программные закладки, функционирующие по данной схеме, практически не встречаются. Это объясняется трудностями автоматического выделения данных, интересующих нарушителя, среди огромного объема информации, подлежащей уничтожению. Поскольку часто имеет место многократное удаление информации, вероятна ситуация, когда массив собранных данных будет содержать многочисленные копии одной и той же информации. Например, текстовый редактор Microsoft Word при каждом открытии документа копирует его во временный файл, а при закрытии – удаляет этот временный файл. Если документ

121

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

2.3.3. Модель «искажение»

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

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

преобразуется в совершенно другую операцию

Stream'(S,M(L), Ох)-> 02.

Наибольший практический интерес представляет частный случай, когда

Stream'(S',M(L), 0\)-> 02~ Stream (S,M''(L), Ох) -> 02,

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

Рассмотрим основные методы несанкционированного повышения полномочий пользователей.

В процессе функционирования любой операционной

122

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

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

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

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

в атрибутах защиты файла установлены биты

SUID и SGID;

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

Обычно в качестве такого файла выбирается исполняемый файл командного интерпретатора. Нарушителю

123

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

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

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

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

124

низкопривилегированному пользователю удавалось зарегистрировать свой процесс как сервер некоторого интерфейса и заставить высокопривилегированного пользователя подключиться к этому серверу, низкопривилегированный пользователь мог легко повысить свои полномочия, проведя олицетворение пользователя клиента. Известен целый ряд подобных уязвимостей в Windows NT, Windows 2000 и Windows ХР, одна из них (AdminTrap)

была обнаружена автором настоящего пособия в 1997 г. Начиная с Windows ХР SP2 олицетворение клиента

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

Таким образом, начиная с Windows ХР SP2 данный метод несанкционированного повышения полномочий пользователей практически неприменим.

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

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

125

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

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

WinExec (ProgramFileName, SW_SHOWNORMAL);

Модификация машинного кода монитора безопасности объектов

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

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

В рамках модели «искажение» может быть реализован целый ряд сетевых атак, связанных с несанкционированным изменением сетевого трафика, контролируемого закладкой. К таким атакам относятся, в частности, ARP-spoofmg, ICMPspoofmg, Downgrade и т.д.

Другое интересное применение модели «искажение» –

126

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

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

К основным функциям стелс-драйвера относятся следующие:

1. Скрытие новых файлов, создаваемых закладкой.

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

127

2.Скрытие элементов реестра, создаваемых закладкой. Реализуется аналогично скрытию новых файлов, единственное отличие состоит в том, что перехватываются не функции поиска файлов, а функции поиска элементов реестра

(NtEnumerateKey, NtEnumerateValueKey).

3.Скрытие процессов, порожденных закладкой.

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

Скрытие используемых вирусом TCP- и UDP-nopmoe.

Осуществляется путем перехвата диспетчерской функции драйвера TCP/ IP. В Windows для этого достаточно открыть объект \Driver\Tcpip и изменить в заголовке данного объекта адрес диспетчерской функции.

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

Итоги рассмотрения вопросов взаимодействия программной закладки с атакованной системой удобно представить в виде диаграммы, приведенной на рис. 2.2.

128

Рис. 2.2. Классификация типичных схем взаимодействия программной закладки с атакованной системой

2.4.Предпосылки к внедрению программных закладок

2.4.1.Общие сведения

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

Утверждение В компьютерной системе, поддерживающей

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

Действительно, для достижения невозможности внедрения программной закладки в компьютерную систему

129

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

Из доказанного утверждения вытекает важное следствие.

Следствие Закладка может быть внедрена в компьютерную систему

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

1.Множество ./V определено так, что существует хотя бы одна совокупность информационных потоков Р, которая приводит к внедрению программной закладки в компьютерную систему и Р П N = 0.

2.Монитор М не обеспечивает корректное блокирование информационных потоков, принадлежащих множеству N.

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

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

• надежность современного программного обеспечения, в том числе и программных средств защиты информации, оставляет желать лучшего. Никогда нельзя исключать, что из-за ошибки в программном обеспечении монитора безопасности объектов некоторые информационные потоки из множества ./V не остаются незаблокированными, т.е. выполняется условие 2.

130

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