В Windows существует набор механизмов, обеспечивающих ее защищенное состояние на разных этапах работы. Для сетевой фильтрации пакетов используется WFP, идентификация и аутентификация проходит с помощью lssas.exe или AD-базы, за подсистему аудита отвечает EventLog. Но одним из важных компонентов в этой цепочке стал UAC или User Access Control.
В данном материале рассмотрим, как его настраивать и применять на локальном устройстве и доменном узле отдельно. А так же какие инструменты и методы используют хакеры для его обхода, рассмотрим их митигацию.
Что такое UAC?
Механизм безопасности UAC или User Access Contol предназначен, чтобы контролировать повышения привилегий на ОС путем отслеживания запущенных процессов. Такой подход позволит отследить несанкционированные действия и защитит устройство от выполнения вредоносных файлов. Классически это окно выглядит так:

В данном кейсе пользователя оповещают, что запускаемое им приложение имеет все необходимые подписи и файл лежит на диске. Такое уведомление может иметь несколько вариаций, в зависимости от выставленных политик на устройстве: запуск в безопасном окне, с подтверждением пароля/обычное окно согласия.
Настройка на локальном устройстве
Для конфигурации этого механизма безопасности будем использовать UAC settings, который задаст основную политику, а Group Policy уточнит ее детали и более тонкие настройки. Нажмите и введите Win(кнопка)→UAC(текст в поле поиска)→Change User Account Control settings. Перед вами откроется окно с ползунками, где будут 4 уровня предлагаемой политики:

Четвертый и самый верхний уровень помечен, как Always Notify, что означает необходимость в уведомлении о каждом выполняемом действии пользователем, включая системные настройки Windows. Проверка запроса происходит в безопасном окне.
Третий уровень, предлагает менее строгую защиту, будет уведомлять об изменениях на устройстве приложениями, кроме системных настроек, но по прежнему откроет окно в безопасном режиме.
Второй уровень предлагает тоже, что и третий, только в данном случае запускаться окно подтверждения будет в обычном окне, которое нарушитель может подтвердить.
Первый уровень политики отключает, какое либо влияние UAC на запускаемые процессы. В каких задачах данных механизм может входить в коллизию с другим и мешать работе устройства. Поэтому ответом на вопрос: “Как отключить UAC Windows?“, будет команда в powershell:
Set-ItemProperty -Path REGISTRY::HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System -Name ConsentPromptBehaviorAdmin -Value 0; Set-ItemProperty -Path REGISTRY::HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System -Name ConsentPromptBehaviorUser -Value 0 После выполнения данной команды UAC требования упадут до первого уровня политики Never Notify. Более тонкие настройки верификации и нотификации рассмотрим ниже в решениях для доменных узлов, которые так же подойдут и для локальных машин.
Настройка на доменном устройстве
В данном варианте конфигурации появляются более гибкие параметры, которые позволят определить поведение для каждой из групп пользователей отдельно и какой метод верификации будет использован. Откроем клавишами Win+R окно выполнения и пропишем команду:
gpmc.msc Перейдите в настройку вашей политики домена и перед вами откроется окно вида:

Перейдем в папку с локальными политиками домена по пути Computer Configuration → Windows Settings → Security Settings → Local Policies → Security Options:

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

Ключевыми в данном случае настройками являются ConsentPromptBehaviorAdmin/User, которые позволяют определить поведение UAC в момент повышения привилегий пользователя, и то какие данные необходимо запросить. Для каждой инфраструктуры настройки будут свои, но есть общие практики, где параметры полей имеют значения:
- FilterAdministratorToken – 1 (включено);
- EnableUIADesktopToggle – 0 (отключено);
- ConsentPromptBehaviorAdmin – 2 (запрос согласия на безопасном рабочем столе);
- ConsentPromptBehaviorUser – 3 (запрос учетных данных);
- EnableInstallerDetection – 1 (включено для домашних) / 0 (отключено для корпоративных);
- ValidateAdminCodeSignatures – 1 (включено);
- EnableSecureUIAPaths – 1 (включено);
- EnableLUA – 1 (включено);
- PromptOnSecureDesktop – 1 (включено);
- EnableVirtualization – 1 (включено);
- InteractiveLogonFirst – 1 (включено для корпоративных) / 0 (отключено для домашних).
После применения политики необходимо подождать пока узел в домене получит новые правила, либо же принудительно принять их на нужном узле командой:
gpupdate /force
Данный механизм позволил настроить дополнительный эшелон защиты, который контролирует повышение привилегий, при запросе на смену прав. Основными инструментами в данном случае являются запрос данных учетной записи и запрос согласия в безопасном окне, что позволяет провести дополнительную проверку и убедиться в правах субьекта на обьект!