Share via


Instrucciones sobre la creación de directivas de denegación de WDAC

Con Windows Defender Control de aplicaciones (WDAC), puede crear directivas para denegar explícitamente controladores y aplicaciones específicos. Para crear directivas de denegación eficaces Windows Defender Application Control, debe comprender el orden de precedencia de la regla que WDAC aplica a medida que evalúa los archivos con respecto a las directivas activas.

Directiva de denegación independiente

Al crear una directiva que consta únicamente de reglas de denegación, debe incluir reglas "Permitir todo" en las secciones kernel y modo usuario de la directiva, además de las reglas de denegación explícitas. Las reglas "Permitir todo" garantizan que se permita ejecutar cualquier cosa que no se haya denegado explícitamente por la directiva. Si no puede agregar reglas "Permitir todo" a una directiva de solo denegación, corre el riesgo de bloquearlo todo. Este resultado se produce porque se deniega explícitamente algún código y se deniega implícitamente el resto del código, porque no hay reglas para autorizarlo. Se recomienda usar la plantilla de directiva AllowAll al crear las directivas de denegación independientes.

<FileRules>
  <Allow ID="ID_ALLOW_A_1" FriendlyName="Allow Kernel Drivers" FileName="*" />
  <Allow ID="ID_ALLOW_A_2" FriendlyName="Allow User mode components" FileName="*" />
</FileRules>
<SigningScenarios>
    <SigningScenario Value="131" ID="ID_SIGNINGSCENARIO_DRIVERS" FriendlyName="Kernel Mode Signing Scenario">
      <ProductSigners>
        <FileRulesRef>
          <FileRuleRef RuleID="ID_ALLOW_A_1" />
        </FileRulesRef>
      </ProductSigners>
    </SigningScenario>
    <SigningScenario Value="12" ID="ID_SIGNINGSCENARIO_WINDOWS" FriendlyName="User Mode Signing Scenario">
      <ProductSigners>
        <FileRulesRef>
          <FileRuleRef RuleID="ID_ALLOW_A_2" />
        </FileRulesRef>
      </ProductSigners>
    </SigningScenario>
</SigningScenarios>

Agregar las reglas anteriores "Permitir todo" no afecta a ninguna otra directiva WDAC que haya implementado que aplique una lista de permitidos explícita. Para ilustrar, tenga en cuenta el ejemplo siguiente:

Policy1 es una lista de permitidos para aplicaciones firmadas por Windows y Microsoft.

Policy2 es nuestra nueva directiva de denegación, que bloquea MaliciousApp.exe y también el wmic.exe binario del componente de Windows. También incluye las reglas "Permitir todo".

  • MaliciousApp.exe está bloqueado, ya que hay una regla de bloque explícita en Policy2. Policy1 también lo bloquea implícitamente , ya que no hay reglas de permiso que cubran el archivo de esa directiva.
  • El wmic.exe de archivos firmados por Windows está bloqueado, ya que hay una regla de bloque explícita en Policy2.
  • Se permiten todas las demás aplicaciones firmadas por Windows y Microsoft, ya que hay una regla de permiso explícita en Policy1 y Policy2 que cubre el archivo.
  • Todas las demás aplicaciones se deniegan implícitamente. Por ejemplo, ExampleApp.exe, no se permite, ya que solo es de confianza para Policy2 (debido a las reglas Permitir todas) y no para Policy1.

Consideraciones de directivas de denegación y permiso mixtas

Si el conjunto de reglas de denegación se va a agregar a una directiva existente que incluya reglas de permiso explícitas, no incluya las reglas anteriores "Permitir todo". En su lugar, las reglas de denegación deben combinarse con la directiva WDAC existente mediante el Asistente para WDAC o mediante el siguiente comando de PowerShell:

$DenyPolicy = <path_to_deny_policy>
$ExistingPolicy = <path_to_existing_policy>
Merge-CIPolicy -PolicyPaths $ DenyPolicy, $ExistingPolicy -OutputFilePath $ExistingPolicy

Procedimientos recomendados

  1. Pruebe primero en modo auditoría : al igual que con todas las directivas nuevas, se recomienda implementar la nueva directiva de denegación en modo auditoría y supervisar los eventos de bloque de auditoría 3076 para asegurarse de que solo se bloquean las aplicaciones que tenía previsto bloquear. Más información sobre la supervisión de eventos de bloque a través de los registros de Visor de eventos y búsqueda avanzada: administración y solución de problemas de directivas de Windows Defender Application Control

  2. Tipos de reglas de denegación recomendados : las reglas de firmante y atributo de archivo se recomiendan desde una perspectiva de seguridad, capacidad de administración y rendimiento. Las reglas hash solo se deben usar si es necesario. Dado que el hash de un archivo cambia con cualquier cambio en el archivo, es difícil mantenerse al día con una directiva de bloques basada en hash en la que el atacante puede actualizar trivialmente el archivo. Aunque WDAC ha optimizado el análisis de reglas hash, algunos dispositivos pueden ver impactos en el rendimiento en la evaluación en tiempo de ejecución si las directivas tienen decenas de miles o más reglas hash.

Creación de un tutorial de directiva de denegación

Las reglas y directivas de denegación se pueden crear mediante los cmdlets de PowerShell o el Asistente para WDAC. Se recomienda crear reglas de firmante (PCACertificate, Publisher y FilePublisher) siempre que sea posible. En los casos de archivos binarios sin signo, se deben crear reglas en atributos del archivo, como el nombre de archivo original o el hash.

Regla de denegación basada en el publicador de software

$DenyRules += New-CIPolicyRule -Level FilePublisher -DriverFilePath <binary_to_block> -Fallback SignedVersion,Publisher,Hash -Deny

Regla de denegación basada en atributos de software

$DenyRules += New-CIPolicyRule -Level FileName -DriverFilePath <binary_to_block> -Fallback Hash -Deny

Regla de denegación basada en hash

$DenyRules += New-CIPolicyRule -Level Hash -DriverFilePath <binary_to_block> -Deny

Combinar reglas de denegación con la directiva de plantilla AllowAll

Después de crear las reglas de denegación, puede combinarlas con la directiva de plantilla AllowAll:

$DenyPolicy = <path_to_deny_policy_destination>
$AllowAllPolicy = $Env:windir + "\schemas\CodeIntegrity\ExamplePolicies\AllowAll.xml"
Merge-CIPolicy -PolicyPaths $AllowAllPolicy -OutputFilePath $DenyPolicy -Rules $DenyRules
Set-CiPolicyIdInfo -FilePath $DenyPolicy -PolicyName "My Deny Policy" -ResetPolicyID

Implementación de la directiva de denegación

Ahora debe tener una directiva de denegación preparada para implementar. Consulte la Guía de implementación de WDAC para implementar la directiva en los puntos de conexión administrados.