С использованием средств межпроцессного обмена данными
Другой штатной возможностью ОС, позволяющей повышать привилегии администратора до системы, и потому рассматриваемой в порядке уязвимости ОС, является возможность межпроцессного обмена данными.
Проведенный анализ возможности использования именного канала для повышения привилегий.
К способам межпроцессного обмена данными, реализованным в ОС Windows, можно отнести именованные каналы (pipe) и почтовые ящики (mailslots), обеспечивающие обмен сообщениями.
Замечание. Анонимные каналы позволяют осуществлять обмен данными только между потоками одного процесса, задача же защиты состоит в предотвращении тем или иным образом возможности заражения одним процессом другого.
Сначала проанализируем часто используемый на практике способ межпроцессного взаимодействия по именованному каналу. Именованные каналы обеспечивают одностороннюю и двухстороннюю связь между процессами на одном или разных компьютерах, обеспечивая архитектуру клиент-сервер. Основным отличием сервера от клиента является то, что сервер (процесс сервера) может создать именованный канал и принять запрос на соединение от клиента. Клиент устанавливает связь с уже существующим каналом.
Именованные каналы доступны всем процессам в системе, в том числе и процессам, исполняющимся удаленно - на различных узлах сети.
Фактически именованные каналы — это специальные файлы, которые имеют временные имена (освобождаемые после закрытия последней ссылки на них), которые выделяются в корне файловой системы именованных каналов и монтируются по специальному пути «\\сервер\pipe\[путь] имя канала». Использование адресации «\\.\pipe\[путь] имя канала» означает обмен данными на локальном компьютере. Под полем «сервер» здесь понимается имя компьютера, на котором расположена серверная часть межпроцессного взаимодействия.
В отличие от анонимных каналов, также используемых для обмена сообщения, но не между различными процессами, в имени создаваемого файлового объекта, образующего именованный канал, в обязательном порядке должно указываться \pipe, уведомляющее систему о том, что этот файл - именованный канал, т.е. о том, что применительно к нему должен использоваться соответствующий перенаправитель сети (MSNP).
В рамках проведения соответствующего анализа проведено испытание, для чего была использована утилита PsExec, позиционируемая автором (М.Русиновичем), как облегченный вариант Telnet. Она позволяет выполнять процессы в удаленных системах, используя для этого все возможности интерактивного интерфейса консольных приложений, и при этом нет необходимости вручную устанавливать клиентское программное обеспечение.
Принцип работы этой программы состоит в следующем: в ресурсах исполняемого файла PsExec.exe находится еще один исполняемый файл – PSEXESVC, который является службой Windows (соответствующим образом оформлен в виде службы). PsExec.exe распаковывает и копирует этот файл в папку компьютера \Windows.
После завершения копирования PsExec устанавливает и запускает службу, используя API функции Windows для управления службами. При этом между PSEXESVC и PsExec устанавливается соединение для передачи данных (ввода команд и получения результатов) - именованный, под именем «\\сервер\pipe\PSEXESVC», канал.
В результате на компьютере запущена системная служба и для нее создан именованный канал, позволяющий общаться по нему с это службой, как локально, так и с удаленных компьютеров.
Как видим, создание именованного канала позволило с правами администратора без использования соответствующих средств администрирования создать и запустить системную службу – повысить привилегии в системе. При этом, как отмечали, создание именного канала критично тем, что по нему возможно межпроцессное взаимодействие и между удаленными компьютерами, в частности, как говорили, утилита PsExec позиционируется автором, как облегченный вариант Telnet, т.е. предназначена для удаленного администрирования. С учетом сказанного, с позиций безопасности подобную возможность создания и использования именованных каналов можно позиционировать как возможность создания несанкционированного средства удаленного администрирования атакуемого компьютера с неограниченным доступом к его ресурсам, поскольку на атакуемом компьютере соответствующая созданная служба запускается с системными правами.
Вывод. Именованный канал может использоваться для повышения привилегий.
Проведенный анализ возможности КСЗИ «Панцирь+» осуществлять защиту от атак на повышение привилегий с использованием именованного канала.
Поскольку именованный канал является файлом, причем временно создаваемым – на момент настройки механизма защиты он будет отсутствовать в системе, контроль создания именованных каналов может быть реализован механизмом контроля доступа к файловым объектам из состава КСЗИ «Панцирь+». Данный механизм защиты, как ранее отмечали, позволяет разграничивать права доступа к несуществующим в системе (к создаваемым впоследствии) объектам, за счет того, что права доступа в разграничительной политике назначаются субъектам доступа, а не присваиваются объектам.
По средством реализации разграничений прав доступа к такому файлу, КСЗИ «Панцирь+» позволяет контролировать, как создание именованного канала сервером, так и открытие для взаимодействия уже созданного канала клиентом.
Правило, предотвращающее возможность создания (записи) в системе любого именованного канала (общее запрещающее правило) представлено на рис.78.
Рис.78. Правило, запрещающее создание именованных каналов
Одним правилом при настройке механизма защиты контроля доступа к статичным файловым объектам предотвращается возможность создания любым субъектом именованного канала (с любым именем), а также открытие любым субъектом уже созданного именованного канала, в том числе и на удаленном компьютере, т.к. объект доступа в разграничительной политике задается маской *\pipe\*. При этом такого объекта в системе нет, правило будет действовать при попытке его создания.
Проведенная проверка корректности реализации КСЗИ «Панцирь+» защиты от атак на повышение привилегий с использованием именованного канала.
Сначала была проведена проверка в отношении контроля создания субъектами именованных каналов.
В рамках проведения соответствующей проверки проведено испытание, для чего вновь была использована утилита PsExec – вновь была сделана попытка соответствующего создания и запуска системной службы под административной учетной записью «Татьяна», но уже с запрещающим правилом, проиллюстрированным на рис.78.
В результате создать утилите соответствующий именованный канал не удалось, а в соответствующем журнале аудита появилась запись, приведенная на рис.79. При этом соответствующая служба не была создана.
Рис.79. Запись в журнале аудита
Аудит показал, что процессу PsExec.exe системой защиты было отказано в создании локального именованного канала обмена данными с именем PSEXESVC.
Вывод. КСЗИ «Панцирь+» корректно реализует защиту от атак на повышение привилегий с использованием именованных каналов, позволяя контролировать создание и разграничивать права доступа по созданию именованных каналов.
Замечание. Запрет соответствующего права доступа для любого субъекта, а не для конкретной учетной записи администратора, обусловливается тем, что для открытия именованного канала необходимо иметь соответствующие привилегии, но вот для создания нового именованного канала таких привилегий не требуется. Это позволяет с правами непривилегированного пользователя осуществлять атаки с созданием подложного экземпляра уже существующего именованного канала. Учитывая, что именованные каналы активно используются системой, в том числе, для передачи зашифрованных паролей и удаленного управления реестром, реализация данной угрозы атаки характеризуется весьма серьезными последствиями.
Это обусловливает то, что в данном случае также необходима реализация возможности создания разграничительно политики доступа, так как именованные каналы штатно используются некоторыми системными средствами, например системным процессом печати spoolsv, что было проиллюстрировано ранее, на рис.11.
Вывод. Защита от атак на повышение привилегий с использованием именованных каналов должна осуществляться, по средством реализации контроля и разграничения прав доступа к созданию именованного канала, что и обеспечивает КСЗИ «Панцирь+».
Настройка соответствующего механизма защиты реализуется по аналогии с настройкой механизма управления олицетворением, что было рассмотрено выше.
Следующим этапом проведенной проверки была проверка возможности КСЗИ «Панцирь+» по контролю доступа к уже созданным именованным каналам, для чего было проведено соответствующее испытание.
С учетом того, что именованные каналы используются для доступа к разделенным в сети ресурсам, было создано разрешающее правило к объекту *\pipe\* с контролем доступа к этому объекту. После чего, осуществлен запрос доступа проводником к разделенным в сети файлам, хранящимся локально и на удаленном компьютере. Сделанные запросы доступа в обоих случаях были зафиксированы в соответствующем журнале аудита КСЗИ «Панцирь+», см. рис.80.
Рис.80. Записи в журнале аудита
В обоих случаях для обмена данными проводник открывал именованный канал с одним и тем же именем MsFteMds, но в первом случае на локальном, во втором, на удаленном компьютерах.
Далее было создано правило, представленное на рис.81, запрещающее открытие именованных потоков, и повторен запрос доступа проводником к разделенному в сети файлу, хранящемуся локально.
Рис.81. Запрещающее правило открытия именованного канала
Запрос доступа к именованному каналу был отклонен, что было зафиксировано в соответствующем журнале аудита, см. рис.82.
Рис.82. Записи в журнале аудита
Замечание. Правилом, приведенным на рис.81 был запрещен доступ к любому созданному именованному каналу. Очевидно, что создав соответствующее правило, можно подобным образом запретить доступ к любому конкретному каналу, например, с именем MsFteMds, поскольку это будут соответствующие (с соответствующими именами) объекты файловой системы.
Вывод. КСЗИ «Панцирь+» позволяет контролировать, как создание именованного канала сервером, так и открытие для взаимодействия уже созданного канала клиентом.
Другой способ межпроцессного взаимодействия, который потенциально может использоваться для повышения привилегий, заключается в создании и использования «почтовых ящиков».
Проведенный анализ возможности использования «почтового ящика» для повышения привилегий.
Данный способ межпроцессного обмена данными позволяет клиентскому процессу передавать сообщения одному или нескольким серверным процессам. При этом сервер создает почтовый ящик, и только он может читать из него данные. Клиенты, знающие имя существующего почтового ящика, могут его открывать и записывать в него данные, т.е. передавать данные серверу. При этом любой процесс, не зависимо от уровня своих привилегий, может послать сообщение окну другого процесса (в том числе и более привилегированного), при этом нет возможности установить отправителя сообщения. Подобным образом, например, может быть осуществлена передача шелл-кода в строку редактирования привилегированного процесса.
Вывод. Почтовый ящик может использоваться для повышения привилегий.
Проведенный анализ возможности КСЗИ «Панцирь+» осуществлять защиту от атак на повышение привилегий с использованием почтового ящика.
Применительно к решению соответствующих задач защиты, у именованных каналов и почтовых ящиков много общего. Фактически почтовые ящики — это также специальные файлы, которые имеют временные имена, и которые выделяются в корне файловой системы почтовых ящиков, опять же монтируясь по специальному пути, в данном случае определяемому, как «\\сервер\mailslots\[путь] имя почтового ящика».
Здесь опять же в имени создаваемого файла в обязательном порядке должно указываться, но уже \mailslots, уведомляющее систему о том, что этот файл почтовый ящик. Сервер в данном случае также может быть как локальным, имя сервера при этом задается символом «.», так и удаленным, тогда указывается имя удаленного сервера. Также в этом поле может указываться имя домена, что будет означать все почтовые ящики с соответствующим именем в указанном домене.
Поскольку почтовый ящик, как и именованный канал, является специальным создаваемым файлом, контроль создания и открытия почтовых ящиков может быть реализован механизмом защиты из состава КСЗИ «Панцирь+» - механизмом контроля доступа к статичным файловым объектам, по полной аналогии с тем, как контролируется создание и открытие именованного канал. Правило, см. рис.78, предотвращающее возможность создания любым субъектом уже не именованного канала, а почтового ящика (с любым именем), а также правило, см. рис. 81, предотвращающее возможность открытия существующего почтового ящика, предполагают задание объекта доступа в разграничительной политике маской *\mailslots\*.
Реализацией более точной разграничительной политики (по аналогии с именованными каналами, что рассмотрели выше), можно разрешить создание, в том числе, конкретным процессам конкретных (с определенными именами) почтовых ящиков.
Вывод. КСЗИ «Панцирь+» реализует защиту от атак на повышение привилегий с использованием почтовых ящиков, по средством реализации контроля и разграничения прав доступа к созданию почтовых ящиков.
Замечание. Проведение проверки корректности реализации КСЗИ «Панцирь+» защиты от атак на повышение привилегий с использованием почтового ящика смысла не имеет, поскольку возможности контроля доступа КСЗИ «Панцирь+» в отношении создания и открытия почтового ящика полностью совпадают с возможностям в отношении создания и открытия именованного канала.
Замечание. Вопросы межпроцессного взаимодействия по сети с использованием сокетов, и возможности реализации соответствующей защиты КСЗИ «Панцирь+», были рассмотрены ранее, применительно к реализации сетевого экранирования.