允许在Windows Defender应用程序控制策略中注册 COM 对象

注意

Windows Defender应用程序控制的某些功能仅在特定 Windows 版本上可用。 详细了解 应用程序控制功能可用性

Microsoft 组件对象模型 (COM) 是一个独立于平台的分布式面向对象的系统,用于创建可交互的二进制软件组件。 COM 指定对象模型和编程要求,使 COM 对象能够与其他对象交互。

WDAC 策略中的 COM 对象可配置性

Windows Defender应用程序控制 (WDAC) 强制实施 COM 对象注册的内置允许列表。 虽然此列表适用于最常见的应用程序使用方案,但你可能需要允许更多 COM 对象来支持组织中使用的应用。 可以通过 WDAC 策略中的 GUID 指定允许的 COM 对象,如本文所述。

注意

若要将此功能添加到其他版本的 Windows 10,可以安装以下或更高版本的更新。

获取 COM 对象 GUID

可以从位于应用程序和服务日志 > Microsoft > Windows > AppLocker > MSI 和脚本事件查看器中的 8036 COM 对象块事件获取 COM 应用程序 GUID,并从事件数据中提取 GUID。

用于允许或拒绝 COM 对象 GUID 的创作策略设置

三个元素:

  • 提供程序:运行代码的平台 (值为 PowerShell、WSH、IE、VBA、MSI 或通配符“AllHostIds”)
  • 密钥:要运行的程序的 GUID,格式为 Key=“{33333333-4444-4444-1616-161616161616}”
  • ValueName:需要设置为“EnterpriseDefinedClsId”

一个属性:

  • 值:对于 allow,需要为“true”,对于拒绝,则为“false”

    注意

    拒绝仅适用于基本策略,不适用于补充策略

  • 设置需要按 ASCII 值的顺序放置, (首先按提供程序、Key、ValueName)

多个策略注意事项

与可执行文件类似,COM 对象必须传递系统上所有强制实施的 WDAC 策略才能运行。 例如,如果评估中的 COM 对象通过了大部分但不是全部 WDAC 策略,则 COM 对象将被阻止。 如果组合使用基本策略和补充策略,则 COM 对象只需在基本策略或补充策略之一中加入允许列表。

示例

示例 1:允许在任何提供程序中注册所有 COM 对象 GUID

<Setting Provider="AllHostIds" Key="AllKeys" ValueName="EnterpriseDefinedClsId">
  <Value>
    <Boolean>true</Boolean>
  </Value>
</Setting>

示例 2:阻止特定 COM 对象通过 Internet Explorer (IE)

<Setting Provider="IE" Key="{00000000-4444-4444-1616-161616161616}" ValueName="EnterpriseDefinedClsId">
  <Value>
    <Boolean>false</Boolean>
  </Value>
</Setting>

示例 3:允许特定 COM 对象在 PowerShell 中注册

<Setting Provider="PowerShell" Key="{33333333-4444-4444-1616-161616161616}" ValueName="EnterpriseDefinedClsId">
  <Value>
    <Boolean>true</Boolean>
  </Value>
</Setting>

如何配置 CLSID 的设置

下面是在应用程序和服务日志 > Microsoft > Windows > AppLocker > MSI 和脚本中找到事件查看器中的错误示例:

日志名称:Microsoft-Windows-AppLocker/MSI 和脚本
来源:Microsoft-Windows-AppLocker
日期:2020/11/11 下午 1:18:11
事件 ID:8036
任务类别:无
级别:错误
关键字:
用户:S-1-5-21-3340858017-3068726007-3466559902-3647
计算机:contoso.com
说明: {f8d253d9-89a4-4daa-87b6-1168369f0b21} 由于配置 CI 策略而无法运行。

事件 XML:

<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
  <System>
    <Provider Name="Microsoft-Windows-AppLocker" Guid="{cbda4dbf-8d5d-4f69-9578-be14aa540d22}" />
    <EventID>8036</EventID>
    <Version>0</Version>
    <Level>2</Level>
    <Task>0</Task>
    <Opcode>0</Opcode>
    <Keywords>0x4000000000000000</Keywords>
    <TimeCreated SystemTime="2020-11-11T13:18:11.4029179Z" />
    <EventRecordID>819347</EventRecordID>
    <Correlation ActivityID="{61e3e871-adb0-0047-c9cc-e761b0add601}" />
    <Execution ProcessID="21060" ThreadID="23324" />
    <Channel>Microsoft-Windows-AppLocker/MSI and Script</Channel>
    <Computer>contoso.com</Computer>
    <Security UserID="S-1-5-21-3340858017-3068726007-3466559902-3647" />
  </System>
  <EventData>
    <Data Name="IsApproved">false</Data>
    <Data Name="CLSID">{f8d253d9-89a4-4daa-87b6-1168369f0b21}</Data>
  </EventData>
</Event>

若要将此 CLSID 添加到现有策略,请执行以下步骤:

  1. 使用管理权限打开 PowerShell ISE。

  2. 复制并编辑此命令,然后从管理员 PowerShell ISE 运行它。 将策略名称视为 WDAC_policy.xml

    PS C:\WINDOWS\system32> Set-CIPolicySetting -FilePath <path to policy xml>\WDAC_policy.xml -Key "{f8d253d9-89a4-4daa-87b6-1168369f0b21}" -Provider WSH -Value true -ValueName EnterpriseDefinedClsId -ValueType Boolean
    

    运行命令后,找到添加到策略 XML 的以下部分。

    <Settings>
      <Setting Provider="WSH" Key="{f8d253d9-89a4-4daa-87b6-1168369f0b21}" ValueName="EnterpriseDefinedClsId">
        <Value>
          <Boolean>true</Boolean>
        </Value>
      </Setting>
    

默认 COM 对象允许列表

下表描述了Windows Defender应用程序控制中固有信任的 COM 对象列表。 此列表中的对象不需要在 WDAC 策略中加入允许列表。 可以通过在 WDAC 策略中创建显式拒绝规则来拒绝这些规则。

文件名 Clsid
scrrun.dll EE09B103-97E0-11CF-978F-00A02463E06F
scrrun.dll 0D43FE01-F093-11CF-8940-00A0C9054228
vbscript.dll 3F4DACA4-160D-11D2-A8E9-00104B365C9F
WEX。Logger.Log 70B46225-C474-4852-BB81-48E0D36F9A5A
TE.Common.TestData 1d68f3c0-b5f8-4abd-806a-7bc57cdce35a
TE.Common.RuntimeParameters 9f3d4048-6028-4c5b-a92d-01bc977af600
TE.Common.Verify e72cbabf-8e48-4d27-b14e-1f347f6ec71a
TE.Common.Interruption 5850ba6f-ce72-46d4-a29b-0d3d9f08cc0b
msxml6.dll 2933BF90-7B36-11d2-B20E-00C04F983E60
msxml6.dll ED8C108E-4349-11D2-91A4-00C04F7969E8
mmcndmgr.dll ADE6444B-C91F-4E37-92A4-5BB430A33340
puiobj.dll B021FF57-A928-459C-9D6C-14DED0C9BED2
wdtf.dll 041E868E-0C7D-48C6-965F-5FD576530E5B
wdtfedtaction.dll 0438C02B-EB9C-4E42-81AD-407F6CD6CDE1
wdtfioattackaction.dll 078B1F7D-C34C-4B13-A7C3-9663901650F1
wdtfmutt2tcdsimpleioaction.dll 0ABB2961-2CC1-4F1D-BE8E-9D330D06B77D
wdtfdriverpackageaction.dll 0D7237E6-930F-4682-AD0A-52EBFFD3AEE3
wdtf.dll 0D972387-817B-46E7-913F-E9993FF401EB
wdtf.dll 0E770B12-7221-4A5D-86EE-77310A5506BB
wdtfdriversetupdeviceaction.dll 0FA57208-5100-4CD6-955C-FE69F8898973
wdtf.dll 1080A020-2B47-4DA9-8095-DBC9CEFFFC04
wdtfnetworksimpleioaction.dll 10CF2E12-1681-4C53-ADC0-932C84832CD8
wdtf.dll 140F2286-3B39-4DE1-AF94-E083DEEA6BB9
wdtfinterfaces.dll 1A7D6D61-4FE5-42E2-8F23-4FC1731C474F
wdtfaudiosimpleioaction.dll 1C658D42-4256-4743-A4C5-90BF3A3A186A
wdtf.dll 2236B1F3-4A33-48C2-B22C-A1F93A626F05
wdtfsystemaction.dll 23440924-1AB0-41F2-A732-B75069E5C823
wdtfdriversetupsystemaction.dll 238C0AEB-1DFC-4575-AAF3-C67FE15C1819
wdtffuzztestaction.dll 23D0E542-0390-4873-9AC7-EF86E95E5215
wdtf.dll 240FA08C-1D70-40CB-BDB3-2CC41A45496B
wdtf.dll 26CC4211-A9A6-4E5C-A30D-3C659BB4CDC9
wdtf.dll 28EE5F0B-97D8-4A59-BAC8-A8A80E11F56B
wdtf.dll 2C9AF7D6-2589-4413-A2BA-9926EBCFD67C
wdtf.dll 32A9798D-987F-489E-8DB6-2EFB240248BD
wdtfinterfaces.dll 3C0B0D50-611A-4368-AC87-4488D6E0C4A7
wdtfcdromsimpleioaction.dll 3F2C07F3-199B-4165-A948-B8B59A97FCC5
wdtf.dll 485785D3-8820-4C3D-A532-4C0F66392A30
wdtfinterfaces.dll 5EAE59BE-6946-44B7-A7B3-1D59811B246A
wdtfiospyaction.dll 698F6A82-7833-4499-8BA5-2145D604ABD4
wdtfdevicesupportaction.dll 69D94D1B-0833-40D4-9AE7-7FC6F64F2624
wdtf.dll 6EE5B280-3B0F-4358-9E20-99F169FAA700
wdtfmuttsimpleioaction.dll 7776915A-0370-49A7-90B7-20EB36E80B6D
wdtfcpuutilizationsystemaction.dll 7926C7DE-299C-4B09-BB1B-649A4B917ED0
wdtfwirelesssimpleioaction.dll 7A686BCD-9203-435C-8B06-9D7E7A518F98
wdtfbluetoothsimpleioaction.dll 7E6C4615-6184-4077-A150-5D30F29993A4
wdtf.dll 9663A00A-5B72-4810-9014-C77108062949
wdtfinterfaces.dll 9C261B2B-DBD6-4087-B636-ABE1607989E8
wdtfwebcamsimpleioaction.dll A1B74619-F02D-4574-8091-2AADD46A5B2B
wdtf.dll A2FD15D7-64F0-4080-AABD-884380202022
wdtfvolumesimpleioaction.dll AC91E813-B116-4676-AE33-2988B590F3C7
wdtfconcurrentioaction.dll AE278430-ABC2-49D1-AF30-910B9A88CB1E
wdtf.dll B43FF7F1-629C-4DE5-9559-1D09E0A07037
wdtfdriververifiersystemaction.dll B7770265-B643-4600-A60B-93F9BA9F4B24
wdtfpnpaction.dll B8D74985-4EB9-46AA-B2ED-DD2D918849DF
wdtfmobilebroadbandsimpleioaction.dll BCFBBB02-4DA5-466C-9DA7-DC672877B075
wdtf.dll BE56FAD1-A489-4508-ABB7-3348E1C2C885
wdtfpnpaction.dll C0B6C572-D37D-47CC-A89D-E6B9E0852764
wdtfioattackaction.dll C88B324E-6B26-49BC-9D05-A221F15D7E13
wdtfsensorsiosimpleioaction.dll C8BF7EC0-C746-4DE8-BA46-34528C6329FB
wdtfanysimpleioaction.dll C8C574DA-367B-4130-AED6-1EA61A5C6A4B
simpleio_d3dtest.dll CBC36BDB-A6BC-4383-8194-659470553488
wdtfsystemaction.dll D30E1E07-AA39-4086-A7E6-9245FBD0A730
wdtf.dll DD34E741-139D-4F4C-A1E2-D4184FCDD4F9
wdtfsupaction.dll EA48171B-4265-48C3-B56B-70B175A7FDFA
wdtfinterfaces.dll EB9DB874-D23D-44D5-A988-85E966322843
wdtfinterfaces.dll ED05EF76-09A9-4409-90CA-C5D0711CA057
wdtfwpdsimpleioaction.dll EEA17F2B-8E8E-41A3-9776-A87FACD625D0
wdtfinterfaces.dll F30FC2BB-F424-4A1F-8F95-68CFEE935E92
wdtfedtaction.dll F6694E02-5AD0-476D-BD2D-43F7E5D10AF6
wdtfsmartcardreadersimpleioaction.dll FA6F7E49-76C6-490C-B50E-8B1E8E0EEE2A
wdtfiospyaction.dll FE36026D-CDA8-4514-B3D9-57BDA3870D0C