Personalizar a proteção de exploração

A proteção contra exploits aplica automaticamente muitas técnicas de mitigação de exploits nos processos do sistema operativo e em aplicações individuais.

Defina essas configurações usando o aplicativo Segurança do Windows em um dispositivo individual. Em seguida, exporte a configuração como um arquivo XML para que você possa implantar em outros dispositivos. Use a Política de Grupo para distribuir o arquivo XML para vários dispositivos ao mesmo tempo. Você também pode configurar as mitigações com o PowerShell.

Este artigo lista todas as mitigações disponíveis no Exploit Protection. Ele indica se a mitigação pode ser aplicada no sistema ou nos aplicativos individuais e fornece uma breve descrição de como a mitigação funciona.

Este artigo também descreve como habilitar ou configurar as mitigações usando Segurança do Windows, PowerShell e CSPs (provedores de serviços de configuração) de gerenciamento de dispositivo móvel (MDM). Definir configurações de proteção de exploração em um único dispositivo é a primeira etapa na criação de uma configuração que você pode implantar em sua rede. Para implantar essa configuração em vários dispositivos, consulte Importar, exportar e implantar configurações de proteção de exploração.

Aviso

Algumas tecnologias de atenuação de segurança podem ter problemas de compatibilidade com alguns aplicativos. Você deve testar a proteção de exploração em todos os cenários de uso de destino usando o modo de auditoria de proteção de exploração antes de implantar a configuração em um ambiente de produção ou no restante da rede.

Mitigações de proteção contra exploits

Todas as mitigações podem ser configuradas nos aplicativos individuais. Algumas mitigações também podem ser aplicadas no nível do sistema operacional.

Você pode definir todas as mitigações como ativado, desativado ou com seu valor padrão. Algumas mitigações têm mais opções indicadas na descrição na tabela.

Os valores padrão são sempre especificados entre colchetes na opção Usar padrão em cada mitigação. No exemplo seguinte, a predefinição para Prevenção de Execução de Dados é "Ativado".

A configuração Usar padrão das configurações de mitigação indica nossa recomendação de um nível base de proteção para uso diário dos usuários domésticos. As implementações empresariais devem considerar a proteção necessária para as suas necessidades individuais e, por conseguinte, têm de modificar a configuração longe das predefinições.

Para obter os cmdlets do PowerShell associados a cada mitigação, consulte os cmdlets do PowerShell para as mitigações de proteção contra explorações na parte inferior do artigo.

Atenuação Descrição Pode ser aplicado a Modo de Auditoria disponível
Proteção de fluxo de controle (CFG) Garante a integridade do fluxo de controle em chamadas indiretas. Opcionalmente, pode suprimir as exportações e usar CFG estrito. Sistema e nível do aplicativo Não
Prevenção de Execução de Dados (DEP) Impede a execução de código em páginas de memória que contêm apenas dados, como o heap e as pilhas. Configurável só para aplicativos de 32 bits (x86), permanentemente habilitado para todas as outras arquiteturas. Pode, opcionalmente, habilitar a emulação de thunk do ATL. Sistema e nível do aplicativo Não
Forçar a aleatoriedade de imagens (ASLR obrigatório) Realoca à força imagens não compiladas com /DYNAMICBASE. Pode, opcionalmente, falhar ao carregar imagens que não possuem informações de realocação. Sistema e nível do aplicativo Não
Randomizar alocações de memória (ASLR bottom-up) Randomiza os endereços de alocação da memória virtual. Inclui heaps, pilhas, TEBs e PEBs de estruturas do sistema. Opcionalmente, pode usar uma variação de randomização mais ampla nos processos de 64 bits. Sistema e nível do aplicativo Não
Validar as cadeias de exceção (SEHOP) Garante a integridade de uma cadeia de exceções durante envios de exceções. Configurável somente para aplicativos de 32 bits (x86). Sistema e nível do aplicativo Não
Validar integridade da pilha Encerra um processo quando é detectada corrupção de heap. Sistema e nível do aplicativo Não
Proteção de código arbitrário (ACG) Impede a introdução do código executável sem suporte de imagem e impede que páginas de código sejam modificadas. Opcionalmente, pode permitir a desativação de thread e o downgrade remoto (configurável apenas pelo PowerShell). Somente no nível do aplicativo Sim
Bloquear imagens de baixa integridade Impede o carregamento de imagens marcadas com Baixa Integridade. Somente no nível do aplicativo Sim
Bloquear imagens remotas Impede o carregamento de imagens de dispositivos remotos. Somente no nível do aplicativo Não
Bloquear fontes não confiáveis Impede o carregamento de fontes baseadas em GDI não instaladas no diretório das fontes do sistema, principalmente fontes da Web. Somente no nível do aplicativo Sim
Proteção da integridade do código Restringe o carregamento de imagens assinadas pela Microsoft, WHQL ou superior. Opcionalmente, pode permitir imagens assinadas pelo Microsoft Store. Somente no nível do aplicativo Sim
Desabilitar os pontos de extensão Desativa vários mecanismos de extensibilidade que permitem a injeção de DLL em todos os processos, como DLLs AppInit, ganchos de janela e provedores de serviços Winsock. Somente no nível do aplicativo Não
Desabilitar chamadas do sistema Win32k Impede que um aplicativo use a tabela de chamadas do sistema Win32k. Somente no nível do aplicativo Sim
Não permitir processos filhos Impede que um aplicativo crie processos filho. Somente no nível do aplicativo Sim
Filtragem de endereços de exportação (EAF) Deteta operações perigosas que são resolvidas por código malicioso. Opcionalmente, pode validar o acesso por módulos comumente usados por explorações. Somente no nível do aplicativo Sim
Filtragem de endereços de importação (IAF) Deteta operações perigosas que são resolvidas por um código malicioso. Somente no nível do aplicativo Sim
Simular a execução (SimExec) Garante que as chamadas para APIs confidenciais retornem aos chamadores legítimos. Configurável somente para aplicativos de 32 bits (x86). Não é compatível com ACG. Somente no nível do aplicativo Sim
Validar a invocação da API (CallerCheck) Garante que os autores de chamadas legítimos invocam APIs confidenciais. Configurável somente para aplicativos de 32 bits (x86). Não é compatível com ACG Somente no nível do aplicativo Sim
Validar o uso do handle Gera uma exceção em referências de identificador inválidas. Somente no nível do aplicativo Não
Validar a integridade da dependência da imagem Aplica assinatura de código para o carregamento de dependências de imagem do Windows. Somente no nível do aplicativo Não
Validar a integridade da pilha (StackPivot) Garante que a pilha não foi redirecionada para APIs confidenciais. Não é compatível com ACG. Somente no nível do aplicativo Sim

Importante

Se adicionar uma aplicação à secção Definições do programa e configurar definições de mitigação individuais, estas serão honradas acima da configuração para as mesmas mitigações especificadas na secção Definições do sistema . A matriz e os exemplos a seguir ajudam a ilustrar como os padrões funcionam:

Habilitado em Configurações do programa Habilitado em Configurações do sistema Comportamento
Sim Não Conforme definido em Configurações do programa
Sim Sim Conforme definido em Configurações do programa
Não Sim Conforme definido em Configurações do sistema
Não Não Padrão conforme definido na opção Uso padrão
  • Exemplo 1Mikael configura a Prevenção de Execução de Dados (DEP) na seção Configurações do sistema a ser Desativada por padrão. Depois. Mikael adiciona o aplicativo test.exe à seção Configurações do programa. Nas opções desse aplicativo, em Prevenção de Execução de Dados (DEP), ele ativa a opção Substituir configurações do sistema e define a alternância para Ativado. Não há outros aplicativos listados na seção Configurações do programa. O resultado será que o DEP só será habilitado para test.exe. Todos os outros aplicativos não terão o DEP aplicado.

  • Exemplo 2 Josie configura a Prevenção de Execução de Dados (DEP) na seção Configurações do sistema a ser Desativada por padrão. Josie adiciona o aplicativo test.exe à seção de Configurações do programa. Nas opções desse aplicativo, em Prevenção de Execução de Dados (DEP), ela habilita a opção Substituir as configurações do sistema e define o botão como Ativado. Josie também adiciona o aplicativo miles.exe à seção Configurações do programa e configura Proteção de Fluxo de Controle (CFG) como Ativado. Ela não ativa a opção Substituir configurações do sistema da DEP ou outras mitigações desse aplicativo. O resultado será que o DEP será habilitado para test.exe. O DEP não será habilitado para nenhum outro aplicativo, incluindo miles.exe. O CFG será habilitado para miles.exe.

Observação

Se tiver encontrado problemas neste artigo, pode reportá-lo diretamente a um parceiro cliente do Windows Server/Windows ou utilizar os números de suporte técnico da Microsoft para o seu país/região.

Configurar as mitigações no nível do sistema com o aplicativo Segurança do Windows

Para configurar mitigações de proteção de exploração no nível do sistema e no nível do aplicativo em um dispositivo individual, use o aplicativo Segurança do Windows:

  1. Abra o aplicativo Segurança do Windows selecionando o ícone de escudo na barra de tarefas ou pesquisando o menu Iniciar para Segurança do Windows.

  2. Selecione o bloco Controle de aplicativos e navegador (ou o ícone do aplicativo na barra de menu à esquerda) e depois selecione Proteção contra explorações.

  3. Na seção Configurações do sistema, localize a mitigação que você quer definir e especifique uma das configurações a seguir. Os aplicativos que não estão configurados individualmente na seção Configurações do programa usam as configurações definidas aqui:

    • Ativado por padrão - A mitigação está ativada para os aplicativos que não têm essa mitigação definida na seção específica Configurações do programa
    • Desativado por padrão - A mitigação está desabilitada para os aplicativos que não têm essa mitigação definida na seção específica Configurações do programa
    • Uso padrão - A mitigação está tanto habilitada quanto desabilitada, dependendo da configuração padrão configurada na instalação do Windows 10 ou Windows 11; o valor padrão (Ativado ou Desativado) está sempre especificado próximo ao rótulo Uso padrão de cada atenuação

    Observação

    Você pode ver a janela Controle da Conta do Usuário ao alterar algumas configurações. Insira as credenciais de administrador para aplicar a configuração.

    Alterar algumas configurações pode exigir a reinicialização do dispositivo.

  4. Repita essas etapas de configuração para todas as mitigações no nível do sistema que você deseja configurar.

  5. Acesse a seção Configurações do programa e escolha o aplicativo ao qual você quer aplicar mitigações:

    1. Se o aplicativo que você quer configurar já estiver listado, escolha-o e selecione Editar
    2. Se o aplicativo não estiver listado, na parte superior da lista, selecione Adicionar o programa a ser personalizado e escolha como você quer adicionar o aplicativo:
      • Use Adicionar por nome do programa para que a mitigação seja aplicada a qualquer processo em execução com esse nome. Especifique um arquivo com uma extensão. Você pode inserir um caminho completo para limitar a mitigação apenas ao aplicativo com esse nome nesse local.
      • Use Escolha o caminho exato do arquivo para usar uma janela padrão do seletor de arquivos Windows Explorer para localizar e selecionar o arquivo desejado.
  6. Depois de selecionar o aplicativo, você verá uma lista de todas as mitigações que podem ser aplicadas. Para habilitar a mitigação, marque a caixa de seleção e altere o controle deslizante para Ativado. Selecione as opções adicionais. Escolher Auditoria aplicará a mitigação somente no modo de auditoria. Você será notificado se precisar reiniciar o processo ou o aplicativo ou se precisar reiniciar o Windows.

  7. Repita essas etapas em todos os aplicativos e mitigações que você quer configurar. Selecione Aplicar quando terminar de configurar sua configuração.

Agora você pode exportar a configuração de proteção contra explorações como um arquivo XML ou prosseguir para configurar mitigações específicas do aplicativo.

Exportar a configuração como um arquivo XML permite que você copie a configuração de um dispositivo para outros dispositivos.

Referência do PowerShell

Você pode usar o aplicativo de Segurança do Windows para configurar o Exploit Protection ou usar os cmdlets do PowerShell.

As definições de configuração que foram modificadas mais recentemente sempre serão aplicadas, independentemente de você usar o PowerShell ou a Segurança do Windows. Como a configuração modificada mais recentemente é sempre aplicada, se você usar o aplicativo para configurar uma mitigação e, em seguida, usar o PowerShell para configurar a mesma mitigação, o aplicativo será atualizado para mostrar as alterações feitas com o PowerShell. Se você usar o aplicativo para alterar a mitigação novamente, essa alteração será aplicada.

Importante

Todas as alterações implantadas em um dispositivo pela Política de Grupo substituirão a configuração local. Ao definir uma configuração inicial, use um dispositivo que não terá uma configuração Política de Grupo aplicada para garantir que suas alterações não sejam substituídas.

Você pode usar o verbo do PowerShell Get ou Set com o cmdlet ProcessMitigation. Usar Get listará o status de configuração atual de quaisquer mitigações que foram habilitadas no dispositivo – adicione o cmdlet -Name e o app exe para ver mitigações apenas para esse aplicativo:

Get-ProcessMitigation -Name processName.exe

Importante

Mitigações no nível do sistema que não foram configuradas mostrarão um status de NOTSET.

Para configurações no nível do sistema, NOTSET indica que a configuração padrão para essa mitigação foi aplicada.

Para configurações no nível do aplicativo, NOTSET indica que a configuração no nível do sistema para a mitigação será aplicada.

A configuração padrão para cada mitigação no nível do sistema pode ser vista no Segurança do Windows.

Use Set para configurar cada mitigação no seguinte formato:

Set-ProcessMitigation -<scope> <app executable> -<action> <mitigation or options>,<mitigation or options>,<mitigation or options>

Onde:

  • <Âmbito>:
    • -Name para indicar que as mitigações devem ser aplicadas a um aplicativo específico. Especifique o executável do aplicativo após esse sinalizador.
    • -System para indicar que a mitigação deve ser aplicada no nível do sistema
  • <Ação>:
    • -Enable para habilitar a mitigação
    • -Disable para desabilitar a mitigação
  • <Mitigação>:

Por exemplo, para habilitar a mitigação Prevenção de Execução de Dados (DEP) com emulação de thunk ATL para um executável chamado testing.exe na pasta C:\Apps\LOB\tests e para impedir que esse executável crie processos filho, você usaria o seguinte comando:

Set-ProcessMitigation -Name c:\apps\lob\tests\testing.exe -Enable DEP, EmulateAtlThunks, DisallowChildProcessCreation

Importante

Separe cada opção de mitigação por vírgulas.

Para aplicar uma mitigação no nível do sistema em vez de aplicá-la a um aplicativo específico, use o escopo -System. Por exemplo, para habilitar o DEP para todos os processos no dispositivo, você usaria o seguinte comando:

Set-Processmitigation -System -Enable DEP

Para desabilitar mitigações, você pode substituir -Enable por -Disable. Entretanto, quanto às mitigações no nível do aplicativo, essa ação forçará a mitigação a ser desabilitada apenas nesse aplicativo.

Se você precisar restaurar uma mitigação de nível de aplicativo para o padrão do sistema, também precisará incluir o cmdlet -Remove. O seguinte exemplo remove a substituição de DEP específica do aplicativo para test.exe para que ele herde o padrão do sistema:

Set-Processmitigation -Name test.exe -Remove -Disable DEP

Você também pode definir algumas mitigações para o modo de auditoria. Em vez de usar o cmdlet do PowerShell para a mitigação, use o cmdlet modo de auditoria, conforme especificado na tabela de cmdlets de mitigação de proteção contra explorações abaixo.

Por exemplo, o seguinte comando habilita o monitoramento somente para auditoria da mitigação Arbitrary Code Guard (ACG) para o testing.exe usado anteriormente, registrando violações de política sem bloquear a execução:

Set-ProcessMitigation -Name c:\apps\lob\tests\testing.exe -Enable AuditDynamicCode

Você pode desabilitar o modo de auditoria usando o mesmo comando, mas substituindo -Enable por -Disable.

Tabela de referência do PowerShell

Essa tabela lista os cmdlets do PowerShell (e o cmdlet de modo de auditoria associado) que podem ser usados para configurar as mitigações.

Atenuação Aplicável a Cmdlets do PowerShell Cmdlet do modo de auditoria
Proteção de fluxo de controle (CFG) Sistema e nível do aplicativo CFG, StrictCFG, SuppressExports Auditoria não disponível
Prevenção de Execução de Dados (DEP) Sistema e nível do aplicativo DEP, EmulateAtlThunks Auditoria não disponível
Forçar a aleatoriedade de imagens (ASLR obrigatório) Sistema e nível do aplicativo ForceRelocateImages Auditoria não disponível
Randomizar alocações de memória (ASLR bottom-up) Sistema e nível do aplicativo BottomUp, AltaEntropia Auditoria não disponível
Validar as cadeias de exceção (SEHOP) Sistema e nível do aplicativo SEHOP, SEHOPTelemetry Auditoria não disponível
Validar integridade da pilha Sistema e nível do aplicativo TerminateOnError Auditoria não disponível
Proteção de código arbitrário (ACG) Somente no nível do aplicativo DynamicCode AuditDynamicCode
Bloquear imagens de baixa integridade Somente no nível do aplicativo BlockLowLabel AuditImageLoad
Bloquear imagens remotas Somente no nível do aplicativo Bloquear imagens remotas Auditoria não disponível
Bloquear fontes não confiáveis Somente no nível do aplicativo DisableNonSystemFonts AuditFont, FontAuditOnly
Proteção da integridade do código Somente no nível do aplicativo MicrosoftSignedOnly, AllowStoreSignedBinaries AuditMicrosoftSigned, AuditStoreSigned
Desabilitar os pontos de extensão Somente no nível do aplicativo ExtensionPoint Auditoria não disponível
Desabilitar chamadas do sistema Win32k Somente no nível do aplicativo DisableWin32kSystemCalls AuditSystemCall
Não permitir processos filhos Somente no nível do aplicativo DisallowChildProcessCreation AuditChildProcess
Filtragem de endereços de exportação (EAF) Somente no nível do aplicativo EnableExportAddressFilterPlus, EnableExportAddressFilter [1] Auditoria não disponível[2]
Filtragem de endereços de importação (IAF) Somente no nível do aplicativo EnableImportAddressFilter Auditoria não disponível[2]
Simular a execução (SimExec) Somente no nível do aplicativo EnableRopSimExec Auditoria não disponível[2]
Validar a invocação da API (CallerCheck) Somente no nível do aplicativo EnableRopCallerCheck Auditoria não disponível[2]
Validar o uso do handle Somente no nível do aplicativo StrictHandle Auditoria não disponível
Validar a integridade da dependência da imagem Somente no nível do aplicativo EnforceModuleDepencySigning Auditoria não disponível
Validar a integridade da pilha (StackPivot) Somente no nível do aplicativo EnableRopStackPivot Auditoria não disponível[2]

[1]: Para habilitar a Exportação de Filtragem de Endereços Plus (EAF+) para um processo e restringi-lo a módulos de DLL específicos, use o seguinte formato:

Set-ProcessMitigation -Name processName.exe -Enable EnableExportAddressFilterPlus -EAFModules dllName1.dll,dllName2.dll

[2]: A auditoria para esta mitigação não está disponível através de cmdlets do PowerShell.

Personalizar notificações de proteção contra explorações

Para obter mais informações sobre como personalizar a notificação quando uma regra é disparada e um aplicativo ou arquivo é bloqueado, consulte Segurança do Windows.