Данная уязвимость была обнаружена в Windows 2000
Server с запущенной службой терминалов. Сущность уязвимости: групповая политика не будет применена к
пользователю, если количество соединений к общему ресурсу, содержащему объект групповой политики, превысит количество установленных пользовательских лицензий.
Подробнее
Групповая политика (Group Policies) - это набор правил, применяемых к группе пользователей. Т.е. при использовании групповой политики, исчезает необходимость настраивать разрешения/ограничения для каждого конкретного пользователя - достаточно объединить их в некие группы и единожды применит групповую политику.
Служба терминалов (Terminal Services) - механизм многопользовательского удаленного
доступа. Суть его в том, что сервер службы передает клиенту изображение, которое нужно отобразить на экране клиентского компьютера; клиент служб терминалов передает серверу информацию о нажатии клавиш и движении мыши; вся обработка информации выполняется на стороне сервера, таким образом, службы терминалов позволяют в графическом режиме работать с установленными на сервере терминалов приложениями буквально с любого компьютера, на котором установлен соответствующий клиент.
Правила групповой политики применяются к пользователю когда он входит в систему. Если вход в систему разрешен, происходит чтение и применение групповой политики. Для Microsoft было бы гораздо лучше, если бы успешно примененная групповая политика сохранялась в профиле пользователя, когда он покидает систему (однако этого не происходит,
хотя по идее должно - это и есть одна из
главных ошибок, дальше станет ясно почему).
Объект групповой политики хранится (Group
Policy Object - именно он накладывает на
пользователя установленные ограничения
при входе в систему) на общем ресурсе (Share) сервера, контролирующего вход в домен. Как и любой другой общий ресурс, он может быть недоступен, если количество соединений к нему ограничено количеством пользовательских лицензий. К примеру: по дефолту Windows 2000 Server идет с пятью пользовательскими лицензиями (т.е. не более пяти одновременных соединений с сервером). Эта, в принципе разумная вещь, может
закрыть доступ к объекту групповой политики
(а следовательно и никаких ограничений на
юзера и положат, благополучно предоставив
полный доступ) если количество одновременных подключений превысит эту цифру (в нашем случае достаточно шестого подключения).
Сценарий
Существует некий Win2000 Server с запущенной службой терминалов. Служба терминалов доступна только для одного удаленного пользователя. Администратор домена разработал групповую политику, в соответствии с которой пользователь службы терминалов может запускать всего одну программу (пусть это будет notepad.exe). Все остальное для удаленного пользователя заблокировано.
Использование
- Пользователь службы терминалов соединяется с сервером.
- Не закрывая соединения, пользователь открывает еще одно соединение. Результат тот же - пожалуйте использовать notepad.exe 😉 Поэтому, по тому же сценарию открывается нужное количество соединений, пока количество соединений станет равным количеству пользовательский лицензий.
- Пользователь открывает еще одно соединение (допустим, шестое). Система разрешает вход пользователя и…
запрещает доступ к объекту групповой политики!!! Групповая политика остается незадействованной
(А если бы она сохранялась в профиле
пользователя? Вот то-то и оно...), а это значит прощай все ограничения, здравствуй cmd.exe и paint.exe %-)!
Стоит отметить, что групповая политика продолжает действовать для первых пяти соединений (в нашем примере), но не действует на шестое. У нас нет возможности каким-либо образом изменить групповую политику, либо запретить ее применение - наша доля пользоваться удобным случаем…
Защита
Отключить слежение за лицензиями, либо, как компромисс - сильно увеличить их количество.
Сменить систему лицензирования: с лицензирования "на сервер" перейти к лицензированию "на рабочее место". Вот каким сообщением отреагировал на эту попытку мой сервер:
Нарушение лицензионного соглашения
!!! Вы запросили выполнение изменения, которое нарушает лицензионное соглашение. Лицензия на этот продукт разрешает только одноразовое изменение режима лицензирования от "на сервер" к лицензированию "на рабочее место".
Отметить выполнение этого запроса?
ДА НЕТ ОТМЕНА
Думал я, надо признаться, недолго…