Personalizar a proteção contra exploits

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.

Configure estas definições utilizando a aplicação Segurança do Windows num dispositivo individual. Em seguida, exporte a configuração como um ficheiro XML para que possa implementar noutros dispositivos. Utilize a Política de Grupo para distribuir o ficheiro XML por vários dispositivos ao mesmo tempo. Também pode configurar as mitigações com o PowerShell.

Este artigo lista cada uma das mitigações disponíveis na proteção contra exploits. Indica se a mitigação pode ser aplicada em todo o sistema ou a aplicações individuais e fornece uma breve descrição de como a mitigação funciona.

Este artigo também descreve como ativar ou configurar as mitigações usando Segurança do Windows, PowerShell e fornecedores de serviços de configuração de gestão de dispositivos móveis (MDM) (CSPs). Configurar definições de proteção contra exploits num único dispositivo é o primeiro passo para criar uma configuração que possa implementar em toda a sua rede. Para implementar esta configuração em múltiplos dispositivos, consulte Importar, exportar e implementar configurações de proteção contra exploits.

Aviso

Algumas tecnologias de mitigação de segurança podem ter problemas de compatibilidade com algumas aplicações. Deve testar a proteção contra exploits em todos os cenários de utilização de alvos, utilizando o modo de auditoria de proteção antes de implementar a configuração num ambiente de produção ou no resto da sua rede.

Mitigações de proteção contra explorações

Todas as mitigações podem ser configuradas para aplicações individuais. Algumas mitigações também podem ser aplicadas ao nível do sistema operativo.

Pode definir cada uma das mitigações para ativado, desativado ou para o respetivo valor predefinido. Algumas mitigações têm mais opções indicadas na descrição na tabela.

Os valores predefinido são sempre especificados entre parênteses na opção Utilizar predefinição para cada mitigação. No exemplo seguinte, a predefinição para Prevenção de Execução de Dados é "Ativado".

A configuração Utilizar predefinição para cada uma das definições de mitigação indica a nossa recomendação para um nível base de proteção para a utilização diária para utilizadores de casa. 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 os cmdlets PowerShell associados a cada mitigação, consulte os cmdlets PowerShell para mitigações de proteção contra exploits no final deste artigo.

Mitigação Descrição Pode ser aplicado a Modo de auditoria disponível
Proteção do Fluxo de Controlo (CFG) Garante a integridade do fluxo de controlo nas chamadas indiretas. Opcionalmente, pode suprimir exportações e utilizar CFG estrito. Ao nível do sistema e da aplicação Não
Prevenção de Execução de Dados (DEP) Impede que o código seja executado a partir de páginas de memória apenas de dados, como a heap e stacks. Apenas configurável para aplicações de 32 bits (x86), permanentemente ativadas para todas as outras arquiteturas. Pode ativar opcionalmente a emulação thunk da ATL. Ao nível do sistema e da aplicação Não
Forçar a aleatoriedade de imagens (ASLR Obrigatório) Relocaliza à força imagens não compiladas com /DYNAMICBASE. Opcionalmente, pode falhar o carregamento de imagens que não têm informações de relocalização. Ao nível do sistema e da aplicação Não
Randomizar alocações de memória (ASLR de baixo para cima) Aleatoriza localizações para alocações de memória virtual. Inclui montes, pilhas, TEBs e PEBs das estruturas do sistema. Opcionalmente, pode utilizar uma variação de aleatorização mais ampla para processos de 64 bits. Ao nível do sistema e da aplicação Não
Validar cadeias de exceção (SEHOP) Garante a integridade de uma cadeia de exceções durante os envios de exceções. Apenas configurável para aplicações de 32 bits (x86). Ao nível do sistema e da aplicação Não
Validar a integridade da heap Termina um processo quando é detetada corrupção no heap. Ao nível do sistema e da aplicação Não
Proteção de código arbitrário (ACG) Impede a introdução de código executável sem suporte para imagens e impede a modificação de páginas de código. Opcionalmente, pode permitir a opção de não participar no thread e permitir a regressão remota (configurável apenas com o PowerShell). Apenas ao nível da aplicação Sim
Bloquear imagens de integridade baixa Impede o carregamento de imagens assinaladas com Integridade Baixa. Apenas ao nível da aplicação Sim
Bloquear imagens remotas Impede o carregamento de imagens a partir de dispositivos remotos. Apenas ao nível da aplicação Não
Bloquear tipos de letra não fidedignos Impede o carregamento de tipos de letra baseados em GDI não instalados no diretório de tipos de letra do sistema, particularmente tipos de letra da Web. Apenas ao nível da aplicação Sim
Proteção de integridade do código Restringe o carregamento de imagens assinadas pela Microsoft, WHQL ou superior. Opcionalmente, pode permitir imagens assinadas na Microsoft Store. Apenas ao nível da aplicação Sim
Desativar pontos de extensão Desativa vários mecanismos de extensibilidade que permitem a injeção de DLLs em todos os processos, tais como DLLs AppInit, ganchos de janela e prestadores de serviços Winsock. Apenas ao nível da aplicação Não
Desativar chamadas do sistema Win32k Impede que uma aplicação use a tabela de chamada do sistema Win32k. Apenas ao nível da aplicação Sim
Não permitir processos filhos Impede que uma aplicação crie processos subordinados. Apenas ao nível da aplicação 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 normalmente utilizados por exploits. Apenas ao nível da aplicação Sim
Filtragem de endereços de importação (IAF) Deteta operações perigosas que são resolvidas por um código malicioso. Apenas ao nível da aplicação Sim
Simular execução (SimExec) Garante que as chamadas a APIs sensíveis são devolvidas a chamadores legítimos. Apenas configurável para aplicações de 32 bits (x86). Não compatível com ACG. Apenas ao nível da aplicação Sim
Validar invocação de API (CallerCheck) Garante que os autores de chamadas legítimos invocam APIs confidenciais. Apenas configurável para aplicações de 32 bits (x86). Não compatível com ACG Apenas ao nível da aplicação Sim
Validar a utilização do manipulador Faz com que seja criada uma exceção em quaisquer referências de identificador inválida. Apenas ao nível da aplicação Não
Validar a integridade das dependências da imagem Impõe a assinatura de código para o carregamento de dependências de imagens do Windows. Apenas ao nível da aplicação Não
Validar a integridade da pilha (StackPivot) Garante que o stack não foi redirecionado para APIs confidenciais. Não compatível com ACG. Apenas ao nível da aplicação 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 seguintes ajudam a ilustrar como funcionam as predefinições:

Ativado nas Definições de programa Ativado nas Definições de sistema Comportamento
Sim Não Conforme definido nas definições de Programa
Sim Sim Conforme definido nas definições de Programa
Não Sim Conforme definido nas Definições de sistema
Não Não Predefinição, conforme definido em Utilizar predefinição
  • Exemplo 1 O Mikael configura a Prevenção de Execução de Dados (DEP) na secção Definições do sistema para estar Desligado por predefinição. O Mikael então adiciona a aplicação test.exe à secção Definições de programa. Nas opções para essa aplicação, em Prevenção de Execução de Dados (DEP), ele ativa Ignorar definições de sistema e muda o botão para a posição Ativado. Não existem outras aplicações listadas na secção Definições de programa. O resultado será que o DEP só será ativado para test.exe. Todas as outras aplicações não terão a DEP aplicada.

  • Exemplo 2 A Josie configura a Prevenção de Execução de Dados (DEP) na secção Definições do sistema para estar Desligado por predefinição. Josie então adiciona a aplicação test.exe à secção Definições de programa. Nas opções para essa aplicação, em Prevenção de Execução de Dados (DEP), ela ativa Ignorar definições de sistema e muda o botão para a posição Ativado. A Josie também adiciona a aplicação miles.exe à secção Definições de programa e configura a Proteção de fluxo de controlo (CFG) com Ativado. Ela também não ativa a opção Ignorar definições de sistema para a DEP ou quaisquer outras mitigações para essa aplicação. O resultado será que o DEP será ativado para test.exe. A DEP não será ativada para nenhuma outra aplicação, incluindo miles.exe. CFG será ativado para miles.exe.

Nota

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 mitigações ao nível do sistema com a aplicação Segurança do Windows

Para configurar mitigações de proteção contra vulnerabilidades ao nível do sistema e da aplicação num dispositivo individual, utilize a aplicação Segurança do Windows:

  1. Abra a aplicação Segurança do Windows selecionando o ícone de escudo na barra de tarefas ou procurando no menu Iniciar por Segurança do Windows.

  2. Selecione o mosaico Controlo de aplicações e do browser (ou o ícone da aplicação na barra de menus à esquerda) e, em seguida, selecione Proteção contra explorações.

  3. Na secção Definições do sistema, localize a mitigação que pretende configurar e, em seguida, especifique uma das seguintes definições. As aplicações que não estão configuradas individualmente na secção Definições de programa utilizam as definições configuradas aqui:

    • Ativada por predefinição - A mitigação está ativada para aplicações que não têm esta mitigação definida na secção definições do Programa específicas da aplicação
    • Desativada por predefinição - A mitigação está desativada para aplicações que não têm esta mitigação definida na secção definições do Programa específicas da aplicação
    • Utilizar predefinição - A mitigação está ativada ou desativada, dependendo da configuração predefinida configurada pela instalação do Windows 10 ou do Windows 11; o valor predefinido (Ativada ou Desativada) é sempre especificado junto à etiqueta Utilizar predefinição para cada mitigação

    Nota

    Poderá ver uma janela de Controlo de Conta de Utilizador ao alterar algumas definições. Insira as credenciais de administrador para aplicar a definição.

    Alterar algumas definições pode exigir reiniciar o dispositivo.

  4. Repita estes passos de configuração para todas as mitigações ao nível do sistema que pretende configurar.

  5. Vá para a secção Definições do Programa e escolha a aplicação à qual pretende aplicar mitigações:

    1. Se a aplicação que pretende configurar já estiver listada, selecione-a e, em seguida, Editar
    2. Se a aplicação não estiver listada, na parte superior da lista, selecione Adicionar programa para personalizar e, em seguida, escolha como pretende adicionar a aplicação:
      • Utilize Adicionar por nome de programa para que a mitigação seja aplicada a qualquer processo em execução com esse nome. Tem de especificar um ficheiro com uma extensão. Pode introduzir um caminho completo para limitar a mitigação apenas à aplicação com esse nome nessa localização.
      • Utilize Selecionar o caminho de ficheiro exato para utilizar uma janela padrão do seletor de ficheiros do Explorador do Windows para encontrar e selecionar o ficheiro que pretende.
  6. Depois de selecionar a aplicação, verá uma lista de todas as mitigações que podem ser aplicadas. Para ativar a mitigação, selecione a caixa de verificação e, em seguida, altere o cursor de deslize para Ativado. Selecione outras opções adicionais. Selecionar Auditar aplicará a mitigação apenas no modo de auditoria. Será notificado se precisar de reiniciar o processo ou a aplicação ou se precisar de reiniciar o Windows.

  7. Repita estes passos para todas as aplicações e mitigações que pretende configurar. Selecione Aplicar quando terminar de configurar a sua configuração.

Agora pode exportar a configuração de proteção contra exploits como ficheiro XML ou continuar a configurar mitigações específicas da aplicação.

Exportar a configuração como um ficheiro XML permite-lhe copiar a configuração de um dispositivo para outros dispositivos.

Referência do PowerShell

Pode utilizar a aplicação Segurança do Windows para configurar a Proteção contra exploit ou pode utilizar cmdlets do PowerShell.

As definições de configuração modificadas mais recentemente serão sempre aplicadas, independentemente de utilizar o PowerShell ou a Segurança do Windows. Como a configuração mais recentemente modificada está sempre aplicada, se usares a aplicação para configurar uma mitigação e depois usares o PowerShell para configurar a mesma mitigação, a aplicação atualizará para mostrar as alterações que fizeste com o PowerShell. Se, em seguida, utilizar a aplicação para alterar novamente a mitigação, essa alteração seria aplicada.

Importante

Quaisquer alterações implementadas num dispositivo através da Política de Grupo substituirão a configuração local. Ao efetuar uma configuração inicial, utilize um dispositivo ao qual não seja aplicada uma Política de Grupo, para garantir que as suas alterações não sejam substituídas.

Pode utilizar o verbo do PowerShell Get ou Set com o cmdlet ProcessMitigation. Utilizar Get irá lista o estado de configuração atual de quaisquer mitigações que tenham sido ativadas no dispositivo - adicione o cmdlet -Name e o exe da aplicação para ver mitigações apenas para essa aplicação:

Get-ProcessMitigation -Name processName.exe

Importante

As mitigações de nível de sistema que não tenham sido configuradas apresentarão o estado NOTSET.

Para as definições ao nível do sistema, NOTSET indica que a predefinição para essa mitigação foi aplicada.

Para definições ao nível da aplicação, NOTSET indica que a definição ao nível do sistema para a mitigação será aplicada.

A predefinição para cada mitigação ao nível do sistema pode ser consultada na Segurança do Windows.

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

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

Localização:

  • <Âmbito>:
    • -Name para indicar que as mitigações devem ser aplicadas a uma aplicação específica. Especifique o executável da aplicação após este sinalizador.
    • -System para indicar que a mitigação deve ser aplicada ao nível do sistema
  • <Ação>:
    • -Enable para ativar a mitigação
    • -Disable para desativar a mitigação
  • <Mitigação>:

Por exemplo, para ativar a mitigação de Prevenção de Execução de Dados (DEP) com a emulação de ATL thunk e para um executável chamado testing.exe na pasta C:\Apps\LOB\tests e para impedir esse executável de criar processos subordinados, utilize 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 ao nível do sistema em vez de a uma aplicação específica, utilize o âmbito -System. Por exemplo, para ativar o DEP para todos os processos no dispositivo, usaria o seguinte comando:

Set-Processmitigation -System -Enable DEP

Para desativar mitigações, pode substituir -Enable por -Disable. No entanto, para mitigações ao nível da aplicação, isto irá forçar a mitigação a ser desativada apenas para essa aplicação.

Se precisares de restaurar uma mitigação ao nível da aplicação para o padrão do sistema, tens de incluir também o -Remove cmdlet. O exemplo seguinte remove a substituição de DEP específica da aplicação para test.exe, para que herde a predefinição do sistema:

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

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

Por exemplo, o comando seguinte permite a monitorização apenas de auditoria para a mitigação do Arbitrary Code Guard (ACG) no testing.exe usado anteriormente, que regista violações de políticas sem bloquear a execução:

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

Pode desativar o modo de auditoria utilizando o mesmo comando, mas substituindo -Enable por -Disable.

Tabela de referência do PowerShell

Esta tabela lista os cmdlets do PowerShell (e o cmdlet de modo de auditoria associado) que podem ser utilizados para configurar cada mitigação.

Mitigação Aplica-se a Cmdlets de PowerShell Cmdlet do modo de auditoria
Proteção do Fluxo de Controlo (CFG) Ao nível do sistema e da aplicação CFG, StrictCFG, SuppressExports Auditoria não disponível
Prevenção de Execução de Dados (DEP) Ao nível do sistema e da aplicação DEP, EmulateAtlThunks Auditoria não disponível
Forçar a aleatoriedade de imagens (ASLR Obrigatório) Ao nível do sistema e da aplicação ForceRelocateImages Auditoria não disponível
Randomizar alocações de memória (ASLR de baixo para cima) Ao nível do sistema e da aplicação BottomUp, AltaEntropia Auditoria não disponível
Validar cadeias de exceção (SEHOP) Ao nível do sistema e da aplicação SEHOP, SEHOP Elemetria Auditoria não disponível
Validar a integridade da heap Ao nível do sistema e da aplicação Terminar em caso de erro Auditoria não disponível
Proteção de código arbitrário (ACG) Apenas ao nível da aplicação DynamicCode AuditDynamicCode
Bloquear imagens de integridade baixa Apenas ao nível da aplicação BlockLowLabel AuditImageLoad
Bloquear imagens remotas Apenas ao nível da aplicação Bloquear imagens remotas Auditoria não disponível
Bloquear tipos de letra não fidedignos Apenas ao nível da aplicação Desativar tipos de letra que não são do sistema AuditFont, FontAuditOnly
Proteção de integridade do código Apenas ao nível da aplicação MicrosoftSignedOnly, AllowStoreSignedBinaries AuditMicrosoftSigned, AuditStoreSigned
Desativar pontos de extensão Apenas ao nível da aplicação ExtensionPoint Auditoria não disponível
Desativar chamadas do sistema Win32k Apenas ao nível da aplicação DisableWin32kSystemCalls AuditSystemCall
Não permitir processos filho Apenas ao nível da aplicação DisallowChildProcessCreation AuditChildProcess
Filtragem de endereços de exportação (EAF) Apenas ao nível da aplicação EnableExportAddressFilterPlus, EnableExportAddressFilter [1] Auditoria não disponível[2]
Filtragem de endereços de importação (IAF) Apenas ao nível da aplicação Ativar filtro de endereço de importação Auditoria não disponível[2]
Simular execução (SimExec) Apenas ao nível da aplicação EnableRopSimExec Auditoria não disponível[2]
Validar invocação de API (CallerCheck) Apenas ao nível da aplicação EnableRopCallerCheck Auditoria não disponível[2]
Validar a utilização do manipulador Apenas ao nível da aplicação StrictHandle Auditoria não disponível
Validar a integridade das dependências da imagem Apenas ao nível da aplicação Impor a assinatura de dependências de módulos Auditoria não disponível
Validar a integridade da pilha (StackPivot) Apenas ao nível da aplicação EnableRopStackPivot Auditoria não disponível[2]

[1]: Para ativar o Export Address Filtering Plus (EAF+) para um processo e restringi-lo a módulos 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 exploits

Para obter mais informações sobre como personalizar a notificação quando uma regra é acionada e bloqueia uma aplicação ou ficheiro, consulte Segurança do Windows.