Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Nota
Alcune funzionalità di Controllo delle applicazioni per le aziende sono disponibili solo in versioni specifiche di Windows. Altre informazioni sulla disponibilità della funzionalità Controllo app.
Questo articolo descrive come eseguire il debug e risolvere gli errori di app e script quando si usa Controllo delle applicazioni per le aziende.
1 - Raccogliere i dati di diagnostica di Controllo app
Prima di eseguire il debug e risolvere i problemi di Controllo app, è necessario raccogliere informazioni da un dispositivo che mostra il comportamento problematico.
Esegui i comandi seguenti da una finestra di PowerShell con privilegi elevati per raccogliere le informazioni di diagnostica necessarie:
Raccogliere i dati di diagnostica generali di Controllo app e copiarli in %userprofile%\AppData\Local\Temp\DiagOutputDir\CiDiag:
cidiag.exe /stopSe CiDiag.exe non è presente nella tua versione di Windows, raccogli queste informazioni manualmente:
- File binari dei criteri di controllo delle applicazioni dalle partizioni di sistema Windows ed EFI
- Registri eventi di Controllo delle app
- I registri eventi di AppLocker
- Altri registri eventi che possono contenere informazioni utili da altre app e servizi di Windows
Salva le informazioni di sistema del dispositivo nella cartella CiDiag:
msinfo32.exe /report $env:USERPROFILE\AppData\Local\Temp\DiagOutputDir\CiDiag\SystemInformation.txtUsare CiTool.exe per eseguire l'inventario dell'elenco dei criteri di Controllo app nel dispositivo. Ignorare questo passaggio se CiTool.exe non è presente nella versione di Windows in uso.
citool.exe -lp -json > $env:USERPROFILE\AppData\Local\Temp\DiagOutputDir\CiDiag\CiToolOutput.jsonEsportare i dati della chiave del Registro di sistema di AppLocker nella cartella CiDiag:
reg.exe query HKLM\Software\Policies\Microsoft\Windows\SrpV2 /s > $env:USERPROFILE\AppData\Local\Temp\DiagOutputDir\CiDiag\AppLockerRegistry.txt; reg.exe query HKLM\Software\Policies\Microsoft\Windows\AppidPlugins /s >> $env:USERPROFILE\AppData\Local\Temp\DiagOutputDir\CiDiag\AppLockerRegistry.txt; reg.exe query HKLM\System\CurrentControlSet\Control\Srp\ /s >> $env:USERPROFILE\AppData\Local\Temp\DiagOutputDir\CiDiag\AppLockerRegistry.txtNota
È possibile che venga visualizzato un errore che indica che il sistema non è riuscito a trovare la chiave o il valore del Registro di sistema specificato. Questo errore non indica un problema e può essere ignorato.
Copiare i file dei criteri di AppLocker da %windir%System32\AppLocker alla cartella CiDiag:
Copy-Item -Path $env:windir\System32\AppLocker -Destination $env:USERPROFILE\AppData\Local\Temp\DiagOutputDir\CiDiag\ -Recurse -Force -ErrorAction IgnoreRaccogliere le informazioni sui file dei criteri di AppLocker raccolti nel passaggio precedente:
Get-ChildItem -Path $env:windir\System32\AppLocker\ -Recurse | select Mode,LastWriteTime,CreationTime,Length,Name >> $env:USERPROFILE\AppData\Local\Temp\DiagOutputDir\CiDiag\AppLockerPolicyFiles.txtEsportare i criteri di AppLocker effettivi:
Get-AppLockerPolicy -xml -Effective > $env:USERPROFILE\AppData\Local\Temp\DiagOutputDir\CiDiag\AppLocker.xmlRaccogliere le informazioni sullo stato e la configurazione dei servizi AppLocker:
sc.exe query appid > $env:USERPROFILE\AppData\Local\Temp\DiagOutputDir\CiDiag\AppLockerServices.txt; sc.exe query appidsvc >> $env:USERPROFILE\AppData\Local\Temp\DiagOutputDir\CiDiag\AppLockerServices.txt; sc.exe query applockerfltr >> $env:USERPROFILE\AppData\Local\Temp\DiagOutputDir\CiDiag\AppLockerServices.txt
Registri eventi di Controllo delle app di base
Gli eventi di controllo delle app vengono generati in due posizioni:
- Registri applicazioni e servizi - Microsoft - Windows - CodeIntegrity - Operativo
- Log applicazioni e servizi - Microsoft - Windows - AppLocker - MSI e script
All'interno della directory di output CiDiag, questi registri eventi sono denominati rispettivamente CIOperational.evtx e ALMsiAndScript.evtx.
Altri registri eventi di Windows che possono essere utili
A volte è possibile integrare le informazioni contenute nei registri eventi di Controllo app di base con informazioni presenti in questi altri registri eventi. CiDiag.exe non raccoglie quelle visualizzate in corsivo.
- Registri applicazioni e servizi - Microsoft - Windows - CodeIntegrity - Dettagliato
- Log applicazioni e servizi - Microsoft - Windows - AppLocker - file EXE e DLL
- Log delle applicazioni e dei servizi - Microsoft - Windows - AppLocker - Distribuzione di app in pacchetto
- Log delle applicazioni e dei servizi - Microsoft - Windows - AppLocker - Esecuzione di app in pacchetto
- Registri applicazioni e servizi - Microsoft - Windows - AppID - Operativo
- Log applicazioni e servizi - Microsoft - Windows - CAPI2 - Operativo
- Registri applicazioni e servizi - Microsoft - Windows - DeviceGuard - Operativo
- Log applicazioni e servizi - Microsoft - Windows - PowerShell - *
- Windows - Applicazione
- Windows - Sistema
2 - Usare i dati di diagnostica e di log per identificare i problemi
Dopo aver raccolto le informazioni di diagnostica necessarie da un dispositivo, sei pronto per iniziare l'analisi dei dati di diagnostica raccolti nella sezione precedente.
Verificare il set di criteri di controllo delle app attivi e applicati. Verificare che solo i criteri che si prevede siano attivi siano attualmente attivi. Tenere presente i criteri di Windows inbox che potrebbero essere attivi. È possibile utilizzare uno dei metodi seguenti:
- Rivedere l'output di CiTool.exe -lp, se applicabile, che è stato salvato nella directory di output di CiDiag come CiToolOutput.json. Vedi Usare Microsoft Edge per visualizzare il file JSON formattato.
- Esaminare tutti gli eventi di attivazione dei criteri dal registro eventi di controllo delle app principale disponibile nei registri applicazioni e servizi - Microsoft - Windows - CodeIntegrity - Operativo. All'interno della directory di output CiDiag, questo registro eventi è denominato CIOperational.evtx.
Esamina tutti gli eventi di blocco per eseguibili, DLL e driver dal registro eventi di Controllo app principale disponibile in Registri applicazioni e servizi - Microsoft - Windows - CodeIntegrity - Operativo. All'interno della directory di output CiDiag, questo registro eventi è denominato CIOperational.evtx. Usa le informazioni degli eventi di blocco e dei loro eventi correlati ai dettagli della firma 3089 per analizzare eventuali blocchi inspiegabili o imprevisti. Per riferimento, vedere l'esempio di eseguibile bloccato descritto più avanti in questo articolo.
Esaminare tutti gli eventi di blocco per le app in pacchetto, i programmi di installazione MSI, gli script e gli oggetti COM dal registro eventi per l'applicazione degli script principale disponibile nei log applicazioni e servizi - Microsoft - Windows - AppLocker - MSI e script. All'interno della directory di output CiDiag, questo registro eventi è denominato ALMsiAndScript.evtx. Usa le informazioni degli eventi di blocco e dei loro eventi correlati con i dettagli della firma 8038 per analizzare eventuali blocchi inspiegabili o imprevisti.
La maggior parte dei problemi correlati a Controllo app, inclusi gli errori di app e script, può essere diagnosticata usando i passaggi precedenti.
Analisi degli eventi per un eseguibile bloccato di esempio
Ecco un esempio di EventData dettagliato da un tipico evento di blocco della modalità di applicazione di Controllo app 3077 e uno dei relativi eventi di informazioni sulla firma 3089 correlati. Le tabelle che seguono ogni screenshot dell'evento descrivono alcuni degli elementi contenuti negli eventi. Dopo le descrizioni degli eventi viene fornita una procedura dettagliata che spiega come usare gli eventi per comprendere il motivo per cui si è verificato il blocco.
Evento 3077 - Evento di blocco imposizione controllo app
| Nome elemento | Descrizione |
|---|---|
| Sistema - Correlazione - [ActivityID] |
Non mostrato nello screenshot Usare ActivityID di correlazione per trovare la corrispondenza di un evento di blocco di Controllo app con uno o più eventi di firma 3089. |
| Nome del file | Percorso e nome del file sul disco la cui esecuzione è stata bloccata. Poiché il nome su disco è modificabile, questo valore non è quello usato durante la creazione di regole del file di controllo delle app con -Level FileName. Vedere invece l'elemento OriginalFileName più avanti in questa tabella. |
| Nome del processo | Percorso e nome del file che ha tentato di eseguire il file bloccato. Detto anche processo padre. |
| Livello di firma richiesto | Livello di autorizzazione alla firma di Windows che il codice deve passare per l'esecuzione. Vedere Livello di firma richiesto e convalidato. |
| Livello di firma convalidato | Il livello di autorizzazione alla firma di Windows fornito al codice. Vedere Livello di firma richiesto e convalidato. |
| Stato | Codice di stato di Windows NT. Puoi usarlo certutil.exe -error <status> per cercare il significato del codice di stato. |
| SHA1 Hash | Hash Authenticode SHA1 per il file bloccato. |
| SHA256 Hash | Hash Authenticode SHA256 per il file bloccato. |
| SHA1 Hash piatto | Hash del file flat SHA1 per il file bloccato. |
| SHA256 Hash piatto | Hash del file flat SHA256 per il file bloccato. |
| Nome criterio | Nome descrittivo del criterio di controllo delle app che ha causato l'evento di blocco. Per ogni criterio che blocca l'esecuzione del file viene visualizzato un evento di blocco 3077 (o evento di blocco di controllo 3076) separato. |
| PolicyId | Valore dell'ID descrittivo dei criteri di Controllo app che ha causato l'evento di blocco. |
| PolicyHash | Hash SHA256 Authenticode del binario dei criteri Controllo app che ha causato l'evento di blocco. |
| OriginalFileName | Nome file non modificabile impostato dallo sviluppatore nell'intestazione della risorsa del file bloccato. Questo valore è quello utilizzato durante la creazione di regole del file di controllo delle app con -Level FileName. |
| InternalName | Un altro valore non modificabile impostato dallo sviluppatore nell'intestazione della risorsa del file bloccato. È possibile sostituire questo valore per OriginalFileName nelle regole file con -Level FileName -SpecificFileNameLevel InternalName. |
| Descrizione del file | Un altro valore non modificabile impostato dallo sviluppatore nell'intestazione della risorsa del file bloccato. È possibile sostituire questo valore per OriginalFileName nelle regole file con -Level FileName -SpecificFileNameLevel FileDescription. |
| ProductName | Un altro valore non modificabile impostato dallo sviluppatore nell'intestazione della risorsa del file bloccato. È possibile sostituire questo valore per OriginalFileName nelle regole file con -Level FileName -SpecificFileNameLevel ProductName. |
| Versione del file | Valore VersionEx del criterio utilizzato per applicare il controllo della versione sui criteri firmati. |
| PolicyGUID | PolicyId dei criteri di Controllo app che ha causato l'evento di blocco. |
| UserWriteable | Valore booleano che indica se il file si trova in una posizione scrivibile dall'utente. Queste informazioni sono utili per diagnosticare i problemi quando vengono consentite le regole di FilePath. |
| PackageFamilyName | Nome della famiglia di pacchetti per l'app in pacchetto (MSIX) che include il file bloccato. |
Evento 3089 - Evento di informazioni sulla firma del controllo app
| Nome elemento | Descrizione |
|---|---|
| Sistema - Correlazione - [ActivityID] | Usare ActivityID di correlazione per trovare la corrispondenza di un evento di firma di Controllo app con il relativo evento di blocco. |
| TotalSignatureCount | Numero totale di firme rilevate per il file bloccato. |
| Firma | Conteggio indice, a partire da 0, della firma corrente visualizzata in questo evento 3089. Se il file contiene più firme, saranno disponibili altri eventi 3089 per le altre firme. |
| Hash | Valore hash usato da Controllo app per trovare le corrispondenze con il file. Questo valore deve corrispondere a uno dei quattro hash visualizzati nell'evento di blocco 3077 o 3076. Se non sono state trovate firme per il file (TotalSignatureCount = 0), viene visualizzato solo il valore hash. |
| Tipo di firma | Tipo di firma. |
| ValidatedSigningLevel | Il livello di autorizzazione alla firma di Windows soddisfatto. Vedere Livello di firma richiesto e convalidato. |
| Errore di verifica | Il motivo per cui questa particolare firma non è riuscita a superare i criteri di Controllo delle app. Vedere Errore di verifica. |
| PublisherName | Valore del nome comune (CN) del certificato foglia. |
| Nome dell'autorità emittente | Valore CN del certificato disponibile più alto nella catena di certificati. Questo livello è in genere un certificato sotto la radice. |
| EditoreTBSHash | Hash TBS del certificato foglia. |
| EmittenteTBSHash | Hash TBS del certificato più alto disponibile nella catena di certificati. Questo livello è in genere un certificato sotto la radice. |
Procedura dettagliata degli eventi 3077 e 3089 di esempio
Verrà illustrato come usare i dati degli eventi negli eventi 3077 e 3089 di esempio per capire perché i criteri Controllo app hanno bloccato questo file.
Informazioni sul file bloccato e sul contesto del blocco
Facendo riferimento all'evento 3077, individuare le informazioni che identificano il criterio, il file bloccato e il processo padre che ha tentato di eseguirlo. Considera queste informazioni di contesto per determinare se il blocco è previsto e desiderato.
Nell'esempio il file bloccato è PowerShell.exe, che fa parte di Windows e normalmente dovrebbe essere eseguito. Tuttavia, in questo caso, il criterio era basato sul modello di criteri Windows in modalità S, che non consente l'esecuzione di host di script per limitare la superficie di attacco. Per la modalità S, questo evento di blocco è un successo. Ma supponiamo che l'autore del criterio non fosse a conoscenza di questo vincolo quando ha scelto il modello e trattiamo questo blocco come imprevisto.
Determinare il motivo per cui Controllo app ha rifiutato il file
Sempre facendo riferimento all'evento 3077, il livello di firma richiesto 2 indica che il codice deve superare i criteri di controllo delle app. Tuttavia, il livello di firma convalidato 1 indica che il codice è stato trattato come se non fosse firmato. "Non firmato" potrebbe significare che il file è effettivamente non firmato, firmato ma con un certificato non valido o firmato ma senza certificati consentiti dai criteri di Controllo app.
Ora, esaminiamo gli eventi 3089 correlati per il file bloccato. Nell'esempio viene esaminata solo la prima firma (indice firma 0) trovata in un file con più firme. Per questa firma, il valore ValidatedSigningLevel è 12, ovvero ha una firma del prodotto Microsoft Windows. L'errore di verifica 21 indica che la firma non ha superato i criteri di Controllo app.
È importante esaminare le informazioni per ogni evento 3089 correlato perché ogni firma può avere un ValidatedSigningLevel e un VerificationError diversi.
Importante
Si noti come il livello di firma convalidato nell'evento 3077 viene interpretato in modo molto diverso dal livello ValidatedSigningLevel nell'evento 3089.
Nel caso dell'evento 3077, il livello di firma convalidato indica come il file binario è stato effettivamente gestito da Windows.
Nel caso dell'evento 3089, d'altra parte, ValidatedSigningLevel indica il livello massimo potenziale che la firma potrebbe ricevere. Dobbiamo usare VerificationError per capire perché la firma è stata rifiutata.
3 - Risolvere i problemi comuni
Dopo aver analizzato i dati di diagnostica di Controllo app, è possibile eseguire i passaggi necessari per risolvere il problema o eseguire ulteriori passaggi di debug. Di seguito sono riportati alcuni problemi comuni e passaggi che è possibile provare per risolvere o isolare ulteriormente il problema alla radice:
Problema: È stato bloccato un file che si vuole consentire
- Usare i dati dei registri eventi di Controllo app di base per aggiungere regole per consentire il file bloccato.
- Ridistribuire il file o l'app usando un programma di installazione gestito se il criterio considera attendibili programmi di installazione gestiti.
Problema: È attivo un criterio imprevisto
Questa condizione può verificarsi se:
- È stato rimosso un criterio, ma il sistema non è stato riavviato.
- Un criterio è stato parzialmente rimosso, ma una copia del criterio esiste ancora nella partizione System o EFI.
- Un criterio con PolicyId {A244370E-44C9-4C06-B551-F6016E563076} (formato a criteri singolo) è stato copiato nel percorso dei criteri in formato a più criteri prima dell'attivazione, generando un binario di criteri duplicato sul disco. Verificare la presenza di file SiPolicy.p7b e {A244370E-44C9-4C06-B551-F6016E563076}.cip nelle partizioni System ed EFI.
- Un criterio è stato distribuito in modo non corretto al dispositivo.
- Un malintenzionato con accesso come amministratore ha applicato un criterio di attacco Denial of Service per alcuni processi critici.
Per risolvere questo problema, seguire le istruzioni per Rimuovere i criteri di controllo app per il criterio identificato.
Problema: si verifica un errore dell'app non gestito e non vengono osservati eventi di controllo app
Alcune app modificano il comportamento quando è attivo un criterio di Controllo app in modalità utente, il che può causare errori imprevisti. Può anche essere un effetto collaterale dell'imposizione degli script per le app che non gestiscono correttamente i comportamenti di imposizione implementati dagli host degli script.
Prova a isolare la causa principale eseguendo le azioni seguenti:
- Controlla gli altri registri eventi elencati nella sezione 1 di questo articolo per gli eventi che corrispondono agli errori imprevisti dell'app.
- Sostituire temporaneamente il criterio Controllo app con un altro criterio che disabilita l'imposizione degli script e ripetere il test.
- Sostituire temporaneamente i criteri di Controllo app con un altro criterio che consenta tutti gli oggetti COM e ripetere il test.
- Sostituire temporaneamente il criterio Controllo app con un altro criterio che rende meno disponibili altre regole dei criteri ed eseguire di nuovo il test.
Problema: un'app distribuita da un programma di installazione gestito non funziona
Per eseguire il debug dei problemi usando il programma di installazione gestito, provare a eseguire questa procedura:
- Verificare che il criterio Controllo app che blocca l'app includa l'opzione per abilitare il programma di installazione gestito.
- Verificare che i criteri di AppLocker $env:USERPROFILE\AppData\Local\Temp\DiagOutputDir\CiDiag\AppLocker.xml siano corretti come descritto in Consentire automaticamente le app distribuite da un programma di installazione gestito.
- Verificare che i servizi AppLocker siano in esecuzione. Queste informazioni si trovano in $env:USERPROFILE\AppData\Local\Temp\DiagOutputDir\CiDiag\AppLockerServices.txt creato nella sezione 1 di questo articolo.
- Verificare l'esistenza di un file di AppLocker denominato MANAGEDINSTALLER. APPLOCKER esiste nella cartella CiDiag creata in precedenza. In caso contrario, ripetere i passaggi per distribuire e abilitare la configurazione di AppLocker del programma di installazione gestito.
- Riavviare il processo del programma di installazione gestito e verificare che venga osservato un evento 8002 nel registro eventi di AppLocker - EXE e DLL per il processo del programma di installazione gestito con PolicyName = MANAGEDINSTALLER. Se invece viene visualizzato un evento con 8003 o 8004 con PolicyName = MANAGEDINSTALLER, controllare le regole di ManagedInstaller nel codice XML dei criteri di AppLocker e assicurarsi che una regola corrisponda al processo del programma di installazione gestito.
- Utilizzare fsutil.exe per verificare che i file scritti dal processo del programma di installazione gestito abbiano l'attributo esteso origine del programma di installazione gestito. In caso contrario, ridistribuire i file con il programma di installazione gestito e ricontrollare.
- Testare l'installazione di un'app diversa usando il programma di installazione gestito.
- Aggiungere un altro programma di installazione gestito ai criteri di AppLocker e testare l'installazione usando l'altro programma di installazione gestito.
- Verificare se l'app presenta una limitazione nota del programma di installazione gestito. In tal caso, è necessario autorizzare l'app con altri mezzi.
Problema: un'app che ci si aspettava fosse consentita dall'Intelligent Security Graph (ISG) non funziona
Per eseguire il debug dei problemi con ISG, prova a seguire questi passaggi:
- Verificare che il criterio di Controllo app che blocca l'app includa l'opzione per abilitare Intelligent Security Graph.
- Verificare che i servizi AppLocker siano in esecuzione. Queste informazioni si trovano in $env:USERPROFILE\AppData\Local\Temp\DiagOutputDir\CiDiag\AppLockerServices.txt creato nella sezione 1 di questo articolo.
- Usare fsutil.exe per verificare che i file abbiano l'attributo di origine ISG esteso. In caso contrario, ridistribuire i file con il programma di installazione gestito e ricontrollare.
- Controlla se l'app sta riscontrando una limitazione nota con ISG.
Problema: Microsoft Defender Antivirus è in modalità passiva dopo aver abilitato Controllo app o ISG
Quando si abilita Controllo app con ISG o Smart App Control, Microsoft Defender Antivirus può essere eseguito in modalità passiva o ibrida. Questo stato è un comportamento previsto, non un errore. Controllo app usa le informazioni sulla reputazione fornite da Defender come parte delle decisioni di esecuzione del codice. Questo stato non cambia il comportamento di Defender nel sistema. Qualsiasi protezione antivirus in tempo reale continua a essere fornita dalla soluzione antivirus scelta.
Per controllare la modalità operativa di Defender, esegui il comando seguente in PowerShell ed esamina il AMRunningMode valore:
Get-MpComputerStatus | Select-Object AMRunningMode
Aspettatevi un valore in modalità passiva o ibrida se avete abilitato intenzionalmente il Controllo app con ISG o Smart App Control è attivato. È necessario verificare solo se non è stato abilitato Controllo app con ISG o Smart App Control e non è prevista questa modalità, oppure se non si dispone di un antivirus di terze parti. In tal caso, verifica quali criteri di Controllo app sono attivi ed esamina Controllo app e Microsoft Defender.
4 - Segnalare i problemi a Microsoft, se appropriato
Se, dopo aver seguito le indicazioni contenute in questo articolo, ritieni di aver identificato un problema del prodotto, segnalalo a Microsoft.
- I clienti con supporto tecnico Microsoft Premier devono registrare una richiesta di servizio tramite i normali canali.
- Tutti gli altri clienti possono segnalare i problemi direttamente al team del prodotto Controllo app tramite l'Hub di Windows Feedback. Selezionare la categoria Sicurezza & privacy - Controllo applicazioni per assicurarsi che il problema venga indirizzato correttamente al team del prodotto Controllo app.
Quando si segnalano problemi, assicurarsi di fornire le informazioni seguenti:
- Tutti i dati di diagnostica di Controllo app descritti in precedenza.
- Se possibile, i file bloccati.
- Istruzioni chiare per riprodurre il problema.