Instrucciones para crear directivas de denegación de control de aplicaciones
Con App Control para empresas, puede crear directivas para denegar explícitamente controladores y aplicaciones específicos. Para crear directivas de denegación de App Control para empresas eficaces, debe comprender el orden de precedencia de regla que aplica El control de aplicaciones se 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 de Control de aplicaciones 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 de Control de aplicaciones existente mediante el Asistente para control de aplicaciones 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
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 App Control for Business
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 App Control 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 control de aplicaciones. 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 App Control para implementar la directiva en los puntos de conexión administrados.