了解应用程序控制事件

WDAC 事件概述

WDAC 会在加载策略时、阻止文件或处于审核模式时阻止文件时记录事件。 这些块事件包括标识策略并提供有关块的更多详细信息的信息。 允许使用二进制文件时,WDAC 不会生成事件。 但是,你可以为托管安装程序授权的文件或 Intelligent Security Graph (ISG) 启用允许审核事件,如本文稍后所述。

核心 WDAC 事件日志

WDAC 事件在 Windows 事件查看器的两个位置下生成:

  • 应用程序和服务日志 - Microsoft - Windows - CodeIntegrity - 操作 包括有关应用程序控制策略激活以及可执行文件、dll 和驱动程序控制的事件。
  • 应用程序和服务日志 - Microsoft - Windows - AppLocker - MSI 和脚本 包括有关 MSI 安装程序、脚本和 COM 对象的控制事件。

WDAC 处于活动状态时发生的大多数应用和脚本故障都可以使用这两个事件日志进行诊断。 本文更详细地介绍了这些日志中存在的事件。 若要了解这些事件的详细信息中找到的不同数据元素或标记的含义,请参阅 了解应用程序控制事件标记

注意

应用程序和服务日志 - Microsoft - Windows - AppLocker - MSI 和脚本 事件不包括在 Windows Server Core 版中。

WDAC 阻止可执行文件、dll 和驱动程序的事件

这些事件位于 CodeIntegrity - 操作 事件日志中。

事件 ID 说明
3004 此事件不常见,在存在或没有应用程序控制策略的情况下都可能发生。 它通常表示内核驱动程序尝试使用无效签名进行加载。 例如,在需要 WHQL 的系统上,文件可能不是 WHQL 签名的。

对于开发人员选择加入 /INTEGRITYCHECK 但未正确签名的内核或用户模式代码,也可以看到此事件。
3033 此事件可能在存在或没有应用程序控制策略的情况下发生,如果由 WDAC 策略引起,则应与 3077 事件一起发生。 这通常意味着文件的签名被吊销或具有生存期签名 EKU 的签名已过期。 存在生存期签名 EKU 是唯一 WDAC 由于签名过期而阻止文件的情况。 尝试在策略中使用选项 20 Enabled:Revoked Expired As Unsigned 以及规则 (例如,不依赖于吊销或过期证书的哈希) 。

如果使用 代码完整性防护编译的代码 (CIG) 尝试加载不符合 CIG 要求的其他代码,也会发生此事件。
3034 此事件并不常见。 它是与事件 3033 等效的审核模式。
3076 此事件是审核模式策略main应用程序控制阻止事件。 它指示如果强制实施策略,文件将被阻止。
3077 此事件是强制实施策略main应用程序控制阻止事件。 它指示文件未通过策略并被阻止。
3089 此事件包含应用程序控制阻止或审核阻止的文件的签名信息。 为文件的每个签名创建其中一个事件。 每个事件显示找到的签名总数和用于标识当前签名的索引值。 未签名文件生成其中一个事件,TotalSignatureCount 为 0。 这些事件与 3004、3033、3034、3076 和 3077 事件相关。 可以使用在事件的Correlation ActivityID“系统”部分中找到的 来匹配事件。

WDAC 阻止已打包应用、MSI 安装程序、脚本和 COM 对象的事件

这些事件位于 AppLocker - MSI 和脚本 事件日志中。

事件 ID 说明
8028 此事件指示脚本主机(如 PowerShell)查询了有关脚本主机即将运行的文件的应用程序控制。 由于策略处于审核模式,因此脚本或 MSI 文件应已运行,但如果强制实施,则不会通过 WDAC 策略。 某些脚本主机的日志中可能有其他信息。 注意:大多数第三方脚本主机不与应用程序控制集成。 选择允许运行的脚本主机时,请考虑未验证脚本的风险。
8029 此事件相当于事件 8028 的强制模式。 注意:虽然此事件指示脚本已被阻止,但脚本主机控制实际的脚本强制行为。 脚本主机可能允许文件在有限制的情况下运行,而不是完全阻止文件。 例如,PowerShell 在 约束语言模式下运行 WDAC 策略不允许的脚本。
8036 COM 对象已被阻止。 若要详细了解 COM 对象授权,请参阅在Windows Defender应用程序控制策略中允许 COM 对象注册
8037 此事件指示脚本主机已检查是否允许脚本运行,并且文件已传递 WDAC 策略。
8038 与 8028 或 8029 事件相关的签名信息事件。 为脚本文件的每个签名生成一个 8038 事件。 包含脚本文件上的签名总数,以及有关其签名的索引。 未签名的脚本文件生成一个 TotalSignatureCount 为 0 的 8038 事件。 这些事件与 8028 和 8029 事件相关,可以使用事件“系统”部分中的 匹配Correlation ActivityID
8039 此事件表示,由于 WDAC 策略处于审核模式,因此允许安装或运行打包的应用 (MSIX/AppX) 。 但是,如果强制实施策略,则会阻止该策略。
8040 此事件指示由于 WDAC 策略而阻止已打包的应用安装或运行。

WDAC 策略激活事件

这些事件位于 CodeIntegrity - 操作 事件日志中。

事件 ID 说明
3095 无法刷新应用程序控制策略,必须改为重新启动。
3096 应用程序控制策略未刷新,因为它已是最新的。 此事件的详细信息包括有关策略的有用信息,例如其策略选项。
3097 无法刷新应用程序控制策略。
3099 指示已加载策略。 此事件的详细信息包括有关应用程序控制策略(例如其策略选项)的有用信息。
3100 应用程序控制策略已刷新,但未成功激活。 重试。
3101 已针对 N 个策略启动应用程序控制策略刷新。
3102 N 个策略 的应用程序控制策略刷新已完成。
3103 系统正在忽略应用程序控制策略刷新。 例如,不符合激活条件的收件箱 Windows 策略。
3105 系统尝试使用指定的 ID 刷新应用程序控制策略。

智能安全图 (ISG) 和托管安装程序 (MI) 的诊断事件

注意

启用托管安装程序后,使用 LogAnalytics 的客户应注意托管安装程序可能会触发许多 3091 事件。 客户可能需要筛选掉这些事件,以避免高 LogAnalytics 成本。

当 WDAC 策略包含 ISG 或 MI 选项时,以下事件可提供有用的诊断信息。 这些事件可帮助你根据托管安装程序或 ISG 调试允许/拒绝某些内容的原因。 事件 3090、3091 和 3092 不一定表示问题,但应与其他事件(如 3076 或 3077)一起查看。

除非另有说明,否则这些事件位于 CodeIntegrity - Operational 事件日志或 CodeIntegrity - Verbose 事件日志中,具体取决于你的 Windows 版本。

事件 ID 说明
3090 此事件指示允许文件完全基于 ISG 或托管安装程序运行。
3091 此事件指示文件没有 ISG 或托管安装程序授权,并且应用程序控制策略处于审核模式。
3092 此事件是等效于 3091 的强制模式。
8002 此事件位于 AppLocker - EXE 和 DLL 事件日志中。 当启动与托管安装程序规则匹配的进程时,会在事件详细信息中找到 PolicyName = MANAGEDINSTALLER 引发此事件。 PolicyName = EXE 或 DLL 的事件与 WDAC 无关。

系统按活动策略报告事件 3090、3091 和 3092,因此你可能会看到同一文件的多个事件。

ISG 和 MI 诊断事件详细信息

以下信息位于 3090、3091 和 3092 事件的详细信息中。

名称 说明
ManagedInstallerEnabled 指示指定的策略是否启用托管安装程序信任
PassManagedInstaller 指示文件是否源自 MI
SmartlockerEnabled 指示指定的策略是否启用 ISG 信任
PassSmartlocker 指示文件是否具有根据 ISG 的正面信誉
AuditEnabled 如此 如果应用程序控制策略处于审核模式,否则它处于强制模式
PolicyName 应用事件的应用程序控制策略的名称

启用 ISG 和 MI 诊断事件

若要启用 3090 允许事件,请创建值为 0x300 的 TestFlags regkey,如以下 PowerShell 命令所示。 然后重启计算机。

reg add hklm\system\currentcontrolset\control\ci -v TestFlags -t REG_DWORD -d 0x300

事件 3091 和 3092 在某些版本的 Windows 上处于非活动状态,并且由前面的命令打开。

附录

其他相关事件 ID 及其相应说明的列表。

事件 ID 描述
3001 尝试在系统上加载未签名的驱动程序。
3002 代码完整性无法验证启动映像,因为找不到页面哈希。
3004 代码完整性无法验证文件,因为找不到页面哈希。
3010 包含验证中文件的签名的目录无效。
3011 代码完整性已完成签名目录的加载。
3012 代码完整性开始加载签名目录。
3023 验证中的驱动程序文件不符合通过应用程序控制策略的要求。
3024 Windows 应用程序控件无法刷新启动目录文件。
3026 Microsoft 或证书颁发机构吊销了对目录进行签名的证书。
3032 正在验证的文件将被撤销,或者文件具有被吊销的签名。
3033 正在验证的文件不符合通过应用程序控制策略的要求。
3034 如果强制实施应用程序控制策略,正在验证的文件将无法满足通过应用程序控制策略的要求。 由于策略处于审核模式,因此允许该文件。
3036 Microsoft 或证书颁发机构吊销了对要验证的文件进行签名的证书。
3064 如果强制实施应用程序控制策略,则验证下的用户模式 DLL 将不符合传递应用程序控制策略的要求。 由于策略处于审核模式,因此允许使用 DLL。
3065 如果强制实施应用程序控制策略,则验证下的用户模式 DLL 将不符合传递应用程序控制策略的要求。
3074 启用虚拟机监控程序保护的代码完整性时页面哈希失败。
3075 此事件衡量文件验证期间应用程序控制策略检查的性能。
3076 此事件是审核模式策略main应用程序控制阻止事件。 它指示如果强制实施策略,文件将被阻止。
3077 此事件是强制实施策略main应用程序控制阻止事件。 它指示文件未通过策略并被阻止。
3079 正在验证的文件不符合通过应用程序控制策略的要求。
3080 如果应用程序控制策略处于强制模式,则验证中的文件不会满足通过应用程序控制策略的要求。
3081 正在验证的文件不符合通过应用程序控制策略的要求。
3082 如果强制实施应用程序控制策略,该策略会阻止此非 WHQL 驱动程序。
3084 代码完整性在此启动会话上强制实施 WHQL 驱动程序签名要求。
3085 代码完整性未在此启动会话上强制实施 WHQL 驱动程序签名要求。
3086 验证中的文件不满足隔离用户模式 (IUM) 过程的签名要求。
3089 此事件包含应用程序控制阻止或审核阻止的文件的签名信息。 为文件的每个签名创建一个 3089 事件。
3090 此事件指示允许文件完全基于 ISG 或托管安装程序运行。
3091 此事件指示文件没有 ISG 或托管安装程序授权,并且应用程序控制策略处于审核模式。
3092 此事件是等效于 3091 的强制模式。
3095 无法刷新应用程序控制策略,必须改为重新启动。
3096 应用程序控制策略未刷新,因为它已是最新的。
3097 无法刷新应用程序控制策略。
3099 指示已加载策略。 此事件还包括有关应用程序控制策略设置的选项的信息。
3100 应用程序控制策略已刷新,但未成功激活。 重试。
3101 系统开始刷新应用程序控制策略。
3102 系统已完成应用程序控制策略的刷新。
3103 系统正在忽略应用程序控制策略刷新。
3104 正在验证的文件不符合 PPL (受保护进程轻型) 的签名要求。
3105 系统正在尝试刷新应用程序控制策略。
3108 Windows 模式更改事件成功。
3110 Windows 模式更改事件失败。
3111 正在验证的文件不符合受虚拟机监控程序保护的代码完整性 (HVCI) 策略。
3112 Windows 已吊销了对要验证的文件进行签名的证书。
3114 动态代码安全性已选择将 .NET 应用或 DLL 加入应用程序控制策略验证。 验证中的文件未通过策略,并且被阻止。