Use políticas assinadas para proteger o controle do Windows Defender Application contra violação

Observação

Algumas capacidades do Controlo de Aplicações do Windows Defender só estão disponíveis em versões específicas do Windows. Para obter mais informações, veja Disponibilidade de funcionalidades do Controlo de Aplicações do Windows Defender.

As políticas de Controlo de Aplicações do Windows Defender (WDAC) assinadas proporcionam às organizações o nível mais elevado de proteção disponível no Windows. Estas políticas foram concebidas para detetar adulteração administrativa da política, como software maligno em execução como administrador e resultará numa falha de arranque ou num ecrã azul. Com este objetivo em mente, é muito mais difícil remover políticas WDAC assinadas. O SecureBoot tem de estar ativado para fornecer esta proteção para políticas WDAC assinadas.

Se não tiver atualmente um certificado de assinatura de código que possa utilizar para assinar as suas políticas, veja Obter certificados de assinatura de código para sua própria utilização.

Aviso

A falha de arranque, ou ecrã azul, poderá ocorrer se o certificado de assinatura não seguir estas regras:

  • Todas as políticas, incluindo base e suplementares, têm de ser assinadas de acordo com o PKCS 7 Standard.
  • Utilize chaves RSA apenas com tamanho de chave 2K, 3K ou 4K. A ECDSA não é suportada.
  • Pode utilizar SHA-256, SHA-384 ou SHA-512 como algoritmo de resumo no Windows 11, bem como Windows 10 e Windows Server 2019 e superior após aplicar a atualização de segurança cumulativa de novembro de 2022. Todos os outros dispositivos só suportam SHA-256.

Antes de tentar implementar uma política assinada, primeiro deve implementar uma versão não assinada da política para detetar quaisquer problemas com as regras de política. Também recomendamos que ative as opções de regra 9 – Ativado:Opções de Arranque Avançadas e 10 – Ativado:Auditoria de Arranque por Falha para deixar as opções de resolução de problemas disponíveis para os administradores. Para garantir que uma opção de regra está ativada, pode executar um comando como Set-RuleOption -FilePath <PathAndFilename> -Option 9, mesmo que não tenha a certeza se a opção já está ativada. Se for o caso, o comando não tem efeito. Quando estiver validada e pronta para implantação corporativa, você poderá remover essas opções. Para obter mais informações sobre as opções de regras, consulte Regras de política do Controlo de Aplicações do Windows Defender.

Observação

Ao assinar uma política Base que tenha políticas Suplementares existentes, também tem de mudar para a política assinada para todos os Suplementos. Autorize as políticas suplementares assinadas ao adicionar uma <SupplementalPolicySigner> regra à política Base.

Preparar a política WDAC para assinatura

  1. Abra uma sessão de Windows PowerShell elevada e inicialize as variáveis a utilizar:

    $PolicyPath=$env:userprofile+"\Desktop\"
    $PolicyName="FixedWorkloadPolicy_Enforced"
    $LamnaServerPolicy=$PolicyPath+$PolicyName+".xml"
    

    Observação

    Este exemplo utiliza uma versão imposta da política WDAC que criou no Create uma política de Controlo de Aplicações do Windows Defender a partir de um artigo de computador de referência. Se assinar outra política, certifique-se de que atualiza as variáveis $PolicyPath e $PolicyName com as informações corretas.

  2. Navegue até a área de trabalho como o diretório de trabalho:

    cd $PolicyPath
    
  3. Se a política WDAC ainda não incluir uma <UpdatePolicySigner> regra para o certificado de assinatura de política, tem de adicioná-la. Tem de existir, pelo menos, uma <UpdatePolicySigner> regra para converter o XML da política com ConvertFrom-CiPolicy.

    Utilize Add-SignerRule e crie uma <UpdatePolicySigner> regra a partir do ficheiro de certificado (.cer). Se comprou um certificado de assinatura de código ou emitiu um na sua própria infraestrutura de chaves públicas (PKI), pode exportar o ficheiro de certificado.

    Observação

    Se a sua política não permitir políticas suplementares, deve omitir o parâmetro -Supplemental do seguinte comando:

    Add-SignerRule -FilePath $LamnaServerPolicy -CertificatePath <Path to exported .cer certificate> -Update -Supplemental
    

    Importante

    Se não conseguir efetuar este passo, não poderá modificar ou desativar esta política e resultará numa falha de arranque. Para obter mais informações sobre como desativar políticas assinadas que causam falhas de arranque, consulte Remover políticas de Controlo de Aplicações do Windows Defender que causam falhas de paragem de arranque.

  4. Use Set-RuleOption para remover a opção de regra de política não assinada:

    Set-RuleOption -FilePath $LamnaServerPolicy -Option 6 -Delete
    
  5. (Opcional) Utilize Set-CIPolicyIdInfo para repor o ID da política e alterar o nome da política.

  6. (Opcional) Utilize Set-CIPolicyVersion para alterar a política VersionEx.

    Importante

    Ao atualizar uma política assinada, o VersionEx da política atualizada tem de ser maior ou igual à política atual. Substituir uma política assinada por uma versão inferior levará a uma falha de arranque.

  7. Use ConvertFrom-CIPolicy para converter a política em formato binário:

    $PolicyID= Set-CIPolicyIdInfo -FilePath $LamnaServerPolicy  -ResetPolicyID
    $PolicyID = $PolicyID.Substring(11)
    $CIPolicyBin = $env:userprofile + "\Desktop\" + $PolicyID + ".cip"
    ConvertFrom-CIPolicy $LamnaServerPolicy $CIPolicyBin
    

Assinar a política

Assinatura de políticas com signtool.exe

Se comprou um certificado de assinatura de código ou emitiu um no seu próprio PKI, pode utilizar SignTool.exe para assinar os seus ficheiros de política WDAC:

  1. Importe o certificado de assinatura de código .pfx para o arquivo pessoal do utilizador no computador onde irá ocorrer a assinatura. Neste exemplo, você usa o certificado que foi criado na seção Opcional: Criar um certificado de assinatura de código para o Windows Defender Application Control.

  2. Assine a política do WDAC usando SignTool.exe:

    <Path to signtool.exe> sign -v -n "ContosoSigningCert" -p7 . -p7co 1.3.6.1.4.1.311.79.1 -fd sha256 $CIPolicyBin
    

    Observação

    A variável <Path para signtool.exe> deve ser o caminho completo para o utilitário SignTool.exe. ContosoSigningCert é o nome do requerente do certificado que será utilizado para assinar a política. Você deve importar esse certificado para o repositório de certificados pessoais no computador usado para assinar a política.

Quando terminar, os comandos devem produzir um ficheiro de política assinado com uma .p7 extensão. Tem de mudar o nome do ficheiro para {GUID}.cip onde "{GUID}" é o <PolicyId> do XML da política WDAC original.

Verificar e implementar a política assinada

Pode utilizar o certutil.exe ou o PowerShell para verificar o ficheiro assinado. Reveja o resultado para confirmar o algoritmo de assinatura, conforme descrito no Aviso na parte superior deste artigo.

certutil.exe -asn <path to signed policy file>
$CIPolicyBin = 'path to signed policy file'
Add-Type -AssemblyName 'System.Security'
$SignedCryptoMsgSyntax = New-Object -TypeName System.Security.Cryptography.Pkcs.SignedCms
$SignedCryptoMsgSyntax.Decode([System.IO.File]::ReadAllBytes($CIPolicyBin))
$SignedCryptoMsgSyntax.Certificates | Format-List -Property *

Teste exaustivamente a política assinada num conjunto representativo de computadores antes de prosseguir com a implementação. Certifique-se de que reinicia os computadores de teste pelo menos duas vezes depois de aplicar a política WDAC assinada para garantir que não encontra uma falha de arranque.

Depois de verificar a política assinada, implemente-a com o seu método de implementação preferencial. Para obter mais informações sobre a implementação de políticas, veja Implementar políticas de Controlo de Aplicações do Windows Defender.

Observação

A proteção anti-adulteração para políticas assinadas entra em vigor após o primeiro reinício quando a política assinada é aplicada a um computador. Esta proteção aplica-se apenas a computadores com o Arranque Seguro UEFI ativado.