在 Windows 11 上,我制定了 WDAC 策略WDAC 向导并将其添加到组策略,重新启动了电脑,但该策略仍然没有被强制执行。
以下是我制定的测试政策:
<?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>
然后,我将一个测试程序添加到拒绝列表中,以查看计算机重启后该策略是否强制执行
之后我用了这个命令
ConvertFrom-CIPolicy -XmlFilePath C:\Users\UserName\OneDrive\Desktop\policy.xml -BinaryFilePath C:\Windows\System32\CodeIntegrity\SIPolicy.p7b
从 WDAC 向导提供给我的 XML 文件创建SIPolicy.p7b
文件,然后我将其添加到组策略中,如下所示:
知道我需要做什么才能让它工作吗?我重启了好几次,但所有非微软和第三方程序仍在运行,而且我专门添加到拒绝列表中的程序也可以运行。
这是系统信息的相关部分
答案1
我已经创建了完整的指南在我的 GitHub 上,仅使用 Microsoft 参考,关于如何创建和部署(以及加密签名)WDAC - Windows Defender 应用程序控制 - 策略。
根据您提供的信息,我认为问题是 1)您使用的是单一策略格式而不是多策略格式;2)在.cip
为多策略格式创建二进制文件后,将其复制到C:\Windows\System32\CodeIntegrity\CiPolicies\Active
设备并重新启动。
什么是 Windows Defender 应用程序控制?
鉴于当今的威胁形势,应用程序控制是保护企业的关键防线,它比传统的防病毒解决方案具有固有优势。具体而言,应用程序控制从假定所有应用程序都值得信赖的应用程序信任模型转变为应用程序必须赢得信任才能运行的模型。
部署了 Windows Defender 应用程序控制 (WDAC) 策略的设备可以通过 MDM、Intune 等进行集中管理,也可以是家庭设备、不属于任何组织的私人设备、您想要 100% 安全的某人的计算机这样设备所有者就无法自愿或强迫自己妥协,可能性是无止境。
Windows Defender 应用程序控制 (WDAC) wiki 文章
- 介绍
- WDAC配置模块
- 适用于轻度管理设备的 WDAC
- 完全托管设备的 WDAC - 变体 1
- 适用于完全托管设备的 WDAC - 变体 2
- 适用于完全托管设备的 WDAC - 变体 3
- 适用于完全托管设备的 WDAC - 变体 4
- WDAC 注意事项
- 如何创建和部署签名的 WDAC 策略
- 快速自动更新 Microsoft 推荐的驱动程序阻止规则
我的 WDACConfig 模块
WDAC配置是一个高级 PowerShell 模块,旨在实现自动化Windows 中的应用程序和文件白名单使用 Windows Defender 应用程序控制。从PowerShell 库。
WDAC 使用级别
您可以通过多种方式利用 WDAC 功能,这里按它们提供的限制和保护级别进行排序;从顶部(限制和保护最少)到底部(限制和保护最多)。
使用 Microsoft 推荐的驱动程序阻止规则。
- 无需用户操作从 Windows 11 2022 更新开始,所有设备默认启用易受攻击的驱动程序阻止列表,使用 HVCI 或内存完整性。
- 内置驱动程序阻止列表会随着 Windows 的每个新主要版本的发布而更新,通常每年 1-2 次。
更新 Microsoft 推荐的驱动程序阻止规则在一年两次的计划之外。
- 驱动程序阻止列表本身更新更频繁而不是每年两次的计划,使用我的 WDAC 模块定期下载和应用它们,自动地。
使用 Microsoft 推荐的阻止规则 PLUS 推荐的驱动程序阻止规则
- 此处提供了 WDAC XML 策略内容,复制它们,创建一个新的XML文件并将内容粘贴到其中并保存。重置其策略ID并将其转换为多策略格式。将其转换为
.cip
策略二进制文件进而部署它. 定期重复此操作以保持最新状态。
- 此处提供了 WDAC XML 策略内容,复制它们,创建一个新的XML文件并将内容粘贴到其中并保存。重置其策略ID并将其转换为多策略格式。将其转换为
创建 WDAC 策略轻度管理的设备
使用智能应用控制
- 它只是 Windows 安全中“应用和浏览器控制”下的切换按钮。它使用一种特殊的 WDAC 策略,该策略提供的保护比轻度管理的工作站更多,但比完全管理的工作站更少。
- 它使用了 Microsoft 推荐的两种阻止规则。
创建 WDAC 策略完全托管的设备
我们可以使用方法来创建 WDAC 策略
规划 Windows Defender 应用程序控制生命周期策略管理
微软提供了以下是官方文档了解您需要做出哪些决定来建立管理和维护 Windows Defender 应用程序控制 (WDAC) 策略的流程。其余的将在下文中提及资源部分。
资源
微软网站上还有更多的 WDAC 资源和 cmdlet。
命令
文件
- Windows 应用程序控制
- 了解 Windows Defender 应用程序控制策略设计决策
- 部署 Windows Defender 应用程序控制 (WDAC) 策略
- 使用多个 Windows Defender 应用程序控制策略
- 使用审核事件创建 WDAC 策略规则
- 合并 Windows Defender 应用程序控制 (WDAC) 策略
- 了解 Windows Defender 应用程序控制 (WDAC) 策略规则和文件规则
- 测试和调试 AppId 标记策略
- 使用向导编辑现有的基本和补充 WDAC 策略
- 使用向导创建新的补充政策
- 在线生成 Windows Defender 应用程序控制 (WDAC) 策略
- Windows Defender 应用程序控制 (WDAC) 示例基础策略
- 配置应用程序标识服务
- Microsoft 推荐的驱动程序阻止规则
- Microsoft 推荐的阻止规则
- 使用参考计算机创建 WDAC 策略(适用于固定工作负载设备)
- 为完全托管的设备创建 WDAC 策略
- 为轻度管理的设备创建 WDAC 策略
- 创建 WDAC 拒绝策略的指南
- 受虚拟机管理程序保护的代码完整性实现