Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Observação
Alguns recursos do Controle de Aplicativos para Empresas estão disponíveis apenas em versões específicas do Windows. Saiba mais sobre a disponibilidade de recursos do Controle de Aplicativos.
Este artigo descreve como depurar e solucionar problemas de falhas de aplicativos e scripts ao usar o Controle de Aplicativos para Empresas.
1 – Coletar dados de diagnóstico do Controle de Aplicativos
Antes de depurar e solucionar problemas do Controle de Aplicativos, você deve coletar informações de um dispositivo que exibe o comportamento do problema.
Execute os seguintes comandos em uma janela elevada do PowerShell para coletar as informações de diagnóstico necessárias:
Reúna dados gerais de diagnóstico do Controle de Aplicativos e copie-os para %userprofile%\AppData\Local\Temp\DiagOutputDir\CiDiag:
cidiag.exe /stopSe CiDiag.exe não estiver presente na sua versão do Windows, reúna estas informações manualmente:
- Binários da política de controle de aplicativos das partições do sistema Windows e EFI
- Logs de eventos de controle de aplicativos
- Logs de eventos do AppLocker
- Outros logs de eventos que podem conter informações úteis de outros aplicativos e serviços do Windows
Salve as Informações do Sistema do dispositivo na pasta CiDiag:
msinfo32.exe /report $env:USERPROFILE\AppData\Local\Temp\DiagOutputDir\CiDiag\SystemInformation.txtUse CiTool.exe para inventariar a lista de políticas de controle de aplicativos no dispositivo. Ignore esta etapa se CiTool.exe não estiver presente na sua versão do Windows.
citool.exe -lp -json > $env:USERPROFILE\AppData\Local\Temp\DiagOutputDir\CiDiag\CiToolOutput.jsonExporte dados da chave do Registro do AppLocker para a pasta 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.txtObservação
Você pode ver um erro informando que o sistema não conseguiu localizar a chave ou o valor especificado. Esse erro não indica um problema e pode ser ignorado.
Copie todos os arquivos de política do AppLocker de %windir%System32\AppLocker para a pasta CiDiag:
Copy-Item -Path $env:windir\System32\AppLocker -Destination $env:USERPROFILE\AppData\Local\Temp\DiagOutputDir\CiDiag\ -Recurse -Force -ErrorAction IgnoreColetar informações de arquivo para os arquivos de política do AppLocker coletados na etapa anterior:
Get-ChildItem -Path $env:windir\System32\AppLocker\ -Recurse | select Mode,LastWriteTime,CreationTime,Length,Name >> $env:USERPROFILE\AppData\Local\Temp\DiagOutputDir\CiDiag\AppLockerPolicyFiles.txtExporte a política efetiva do AppLocker:
Get-AppLockerPolicy -xml -Effective > $env:USERPROFILE\AppData\Local\Temp\DiagOutputDir\CiDiag\AppLocker.xmlColetar informações de estado e configuração dos serviços do 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
Logs de eventos do Controle de Aplicativos Principal
Os eventos do Controle de Aplicativos são gerados em dois locais:
- Logs de aplicativos e serviços - Microsoft - Windows - CodeIntegrity - Operacional
- Logs de Aplicativos e Serviços - Microsoft - Windows - AppLocker - MSI e Script
No diretório de saída do CiDiag, esses logs de eventos são chamados de CIOperational.evtx e ALMsiAndScript.evtx, respectivamente.
Outros logs de eventos do Windows que podem ser úteis
Às vezes, você pode complementar as informações contidas nos logs de eventos principais do App Control com informações encontradas nesses outros logs de eventos. CiDiag.exe não coleta os mostrados em itálico.
- Logs de aplicativos e serviços - Microsoft - Windows - CodeIntegrity - Detalhado
- Logs de Aplicativos e Serviços - Microsoft - Windows - AppLocker - EXE e DLL
- Logs de Aplicativos e Serviços - Microsoft - Windows - AppLocker - Implantação de aplicativo empacotado
- Logs de Aplicativos e Serviços - Microsoft - Windows - AppLocker - Execução de aplicativo empacotado
- Logs de Aplicativos e Serviços - Microsoft - Windows - AppID - Operacional
- Logs de Aplicativos e Serviços - Microsoft - Windows - CAPI2 - Operacional
- Logs de aplicativos e serviços - Microsoft - Windows - DeviceGuard - Operacional
- Logs de Aplicativos e Serviços - Microsoft - Windows - PowerShell - *
- Windows - Aplicativo
- Windows - Sistema
2 – Usar os dados de diagnóstico e log para identificar problemas
Depois de coletar as informações de diagnóstico necessárias de um dispositivo, você estará pronto para iniciar a análise dos dados de diagnóstico coletados na seção anterior.
Verifique o conjunto de políticas de Controle de Aplicativos que estão ativas e impostas. Confirme se apenas as políticas que você espera que estejam ativas estão ativas no momento. Esteja ciente das políticas de caixa de entrada do Windows que também podem estar ativas. Você pode usar um destes métodos:
- Revise a saída deCiTool.exe -lp, se aplicável, que foi salva no diretório de saída CiDiag como CiToolOutput.json. Consulte usar o Microsoft Edge para exibir o arquivo json formatado.
- Examine todos os eventos de ativação de política do log de eventos de Controle de Aplicativos principal encontrado em Logs de Aplicativos e Serviços - Microsoft - Windows - CodeIntegrity - Operacional. No diretório de saída CiDiag, esse log de eventos é chamado CIOperational.evtx.
Examine todos os eventos de bloqueio para executáveis, dlls e drivers do log de eventos principal do Controle de Aplicativos encontrado em Logs de Aplicativos e Serviços - Microsoft - Windows - CodeIntegrity - Operacional. No diretório de saída CiDiag, esse log de eventos é chamado CIOperational.evtx. Use informações dos eventos de bloco e seus eventos de detalhes de assinatura 3089 correlacionados para investigar quaisquer bloqueios inexplicáveis ou inesperados. Consulte o exemplo executável bloqueado descrito posteriormente neste artigo para referência.
Examine todos os eventos de bloqueio para aplicativos empacotados, instaladores MSI, scripts e objetos COM do log de eventos de imposição de script principal encontrado em Logs de Aplicativos e Serviços - Microsoft - Windows - AppLocker - MSI e Script. No diretório de saída do CiDiag, esse log de eventos é chamado ALMsiAndScript.evtx. Use informações dos eventos de bloqueio e seus eventos de detalhes de assinatura 8038 correlacionados para investigar quaisquer bloqueios inexplicáveis ou inesperados.
A maioria dos problemas relacionados ao Controle de Aplicativos, incluindo falhas de aplicativos e scripts, pode ser diagnosticada usando as etapas anteriores.
Análise de eventos para um exemplo de executável bloqueado
Aqui está um exemplo de EventData detalhado de um evento de bloqueio 3077 típico do modo de imposição do Controle de Aplicativos e um de seus eventos de informações de assinatura 3089 correlacionados. As tabelas que seguem cada captura de tela de evento descrevem alguns dos elementos contidos nos eventos. Após as descrições dos eventos, há um passo a passo explicando como usar os eventos para entender por que o bloqueio ocorreu.
Evento 3077 - Evento de bloqueio de imposição do Controle de Aplicativos
| Nome do elemento | Descrição |
|---|---|
| Sistema - Correlação - [ActivityID] |
Não mostrado na captura de tela Use a correlação ActivityID para corresponder a um evento de bloco do Controle de Aplicativos com um ou mais eventos de assinatura 3089. |
| Nome de Arquivo | O caminho e o nome do arquivo no disco que foi bloqueado de ser executado. Como o nome no disco é mutável, esse valor não é aquele usado ao criar regras de arquivo do Controle de Aplicativos com -Level FileName. Em vez disso, consulte o elemento OriginalFileName posteriormente nesta tabela. |
| Nome do processo | O caminho e o nome do arquivo que tentou executar o arquivo bloqueado. Também chamado de processo pai. |
| Nível de assinatura solicitado | O nível de autorização de assinatura do Windows que o código precisava passar para ser executado. Consulte Nível de assinatura solicitado e validado. |
| Nível de assinatura validado | O nível de autorização de assinatura do Windows que o código foi fornecido. Consulte Nível de assinatura solicitado e validado. |
| Status | Windows NT status código. Você pode usá-lo certutil.exe -error <status> para procurar o significado do código de status. |
| SHA1 Hash | O hash SHA1 Authenticode do arquivo bloqueado. |
| SHA256 Hash | O hash SHA256 Authenticode do arquivo bloqueado. |
| Hash simples SHA1 | O hash de arquivo simples SHA1 do arquivo bloqueado. |
| SHA256 Hash simples | O hash de arquivo simples SHA256 do arquivo bloqueado. |
| PolicyName | O nome amigável da política de Controle de Aplicativos que causou o evento de bloqueio. Um evento de bloco 3077 separado (ou evento de bloco de auditoria 3076) é mostrado para cada política que bloqueia a execução do arquivo. |
| PolicyId | O valor de ID amigável da política de Controle de Aplicativos que causou o evento de bloqueio. |
| PolicyHash | O hash SHA256 Authenticode do binário de política de Controle de Aplicativos que causou o evento de bloqueio. |
| Nome do arquivo original | O nome de arquivo imutável definido pelo desenvolvedor no cabeçalho de recursos do arquivo bloqueado. Esse valor é aquele usado ao criar regras de arquivo de controle de aplicativos com -Level FileName. |
| InternalName | Outro valor imutável definido pelo desenvolvedor no cabeçalho de recursos do arquivo bloqueado. Você pode substituir esse valor pelo OriginalFileName nas regras de arquivo por -Level FileName -SpecificFileNameLevel InternalName. |
| FileDescription | Outro valor imutável definido pelo desenvolvedor no cabeçalho de recursos do arquivo bloqueado. Você pode substituir esse valor pelo OriginalFileName nas regras de arquivo por -Level FileName -SpecificFileNameLevel FileDescription. |
| ProductName | Outro valor imutável definido pelo desenvolvedor no cabeçalho de recursos do arquivo bloqueado. Você pode substituir esse valor pelo OriginalFileName nas regras de arquivo por -Level FileName -SpecificFileNameLevel ProductName. |
| Versão do arquivo | O valor VersionEx da política usado para impor o controle de versão sobre políticas assinadas. |
| PolicyGUID | O PolicyId da política de Controle de Aplicativos que causou o evento de bloqueio. |
| RedWriteable | Um valor booleano que indica se o arquivo estava em um local gravável pelo usuário. Essas informações são úteis para diagnosticar problemas ao permitir por regras FilePath. |
| PackageFamilyName | O Nome da Família de Pacotes para o aplicativo empacotado (MSIX) que inclui o arquivo bloqueado. |
Evento 3089 - Evento de informações de assinatura de controle de aplicativos
| Nome do elemento | Descrição |
|---|---|
| Sistema - Correlação - [ActivityID] | Use a correlação ActivityID para corresponder a um evento de assinatura do Controle de Aplicativo com seu evento de bloqueio. |
| TotalSignatureCount | O número total de assinaturas detectadas para o arquivo bloqueado. |
| Assinatura | A contagem do índice, começando em 0, da assinatura atual mostrada neste evento 3089. Se o arquivo tiver várias assinaturas, você encontrará outros eventos 3089 para as outras assinaturas. |
| Hash | O valor de hash que o Controle de Aplicativos usou para corresponder ao arquivo. Esse valor deve corresponder a um dos quatro hashes mostrados no evento de bloco 3077 ou 3076. Se nenhuma assinatura foi encontrada para o arquivo (TotalSignatureCount = 0), somente o valor de hash será mostrado. |
| SignatureType | O tipo de assinatura. |
| ValidatedSigningLevel | O nível de autorização de assinatura do Windows que a assinatura atendeu. Consulte Nível de assinatura solicitado e validado. |
| VerificationError | O motivo pelo qual essa assinatura específica não conseguiu passar na política de controle de aplicativos. Consulte VerificationError. |
| Nome do editor | O valor de nome comum (CN) do certificado secundário. |
| Nome do emissor | O valor CN do certificado mais alto disponível na cadeia de certificados. Normalmente, esse nível é um certificado abaixo da raiz. |
| PublisherTBSHash | O hash do TBS do certificado folha. |
| IssuerTBSHash | O hash TBS do certificado mais alto disponível na cadeia de certificados. Normalmente, esse nível é um certificado abaixo da raiz. |
Passo a passo dos eventos de exemplo 3077 e 3089
Agora vamos ver como usar os dados de evento nos eventos 3077 e 3089 de exemplo para entender por que a política de controle de aplicativos bloqueou esse arquivo.
Entenda qual arquivo está sendo bloqueado e o contexto de bloqueio
Fazendo referência ao evento 3077, localize as informações que identificam a política, o arquivo que está sendo bloqueado e o processo pai que tentou executá-lo. Considere essas informações de contexto para determinar se o bloco é esperado e desejado.
No exemplo, o arquivo que está sendo bloqueado é PowerShell.exe, que faz parte do Windows e normalmente seria esperado que fosse executado. No entanto, nesse caso, a política foi baseada no modelo de política do Windows no modo S, que não permite que hosts de script sejam executados como uma maneira de limitar a superfície de ataque. Para o modo S, esse evento de bloqueio é um sucesso. Mas vamos supor que o autor da política não estava ciente dessa restrição quando escolheu o modelo e trate esse bloco como inesperado.
Determinar por que o Controle de Aplicativos rejeitou o arquivo
Novamente referindo-se ao evento 3077, vemos que o Nível de Assinatura Solicitado de 2 significa que o código deve passar a política de Controle de Aplicativos. Mas o Nível de Assinatura Validado de 1 significa que o código foi tratado como se não estivesse assinado. "Não assinado" pode significar que o arquivo foi realmente não assinado, assinado, mas com um certificado inválido ou assinado, mas sem nenhum certificado permitido pela política de controle de aplicativos.
Agora, vamos inspecionar o(s) evento(s) 3089 correlacionado(s) do arquivo bloqueado. No exemplo, estamos examinando apenas a primeira assinatura (índice de assinatura 0) encontrada em um arquivo que tinha várias assinaturas. Para essa assinatura, o ValidatedSigningLevel é 12, o que significa que ele tem uma assinatura de produto do Microsoft Windows. O VerificationError de 21 significa que a assinatura não passou na política de Controle de Aplicativos.
É importante examinar as informações de cada evento 3089 correlacionado, pois cada assinatura pode ter um ValidatedSigningLevel e VerificationError diferentes.
Importante
Observe como o Nível de Assinatura Validado no evento 3077 é interpretado de maneira muito diferente do ValidatedSigningLevel no evento 3089.
No caso do evento 3077, o Nível de Assinatura Validado nos informa como o binário foi realmente tratado pelo Windows.
No caso do evento 3089, por outro lado, ValidatedSigningLevel nos informa o nível máximo potencial que a assinatura pode receber. Devemos usar o VerificationError para entender por que a assinatura foi rejeitada.
3 – Resolva problemas comuns
Depois de analisar os dados de diagnóstico do Controle de Aplicativos, você pode executar etapas para resolver o problema ou executar mais etapas de depuração. A seguir estão alguns problemas comuns e as etapas que você pode tentar para resolver ou isolar ainda mais o problema raiz:
Problema: um arquivo que você deseja permitir foi bloqueado
- Use dados dos logs de eventos principais do Controle de Aplicativos para adicionar regras a fim de permitir o arquivo bloqueado.
- Reimplante o arquivo ou aplicativo usando um instalador gerenciado se sua política confiar em instaladores gerenciados.
Problema: uma política está ativa que é inesperada
Essa condição pode existir se:
- Uma política foi removida, mas o sistema não foi reinicializado.
- Uma política foi removida parcialmente, mas uma cópia da política ainda existe na partição System ou EFI.
- Uma política com PolicyId {A244370E-44C9-4C06-B551-F6016E563076} (formato de política única) foi copiada para o local da política de formato de política múltipla antes da ativação, resultando em um binário de política duplicado no disco. Verifique os arquivos SiPolicy.p7b e {A244370E-44C9-4C06-B551-F6016E563076}.cip nas partições Sistema e EFI.
- Uma política foi implantada incorretamente no dispositivo.
- Um ator mal-intencionado com acesso de administrador aplicou uma política para causar negação de serviço para alguns processos críticos.
Para resolver esse problema, siga as instruções para Remover políticas de Controle de Aplicativos para a política identificada.
Problema: está ocorrendo uma falha de aplicativo sem tratamento e nenhum evento de controle de aplicativo é observado
Alguns aplicativos alteram seu comportamento quando uma política de Controle de Aplicativos de modo de usuário está ativa, o que pode resultar em falhas inesperadas. Também pode ser um efeito colateral da imposição de script para aplicativos que não lidam corretamente com os comportamentos de imposição implementados pelos hosts de script.
Tente isolar a causa raiz executando as seguintes ações:
- Verifique os outros logs de eventos listados na seção 1 deste artigo para detectar eventos correspondentes às falhas inesperadas do aplicativo.
- Substitua temporariamente a política de controle de aplicativos por outra política que desabilita a imposição de script e reteste.
- Substitua temporariamente a política de controle de aplicativos por outra política que permita todos os objetos COM e testar novamente.
- Substitua temporariamente a política de controle de aplicativos por outra política que relaxa outras regras de política e teste novamente.
Problema: um aplicativo implantado por um instalador gerenciado não está funcionando
Para depurar problemas usando o instalador gerenciado, tente estas etapas:
- Verifique se a política de controle de aplicativos que está bloqueando o aplicativo inclui a opção de habilitar o instalador gerenciado.
- Verifique se a política efetiva do AppLocker $env:USERPROFILE\AppData\Local\Temp\DiagOutputDir\CiDiag\AppLocker.xml está correta, conforme descrito em Permitir automaticamente aplicativos implantados por um instalador gerenciado.
- Verifique se os serviços do AppLocker estão em execução. Essas informações encontram-se em $env:USERPROFILE\AppData\Local\Temp\DiagOutputDir\CiDiag\AppLockerServices.txt criado na seção 1 deste artigo.
- Verifique se existe um arquivo do AppLocker chamado MANAGEDINSTALLER. O APPLOCKER existe na pasta CiDiag criada anteriormente. Caso contrário, repita as etapas para implantar e habilitar a configuração do instalador gerenciado do AppLocker.
- Reinicie o processo do instalador gerenciado e Marque se um evento 8002 é observado no log de eventos do AppLocker - EXE e DLL para o processo do instalador gerenciado com PolicyName = MANAGEDINSTALLER. Se, em vez disso, você vir um evento com 8003 ou 8004 com PolicyName = MANAGEDINSTALLER, marque as regras do ManagedInstaller no XML da política do AppLocker e garanta que uma regra corresponda ao processo do instalador gerenciado.
- Use fsutil.exe para verificar se os arquivos gravados pelo processo do instalador gerenciado têm o atributo estendido de origem do instalador gerenciado. Caso contrário, reimplante os arquivos com o instalador gerenciado e marque novamente.
- Teste a instalação de um aplicativo diferente usando o instalador gerenciado.
- Adicione outro instalador gerenciado à política do AppLocker e teste a instalação usando o outro instalador gerenciado.
- Verifique se o aplicativo está encontrando uma limitação conhecida com o instalador gerenciado. Nesse caso, você deve autorizar o aplicativo usando outros meios.
Problema: um aplicativo que você esperava que o Gráfico de Segurança Inteligente (ISG) permitisse não está funcionando
Para depurar problemas usando o ISG, experimente estas etapas:
- Verifique se a política de controle de aplicativos que está bloqueando o aplicativo inclui a opção de habilitar o Gráfico de Segurança Inteligente.
- Verifique se os serviços do AppLocker estão em execução. Essas informações encontram-se em $env:USERPROFILE\AppData\Local\Temp\DiagOutputDir\CiDiag\AppLockerServices.txt criado na seção 1 deste artigo.
- Use fsutil.exe para verificar se os arquivos têm o atributo estendido de origem ISG. Caso contrário, reimplante os arquivos com o instalador gerenciado e marque novamente.
- Verifique se o aplicativo está encontrando uma limitação conhecida com o ISG.
Problema: o Microsoft Defender Antivírus está no modo passivo depois de habilitar o Controle de Aplicativos ou o ISG
Quando você habilita o Controle de Aplicativos com o ISG ou o Controle de Aplicativos Inteligente, o Microsoft Defender Antivírus pode ser executado no modo passivo ou híbrido. Esse estado é um comportamento esperado, não uma falha. O Controle de Aplicativos usa informações de reputação fornecidas pelo Defender como parte de suas decisões de execução de código. Esse estado não altera como o Defender se comporta no sistema. Qualquer proteção antivírus em tempo real continua a ser fornecida pela solução antivírus escolhida.
Para marcar o modo operacional do Defender, execute o seguinte comando no PowerShell e examine o AMRunningMode valor:
Get-MpComputerStatus | Select-Object AMRunningMode
Espere um valor de modo passivo ou híbrido se você tiver habilitado intencionalmente o Controle de Aplicativos com o ISG ou o Controle de Aplicativos Inteligente estiver ativado. Você só precisará investigar se não habilitou o Controle de Aplicativos com o ISG ou o Controle de Aplicativos Inteligente e não espera esse modo ou se também não tem antivírus de terceiros. Nesse caso, verifique quais políticas de Controle de Aplicativos estão ativas e examine o Microsoft Defender Antivírus e o Controle de Aplicativos.
4 – Relatar problemas para a Microsoft, se apropriado
Se, depois de seguir as orientações abordadas neste artigo, você acreditar que identificou um problema de produto, relate o problema à Microsoft.
- Os clientes com Suporte Premier da Microsoft devem registrar uma solicitação de serviço pelos canais normais.
- Todos os outros clientes podem relatar problemas diretamente à equipe de produto do Controle de Aplicativos por meio do Hub do Windows Feedback. Selecione a categoria Segurança & Privacidade – Controle de Aplicativos para garantir que o problema seja encaminhado corretamente para a equipe de produto do Controle de Aplicativos.
Ao relatar problemas, forneça as seguintes informações:
- Todos os dados de diagnóstico do Controle de Aplicativos descritos anteriormente.
- Se possível, o(s) arquivo(s) bloqueado(s).
- Instruções claras para reproduzir o problema.