Основы Windows Defender Application Control (WDAC)

Windows Defender Application Control (WDAC) эта еще одна технология, позволяющая повысить безопасность Windows за счет контроля запуска исполняемых файлов, создавая белые списки разрешенных программ. Функционал WDAC доступен на Windows 10,11 (Enterprise и Professional редакции) и Windows Server 2016+. Обязательное условие – наличие UEFI.

WDAC позволяет определить каким драйверам и приложениям разрешен запуска на устройствах с Windows. Политики целостности кода (CI) WDAC выполняют проверку запускаемых приложений как в режиме ядра (драйверы и компоненты Windows), так и в пользовательском режиме (как AppLocker).

В чем-то функционал WDAC похож на Software Restriction Policies (SRP) и AppLocker. Недостаток SRP – сложность настройки, а при наличии прав локального администратора вы можете отключить Applocker. Основное преимущество Windows Defender Application Control – возможность контроля запуска драйверов и компонентов в режиме ядра и при загрузке ОС, простота интеграции в концепцию современного рабочего места Microsoft, возможности централизованного управления политиками запуска программ на компьютерах через Intune/Microsoft Endpoint Manager.

Как применить стандартные политики безопасности WDAC в Windows?

В Windows нет графических инструментов управления параметрами WDAC, любые настройки выполняются через PowerShell.

Политика WDAC представляет собой XML файл с политикой целостности кода (Code Integrity). Несколько готовых шаблонов политик WDAC хранятся в каталоге C:\Windows\schemas\CodeIntegrity\ExamplePolicies .

пример xml политик Windows Defender Application Control в каталоге CodeIntegrity \ExamplePolicies

Например, шаблоны DefaultWindows_Audit.xml и DefaultWindows_Enforced.xml позволяют запускать все программы, подписанные Microsoft, и программы с хорошей репутацией. Отличия в шаблонах политик в том, что DefaultWindows_Audit.xml применяет политики WDAC в режиме аудита (такой режим используется для анализа применённых настроек и отладки применений политики по журналам событий). В режиме Enforced политики запуска приложений применяются в продуктивном режиме и блокируют запуск приложений, не соответствующих политике.

Попробуем активировать данную политики на тестовом компьютере. Для применения политики XML файл с описанием политики нужно сконвертировать в бинарный формат SIPolicy.p7b с помощью PowerShell командлета ConvertFrom-CIPolicy:

ConvertFrom-CIPolicy -XmlFilePath "C:\Windows\schemas\CodeIntegrity\ExamplePolicies\DefaultWindows_Enforced.xml" -BinaryFilePath "C:\Windows\System32\CodeIntegrity\SIPolicy.p7b"

В каталоге \system32\codeintegrity появится файл SIPolicy.p7b с вашей политикой.

бинарный файл политик WDAC SiPolicy.p7b

Осталось перезагрузить Windows для применения WDAC политики.

Теперь запуск любой недоверенной программы в Windows (например, скачанной пользователем из интернета) будет блокироваться с сообщением:

Your organization used Windows Defender Application Control to block this app. 
Contact your support person for more information.

Your organization used Windows Defender Application Control to block this app.

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

Code Integrity determined that a process (\Device\HarddiskVolume3\Windows\System32\svchost.exe) attempted to load \Device\HarddiskVolume3\xxx.exe that did not meet the Windows signing level requirements or violated code integrity policy. However, due to code integrity auditing policy, the image was allowed to load.
C:\PS\PowerShellMOdule.psm1 was allowed to run but would have been prevented if the Config CI policy were enforced.

Такие события доступны в следующих журналах Event Viewer:

  • Applications and Services logs > Microsoft > Windows > CodeIntegrity > Operational (EventID 3076, 3077)
  • Applications and Services logs > Microsoft > Windows > AppLocker > MSI and Script

Администратору нужно проанализировать логи и определить, есть ли события блокировки запуска нужных программ. Такие программы придется добавить в список доверенных в XML файле.

Создаем собственную политику WDAC для корпоративных устройств Windows

Попробуем описать типовой план внедрения политики запуска приложений WDAC для устройств с Windows в корпоративной среде:

Создание бейзлайнов для каждой модели компьютера

Установите Windows на эталонный компьютер, установите все необходимые драйвера и программы. Считаем, что такая конфигурация Windows с программами и драйверами является доверенной. Для захвата бейзлайна текущего образа Windows нужно выполнить команду:

$wdacxmlpolicy="c:\ps\wdac\hp322_base.xml"
New-CIPolicy -MultiplePolicyFormat -filePath $wdacxmlpolicy -ScanPath C: -level FilePublisher -UserPEs -Fallback Hash

New-CIPolicy ScanPath - генерация WDAC политики на эталонном компьютере

Команда просканирует все исполняемые файлы, драйвера и библиотеки, добавит их в доверенные в XML политике (займет длительное время).

Включите опции политики:

  • Option 14 – для использования Microsoft Intelligent Security Graph
  • Option 16 – разрешает политике примениться без перезагрузки
  • Option 17 – разрешает объединение политик
С помощью Microsoft Intelligent Security Graph вы можете автоматически доверять приложениям, которым доверяет Microsoft. Это позволяет упростить создание WDAC политик.

Set-RuleOption -FilePath $wdacxmlpolicy -Option 14
Set-RuleOption -FilePath $wdacxmlpolicy -Option 16
Set-RuleOption -FilePath $wdacxmlpolicy -Option 17

Объединение нескольких безлайнов в общий

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

$MergedXML = "C:\ps\wdac\merged_base.xml"
$MergedBin = "C:\ps\wdac\merged_base.cip"
Merge-CIPolicy -OutputFilePath $MergedXML -PolicyPaths "C:\ps\wdac\hp300_base.xml","c:\ps\wdac\lenovo900_base.xml","c:\ps\wdac\dell15_base.xml"

Сконвертировать политику WDAC в бинарный формат:

ConvertFrom-CIPolicy -XmlfilePath $MergedXML -BinaryFilePath $MergedBin

Теперь нужно скопировать ID политики из <PolicyID> секции файла merged_base.xml и использовать это имя в качестве имени файла cip файла.

PolicyID в XML файле WDAC

Создадим дополнительную политику

Теперь нужно создать WDAC политику, которая будет определять дополнительные правила.

Начиная с версии Windows 10 1903, а также в Windows 11 и Windows Server 2022 WDAC поддерживает до 32 активных политик на одном устройстве.

Например, мы хотим разрешить запуск программ из доверенных путей (каталогов Program Files и с определенного файлового сервера):

$SupplementalXmlPolicy = "C:\ps\wdac\supplemental.xml"
$SupplementaBin = "C:\ps\wdac\supplemental.bin"
$rules = New-CIPolicyRule -FilePathRule "C:\Program files\*"
$rules += New-CIPolicyRule -FilePathRule "C:\Program files (x86)\*"
$rules += New-CIPolicyRule -FilePathRule "\\msk-fso1\tools\*"
New-CIPolicy -FilePath $SupplementalXmlPolicy -Rules $rules -UserPEs
Set-CIPolicyIdInfo -FilePath $SupplementalXmlPolicy -BasePolicyToSupplementPath "C:\PS\wdac\AllowMicrosoft.xml"
ConvertFrom-CIPolicy -XmlFilePath $SupplementalXmlPolicy -Binary $SupplementaBin

Аналогичным образом переименуйте файл в соответствии с ID политики в секции <PolicyID> файла supplemental.xml.

Чтобы применить две WDAC политики, нужно скопировать оба bin файла в каталог C:\Windows\System32\CodeIntegrity\CIPolicies\Active

несколько активных политик WDAC CodeIntegrity\CIPolicies\Active

Перезагрузите компьютер, чтобы применить политики WDAC или выполните следующую PowerShell команду, чтобы применить политики CI без перезагрузки:

Invoke-CimMethod -Namespace root\Microsoft\Windows\CI -ClassName PS_UpdateAndCompareCIPolicy -MethodName Update -Arguments @{FilePath = 'C:\Windows\System32\CodeIntegrity\CiPolicies\Active\{GUID}.cip'}

Протестируйте политику в режиме аудита

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

Чтобы отключить режим аудита у политики WDAC, используйте команду:

Set-RuleOption -FilePath $wdacxmlpolicy -Delete -Option 3

Распространение политики WDAC на устройства

Вы можете распространить файл с политикой WDAC на другие устройства компании с помощью Intune, Microsoft Endpoint Manager, групповых политик или скриптов. WDAC уже встроена в Windows и вам не придется платить за нее в рамках подписки Intune.

Для создания и редактирования разрешающих и запрещающих правил WDAC можно использовать специальное приложение WDAC Policy Wizard (https://webapp-wdac-wizard.azurewebsites.net/). Это современное APPX приложение, поставляющееся в виде MSIX файла.

установка WDAC Policy Wizard

В интерфейсе мастера можно включить/отключить опции политики WDAC.

отредактировать политику Windows Defender Application Control с помощью графического интерфейса

С помощью Windows Defender App Control Policy Wizard вы можете отредактировать правила WDAС политики из графического интерфейса. Например, я добавил в стандартную DefaultWindows_Enforced политику правило, разрешающее запускать файл putty.exe.

добавить разрешающее правило в XML политику Windows Defender Application Control

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


Предыдущая статья Следующая статья


Комментариев: 6 Оставить комментарий

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Я не робот( Обязательно отметьте)