了解應用程控事件
應用程控事件概觀
應用程式控制在載入原則、封鎖檔案時,或在稽核模式下封鎖檔案時記錄事件。 這些區塊事件包含可識別原則的資訊,並提供有關區塊的詳細數據。 允許二進位檔時,應用程控不會產生事件。 不過,您可以開啟允許受管理安裝程式或 Intelligent Security Graph (ISG) 授權檔案的稽核事件,如本文稍後所述。
核心應用程控事件記錄檔
應用程式控制事件會在 Windows 事件檢視器 中的兩個位置下產生:
- 應用程式和服務記錄 - Microsoft - Windows - CodeIntegrity - 作業 包含有關應用程控原則啟用和可執行檔、dll 和驅動程式控制的事件。
- 應用程式和服務記錄 - Microsoft - Windows - AppLocker - MSI 和腳本 包含有關 MSI 安裝程式、腳本和 COM 物件控制的事件。
大部分在應用程控作用中時發生的應用程式和腳本失敗,都可以使用這兩個事件記錄檔來診斷。 本文將更詳細地說明這些記錄中存在的事件。 若要瞭解不同數據元素或標籤的意義,請參閱 瞭解應用程控事件標籤。
注意
應用程式和服務記錄 - Microsoft - Windows - AppLocker - MSI 和腳本 事件不包含在 Windows Server Core 版本中。
應用程式控制程式會封鎖可執行檔、dll 和驅動程式的事件
這些事件位於 CodeIntegrity - 作業 事件記錄檔中。
事件識別碼 | 說明 |
---|---|
3004 | 此事件不常見,不一有應用程控原則就可能發生。 這通常表示核心驅動程式嘗試載入無效的簽章。 例如,在需要 WHQL 的系統上,檔案可能不是 WHQL 簽署的。 對於開發人員加入加入 /INTEGRITYCHECK 但未正確簽署的核心或使用者模式程序代碼,也會看到此事件。 |
3033 | 此事件可能會在應用程控原則存在或不存在的情況下發生,如果是由應用程控原則所造成,則應該與 3077 事件一起發生。 這通常表示檔案的簽章已撤銷,或具有存留期簽署 EKU 的簽章已過期。 存留期簽署 EKU 是應用程控因簽章過期而封鎖檔案的唯一案例。 請嘗試在原則中使用 選項 20 Enabled:Revoked Expired As Unsigned ,以及規則 (例如,不依賴撤銷或過期憑證的哈希) 。如果使用 程式代碼完整性防護編譯的程式代碼 (CIG) 嘗試載入不符合 CIG 需求的其他程式碼,也會發生此事件。 |
3034 | 此事件不常見。 其稽核模式相當於事件 3033。 |
3076 | 此事件是稽核模式原則的主要應用程控區塊事件。 指出如果強制執行原則,檔案會遭到封鎖。 |
3077 | 此事件是強制執行原則的主要應用程控區塊事件。 指出檔案未通過您的原則,且遭到封鎖。 |
3089 | 此事件包含應用程式控制封鎖或稽核封鎖之檔案的簽章資訊。 系統會針對檔案的每個簽章建立其中一個事件。 每個事件都會顯示找到的簽章總數,以及用來識別目前簽章的索引值。 未簽署的檔案會產生其中一個 TotalSignatureCount 為 0 的事件。 這些事件與 3004、3033、3034、3076 和 3077 事件相互關聯。 您可以使用 Correlation ActivityID 在事件的 [ 系統 ] 部分中找到的 來比對事件。 |
應用程式控制封鎖已封裝應用程式、MSI 安裝程式、腳本和 COM 物件的事件
這些事件可在 AppLocker - MSI 和腳本 事件記錄檔中找到。
事件識別碼 | 說明 |
---|---|
8028 | 此事件指出文本主機,例如 PowerShell,查詢應用程式控制件有關腳本主機即將執行的檔案。 由於原則處於稽核模式,因此腳本或 MSI 檔案應該已執行,但如果強制執行,就不會通過應用程控原則。 某些腳本主機可能在其記錄中具有其他資訊。 注意:大部分的第三方腳本主機不會與應用程控整合。 選擇您允許執行的文稿主機時,請考慮未驗證文本的風險。 |
8029 | 此事件相當於事件 8028 的強制模式。 注意:雖然此事件指出腳本已遭到封鎖,但腳本主機會控制實際的腳本強制執行行為。 腳本主機可能會允許檔案以限制執行,而不會直接封鎖檔案。 例如,PowerShell 會在 限制語言模式中執行您的應用程控原則不允許的腳本。 |
8036 | 已封鎖 COM 物件。 若要深入瞭解 COM 物件授權,請參閱 在商務用應用程控原則中允許 COM 對象註冊。 |
8037 | 此事件指出文本主機已檢查是否允許執行腳本,且檔案已通過應用程控原則。 |
8038 | 簽署資訊事件與 8028 或 8029 事件相互關聯。 腳本檔案的每個簽章都會產生一個 8038 事件。 包含腳本檔案上的簽章總數,以及其簽章的索引。 未簽署的腳本檔案會產生 TotalSignatureCount 0 的單一 8038 事件。 這些事件會與 8028 和 8029 事件相互關聯,而且可以使用 Correlation ActivityID 在事件的 System 部分中找到的 進行比對。 |
8039 | 此事件指出已封裝 (MSIX/AppX) 的應用程式已允許安裝或執行,因為應用程控原則處於稽核模式。 但是,如果強制執行原則,它就會遭到封鎖。 |
8040 | 此事件表示已封裝的應用程式因為應用程控原則而無法安裝或執行。 |
應用程控原則啟用事件
這些事件位於 CodeIntegrity - 作業 事件記錄檔中。
事件識別碼 | 說明 |
---|---|
3095 | 應用程式控制原則無法重新整理,必須改為重新啟動。 |
3096 | 應用程式控制原則尚未重新整理,因為它已經是最新狀態。 此事件的詳細數據包含原則的實用資訊,例如其原則選項。 |
3097 | 無法重新整理應用程控原則。 |
3099 | 表示已載入原則。 此事件的詳細數據包含應用程控原則的實用資訊,例如其原則選項。 |
3100 | 應用程式控制原則已重新整理,但未成功啟動。 重試。 |
3101 | N 原則的應用程控原則重新整理已啟動。 |
3102 | N 原則的應用程控原則重新整理已完成。 |
3103 | 系統會忽略應用程控原則重新整理。 例如,不符合啟用條件的收件匣 Windows 原則。 |
3105 | 系統嘗試使用指定的標識元重新整理應用程控原則。 |
Intelligent Security Graph (ISG) 和 Managed Installer (MI) 的診斷事件
注意
啟用 Managed Installer 時,使用 LogAnalytics 的客戶應該注意,受管理的安裝程式可能會引發許多 3091 事件。 客戶可能需要篩選掉這些事件,以避免高 LogAnalytics 成本。
當應用程控原則包含ISG或MI選項時,下列事件會提供有用的診斷資訊。 這些事件可協助您偵錯為何根據受管理的安裝程式或ISG允許/拒絕某些專案。 事件 3090、3091 和 3092 不一定表示有問題,但應在內容中檢閱其他事件,例如 3076 或 3077。
除非另有註明,否則這些事件會在 CodeIntegrity - Operational 事件記錄檔或 CodeIntegrity - 詳細 資訊事件記錄檔中找到,視您的 Windows 版本而定。
事件識別碼 | 說明 |
---|---|
3090 | 自選 此事件表示檔案只允許根據ISG或受管理的安裝程序來執行。 |
3091 | 此事件表示檔案沒有ISG或受管理的安裝程序授權,且應用程控原則處於稽核模式。 |
3092 | 此事件相當於 3091 的強制模式。 |
8002 | 此事件位於 AppLocker - EXE 和 DLL 事件記錄檔中。 當進程啟動且符合受管理的安裝程序規則時,會使用在事件詳細數據中找到的 PolicyName = MANAGEDINSTALLER 引發此事件。 PolicyName = EXE 或 DLL 的事件與應用程控無關。 |
系統上每個作用中原則都會報告事件 3090、3091 和 3092,因此您可能會看到相同檔案的多個事件。
ISG 和MI診斷事件詳細數據
下列資訊位於 3090、3091 和 3092 事件的詳細數據中。
名稱 | 說明 |
---|---|
ManagedInstallerEnabled | 指出指定的原則是否啟用受管理的安裝程式信任 |
PassesManagedInstaller | 指出檔案是否源自MI |
SmartlockerEnabled | 指出指定的原則是否啟用ISG信任 |
PassesSmartlocker | 根據ISG指出檔案是否具有正面信譽 |
AuditEnabled | 如果應用程控原則處於稽核模式,則為 True,否則為強制執行模式 |
PolicyName | 套用事件的應用程控原則名稱 |
啟用ISG和MI診斷事件
若要啟用 3090 允許事件,請建立 TestFlags regkey,其值為 0x300,如下列 PowerShell 命令所示。 然後重新啟動您的電腦。
reg add hklm\system\currentcontrolset\control\ci -v TestFlags -t REG_DWORD -d 0x300
事件 3091 和 3092 在某些 Windows 版本上處於非作用中狀態,並由上述命令開啟。
附錄
其他相關事件標識碼及其對應描述的清單。
事件識別碼 | 描述 |
---|---|
3001 | 嘗試在系統上載入未簽署的驅動程式。 |
3002 | 程序代碼完整性無法驗證開機映射,因為找不到頁面哈希。 |
3004 | 程序代碼完整性無法驗證檔案,因為找不到頁面哈希。 |
3010 | 包含驗證中檔案簽章的目錄無效。 |
3011 | 程式代碼完整性已完成載入簽章目錄。 |
3012 | 程式代碼完整性開始載入簽章目錄。 |
3023 | 正在驗證的驅動程式檔案不符合通過應用程控原則的需求。 |
3024 | Windows App 控件無法重新整理開機類別目錄檔案。 |
3026 | Microsoft或證書頒發機構單位撤銷簽署目錄的憑證。 |
3032 | 正在驗證的檔案會被撤銷,或檔案具有已撤銷的簽章。 |
3033 | 進行驗證的檔案不符合通過應用程控原則的需求。 |
3034 | 如果強制執行,受驗證的檔案將不符合通過應用程控原則的需求。 因為原則處於稽核模式,所以允許檔案。 |
3036 | Microsoft或證書頒發機構單位撤銷簽署要驗證之檔案的憑證。 |
3064 | 如果強制執行應用程控原則,驗證下的使用者模式 DLL 將不符合通過應用程控原則的需求。 由於原則處於稽核模式,因此允許 DLL。 |
3065 | 如果強制執行應用程控原則,驗證下的使用者模式 DLL 將不符合通過應用程控原則的需求。 |
3074 | 啟用受 Hypervisor 保護的程式代碼完整性時,頁面哈希失敗。 |
3075 | 此事件會測量檔案驗證期間應用程控原則檢查的效能。 |
3076 | 此事件是稽核模式原則的主要應用程控區塊事件。 指出如果強制執行原則,檔案會遭到封鎖。 |
3077 | 此事件是強制執行原則的主要應用程控區塊事件。 指出檔案未通過您的原則,且遭到封鎖。 |
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 | 進行驗證的檔案不符合受 Hypervisor 保護的程式代碼完整性 (HVCI) 原則。 |
3112 | Windows 已撤銷簽署要驗證之檔案的憑證。 |
3114 | 動態程式代碼安全性選擇 .NET 應用程式或 DLL 加入應用程控原則驗證。 正在驗證的檔案未通過您的原則,並遭到封鎖。 |