什么是 Windows Defender 应用程序控制?

什么是 Windows Defender 应用程序控制?

在 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>

然后,我将一个测试程序添加到拒绝列表中,以查看计算机重启后该策略是否强制执行

WDAC 向导拒绝列表的屏幕截图

之后我用了这个命令

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 文章


我的 WDACConfig 模块

WDAC配置是一个高级 PowerShell 模块,旨在实现自动化Windows 中的应用程序和文件白名单使用 Windows Defender 应用程序控制。从PowerShell 库


WDAC 使用级别

您可以通过多种方式利用 WDAC 功能,这里按它们提供的限制和保护级别进行排序;从顶部(限制和保护最少)到底部(限制和保护最多)。

  1. 使用 Microsoft 推荐的驱动程序阻止规则。

  2. 更新 Microsoft 推荐的驱动程序阻止规则在一年两次的计划之外。

  3. 使用 Microsoft 推荐的阻止规则 PLUS 推荐的驱动程序阻止规则

  4. 创建 WDAC 策略轻度管理的设备

  5. 使用智能应用控制

    • 它只是 Windows 安全中“应用和浏览器控制”下的切换按钮。它使用一种特殊的 WDAC 策略,该策略提供的保护比轻度管理的工作站更多,但比完全管理的工作站更少。
    • 它使用了 Microsoft 推荐的两种阻止规则。
  6. 创建 WDAC 策略完全托管的设备


我们可以使用方法来创建 WDAC 策略


规划 Windows Defender 应用程序控制生命周期策略管理

微软提供了以下是官方文档了解您需要做出哪些决定来建立管理和维护 Windows Defender 应用程序控制 (WDAC) 策略的流程。其余的将在下文中提及资源部分。


资源

微软网站上还有更多的 WDAC 资源和 cmdlet。

命令

文件


相关内容