9.5 KiB
title, description, keywords, ms.assetid, ms.prod, ms.mktglfcycl, ms.sitesec, ms.pagetype, ms.localizationpriority, audience, ms.collection, author, ms.reviewer, ms.author, manager, ms.date, ms.technology
title | description | keywords | ms.assetid | ms.prod | ms.mktglfcycl | ms.sitesec | ms.pagetype | ms.localizationpriority | audience | ms.collection | author | ms.reviewer | ms.author | manager | ms.date | ms.technology |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Understanding Application Control event IDs (Windows) | Learn what different Windows Defender Application Control event IDs signify. | security, malware | 8d6e0474-c475-411b-b095-1c61adb2bdbb | m365-security | deploy | library | security | medium | ITPro | M365-security-compliance | jsuther1974 | isbrahm | dansimp | dansimp | 06/02/2021 | mde |
Understanding Application Control events
A Windows Defender Application Control (WDAC) policy logs events locally in Windows Event Viewer in either enforced or audit mode. These events are generated under two locations:
-
Event IDs beginning with 30 appear in Applications and Services logs > Microsoft > Windows > CodeIntegrity > Operational
-
Event IDs beginning with 80 appear in Applications and Services logs > Microsoft > Windows > AppLocker > MSI and Script
Note
These event IDs are not applicable on Windows Server Core edition.
Microsoft Windows CodeIntegrity Operational log event IDs
Event ID | Explanation |
---|---|
3076 | Audit executable/dll file |
3077 | Block executable/dll file |
3089 | Signing information event correlated with either a 3076 or 3077 event. One 3089 event is generated for each signature of a file. Contains the total number of signatures on a file and an index as to which signature it is. Unsigned files will generate a single 3089 event with TotalSignatureCount 0. Correlated in the "System" portion of the event data under "Correlation ActivityID". |
3099 | Indicates that a policy has been loaded |
Microsoft Windows AppLocker MSI and Script log event IDs
Event ID | Explanation |
---|---|
8028 | Audit script/MSI file generated by Windows LockDown Policy (WLDP) being called by the script hosts themselves. Note: there is no WDAC enforcement on third-party script hosts. |
8029 | Block script/MSI file |
8036 | COM object was blocked. To learn more about COM object authorization, see Allow COM object registration in a Windows Defender Application Control policy. |
8038 | Signing information event correlated with either an 8028 or 8029 event. One 8038 event is generated for each signature of a script file. Contains the total number of signatures on a script file and an index as to which signature it is. Unsigned script files will generate a single 8038 event with TotalSignatureCount 0. Correlated in the "System" portion of the event data under "Correlation ActivityID". |
Optional Intelligent Security Graph (ISG) or Managed Installer (MI) diagnostic events
If either the ISG or MI is enabled in a WDAC policy, you can optionally choose to enable 3090, 3091, and 3092 events to provide more diagnostic information.
Event ID | Explanation |
---|---|
3090 | Allow executable/dll file |
3091 | Audit executable/dll file |
3092 | Block executable/dll file |
3090, 3091, and 3092 events are generated based on the status code of whether a binary passed the policy, regardless of what reputation it was given or whether it was allowed by a designated MI. The SmartLocker template that appears in the event should indicate why the binary passed/failed. Only one event is generated per binary pass/fail. If both ISG and MI are disabled, 3090, 3091, and 3092 events will not be generated.
SmartLocker template
Below are the fields that help to diagnose what a 3090, 3091, or 3092 event indicates.
Name | Explanation |
---|---|
StatusCode | STATUS_SUCCESS indicates a binary passed the active WDAC policies. If so, a 3090 event is generated. If not, a 3091 event is generated if the blocking policy is in audit mode, and a 3092 event is generated if the policy is in enforce mode. |
ManagedInstallerEnabled | Policy trusts a MI |
PassesManagedInstaller | File originated from a trusted MI |
SmartlockerEnabled | Policy trusts the ISG |
PassesSmartlocker | File had positive reputation |
AuditEnabled | True if the policy is in audit mode, otherwise it is in enforce mode |
Enabling ISG and MI diagnostic events
In order to enable 3091 audit events and 3092 block events, you must create a TestFlags regkey with a value of 0x100. You can do so using the following PowerShell command:
reg add hklm\system\currentcontrolset\control\ci -v TestFlags -t REG_DWORD -d 0x100
To enable 3090 allow events, and 3091 and 3092 events, you must instead create a TestFlags regkey with a value of 0x300. You can do so using the following PowerShell command:
reg add hklm\system\currentcontrolset\control\ci -v TestFlags -t REG_DWORD -d 0x300
System Integrity Policy Options
The WDAC policy rule-option values can be derived from the "Options" field in the Details section of the Code integrity 3099 event. To parse the values, first convert the hex value to binary. Next, use the bit addresses and their values from the table below to determine the state of each policy rule-option.
Bit Address | Policy Rule Option |
---|---|
2 | Enabled:UMCI |
3 | Enabled:Boot Menu Protection |
4 | Enabled:Intelligent Security Graph Authorization |
5 | Enabled:Invalidate EAs on Reboot |
7 | Required:WHQL |
10 | Enabled:Allow Supplemental Policies |
11 | Disabled:Runtime FilePath Rule Protection |
13 | Enabled:Revoked Expired As Unsigned |
16 | Enabled:Audit Mode (Default) |
17 | Disabled:Flight Signing |
18 | Enabled:Inherit Default Policy |
19 | Enabled:Unsigned System Integrity Policy (Default) |
20 | Enabled:Dynamic Code Security |
21 | Required:EV Signers |
22 | Enabled:Boot Audit on Failure |
23 | Enabled:Advanced Boot Options Menu |
24 | Disabled:Script Enforcement |
25 | Required:Enforce Store Applications |
27 | Enabled:Managed Installer |
28 | Enabled:Update Policy No Reboot |
Appendix
A list of other relevant event IDs and their corresponding description.
Event ID | Description |
---|---|
3001 | An unsigned driver was attempted to load on the system. |
3002 | Code Integrity could not verify the boot image as the page hash could not be found. |
3004 | Code Integrity could not verify the file as the page hash could not be found. |
3010 | The catalog containing the signature for the file under validation is invalid. |
3011 | Code Integrity finished loading the signature catalog. |
3012 | Code Integrity started loading the signature catalog. |
3023 | The driver file under validation did not meet the requirements to pass the application control policy. |
3024 | Windows application control was unable to refresh the boot catalog file. |
3026 | The catalog loaded is signed by a signing certificate that has been revoked by Microsoft and/or the certificate issuing authority. |
3033 | The file under validation did not meet the requirements to pass the application control policy. |
3034 | The file under validation would not meet the requirements to pass the application control policy if the policy was enforced. The file was allowed since the policy is in audit mode. |
3036 | The signed file under validation is signed by a code signing certificate that has been revoked by Microsoft or the certificate issuing authority. |
3064 | If the policy was enforced, a user mode DLL under validation would not meet the requirements to pass the application control policy. The DLL was allowed since the policy is in audit mode. |
3065 | [Ignored] If the policy was enforced, a user mode DLL under validation would not meet the requirements to pass the application control policy. |
3074 | Page hash failure while hypervisor-protected code integrity was enabled. |
3075 | This event monitors the performance of the Code Integrity policy check a file. |
3079 | The file under validation did not meet the requirements to pass the application control policy. |
3080 | If the policy was in enforced mode, the file under validation would not have met the requirements to pass the application control policy. |
3081 | The file under validation did not meet the requirements to pass the application control policy. |
3082 | If the policy was in enforced mode, the non-WHQL driver would have been denied by the policy. |
3084 | Code Integrity will enforce the WHQL Required policy setting on this session. |
3085 | Code Integrity will not enforce the WHQL Required policy setting on this session. |
3086 | The file under validation does not meet the signing requirements for an isolated user mode (IUM) process. |
3095 | This Code Integrity policy cannot be refreshed and must be rebooted instead. |
3097 | The Code Integrity policy cannot be refreshed. |
3100 | The application control policy was refreshed but was unsuccessfully activated. Retry. |
3101 | Code Integrity started refreshing the policy. |
3102 | Code Integrity finished refreshing the policy. |
3103 | Code Integrity is ignoring the policy refresh. |
3104 | The file under validation does not meet the signing requirements for a PPL (protected process light) process. |
3105 | Code Integrity is attempting to refresh the policy. |
3108 | Windows mode change event was successful. |
3110 | Windows mode change event was unsuccessful. |
3111 | The file under validation did not meet the hypervisor-protected code integrity (HVCI) policy. |