Принудительное применение скриптов с помощью управления приложениями Защитник Windows (WDAC)

Примечание.

Некоторые возможности управления приложениями в Защитнике Windows доступны только в определенных версиях для Windows. Дополнительные сведения о доступности функций управления приложениями.

Важно.

Вариант 11 Disabled:Script Enforcement не поддерживается на Windows Server 2016 или на Windows 10 1607 LTSB и не должен использоваться на этих платформах. Это приведет к непредвиденному поведению принудительного применения скриптов.

Общие сведения о применении скриптов

По умолчанию принудительное применение скриптов включено для всех политик WDAC, если в политике не установлен параметр 11 Disabled:Script Enforcement . Принудительное применение скрипта WDAC включает подтверждение между узлом скриптов с поддержкой поддержки, например PowerShell, и WDAC. Тем не менее, узел скрипта обрабатывает фактическое поведение принудительного применения. Некоторые узлы скриптов, например узел приложения Microsoft HTML (mshta.exe), блокируют выполнение всего кода, если активна любая политика WDAC UMCI. Большинство узлов скриптов сначала спрашивают WDAC, следует ли разрешить выполнение скрипта на основе активных политик WDAC. Затем узел скрипта блокирует, разрешает или изменяет способ выполнения скрипта, чтобы обеспечить оптимальную защиту пользователя и устройства.

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

WDAC предоставляет общий доступ к журналу событий AppLocker — MSI и скрипта для всех событий принудительного применения скриптов. Всякий раз, когда узел скрипта запрашивает WDAC, следует ли разрешить скрипт, событие регистрируется с ответом WDAC, возвращенным узлу скрипта. Дополнительные сведения о событиях принудительного применения скриптов WDAC см. в разделе Основные сведения о событиях управления приложениями.

Примечание.

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

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

Просвещенные узлы скриптов, которые являются частью Windows

PowerShell

Политики WDAC должны разрешать выполнение всех скриптов PowerShell (.ps1), модулей (PSM1) и манифестов (PSD1), чтобы они запускались с правами на полный язык.

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

Все скрипты PowerShell, которые не разрешены политикой WDAC, по-прежнему выполняются, но только в режиме ограниченного языка.

Не рекомендуется использовать powerShell dot-sourcing . Вместо этого скрипты должны использовать модули PowerShell для предоставления общих функций. Если разрешенный файл скрипта пытается запустить файлы скриптов с исходными точками, эти файлы скриптов также должны передавать политику.

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

Дополнительные сведения см. в разделе О языковых режимах и ограниченном языковом режиме.

VBscript, cscript и jscript

Политики WDAC должны разрешать выполнение всех сценариев с помощью узла сценариев на основе Windows (wscript.exe) или узла сценариев на основе консоли (Майкрософт) (cscript.exe). Если нет, скрипт блокируется.

Узел приложений Microsoft HTML (MSHTA) и MSXML

Все выполнение кода с помощью MSHTA или MSXML блокируется, если активна любая политика WDAC с применением скриптов, даже если эта политика находится в режиме аудита.

COM-объекты

WDAC также применяет ограниченный список разрешений для COM-объектов, которые политика WDAC может расширить или дополнительно ограничить. На принудительное применение com-объектов не влияет вариант 11 Disabled:Script Enforcement. Дополнительные сведения о том, как разрешить или запретить объекты COM, см. в разделе Разрешение регистрации COM-объектов.

Скрипты, которые напрямую не управляются WDAC

WDAC напрямую не управляет выполнением кода через обработчик команд Windows (cmd.exe), включая .batфайлы скриптов /.cmd. Однако все, что пытается запустить такой пакетный скрипт, подпадает под управление WDAC. Если вам не нужно запускать cmd.exe, рекомендуется заблокировать его прямо или разрешить только по исключению в зависимости от вызывающего процесса. См. раздел Использование политики управления приложениями Защитник Windows для управления определенными подключаемыми модулями, надстройками и модулями.

WDAC не управляет скриптами, выполняемыми через непросвеченный узел скриптов, например многие сторонние обработчики Java или Python. Если политика WDAC разрешает запуск незасвеченного узла скриптов, вы неявно разрешаете выполнение всех скриптов через этот узел. Для узлов сценариев, отличных от Майкрософт, следует проверка с поставщиком программного обеспечения, соответствуют ли их узлы сценариев политике WDAC.