使用智能应用控制测试应用的签名

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

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

可以在 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. 重启电脑

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

可以通过打开命令提示符并运行以下命令来验证 Smart App Control 的当前模式:

citool.exe -lp

如果“友好名称”的值为 VerifiedAndReputableDesktopEvaluation 且“当前强制实施”的值为 true,则智能应用控制处于评估模式。

如果“友好名称”的值是 VerifiedAndReputableDesktop 且“当前是否已实施”的值是 true,则智能应用程序控制处于强制实施模式。

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

评估模式下 Smart App Control 使用的默认 Windows Defender 应用程序控制 (WDAC) 策略不会在 CodeIntegrity作日志中记录审核事件。 此策略可减少在评估模式下随 Smart App Control 一起提供的典型使用者设备上的日志大小。

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

注释

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

可以 在此处下载包含两个示例策略的 zip 文件。

注释

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

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

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

注释

此策略仅适用于评估模式下的智能应用控制。 应用此策略时,智能应用控制评估模型可能会关闭评估模式,因此请使用本文中的其他方法之一进行测试。

应用此策略时,输出显示citool.exe -lpVerifiedAndReputableDesktopEvaluationAudit作为策略名称。

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

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

若要应用此策略,请获取评估模式策略文件的所有权,并将其替换为审核策略。 在管理员命令提示符或 PowerShell 窗口中运行以下命令:

takeown /f "C:\WINDOWS\System32\CodeIntegrity\CiPolicies\Active\{1283AC0F-FFF1-49AE-ADA1-8A933130CAD6}.cip" /a
icacls "C:\WINDOWS\System32\CodeIntegrity\CiPolicies\Active\{1283AC0F-FFF1-49AE-ADA1-8A933130CAD6}.cip" /grant Administrators:F

注释

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)

使用此策略以开发人员身份测试自己的应用。

此策略在评估模式下将二进制文件和脚本与 Smart App Control 进行检查,而无需检查智能安全图(Intelligent Security Graph)。 这意味着,只有由受信任的证书正确签名的应用程序可以在没有审计事件的情况下被允许。 由于信誉可能不适用于新发布的二进制文件,并且可能会随时间而变化,因此请确保正确对所有二进制文件进行签名是确保用户在使用应用时不会遇到问题的最佳方式。 此要求也适用于通过 Windows 应用商店进行发布时,需要从受信任的证书颁发机构获取的证书的签名。

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

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

使用此策略专门根据智能应用控件的签名要求以评估模式测试应用程序。 此策略不允许任何基于智能安全图中的云智能的应用二进制文件。

  1. 确保智能应用控件处于评估模式或关闭状态。 

  2. 从管理员命令提示符运行 mountvol S: /S 。 

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

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

检查事件日志

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

智能应用控制记录事件 ID 为 3076 的评估模式事件,以及事件 ID 为 3077 的强制模式事件。

重要

CodeIntegrity 事件日志仅记录有关被阻止或已审核的文件的信息。 它不会记录哪些软件安装失败或启用智能应用控制时安装失败的原因。 事件日志显示配置更改以及阻止了哪些单个文件,但不提供安装级诊断。 若要排查安装失败问题,必须查看 3076 和 3077 事件,以确定安装程序内哪些特定文件已被阻止。

有关 Smart App Control 和 Microsoft Defender 事件日志记录的详细信息,请参阅 查看事件日志和错误代码,以排查Microsoft Defender 防病毒问题

Windows Defender 应用程序控制 (WDAC) 示例基本策略

查看事件日志和错误代码,解决 Microsoft Defender 防病毒软件问题

为轻型管理的设备创建 WDAC 策略