Вопрос или проблема
На Windows 11 я создал политику WDAC с помощью WDAC Wizard и добавил ее в Group Policy, перезагрузил ПК, но политика все еще не применяется.
Вот тестовая политика, которую я создал:
<?xml version="1.0" encoding="utf-8"?>
<SiPolicy xmlns="urn:schemas-microsoft-com:sipolicy">
<VersionEx>10.0.0.0</VersionEx>
<PlatformID>{2E07F7E4-194C-4D20-B7C9-6F44A6C5A234}</PlatformID>
<Rules>
<Rule>
<Option>Enabled:UMCI</Option>
</Rule>
<Rule>
<Option>Enabled:Unsigned System Integrity Policy</Option>
</Rule>
<Rule>
<Option>Enabled:Advanced Boot Options Menu</Option>
</Rule>
<Rule>
<Option>Enabled:Update Policy No Reboot</Option>
</Rule>
<Rule>
<Option>Enabled:Dynamic Code Security</Option>
</Rule>
</Rules>
<!--EKUS-->
<EKUs>
<EKU ID="ID_EKU_STORE" Value="010a2b0601040182374c0301" FriendlyName="Windows Store EKU - 1.3.6.1.4.1.311.76.3.1 Windows Store" />
</EKUs>
<!--File Rules-->
<FileRules>
<FileAttrib ID="ID_FILEATTRIB_F_1_0_0" FriendlyName="C:\Program Files\CrystalDiskMark8\DiskMark64.exe FileAttribute" FileName="DiskMark.exe" MinimumFileVersion="8.0.4.0" />
<FileAttrib ID="ID_FILEATTRIB_REFRESH_POLICY_1" FriendlyName="RefreshPolicy.exe FileAttribute" FileName="RefreshPolicy.exe" MinimumFileVersion="10.0.19042.0" />
</FileRules>
<!--Signers-->
<Signers>
<Signer ID="ID_SIGNER_F_1_0_0" Name="Certum Code Signing CA SHA2">
<CertRoot Type="TBS" Value="F7B6EEB3A567223000A61F68C53B458193557C17E5D512D2825BCB13E5FC9BE5" />
<CertPublisher Value="Open Source Developer, Noriyuki Miyazaki" />
<FileAttribRef RuleID="ID_FILEATTRIB_F_1_0_0" />
</Signer>
<Signer ID="ID_SIGNER_MICROSOFT_PRODUCT_1997_1" Name="MincryptKnownRootMicrosoftProductRoot1997">
<CertRoot Type="Wellknown" Value="04" />
</Signer>
<Signer ID="ID_SIGNER_MICROSOFT_PRODUCT_2001_1" Name="MincryptKnownRootMicrosoftProductRoot2001">
<CertRoot Type="Wellknown" Value="05" />
</Signer>
<Signer ID="ID_SIGNER_MICROSOFT_PRODUCT_2010_1" Name="MincryptKnownRootMicrosoftProductRoot2010">
<CertRoot Type="Wellknown" Value="06" />
</Signer>
<Signer ID="ID_SIGNER_MICROSOFT_STANDARD_2011_1" Name="MincryptKnownRootMicrosoftStandardRoot2011">
<CertRoot Type="Wellknown" Value="07" />
</Signer>
<Signer ID="ID_SIGNER_MICROSOFT_CODEVERIFICATION_2006_1" Name="MincryptKnownRootMicrosoftCodeVerificationRoot2006">
<CertRoot Type="Wellknown" Value="08" />
</Signer>
<Signer ID="ID_SIGNER_DRM_1" Name="MincryptKnownRootMicrosoftDMDRoot2005">
<CertRoot Type="Wellknown" Value="0C" />
</Signer>
<Signer ID="ID_SIGNER_MICROSOFT_FLIGHT_2014_1" Name="MincryptKnownRootMicrosoftFlightRoot2014">
<CertRoot Type="Wellknown" Value="0E" />
</Signer>
<Signer ID="ID_SIGNER_TEST2010_1" Name="MincryptKnownRootMicrosoftTestRoot2010">
<CertRoot Type="Wellknown" Value="0A" />
</Signer>
<Signer ID="ID_SIGNER_MICROSOFT_PRODUCT_1997_UMCI_1" Name="MincryptKnownRootMicrosoftProductRoot1997">
<CertRoot Type="Wellknown" Value="04" />
</Signer>
<Signer ID="ID_SIGNER_MICROSOFT_PRODUCT_2001_UMCI_1" Name="MincryptKnownRootMicrosoftProductRoot2001">
<CertRoot Type="Wellknown" Value="05" />
</Signer>
<Signer ID="ID_SIGNER_MICROSOFT_PRODUCT_2010_UMCI_1" Name="MincryptKnownRootMicrosoftProductRoot2010">
<CertRoot Type="Wellknown" Value="06" />
</Signer>
<Signer ID="ID_SIGNER_MICROSOFT_STANDARD_2011_UMCI_1" Name="MincryptKnownRootMicrosoftStandardRoot2011">
<CertRoot Type="Wellknown" Value="07" />
</Signer>
<Signer ID="ID_SIGNER_MICROSOFT_CODEVERIFICATION_2006_UMCI_1" Name="MincryptKnownRootMicrosoftCodeVerificationRoot2006">
<CertRoot Type="Wellknown" Value="08" />
</Signer>
<Signer ID="ID_SIGNER_DRM_UMCI_1" Name="MincryptKnownRootMicrosoftDMDRoot2005">
<CertRoot Type="Wellknown" Value="0C" />
</Signer>
<Signer ID="ID_SIGNER_MICROSOFT_FLIGHT_2014_UMCI_1" Name="MincryptKnownRootMicrosoftFlightRoot2014">
<CertRoot Type="Wellknown" Value="0E" />
</Signer>
<Signer ID="ID_SIGNER_STORE_1" Name="Microsoft MarketPlace PCA 2011">
<CertRoot Type="TBS" Value="FC9EDE3DCCA09186B2D3BF9B738A2050CB1A554DA2DCADB55F3F72EE17721378" />
<CertEKU ID="ID_EKU_STORE" />
</Signer>
<Signer ID="ID_SIGNER_MICROSOFT_REFRESH_POLICY_1" Name="Microsoft Code Signing PCA 2011">
<CertRoot Type="TBS" Value="F6F717A43AD9ABDDC8CEFDDE1C505462535E7D1307E630F9544A2D14FE8BF26E" />
<CertPublisher Value="Microsoft Corporation" />
<FileAttribRef RuleID="ID_FILEATTRIB_REFRESH_POLICY_1" />
</Signer>
<Signer ID="ID_SIGNER_TEST2010_UMCI_1" Name="MincryptKnownRootMicrosoftTestRoot2010">
<CertRoot Type="Wellknown" Value="0A" />
</Signer>
</Signers>
<!--Driver Signing Scenarios-->
<SigningScenarios>
<SigningScenario Value="131" ID="ID_SIGNINGSCENARIO_DRIVERS_1" FriendlyName="Auto generated policy on 09-09-2022">
<ProductSigners>
<AllowedSigners>
<AllowedSigner SignerId="ID_SIGNER_MICROSOFT_PRODUCT_1997_1" />
<AllowedSigner SignerId="ID_SIGNER_MICROSOFT_PRODUCT_2001_1" />
<AllowedSigner SignerId="ID_SIGNER_MICROSOFT_PRODUCT_2010_1" />
<AllowedSigner SignerId="ID_SIGNER_MICROSOFT_STANDARD_2011_1" />
<AllowedSigner SignerId="ID_SIGNER_MICROSOFT_CODEVERIFICATION_2006_1" />
<AllowedSigner SignerId="ID_SIGNER_DRM_1" />
<AllowedSigner SignerId="ID_SIGNER_MICROSOFT_FLIGHT_2014_1" />
<AllowedSigner SignerId="ID_SIGNER_TEST2010_1" />
</AllowedSigners>
</ProductSigners>
</SigningScenario>
<SigningScenario Value="12" ID="ID_SIGNINGSCENARIO_WINDOWS" FriendlyName="Auto generated policy on 09-09-2022">
<ProductSigners>
<DeniedSigners>
<DeniedSigner SignerId="ID_SIGNER_F_1_0_0" />
</DeniedSigners>
<AllowedSigners>
<AllowedSigner SignerId="ID_SIGNER_MICROSOFT_PRODUCT_1997_UMCI_1" />
<AllowedSigner SignerId="ID_SIGNER_MICROSOFT_PRODUCT_2001_UMCI_1" />
<AllowedSigner SignerId="ID_SIGNER_MICROSOFT_PRODUCT_2010_UMCI_1" />
<AllowedSigner SignerId="ID_SIGNER_MICROSOFT_STANDARD_2011_UMCI_1" />
<AllowedSigner SignerId="ID_SIGNER_MICROSOFT_CODEVERIFICATION_2006_UMCI_1" />
<AllowedSigner SignerId="ID_SIGNER_DRM_UMCI_1" />
<AllowedSigner SignerId="ID_SIGNER_MICROSOFT_FLIGHT_2014_UMCI_1" />
<AllowedSigner SignerId="ID_SIGNER_STORE_1" />
<AllowedSigner SignerId="ID_SIGNER_MICROSOFT_REFRESH_POLICY_1" />
<AllowedSigner SignerId="ID_SIGNER_TEST2010_UMCI_1" />
</AllowedSigners>
</ProductSigners>
</SigningScenario>
</SigningScenarios>
<UpdatePolicySigners />
<CiSigners>
<CiSigner SignerId="ID_SIGNER_F_1_0_0" />
<CiSigner SignerId="ID_SIGNER_STORE_1" />
<CiSigner SignerId="ID_SIGNER_MICROSOFT_REFRESH_POLICY_1" />
</CiSigners>
<HvciOptions>0</HvciOptions>
<Settings>
<Setting Provider="AllHostIds" Key="{0468C085-CA5B-11D0-AF08-00609797F0E0}" ValueName="EnterpriseDefinedClsId">
<Value>
<Boolean>true</Boolean>
</Value>
</Setting>
<Setting Provider="PolicyInfo" Key="Information" ValueName="Name">
<Value>
<String>DefaultMicrosoftEnforced</String>
</Value>
</Setting>
<Setting Provider="PolicyInfo" Key="Information" ValueName="Id">
<Value>
<String>022422</String>
</Value>
</Setting>
</Settings>
<PolicyTypeID>{A244370E-44C9-4C06-B551-F6016E563076}</PolicyTypeID>
</SiPolicy>
Затем я добавил тестовую программу в список запрещенных, чтобы посмотреть, будет ли политика применяться после перезагрузки компьютера
Скриншот списка запрещенных WDAC Wizard
после этого я использовал эту команду
ConvertFrom-CIPolicy -XmlFilePath C:\Users\UserName\OneDrive\Desktop\policy.xml -BinaryFilePath C:\Windows\System32\CodeIntegrity\SIPolicy.p7b
чтобы создать файл SIPolicy.p7b
из XML файла, предоставленного WDAC Wizard, а затем добавил его в групповую политику следующим образом:
Есть ли идеи, что я упускаю, чтобы это заработало? Я перезагружал несколько раз, но все программы, не относящиеся к Microsoft, и сторонние программы все еще работают, и программа, которую я специально добавил в список запрещенных, также может запускаться.
вот связанная часть системной информации
Вам необходимо использовать формат файла .CIP
вместо .p7b
, и вам необходимо использовать CiTool.exe
для развертывания. CiTool.exe
доступен в Windows 11, начиная с сборки 22H2, и в Windows Server 2025 и позже.
Также нет необходимости перезагружать систему после развертывания. Если вы используете Windows Server 2025 или Windows 11 24H2, перезагрузка также не требуется при удалении политики.
Для создания политик отказа необходимо помнить, что WDAC (Контроль приложений) по сути является стратегией белого списка, поэтому все, что вы явно не разрешаете в своей политике, автоматически запрещается.
Я создал приложение для упрощения создания политик WDAC (Контроль приложений). Оно обладает гораздо большим количеством функций и точности, чем любое другое доступное решение, и оно открытое, бесплатное и доступно здесь: https://github.com/HotCakeX/Harden-Windows-Security/wiki/AppControl-Manager
Эта страница показывает, как именно создать политики отказа:
https://github.com/HotCakeX/Harden-Windows-Security/wiki/Create-Deny-App-Control-Policy
Если у вас или у кого-либо есть какие-либо вопросы по WDAC (Контроль приложений), не стесняйтесь обратиться на GitHub, и я буду рад помочь.
Ответ или решение
Чтобы решить проблему с Windows Defender Application Control (WDAC) на Windows 11, важно тщательно разобрать настройки и процесс внедрения вашей политики. WDAC является мощным инструментом для управления и обеспечения безопасности приложений, который основывается на концепции "белого списка", то есть разрешает выполнение только тех приложений, которые явно перечислены в вашей политике. При неверной настройке возможны ситуации, когда политика не будет применена.
Теория
Для эффективного использования WDAC, политика должна быть правильно создана, преобразована и развернута. Перевод файла политики из XML в бинарный формат, подходящий для Windows, и добавление его в Group Policy — критические этапы. Однако инструменты и форматы файлов, которые используются в этом процессе, играют ключевую роль. Так, ранее упоминаемый .p7b
формат может вызывать сложности в контексте вашей проблемы. Современные версии Windows 11 требуют использования формата .CIP
и инструмента CiTool.exe
, доступного начиная с версии Windows 11 22H2.
Пример
Из вашей проблемы видно, что вы создали политику с помощью WDAC Wizard, а затем использовали команду для преобразования XML-файла политики в формат .p7b
. Далее вы развернули эту политику с помощью групповой политики. Несмотря на это, приложения, которые должны были быть заблокированы, по-прежнему работают. Это может указывать на то, что формат или средство развертывания были выбраны неправильно.
Применение
-
Выбор правильного формата и инструментария: В первую очередь, следует использовать
.CIP
файл, который должен быть создан с помощьюCiTool.exe
. Это средство доступно, начиная с Windows 11 22H2, и позволяет более надежно развертывать политики. -
Создание и развертывание политики: Пересмотрите созданную вами политику, возможно, стоит воспользоваться усовершенствованными инструментами для конфигурации, такими как AppControl-Manager от HotCakeX, который предоставляет более точные и богатые функциональные возможности для создания политик.
-
Валидация развертывания: После применения политики без необходимости перезагрузки системы, следует убедиться, что политика действительно работает. Это можно сделать с помощью командлетов PowerShell, таких как
Get-CIPolicy
и просмотра логов в журнале событий Windows, чтобы отслеживать события, связанные с блокировкой приложений. -
Использование открытых ресурсов: Для более глубокого понимания и конфигурации WDAC, ознакомьтесь с ресурсами на GitHub, где разработчики, как HotCakeX, предлагают подробные руководства и помощь.
-
Обратная связь и поддержка: Воспользуйтесь возможностью получить консультацию у специалистов через открытые платформы вроде GitHub, чтобы решить специфические проблемы, с которыми вы сталкиваетесь при развертывании WDAC.
Подводя итог, для успешного развертывания политики WDAC на Windows 11 необходимо корректно выбирать инструменты и форматы, следовать современным методологиям управления политиками и активно использовать доступные ресурсы и сообщества для поддержки и упрощения процесса.