使用 Windows Defender 應用程控自動允許受管理安裝程式部署的應用程式

注意

Windows Defender 應用程式控制的某些功能僅在特定 Windows 版本上可用。 深入了解 Windows Defender 應用控制功能可用性

Windows Defender 應用程控 (WDAC) 包含稱為受控安裝程式的選項,可在強制執行應用程控原則時,協助平衡安全性與管理性。 這個選項可讓您自動允許指定的軟體發佈解決方案所安裝的應用程式,例如 Microsoft Configuration Manager (MEMCM) 或 Microsoft Intune。

受管理的安裝程式如何運作?

受管理的安裝程式會使用 AppLocker 中的特殊規則集合,將貴組織信任的二進位檔指定為應用程式安裝的授權來源。 當其中一個受信任的二進位檔執行時,Windows 會監視二進位檔的進程 (,以及它啟動的任何子進程) 並監看寫入磁碟的檔案。 當檔案寫入時,它們會標記為源自受管理的安裝程式。

接著,您可以將 [已啟用:受管理的安裝程式] 選項新增至 WDAC 原則,以將 WDAC 設定為信任受管理安裝程式所安裝的檔案。 設定該選項時,WDAC 會在判斷是否允許二進位檔執行時,檢查受管理的安裝程式來源資訊。 只要二進位檔沒有拒絕規則,WDAC 就會允許它純粹根據其受管理的安裝程式來源來執行。

受管理安裝程式的安全性考量

由於受管理的安裝程式是以啟發學習法為基礎的機制,因此不會提供與明確允許或拒絕規則相同的安全性保證。 受控安裝程式最適合使用者以標準使用者的身分運作,以及所有軟體都由MEMCM等軟體發佈解決方案部署和安裝的位置。

具有系統管理員許可權的使用者,或在系統上以系統管理員使用者身分執行的惡意代碼,可能會在允許受管理的安裝程式選項時規避 WDAC 原則的意圖。

如果受管理的安裝程式進程是在具有標準許可權的用戶內容中執行,則以標準使用者身分執行的標準使用者或惡意代碼可能能夠規避 WDAC 原則的意圖。

某些應用程式安裝程式可能會在安裝程序結束時自動執行應用程式。 如果應用程式自動執行,且安裝程式是由受管理的安裝程序執行,則受管理安裝程式的啟發學習法追蹤和授權會延伸到應用程式第一次執行期間建立的所有檔案。 此延伸模組可能會導致可執行檔的意外授權。 若要避免此問題,請確定做為受控安裝程式的應用程式部署方法會限制在安裝過程中執行應用程式。

受管理安裝程式的已知限制

  • 以 Managed 安裝程式為基礎的應用程控不支援自我更新的應用程式。 如果受管理安裝程式所部署的應用程式稍後自行更新,更新的應用程式檔將不會包含來自受管理安裝程式的原始資訊,而且可能無法執行。 當您依賴受管理的安裝程式時,必須使用受管理的安裝程式來部署和安裝所有應用程式更新,或在 WDAC 原則中包含授權應用程式的規則。 在某些情況下,也可以將執行自我更新的應用程式二進位檔指定為受控安裝程式。 應用程式應執行適當的功能與安全性評論才能使用此方法。

  • 某些應用程式或安裝程式可能會擷取、下載或產生二進位檔,並立即嘗試執行它們。 受管理的安裝程序啟發學習法可能不允許這類進程所執行的檔案。 有時候,它也可能指定應用程式二進位檔,其執行這類操作做為受管理的安裝程式。 應用程式應執行適當的功能與安全性評論才能使用此方法。

  • Managed 安裝程式啟發學習法不會授權核心驅動程式。 WDAC 原則必須具有允許所需驅動程式執行的規則。

使用 AppLocker 和 WDAC 設定受管理的安裝程序追蹤

若要開啟 Managed Installer 追蹤,您必須:

  • 建立和部署 AppLocker 原則,以定義受管理的安裝程式規則,並啟用可執行檔和 DLL 的服務強制執行。
  • 啟用AppLocker的應用程式身分識別和AppLockerFltr服務。

注意

下列受管理的安裝程式 AppLocker 原則旨在安全地與任何既有的 AppLocker 原則合併,且不會變更這些原則的行為。 不過,如果套用在目前沒有任何 AppLocker 原則的裝置上,您會看到 AppLocker - EXE 和 DLL 事件記錄檔中產生的警告事件大幅增加。 如果您使用 LogAnalytics 之類的事件轉送和收集服務,您可以調整該事件記錄檔的組態,只收集 Error 事件,或完全停止收集該記錄檔中的事件。

注意

如果您部署其中一個收件匣 WDAC 原則,MEMCM 會自動將自己設定為受控安裝程式,並啟用必要的 AppLocker 元件。 如果您使用任何其他方法將 MEMCM 設定為受管理的安裝程式,則需要額外的安裝程式。 在您的 ccmsetup.exe 設定中使用 ManagedInstaller Cmdline 參數。 或者,您可以部署其中一個 MEMCM 收件匣稽核模式原則,以及您的自定義原則。

建立和部署 AppLocker 原則,以定義受管理的安裝程式規則,並啟用可執行檔和 DLL 的服務強制執行

GPO 編輯器 和 AppLocker PowerShell Cmdlet 中的 AppLocker 原則建立 UI 無法直接用來建立 Managed Installer 規則集合的規則。 不過,您可以使用 XML 或文字編輯器,將 EXE 規則集合原則轉換成 ManagedInstaller 規則集合。

注意

只有 EXE 檔類型可以指定為 Managed 安裝程式。

  1. 使用 New-AppLockerPolicy 為您指定為受控安裝程式的檔案建立 EXE 規則。 此範例會使用發行者規則類型建立 Microsoft Intune 管理延伸模組的規則,但可以使用任何 AppLocker 規則類型。 為了方便閱讀,您可能需要重新格式化輸出。

    Get-ChildItem ${env:ProgramFiles(x86)}'\Microsoft Intune Management Extension\Microsoft.Management.Services.IntuneWindowsAgent.exe' | Get-AppLockerFileInformation | New-AppLockerPolicy -RuleType Publisher -User Everyone -Xml > AppLocker_MI_PS_ISE.xml
    
  2. 手動將規則集合 Type 從 “Exe” 變更為 “ManagedInstaller”,並將 EnforcementMode 設定為 “AuditOnly”

    改變:

    <RuleCollection Type="Exe" EnforcementMode="NotConfigured">
    

    自:

    <RuleCollection Type="ManagedInstaller" EnforcementMode="AuditOnly">
    
  3. 手動編輯您的 AppLocker 原則,併為每個集合新增至少一個規則的 EXE 和 DLL 規則集合。 為了確保您的原則可以安全地套用在可能已有作用中AppLocker原則的系統上,建議您使用良性DENY規則來封鎖假的二進位檔,並將規則集合的EnforcementMode設定為 AuditOnly。 此外,由於許多安裝程式都依賴服務,因此您需要為每個規則集合啟用服務追蹤。 下列範例顯示部分 AppLocker 原則,其中已依建議設定 EXE 和 DLL 規則集合。

    <RuleCollection Type="Dll" EnforcementMode="AuditOnly" >
      <FilePathRule Id="86f235ad-3f7b-4121-bc95-ea8bde3a5db5" Name="Benign DENY Rule" Description="" UserOrGroupSid="S-1-1-0" Action="Deny">
        <Conditions>
          <FilePathCondition Path="%OSDRIVE%\ThisWillBeBlocked.dll" />
        </Conditions>
      </FilePathRule>
      <RuleCollectionExtensions>
        <ThresholdExtensions>
          <Services EnforcementMode="Enabled" />
        </ThresholdExtensions>
        <RedstoneExtensions>
          <SystemApps Allow="Enabled"/>
        </RedstoneExtensions>
      </RuleCollectionExtensions>
    </RuleCollection>
    <RuleCollection Type="Exe" EnforcementMode="AuditOnly">
      <FilePathRule Id="9420c496-046d-45ab-bd0e-455b2649e41e" Name="Benign DENY Rule" Description="" UserOrGroupSid="S-1-1-0" Action="Deny">
        <Conditions>
          <FilePathCondition Path="%OSDRIVE%\ThisWillBeBlocked.exe" />
        </Conditions>
      </FilePathRule>
      <RuleCollectionExtensions>
        <ThresholdExtensions>
          <Services EnforcementMode="Enabled" />
        </ThresholdExtensions>
        <RedstoneExtensions>
          <SystemApps Allow="Enabled"/>
        </RedstoneExtensions>
      </RuleCollectionExtensions>
    </RuleCollection>
    
  4. 確認您的 AppLocker 原則。 下列範例示範將 Configuration Manager 和 Microsoft Intune 設定為受管理安裝程式的完整 AppLocker 原則。 只有已定義實際規則的 AppLocker 規則集合才會包含在最後的 XML 中。 此條件式包含可確保原則會在可能已備妥 AppLocker 原則的裝置上成功合併。

    <AppLockerPolicy Version="1">
      <RuleCollection Type="Dll" EnforcementMode="AuditOnly" >
        <FilePathRule Id="86f235ad-3f7b-4121-bc95-ea8bde3a5db5" Name="Benign DENY Rule" Description="" UserOrGroupSid="S-1-1-0" Action="Deny">
          <Conditions>
            <FilePathCondition Path="%OSDRIVE%\ThisWillBeBlocked.dll" />
          </Conditions>
        </FilePathRule>
        <RuleCollectionExtensions>
          <ThresholdExtensions>
            <Services EnforcementMode="Enabled" />
          </ThresholdExtensions>
          <RedstoneExtensions>
            <SystemApps Allow="Enabled"/>
          </RedstoneExtensions>
        </RuleCollectionExtensions>
      </RuleCollection>
      <RuleCollection Type="Exe" EnforcementMode="AuditOnly">
        <FilePathRule Id="9420c496-046d-45ab-bd0e-455b2649e41e" Name="Benign DENY Rule" Description="" UserOrGroupSid="S-1-1-0" Action="Deny">
          <Conditions>
            <FilePathCondition Path="%OSDRIVE%\ThisWillBeBlocked.exe" />
          </Conditions>
        </FilePathRule>
        <RuleCollectionExtensions>
          <ThresholdExtensions>
            <Services EnforcementMode="Enabled" />
          </ThresholdExtensions>
          <RedstoneExtensions>
            <SystemApps Allow="Enabled"/>
          </RedstoneExtensions>
        </RuleCollectionExtensions>
      </RuleCollection>
      <RuleCollection Type="ManagedInstaller" EnforcementMode="AuditOnly">
        <FilePublisherRule Id="55932f09-04b8-44ec-8e2d-3fc736500c56" Name="MICROSOFT.MANAGEMENT.SERVICES.INTUNEWINDOWSAGENT.EXE version 1.39.200.2 or greater in MICROSOFT® INTUNE™ from O=MICROSOFT CORPORATION, L=REDMOND, S=WASHINGTON, C=US" Description="" UserOrGroupSid="S-1-1-0" Action="Allow">
          <Conditions>
              <FilePublisherCondition PublisherName="O=MICROSOFT CORPORATION, L=REDMOND, S=WASHINGTON, C=US" ProductName="*" BinaryName="MICROSOFT.MANAGEMENT.SERVICES.INTUNEWINDOWSAGENT.EXE">
                <BinaryVersionRange LowSection="1.39.200.2" HighSection="*" />
              </FilePublisherCondition>
        </Conditions>
        </FilePublisherRule>
        <FilePublisherRule Id="6ead5a35-5bac-4fe4-a0a4-be8885012f87" Name="CMM - CCMEXEC.EXE, 5.0.0.0+, Microsoft signed" Description="" UserOrGroupSid="S-1-1-0" Action="Allow">
          <Conditions>
            <FilePublisherCondition PublisherName="O=MICROSOFT CORPORATION, L=REDMOND, S=WASHINGTON, C=US" ProductName="*" BinaryName="CCMEXEC.EXE">
              <BinaryVersionRange LowSection="5.0.0.0" HighSection="*" />
            </FilePublisherCondition>
          </Conditions>
        </FilePublisherRule>
        <FilePublisherRule Id="8e23170d-e0b7-4711-b6d0-d208c960f30e" Name="CCM - CCMSETUP.EXE, 5.0.0.0+, Microsoft signed" Description="" UserOrGroupSid="S-1-1-0" Action="Allow">
          <Conditions>
            <FilePublisherCondition PublisherName="O=MICROSOFT CORPORATION, L=REDMOND, S=WASHINGTON, C=US" ProductName="*" BinaryName="CCMSETUP.EXE">
              <BinaryVersionRange LowSection="5.0.0.0" HighSection="*" />
              </FilePublisherCondition>
            </Conditions>
          </FilePublisherRule>
        </RuleCollection>
      </AppLockerPolicy>
    
  5. 部署 AppLocker 受控安裝程式設定原則。 您可以匯入AppLocker原則並使用 群組原則部署,或使用腳本搭配 Set-AppLockerPolicy Cmdlet 來部署原則,如下列 PowerShell 命令所示。

    Set-AppLockerPolicy -XmlPolicy <AppLocker XML FilePath> -Merge -ErrorAction SilentlyContinue
    
  6. 如果透過腳本部署AppLocker原則,請使用 appidtel.exe 來設定AppLocker應用程式識別服務和AppLocker篩選驅動程式。

    appidtel.exe start [-mionly]
    

    如果您不打算使用 Intelligent Security Graph (ISG) ,請指定 “-mionly”。

注意

受管理的安裝程序追蹤會在下一次執行符合受管理安裝程式規則的進程時啟動。 如果預定的進程已在執行中,您必須重新啟動它。

在 WDAC 原則中啟用受管理的安裝程式選項

若要啟用受管理安裝程式所配置之二進位檔的信任,必須在 WDAC 原則中指定 [已啟用:受管理的安裝程式] 選項。 您可以使用 Set-RuleOption Cmdlet 搭配選項 13 來定義此設定。

以下是建立允許 Windows 開機並啟用受管理安裝程式選項之 WDAC 原則的步驟。

  1. 將DefaultWindows_Audit原則從 「C:\Windows\schemas\CodeIntegrity\ExamplePolicies\DefaultWindows_Audit.xml」 複製到您的工作資料夾

  2. 重設原則標識碼以確保其為多原則格式,並提供與範例原則不同的 GUID。 此外,請為其提供易記名稱以協助識別。

    例如:

    Set-CIPolicyIdInfo -FilePath <XML filepath> -PolicyName "<friendly name>" -ResetPolicyID
    
  3. 設定選項 13 (啟用:Managed Installer) 。

    Set-RuleOption -FilePath <XML filepath> -Option 13
    
  4. 部署您的 WDAC 原則。 請參閱部署 Windows Defender 應用程控 (WDAC) 原則

注意

您的 WDAC 原則必須包含所有系統/開機組件、核心驅動程式,以及無法透過受管理安裝程式部署的任何其他授權應用程式的規則。

拿掉 Managed Installer 功能

若要從裝置移除受控安裝程式功能,您必須依照 刪除AppLocker規則:清除單一系統或遠程系統上的AppLocker原則中的指示,從裝置移除受管理的安裝程式AppLocker原則。