Implementar políticas WDAC com script

Observação

Algumas capacidades do Controlo de Aplicações do Windows Defender (WDAC) só estão disponíveis em versões específicas do Windows. Saiba mais sobre a disponibilidade das funcionalidades do Controlo de Aplicações.

Este artigo descreve como implementar políticas de Controlo de Aplicações do Windows Defender (WDAC) com script. As instruções seguintes utilizam o PowerShell, mas podem funcionar com qualquer anfitrião de scripts.

Agora, deverá ter uma ou mais políticas WDAC convertidas em formato binário. Caso contrário, siga os passos descritos em Implementar políticas de Controlo de Aplicações do Windows Defender (WDAC).

Importante

Devido a um problema conhecido, deve ativar sempre novas políticas de Base WDAC assinadas com um reinício nos sistemas com a integridade da memória ativada. Ignore todos os passos abaixo que utilizam CiTool, RefreshPolicy.exe ou WMI para iniciar uma ativação de política. Em vez disso, copie o binário da política para as localizações corretas do system32 e EFI e, em seguida, ative a política com um reinício do sistema.

Este problema não afeta as atualizações às políticas de Base assinadas que já estejam ativas no sistema, na implementação de políticas não assinadas ou na implementação de políticas suplementares (assinadas ou não assinadas). Também não afeta as implementações em sistemas que não estão a executar a integridade da memória.

Implementar políticas para o Windows 11 22H2 e superior

Pode utilizar a caixa de entrada CiTool para aplicar políticas no Windows 11 22H2 com os seguintes comandos. Certifique-se de que substitui <Path to policy binary file (Caminho para o ficheiro binário da política) para implementar> no exemplo seguinte pelo caminho real para o ficheiro binário da política WDAC.

# Policy binary files should be named as {GUID}.cip for multiple policy format files (where {GUID} = <PolicyId> from the Policy XML)
$PolicyBinary = "<Path to policy binary file to deploy>"
CiTool --update-policy $PolicyBinary [-json]

Implementar políticas para o Windows 11, Windows 10 versão 1903 e superior e Windows Server 2022 e superior

Para utilizar este procedimento, transfira e distribua a ferramenta de atualização de políticas WDAC para todos os pontos finais geridos. Certifique-se de que as políticas WDAC permitem que a ferramenta de atualização da política WDAC ou utilize um instalador gerido para distribuir a ferramenta.

  1. Inicialize as variáveis a utilizar pelo script.

    # Policy binary files should be named as {GUID}.cip for multiple policy format files (where {GUID} = <PolicyId> from the Policy XML)
    $PolicyBinary = "<Path to policy binary file to deploy>"
    $DestinationFolder = $env:windir+"\System32\CodeIntegrity\CIPolicies\Active\"
    $RefreshPolicyTool = "<Path where RefreshPolicy.exe can be found from managed endpoints>"
    
  2. Copie o binário da política do Controlo de Aplicações do Windows Defender (WDAC) para a pasta de destino.

    Copy-Item -Path $PolicyBinary -Destination $DestinationFolder -Force
    
  3. Repita os passos 1 a 2 conforme adequado para implementar mais políticas WDAC.

  4. Execute RefreshPolicy.exe para ativar e atualizar todas as políticas WDAC no ponto final gerido.

    & $RefreshPolicyTool
    

Implementar políticas para todas as outras versões do Windows e do Windows Server

Utilize a WMI para aplicar políticas em todas as outras versões do Windows e do Windows Server.

  1. Inicialize as variáveis a utilizar pelo script.

    # Policy binary files should be named as SiPolicy.p7b for Windows 10 versions earlier than 1903
    $PolicyBinary = "<Path to policy binary file to deploy>"
    $DestinationBinary = $env:windir+"\System32\CodeIntegrity\SiPolicy.p7b"
    
  2. Copie o binário da política do Controlo de Aplicações do Windows Defender (WDAC) para o destino.

    Copy-Item  -Path $PolicyBinary -Destination $DestinationBinary -Force
    
  3. Atualizar e ativar a política WDAC com a WMI

    Invoke-CimMethod -Namespace root\Microsoft\Windows\CI -ClassName PS_UpdateAndCompareCIPolicy -MethodName Update -Arguments @{FilePath = $DestinationBinary}
    

Implementar políticas assinadas

Se estiver a utilizar políticas WDAC assinadas, as políticas têm de ser implementadas na partição EFI do seu dispositivo, para além das localizações descritas nas secções anteriores. As políticas WDAC não assinadas não precisam de estar presentes na partição EFI.

  1. Monte o volume EFI e crie o diretório, se não existir, numa linha de comandos elevada do PowerShell:

    $MountPoint = 'C:\EFIMount'
    $EFIDestinationFolder = "$MountPoint\EFI\Microsoft\Boot\CiPolicies\Active"
    $EFIPartition = (Get-Partition | Where-Object IsSystem).AccessPaths[0]
    if (-Not (Test-Path $MountPoint)) { New-Item -Path $MountPoint -Type Directory -Force }
    mountvol $MountPoint $EFIPartition
    if (-Not (Test-Path $EFIDestinationFolder)) { New-Item -Path $EFIDestinationFolder -Type Directory -Force }
    
  2. Copie a política assinada para a pasta criada:

    Copy-Item -Path $PolicyBinary -Destination $EFIDestinationFolder -Force
    
  3. Reinicie o sistema.