Eliminación de directivas de Control de aplicaciones de Windows Defender (WDAC)

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 Windows Defender Application Control.

Eliminación de directivas WDAC

Puede que llegue un momento en el que quiera quitar una o varias directivas WDAC o quitar todas las directivas WDAC que haya implementado. En este artículo se describen las distintas formas de quitar directivas WDAC.

Importante

Directiva WDAC firmada

Si la directiva que intenta quitar es una directiva WDAC firmada, primero debe implementar una directiva de reemplazo firmada que incluya la opción 6 Enabled:Unsigned System Integrity Policy.

La directiva de reemplazo debe tener el mismo PolicyId que el que está reemplazando y una versión igual o mayor que la directiva existente. La directiva de reemplazo también debe incluir <UpdatePolicySigners>.

Para surtir efecto, esta directiva debe estar firmada con un certificado incluido en la <sección UpdatePolicySigners> de la directiva original que desea reemplazar.

A continuación, debe reiniciar el equipo para que se desactive la protección UEFI de la directiva. Si no lo hace, se producirá un error de inicio de arranque.

Antes de quitar cualquier directiva, primero debe deshabilitar el método usado para implementarla (por ejemplo, directiva de grupo o MDM). De lo contrario, la directiva puede volver a implementarse en el equipo.

Para que una directiva esté inactiva de forma eficaz antes de quitarla, primero puede reemplazarla por una nueva que incluya los siguientes cambios:

  1. Reemplace las reglas de directiva por "Permitir *";
  2. Establezca la opción 3 Enabled:Audit Mode (Habilitado:Modo de auditoría) para cambiar la directiva solo al modo de auditoría;
  3. Establecer la opción 11 Disabled:Script Enforcement;
  4. Permitir todos los objetos COM. Consulte Permitir el registro de objetos COM en una directiva WDAC;
  5. Si procede, quite la opción 0 Enabled:UMCI para convertir la directiva solo en modo kernel.

Importante

Después de quitar una directiva, reinicie el equipo para que surta efecto. No se pueden quitar directivas WDAC sin reiniciar el dispositivo.

Eliminación de directivas WDAC mediante CiTool.exe

A partir de la actualización de Windows 11 2022, puede quitar directivas WDAC mediante CiTool.exe. Desde una ventana de comandos con privilegios elevados, ejecute el siguiente comando. Asegúrese de reemplazar el guid de policyId de texto por el PolicyId real de la directiva WDAC que desea quitar:

    CiTool.exe -rp "{PolicyId GUID}" -json

A continuación, reinicie el equipo.

Eliminación de directivas WDAC mediante soluciones MDM como Intune

Puede usar una solución mobile Administración de dispositivos (MDM), como Microsoft Intune, para quitar directivas WDAC de las máquinas cliente mediante el CSP de ApplicationControl.

Consulte al proveedor de soluciones MDM para obtener información específica sobre el uso del CSP de ApplicationControl.

A continuación, reinicie el equipo.

Eliminación de directivas WDAC mediante script

Para quitar directivas WDAC mediante script, el script debe eliminar los archivos de directiva del equipo. Para varias directivas WDAC de formato de directiva (1903+), busque los archivos de directiva en las siguientes ubicaciones. Asegúrese de reemplazar el GUID de PolicyId por el PolicyId real de la directiva WDAC que desea quitar.

  • <Partición> del sistema EFI\Microsoft\Boot\CiPolicies\Active\{PolicyId GUID}.cip
  • <Volumen del sistema> operativo\Windows\System32\CodeIntegrity\CiPolicies\Active\{PolicyId GUID}.cip

Para las directivas WDAC de formato de directiva única, además de las dos ubicaciones anteriores, busque también un archivo denominado SiPolicy.p7b que se pueda encontrar en las siguientes ubicaciones:

  • <Partición> del sistema EFI\Microsoft\Boot\SiPolicy.p7b
  • <Volumen del sistema> operativo\Windows\System32\CodeIntegrity\SiPolicy.p7b

A continuación, reinicie el equipo.

Script de ejemplo para eliminar una sola directiva WDAC

# Set PolicyId GUID to the PolicyId from your WDAC policy XML
$PolicyId = "{PolicyId GUID}"

# Initialize variables
$SinglePolicyFormatPolicyId = "{A244370E-44C9-4C06-B551-F6016E563076}"
$SinglePolicyFormatFileName = "\SiPolicy.p7b"
$MountPoint =  $env:SystemDrive+"\EFIMount"
$SystemCodeIntegrityFolderRoot = $env:windir+"\System32\CodeIntegrity"
$EFICodeIntegrityFolderRoot = $MountPoint+"\EFI\Microsoft\Boot"
$MultiplePolicyFilePath = "\CiPolicies\Active\"+$PolicyId+".cip"

# Mount the EFI partition
$EFIPartition = (Get-Partition | Where-Object IsSystem).AccessPaths[0]
if (-Not (Test-Path $MountPoint)) { New-Item -Path $MountPoint -Type Directory -Force }
mountvol $MountPoint $EFIPartition

# Check if the PolicyId to be removed is the system reserved GUID for single policy format.
# If so, the policy may exist as both SiPolicy.p7b in the policy path root as well as
# {GUID}.cip in the CiPolicies\Active subdirectory
if ($PolicyId -eq $SinglePolicyFormatPolicyId) {$NumFilesToDelete = 4} else {$NumFilesToDelete = 2}

$Count = 1
while ($Count -le $NumFilesToDelete)
{

    # Set the $PolicyPath to the file to be deleted, if exists
    Switch ($Count)
    {
        1 {$PolicyPath = $SystemCodeIntegrityFolderRoot+$MultiplePolicyFilePath}
        2 {$PolicyPath = $EFICodeIntegrityFolderRoot+$MultiplePolicyFilePath}
        3 {$PolicyPath = $SystemCodeIntegrityFolderRoot+$SinglePolicyFormatFileName}
        4 {$PolicyPath = $EFICodeIntegrityFolderRoot+$SinglePolicyFormatFileName}
    }

    # Delete the policy file from the current $PolicyPath
    Write-Host "Attempting to remove $PolicyPath..." -ForegroundColor Cyan
    if (Test-Path $PolicyPath) {Remove-Item -Path $PolicyPath -Force -ErrorAction Continue}

    $Count = $Count + 1
}

# Dismount the EFI partition
mountvol $MountPoint /D

Nota

Debe ejecutar el script como administrador para quitar directivas WDAC en el equipo.

Eliminación de directivas WDAC que provocan errores de detención de arranque

Una directiva WDAC que bloquea los controladores críticos de arranque puede provocar un error de detención de arranque (BSOD), aunque esto se puede mitigar estableciendo la opción 10 Enabled:Boot Audit On Failure en las directivas. Además, las directivas WDAC firmadas protegen la directiva frente a la manipulación administrativa y el malware que ha obtenido acceso de nivel administrativo al sistema. Por este motivo, las directivas WDAC firmadas son intencionadamente más difíciles de quitar que las directivas sin firmar incluso para los administradores. La alteración o eliminación de una directiva WDAC firmada hará que se produzca un BSOD.

Para quitar una directiva que provoca errores de detención de arranque:

  1. Si la directiva es una directiva WDAC firmada, desactive Arranque seguro en el menú de UEFI BIOS. Para obtener ayuda con la localización de dónde desactivar el arranque seguro en el menú del BIOS, consulte con el fabricante de equipos originales (OEM).
  2. Acceda al menú Opciones avanzadas de arranque del equipo y elija la opción Deshabilitar cumplimiento de firma de controlador. Para obtener instrucciones sobre cómo acceder al menú Opciones avanzadas de arranque durante el inicio, consulte con el OEM. Esta opción suspenderá todas las comprobaciones de integridad de código, incluido WDAC, para una única sesión de arranque.
  3. Inicie Windows con normalidad e inicie sesión. A continuación, quite las directivas WDAC mediante script.
  4. Si desactivaste El arranque seguro en el paso 1 anterior y tu unidad está protegida por BitLocker, suspende la protección de BitLocker y activa El arranque seguro desde el menú de UEFI BIOS.
  5. Reinicie el equipo.

Nota

Si la unidad está protegida por Bitlocker, es posible que necesite las claves de recuperación de Bitlocker para realizar los pasos 1 a 2 anteriores.