Implementación de directivas WDAC mediante script

Nota

Algunas funcionalidades de Windows Defender Control de aplicaciones (WDAC) solo están disponibles en versiones específicas de Windows. Obtenga más información sobre la disponibilidad de características de Application Control.

En este artículo se describe cómo implementar directivas de control de aplicaciones (WDAC) de Windows Defender mediante script. Las instrucciones siguientes usan PowerShell, pero pueden trabajar con cualquier host de scripting.

Ahora debe tener una o varias directivas WDAC convertidas en formato binario. Si no es así, siga los pasos descritos en Implementación de directivas de control de aplicaciones de Windows Defender (WDAC).

Importante

Debido a un problema conocido, siempre debe activar nuevas directivas wdac base firmadas con un reinicio en sistemas con integridad de memoria habilitada. Omita todos los pasos siguientes que usan CiTool, RefreshPolicy.exe o WMI para iniciar una activación de directiva. En su lugar, copie el binario de directiva en las ubicaciones system32 y EFI correctas y, a continuación, active la directiva con un reinicio del sistema.

Este problema no afecta a las actualizaciones de las directivas base firmadas que ya están activas en el sistema, la implementación de directivas sin firmar o la implementación de directivas complementarias (firmadas o sin firmar). Tampoco afecta a las implementaciones en sistemas que no ejecutan integridad de memoria.

Implementación de directivas para Windows 11 22H2 y versiones posteriores

Puede usar la bandeja de entrada CiTool para aplicar directivas en Windows 11 22H2 con los siguientes comandos. Asegúrese de reemplazar <Path to policy binary file (Ruta de acceso al archivo binario de directiva) para implementar> en el ejemplo siguiente por la ruta de acceso real al archivo binario de directiva 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 directivas para Windows 11, Windows 10 versión 1903 y posteriores y Windows Server 2022 y versiones posteriores

Para usar este procedimiento, descargue y distribuya la herramienta de actualización de directivas WDAC a todos los puntos de conexión administrados. Asegúrese de que las directivas WDAC permiten la herramienta de actualización de directivas WDAC o usan un instalador administrado para distribuir la herramienta.

  1. Inicialice las variables que usará el 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 Windows Defender binario de directiva de Control de aplicaciones (WDAC) en la carpeta de destino.

    Copy-Item -Path $PolicyBinary -Destination $DestinationFolder -Force
    
  3. Repita los pasos del 1 al 2 según corresponda para implementar más directivas WDAC.

  4. Ejecute RefreshPolicy.exe para activar y actualizar todas las directivas WDAC en el punto de conexión administrado.

    & $RefreshPolicyTool
    

Implementación de directivas para todas las demás versiones de Windows y Windows Server

Use WMI para aplicar directivas en todas las demás versiones de Windows y Windows Server.

  1. Inicialice las variables que usará el 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 Windows Defender binario de directiva de Control de aplicaciones (WDAC) en el destino.

    Copy-Item  -Path $PolicyBinary -Destination $DestinationBinary -Force
    
  3. Actualización y activación de la directiva WDAC mediante WMI

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

Implementación de directivas firmadas

Si usa directivas WDAC firmadas, las directivas deben implementarse en la partición EFI del dispositivo, además de las ubicaciones descritas en las secciones anteriores. No es necesario que las directivas WDAC sin firmar estén presentes en la partición EFI.

  1. Monte el volumen EFI y haga que el directorio, si no existe, en un símbolo del sistema de PowerShell con privilegios elevados:

    $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 la directiva firmada en la carpeta creada:

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