Windows Defender Application Control (WDAC) эта еще одна технология, позволяющая повысить безопасность Windows за счет контроля запуска исполняемых файлов, создавая белые списки разрешенных программ. Функционал WDAC доступен на Windows 10,11 (Enterprise и Professional редакции) и Windows Server 2016+. Обязательное условие – наличие UEFI.
WDAC позволяет определить каким драйверам и приложениям разрешен запуска на устройствах с Windows. Политики целостности кода (CI) WDAC выполняют проверку запускаемых приложений как в режиме ядра (драйверы и компоненты Windows), так и в пользовательском режиме (как AppLocker).
Как применить стандартные политики безопасности WDAC в Windows?
В Windows нет графических инструментов управления параметрами WDAC, любые настройки выполняются через PowerShell.
Политика WDAC представляет собой XML файл с политикой целостности кода (Code Integrity). Несколько готовых шаблонов политик WDAC хранятся в каталоге
C:\Windows\schemas\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 с вашей политикой.
Осталось перезагрузить Windows для применения WDAC политики.
Теперь запуск любой недоверенной программы в Windows (например, скачанной пользователем из интернета) будет блокироваться с сообщением:
Your organization used Windows Defender Application Control to block this app. Contact your support person for more information.
Если политика 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
Команда просканирует все исполняемые файлы, драйвера и библиотеки, добавит их в доверенные в XML политике (займет длительное время).
Включите опции политики:
- Option 14 – для использования Microsoft Intelligent Security Graph
- Option 16 – разрешает политике примениться без перезагрузки
- Option 17 – разрешает объединение политик
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 файла.
Создадим дополнительную политику
Теперь нужно создать WDAC политику, которая будет определять дополнительные правила.
Например, мы хотим разрешить запуск программ из доверенных путей (каталогов 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 или выполните следующую 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.
С помощью Windows Defender App Control Policy Wizard вы можете отредактировать правила WDAС политики из графического интерфейса. Например, я добавил в стандартную DefaultWindows_Enforced политику правило, разрешающее запускать файл putty.exe.
Технология WDAC довольно сложная, и трудоемкая при внедрении, но при правильной настройке обеспечивает высокий уровень защиты Windows от запуска сторонних программ, вирусов и шифровальщиков. Политики WDAC применяются ко всему устройству, а не пользователю. Если вам нужно применять дополнительные правила к пользователям, Microsoft рекомендует использовать AppLocker.