Partilhar via


Usando o controle de aplicativo do Windows Defender

O Windows 10 inclui duas tecnologias, o Windows Defender Application Control (WDAC) e o AppLocker que você pode usar para controlar aplicativos. Eles permitem que você crie uma experiência de bloqueio para ajudar a proteger seu ambiente do PowerShell

O AppLocker baseia-se nos recursos de controle de aplicativos das Políticas de Restrição de Software. O AppLocker contém recursos e extensões que permitem criar regras para permitir ou negar a execução de aplicativos com base em identidades exclusivas de arquivos e especificar os usuários ou grupos que têm permissão para executar esses aplicativos.

Nota

Ao escolher entre WDAC ou AppLocker, recomendamos que você implemente o controle de aplicativo usando WDAC em vez de AppLocker. A Microsoft está continuamente melhorando o WDAC e as plataformas de gerenciamento da Microsoft estão estendendo seu suporte para WDAC. Embora o AppLocker possa continuar a receber correções de segurança, ele não receberá aprimoramentos de recursos.

O WDAC foi introduzido com o Windows 10 e permite que as organizações controlem os drivers e aplicativos que podem ser executados em seus dispositivos Windows. O WDAC foi projetado como um recurso de segurança de acordo com os critérios de manutenção definidos pelo Microsoft Security Response Center (MSRC).

Para obter mais informações sobre AppLocker e WDAC, consulte Controles de aplicativo para Windows e disponibilidade de recursos WDAC e AppLocker.

Aplicação da política WDAC

Quando o PowerShell é executado sob uma política WDAC, ele altera seu comportamento com base na diretiva de segurança definida. Sob uma política WDAC, o PowerShell executa scripts e módulos confiáveis permitidos pela política no modo de linguagem completa. Todos os outros scripts e blocos de script não são confiáveis e são executados no modo de linguagem restrita. O PowerShell lança erros quando os scripts não confiáveis tentam executar ações que não são permitidas no modo de linguagem restrita. Pode ser difícil saber por que um script falhou ao ser executado corretamente no modo de linguagem restrita.

Auditoria de políticas WDAC

O PowerShell 7.4 adicionou um novo recurso para dar suporte a políticas WDAC no modo de Auditoria . No modo de auditoria, o PowerShell executa os scripts não confiáveis no modo Linguagem restrita sem erros, mas registra as mensagens no log de eventos. As mensagens de log descrevem quais restrições seriam aplicadas se a política estivesse no modo Enforce .

Visualizar eventos de auditoria

O PowerShell registra eventos de auditoria no log de eventos PowerShellCore/Analytic . Você deve habilitar o log analítico. Para habilitar o log analítico no Visualizador de Eventos do Windows, clique com o botão direito do mouse no log PowerShellCore/Analytic e selecione Habilitar log.

Ou, você pode executar o seguinte comando a partir de uma sessão elevada do PowerShell.

wevtutil.exe sl PowerShellCore/Analytic /enabled:true /quiet

Você pode exibir os eventos no Visualizador de Eventos do Windows ou usar o Get-WinEvent cmdlet para recuperar os eventos.

Get-WinEvent -LogName PowerShellCore/Analytic -Oldest |
    Where-Object Id -eq 16387 | Format-List
TimeCreated  : 4/19/2023 10:11:07 AM
ProviderName : PowerShellCore
Id           : 16387
Message      : WDAC Audit.

    Title: Method or Property Invocation
    Message: Method or Property 'WriteLine' on type 'System.Console' invocation will not
        be allowed in ConstrainedLanguage mode.
        At C:\scripts\Test1.ps1:3 char:1
        + [System.Console]::WriteLine("pwnd!")
        + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    FullyQualifiedId: MethodOrPropertyInvocationNotAllowed

A mensagem de evento inclui a posição do script onde a restrição seria aplicada. Essas informações ajudam você a entender onde você precisa alterar seu script para que ele seja executado sob a política WDAC.

Importante

Depois de revisar os eventos de auditoria, você deve desativar o log analítico. Os logs analíticos crescem rapidamente e consomem grandes quantidades de espaço em disco.

Exibindo eventos de auditoria no depurador do PowerShell

Se você definir a $DebugPreference variável como Break para uma sessão interativa do PowerShell, o PowerShell quebrará o depurador de script de linha de comando no local atual no script onde o evento de auditoria ocorreu. Isso permite que você depure seu código e inspecione o estado atual do script em tempo real.