Usar las directivas asignadas para proteger el Control de aplicaciones de Windows Defender contra las alteraciones del sistema

Nota

Algunas funcionalidades de Windows Defender Application Control solo están disponibles en versiones específicas de Windows. Para obtener más información, consulte Windows Defender disponibilidad de características de Application Control.

Las directivas de Control de aplicaciones Windows Defender (WDAC) firmadas proporcionan a las organizaciones el mayor nivel de protección disponible en Windows. Estas directivas están diseñadas para detectar alteraciones administrativas de la directiva, como por malware que se ejecuta como administrador, y producirán un error de arranque o una pantalla azul. Teniendo en cuenta este objetivo, es mucho más difícil quitar directivas WDAC firmadas. SecureBoot debe estar habilitado para proporcionar esta protección para las directivas WDAC firmadas.

Si actualmente no tiene un certificado de firma de código que puede usar para firmar las directivas, consulte Obtención de certificados de firma de código para su propio uso.

Advertencia

Puede producirse un error de arranque o una pantalla azul si el certificado de firma no sigue estas reglas:

  • Todas las directivas, incluida la base y la complementaria, deben firmarse de acuerdo con el estándar PKCS 7.
  • Use claves RSA solo con tamaño de clave 2K, 3K o 4K. ECDSA no se admite.
  • Puede usar SHA-256, SHA-384 o SHA-512 como algoritmo de resumen en Windows 11, así como Windows 10 y Windows Server 2019 y versiones posteriores después de aplicar la actualización de seguridad acumulativa de noviembre de 2022. Todos los demás dispositivos solo admiten SHA-256.
  • No use la codificación UTF-8 para los campos de certificado, como "nombre común del firmante" y "nombre común del emisor". Estas cadenas deben codificarse como PRINTABLE_STRING, IA5STRING o BMPSTRING.

Antes de intentar implementar una directiva firmada, primero debe implementar una versión sin firmar de la directiva para detectar cualquier problema con las reglas de directiva. También se recomienda habilitar las opciones de regla 9- Habilitado:Menú Opciones de arranque avanzadas y 10- Habilitado:Auditoría de arranque en caso de error para dejar las opciones de solución de problemas disponibles para los administradores. Para asegurarse de que una opción de regla está habilitada, puede ejecutar un comando como Set-RuleOption -FilePath <PathAndFilename> -Option 9, aunque no esté seguro de si la opción ya está habilitada. Si es así, el comando no tiene ningún efecto. Una vez que se hayan validado y estén preparadas para la implementación empresarial, puedes eliminar estas opciones. Para obtener más información sobre las opciones de regla, vea Windows Defender reglas de directiva de Application Control.

Nota

Al firmar una directiva base que tenga directivas complementarias existentes, también debe cambiar a la directiva firmada para todos los complementos. Autorice las directivas complementarias firmadas agregando una <SupplementalPolicySigner> regla a la directiva base.

Preparación de la directiva WDAC para la firma

  1. Abra una sesión de Windows PowerShell con privilegios elevados e inicialice las variables que se van a usar:

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

    Nota

    En este ejemplo se usa una versión aplicada de la directiva WDAC que creó en el artículo Creación de una directiva de control de aplicaciones de Windows Defender desde un equipo de referencia. Si firma otra directiva, asegúrese de actualizar las variables $PolicyPath y $PolicyName con la información correcta.

  2. Ve a tu escritorio como directorio de trabajo:

    cd $PolicyPath
    
  3. Si la directiva WDAC aún no incluye una <UpdatePolicySigner> regla para el certificado de firma de directiva, debe agregarla. Debe existir al menos una <UpdatePolicySigner> regla para convertir el XML de la directiva con ConvertFrom-CiPolicy.

    Use Add-SignerRule y cree una <UpdatePolicySigner> regla a partir del archivo de certificado (.cer). Si compró un certificado de firma de código o emitió uno de su propia infraestructura de clave pública (PKI), puede exportar el archivo de certificado.

    Nota

    Si la directiva no permite directivas complementarias, debe omitir el modificador -Supplemental del siguiente comando:

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

    Importante

    Si no se realiza este paso, no podrá modificar o deshabilitar esta directiva y provocará un error de arranque. Para obtener más información sobre cómo deshabilitar las directivas firmadas que provocan errores de arranque, consulte Quitar Windows Defender directivas de Application Control que provocan errores de detención de arranque.

  4. Usa Set-RuleOption para quitar la opción de regla de directiva sin firmar:

    Set-RuleOption -FilePath $LamnaServerPolicy -Option 6 -Delete
    
  5. (Opcional) Use Set-CIPolicyIdInfo para restablecer el identificador de directiva y cambiar el nombre de la directiva.

  6. (Opcional) Use Set-CIPolicyVersion para cambiar la directiva VersionEx.

    Importante

    Al actualizar una directiva firmada, el valor VersionEx de la directiva actualizada debe ser mayor o igual que la directiva actual. Reemplazar una directiva firmada por una versión inferior provocará un error de arranque.

  7. Usa ConvertFrom-CIPolicy para convertir la directiva al formato binario:

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

Firma de la directiva

Firma de directivas con signtool.exe

Si compró un certificado de firma de código o emitió uno de su propia PKI, puede usar SignTool.exe para firmar los archivos de directiva WDAC:

  1. Importe el certificado de firma de código .pfx en el almacén personal del usuario en el equipo donde se producirá la firma. En este ejemplo, se usa el certificado creado en la sección Opcional: Crear un certificado de firma de código para el Control de aplicaciones de Windows Defender.

  2. Firma la directiva WDAC con SignTool.exe:

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

    Nota

    La variable <Ruta de acceso a signtool.exe> debe ser la ruta de acceso completa de la utilidad SignTool.exe. ContosoSigningCert es el nombre del firmante del certificado que se usará para firmar la directiva. Debes importar este certificado a tu almacén de certificados personal en el equipo que usas para firmar la directiva.

Una vez completado, los comandos deben generar un archivo de directiva firmado con una .p7 extensión. Debe cambiar el nombre del archivo a {GUID}.cip donde "{GUID}" es el <Valor PolicyId> del XML de directiva WDAC original.

Comprobación e implementación de la directiva firmada

Puede usar certutil.exe para comprobar el archivo firmado. Revise la salida para confirmar el algoritmo de firma y la codificación de los campos de certificado, como "nombre común del firmante" y "nombre común del emisor", como se describe en la advertencia de la parte superior de este artículo.

certutil.exe -asn <path to signed policy file>

Pruebe exhaustivamente la directiva firmada en un conjunto representativo de equipos antes de continuar con la implementación. Asegúrese de reiniciar los equipos de prueba al menos dos veces después de aplicar la directiva WDAC firmada para asegurarse de que no se produce un error de arranque.

Una vez que haya comprobado la directiva firmada, impleméntela con el método de implementación que prefiera. Para obtener más información sobre la implementación de directivas, vea Deploying Windows Defender Application Control policies (Implementación de directivas Windows Defender Application Control).

Nota

La protección contra la manipulación de directivas firmadas surte efecto después del primer reinicio una vez aplicada la directiva firmada a un equipo. Esta protección solo se aplica a los equipos con arranque seguro UEFI habilitado.