通过智能应用控制测试应用的签名

将已签名的应用分发给用户之前,应针对智能应用控制测试应用的签名。 由于智能应用控制在加载二进制文件时会评估二进制文件,因此请务必测试应用的所有代码路径和功能。 这包括测试应用的所有安装和卸载二进制文件、应用的所有功能以及与可能加载二进制文件的其他应用的所有集成(例如,Office 加载项)。 可以使用审核策略测试智能应用控制,这将创建日志条目,而不会实际阻止应用执行,或直接针对智能应用控制强制模式进行测试。

配置用于测试的智能应用控制

可以在 Windows 设置 应用中配置智能应用控制,也可以手动编辑 Windows 注册表。

使用 Windows 设置配置智能应用控件

转到“设置”>“隐私与安全”>“Windows 安全”>“应用和浏览器控制”>“智能应用控制设置”

注意

将智能应用控制配置为关闭打开(强制)是一种单向操作。 这意味着,除非当前设置为“评估”,否则无法使用 Windows 设置更改模式。 出于测试目的,可以使用注册表强制让智能应用控制进入另一个设置。

如果智能应用控制处于评估模式,智能应用控制将评估应用的签名,但如果应用签名无效,则不会阻止应用。 在此模式下,可以使用审核策略查看智能应用控制的输出,包括检查应用签名时遇到的错误。

选择“打开”,将智能应用控制置于强制模式。 在此模式下,如果应用签名无效,那么智能应用控制将阻止应用运行。

使用注册表配置智能应用控制

重要

只有出于测试目的时,才能通过注册表手动配置智能应用控制。以这种方式编辑智能应用控制设置可能会损害它所提供的保护。

使用 Windows 注册表配置智能应用控制使您能够强制进入任何所需的强制模式,即使无法使用 Windows 设置选择该模式也是如此。 若要配置智能应用控制,请执行以下操作:

  1. 使用管理员权限打开命令提示符,并执行以下命令:

    manage-bde -protectors c: -disable -rebootcount 2
    "C:\Program Files\Windows Defender\MpCmdRun.exe" -RemoveDefinitions -DynamicSignatures
    

    注意

    如果系统驱动器不是 C:,则可能必须更新第二个命令。

  2. 通过启动“设置”并选择“恢复”>“恢复选项”>“高级启动”>“立即重新启动”来重新启动并进入启动菜单。

  3. 在高级启动菜单中,选择“疑难解答”>“高级”>“命令提示符”。 恢复命令提示符将打开。

    注意

    恢复命令提示符将打开恢复驱动器 X:默认情况下。 这并不表示系统驱动器已更改。 系统驱动器仍与其常用的驱动器号(通常为 C:)相关联。

  4. 执行以下命令:

    注意

    在以下命令中,将 {VALUE} 替换为要设置的模式的值。

    模式
    0
    1 开(强制)
    2 计算
    reg load HKLM\sac c:\windows\system32\config\system
    reg add hklm\sac\controlset001\control\ci\policy /v VerifiedAndReputablePolicyState /t REG_DWORD /d {VALUE} /f 
    reg add hklm\sac\controlset001\control\ci\protected /v VerifiedAndReputablePolicyStateMinValueSeen /t REG_DWORD /d {VALUE} /f
    reg unload hklm\sac
    
    reg load HKLM\sac2 C:\windows\system32\config\SOFTWARE
    reg add "hklm\sac2\Microsoft\Windows Defender" /v SacLearningModeSwitch /t REG_DWORD /d 0
    reg unload hklm\sac2
    
  5. 重新启动计算机。

验证智能应用控制的当前模式

可以通过打开命令提示符并执行以下命令来验证智能应用控制的当前模式:

citool.exe -lp

如果易记名称的值是 VerifiedAndReputableDesktopEvaluation 且当前强制实施的值是 true,则智能应用控制处于评估模式。

如果易记名称的值是 VerifiedAndReputableDesktop 且当前强制实施的值是 true,则智能应用控制处于强制模式。

配置智能应用控制的审核策略

智能应用控制在评估模式下使用的默认 Windows Defender 应用程序控制 (WDAC) 策略不会在 CodeIntegrity 操作日志中记录审核事件。 这是为了减少在评估模式下使用智能应用控制传送的典型使用者设备上的日志大小。

为了针对智能应用控制评估应用程序,开发人员或系统管理员可能想要在评估模式下启用审核日志,以查看系统处于强制模式时将阻止哪些文件。

注意

仅当智能应用控制在评估模式下运行时,审核策略才适用。 在强制模式下,智能应用控制默认将记录事件。

可以在此处下载包含下面两个样本策略的 zip 文件。

注意

但用户也可以创建自己的策略。 有关详细信息,请参阅 Windows Defender 应用程序控制 (WDAC) 示例基本策略为轻管理设备创建 WDAC 策略

智能应用控制审核策略 (SmartAppControlAudit.bin)

这是标准智能应用控制策略,在评估模式下将启用审核日志。 签名和云信誉允许的所有二进制文件和脚本都将通过策略,就像启用强制模式时一样。 将被阻止的应用程序和二进制文件会记录审核事件。

注意

此策略仅适用于评估模式下的智能应用控制。 智能应用控制评估模型仍可以通过应用该策略来关闭评估模式,因此我们建议使用以下其他方法之一进行测试。

应用此策略后,citool.exe -lp 的输出将显示 VerifiedAndReputableDesktopEvaluationAudit 作为策略名称。

应用智能应用控制审核策略

首先,确保 SAC 处于评估模式

使用 takeown.exe 获取评估模式策略文件 C:\WINDOWS\System32\CodeIntegrity\CiPolicies\Active\{1283AC0F-FFF1-49AE-ADA1-8A933130CAD6}.cip 的所有权。 如果无法使用 takeown,则可以使用以下步骤手动获取所有权:

重要

强烈建议尽可能使用 takeown。

  1. 在资源管理器中右键单击文件并选择“属性”。
  2. 转到“安全”选项卡,然后选择底部的“高级”。
  3. 单击对话框中的“更改”。
  4. 在弹出对话框中,输入用户信息(例如 <PC name>\<username>),然后单击“确定”。
  5. 在“高级安全设置”对话框中单击“添加”。
  6. 重新打开文件属性“安全性”选项卡,然后单击“确定”并单击“编辑”。
  7. 在“管理员”下,选中所有复选框并单击“确定”,然后在弹出对话框中再次确认。

现在,你已拥有策略文件的所有权,请将其重命名为 {1283AC0F-FFF1-49AE-ADA1-8A933130CAD6}.cip.old。 重命名要应用到 {1283AC0F-FFF1-49AE-ADA1-8A933130CAD6}.cip 的审核策略文件,并将其复制到策略目录。

从管理员命令提示符运行 citool.exe -r 以刷新策略。

没有 ISG 的智能应用控制审核策略 (SmartAppControlAuditNoISG.bin)

这是作为开发人员测试自己的应用的建议策略。

此策略检查评估模式下针对智能应用控制的二进制文件和脚本,而无需检查 Intelligent Security Graph,这意味着在没有审核事件的情况下仅允许通过可信证书正确签名的应用。 由于信誉可能不适用于新发布的二进制文件,并且可能会随时间推移而更改,因此确保所有二进制文件都正确签名是确保用户使用应用时不会遇到问题的最佳方式。 这也是通过 Windows Store 发布时的要求,该要求指明需要从受信任的证书颁发机构获取的证书中的签名。

即使智能应用控制设置为“关闭”,也可以应用此策略。 应用此策略后,citool.exe -lp 的输出将显示 VerifiedAndReputableDesktopEvaluationAuditNoISG 作为策略名称。

在没有 ISG 的情况下应用智能应用控制审核策略

此策略用于根据智能应用控制签名要求以评估模式测试应用程序,而且将不允许基于 Intelligent Security Graph 中的云智能的任何应用二进制文件。

确保智能应用控制处于评估模式或关闭

从管理命令提示符运行 mountvol S: /S

将 SmartAppControlAuditNoISG.bin 复制到 S:\efi\microsoft\boot\cipolicies\active\{5283AC0F-FFF1-49AE-ADA1-8A933130CAD6}.cip 

从管理员命令行运行 citool.exe -r 以刷新策略

查看事件日志

智能应用控制将已阻止(本来可以被阻止)的任何可执行文件记录到代码完整性事件日志中。  你可以打开事件查看器,然后浏览到应用程序和服务日志>Microsoft>Windows>CodeIntegrity>运营,从而找到这些日志。 

智能应用控制记录事件 ID 为 3076 的评估模式事件,以及事件 ID 为 3077 的强制模式事件。 有关智能应用控制和 Microsoft Defender 事件日志记录的详细信息,请参阅查看事件日志和错误代码,以排查 Microsoft Defender 防病毒问题