Разрешить сервису взаимодействовать с рабочим столом

ОС DC - Windows Server 2008 R2 Std

Клиентская ОС - Windows XP, Windows 7

Я внедрил политику безопасности через Network Policy Server и автоматически включил Wired AutoConfig Services. При включении Wired AutoConfig Services, если я отмечаю галочкой "Разрешить сервису взаимодействовать с рабочим столом", это работает правильно на некоторых ноутбуках с Windows7.

Но в Интернете он предупреждает меня, что "Интерактивные сервисы могут отображать пользовательский интерфейс и получать пользовательский ввод. Если вы разрешите сервису взаимодействовать с рабочим столом, любая информация, отображаемая сервисом на рабочем столе, будет также отображаться на интерактивном пользователе. Рабочий стол злоумышленника может получить контроль над сервисом или атаковать его с интерактивного рабочего стола".

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

2 ответа

Microsoft ввела изоляцию 0-го сеанса в 2008/Vista. С нулевой изоляцией сеанса все службы Windows теперь работают в сеансе 0, а все сеансы человека запускаются в сеансе 1 и выше.

Поэтому настоятельно не рекомендуется создавать службу Windows, которая требует взаимодействия с рабочим столом. Технически все еще возможно спроектировать сервис, который взаимодействует с рабочим столом, но это настоятельно не рекомендуется. Это неправильно.

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

Теперь у нас есть очень привилегированная учетная запись, обычно Local System, отображающая диалоговое окно для обычного пользователя. Это диалоговое окно работает в контексте локальной системы. Вы даете этому обычному пользователю возможность использовать что-то в этом диалоговом окне и заставить его что-то делать в контексте безопасности локальной системы. Так вот где опасность.

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

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

Конечно, это также справедливо для Windows 7, и, установив флажок "Разрешить службе взаимодействовать с рабочим столом", вы разрешаете службе взаимодействовать с виртуальным рабочим столом, который пользователь не видит. Если это исправит ваш сервис - хорошо, пусть будет так. Но убедитесь, что у вас нет машин с Windows XP, так как это действительно может создать вышеупомянутую угрозу безопасности.

Другие вопросы по тегам