了解应用控件事件
应用控件事件概述
应用控制会在加载策略、阻止文件或处于审核模式时阻止文件时记录事件。 这些块事件包括标识策略并提供有关块的更多详细信息的信息。 当允许使用二进制文件时,应用控制不会生成事件。 但是,你可以为托管安装程序授权的文件或 Intelligent Security Graph (ISG) 启用允许审核事件,如本文稍后所述。
核心应用控制事件日志
应用控制事件在 Windows 事件查看器的两个位置下生成:
- 应用程序和服务日志 - Microsoft - Windows - CodeIntegrity - 操作 包括有关应用控制策略激活和可执行文件、dll 和驱动程序控制的事件。
- 应用程序和服务日志 - Microsoft - Windows - AppLocker - MSI 和脚本 包括有关 MSI 安装程序、脚本和 COM 对象的控制事件。
应用控制处于活动状态时发生的大多数应用和脚本故障都可以使用这两个事件日志进行诊断。 本文更详细地介绍了这些日志中存在的事件。 若要了解这些事件的详细信息中找到的不同数据元素或标记的含义,请参阅 了解应用控件事件标记。
注意
应用程序和服务日志 - Microsoft - Windows - AppLocker - MSI 和脚本 事件不包括在 Windows Server 核心版中。
应用控制阻止可执行文件、dll 和驱动程序的事件
这些事件位于 CodeIntegrity - 操作 事件日志中。
事件 ID | 说明 |
---|---|
3004 | 此事件并不常见,在应用控制策略存在或没有应用控制策略的情况下都可能发生。 它通常表示内核驱动程序尝试使用无效签名进行加载。 例如,在需要 WHQL 的系统上,文件可能不是 WHQL 签名的。 对于开发人员选择加入 /INTEGRITYCHECK 但未正确签名的内核或用户模式代码,也可以看到此事件。 |
3033 | 此事件可能在存在或没有应用控制策略的情况下发生,并且应与 3077 事件一起发生(如果由应用控制策略引起)。 这通常意味着文件的签名被吊销或具有生存期签名 EKU 的签名已过期。 存在生存期签名 EKU 是应用控制因签名过期而阻止文件的唯一情况。 尝试在策略中使用选项 20 Enabled:Revoked Expired As Unsigned 以及规则 (例如,不依赖于吊销或过期证书的哈希) 。如果使用 代码完整性防护编译的代码 (CIG) 尝试加载不符合 CIG 要求的其他代码,也会发生此事件。 |
3034 | 此事件并不常见。 它是与事件 3033 等效的审核模式。 |
3076 | 此事件是审核模式策略main应用控制阻止事件。 它指示如果强制实施策略,文件将被阻止。 |
3077 | 此事件是强制实施策略main应用控制阻止事件。 它指示文件未通过策略并被阻止。 |
3089 | 此事件包含应用控制阻止或审核阻止的文件的签名信息。 为文件的每个签名创建其中一个事件。 每个事件显示找到的签名总数和用于标识当前签名的索引值。 未签名文件生成其中一个事件,TotalSignatureCount 为 0。 这些事件与 3004、3033、3034、3076 和 3077 事件相关。 可以使用在事件的Correlation ActivityID “系统”部分中找到的 来匹配事件。 |
应用控制阻止打包应用、MSI 安装程序、脚本和 COM 对象的事件
这些事件位于 AppLocker - MSI 和脚本 事件日志中。
事件 ID | 说明 |
---|---|
8028 | 此事件指示脚本主机(如 PowerShell)查询应用控件有关脚本主机即将运行的文件。 由于策略处于审核模式,因此脚本或 MSI 文件应已运行,但如果强制实施,则不会通过应用控制策略。 某些脚本主机的日志中可能有其他信息。 注意:大多数第三方脚本主机不与应用控件集成。 选择允许运行的脚本主机时,请考虑未验证脚本的风险。 |
8029 | 此事件相当于事件 8028 的强制模式。 注意:虽然此事件指示脚本已被阻止,但脚本主机控制实际的脚本强制行为。 脚本主机可能允许文件在有限制的情况下运行,而不是完全阻止文件。 例如,PowerShell 在 约束语言模式下运行应用控制策略不允许的脚本。 |
8036 | COM 对象已被阻止。 若要了解有关 COM 对象授权的详细信息,请参阅 允许企业应用控制策略中的 COM 对象注册。 |
8037 | 此事件指示脚本主机已检查是否允许脚本运行,并且文件已传递应用控制策略。 |
8038 | 与 8028 或 8029 事件相关的签名信息事件。 为脚本文件的每个签名生成一个 8038 事件。 包含脚本文件上的签名总数,以及有关其签名的索引。 未签名的脚本文件生成一个 TotalSignatureCount 为 0 的 8038 事件。 这些事件与 8028 和 8029 事件相关,可以使用事件“系统”部分中的 匹配Correlation ActivityID 。 |
8039 | 此事件指示已允许安装或运行打包的应用 (MSIX/AppX) ,因为应用控制策略处于审核模式。 但是,如果强制实施策略,则会阻止该策略。 |
8040 | 此事件表示由于应用控制策略,已阻止已打包的应用安装或运行。 |
应用控制策略激活事件
这些事件位于 CodeIntegrity - 操作 事件日志中。
事件 ID | 说明 |
---|---|
3095 | 无法刷新应用控制策略,必须改为重新启动。 |
3096 | 由于应用控制策略已更新,因此未刷新。 此事件的详细信息包括有关策略的有用信息,例如其策略选项。 |
3097 | 无法刷新应用控制策略。 |
3099 | 指示已加载策略。 此事件的详细信息包括有关应用控制策略(例如其策略选项)的有用信息。 |
3100 | 应用控制策略已刷新,但未成功激活。 重试。 |
3101 | 已针对 N 个策略启动应用控制策略刷新。 |
3102 | N 个策略的应用控制策略刷新已完成。 |
3103 | 系统忽略应用控制策略刷新。 例如,不符合激活条件的收件箱 Windows 策略。 |
3105 | 系统尝试使用指定的 ID 刷新应用控制策略。 |
智能安全图 (ISG) 和托管安装程序 (MI) 的诊断事件
注意
启用托管安装程序后,使用 LogAnalytics 的客户应注意托管安装程序可能会触发许多 3091 事件。 客户可能需要筛选掉这些事件,以避免高 LogAnalytics 成本。
当应用控制策略包含 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 的事件与应用控制无关。 |
系统按活动策略报告事件 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 App Control 无法刷新启动目录文件。 |
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 加入应用控制策略验证。 验证中的文件未通过策略,并且被阻止。 |