有关创建应用控制拒绝策略的指南
使用适用于企业的应用控制,可以创建策略来显式拒绝特定的驱动程序和应用程序。 若要创建有效的适用于企业的应用控制拒绝策略,应了解应用控件根据活动策略评估文件 时应用的规则优先级顺序 。
独立拒绝策略
创建仅包含拒绝规则的策略时,除了显式拒绝规则外,还必须在策略的内核和用户模式部分包括“全部允许”规则。 “全部允许”规则可确保允许运行策略未显式拒绝的任何内容。 如果未能将“全部允许”规则添加到仅拒绝策略,则有可能阻止所有内容。 出现此结果是因为某些代码 被显式 拒绝,而所有其他代码被 隐式 拒绝,因为没有规则来授权它。 建议在创建独立拒绝策略时使用 AllowAll 策略模板 。
<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>
添加上述“全部允许”规则不会影响已部署的、应用显式允许列表的任何其他应用控制策略。 为了说明,请考虑以下示例:
Policy1 是 Windows 和Microsoft签名应用程序的允许列表。
Policy2 是新的拒绝策略,它阻止 MaliciousApp.exe 以及 Windows 组件二进制 wmic.exe。 它还包括“全部允许”规则。
- MaliciousApp.exe 被阻止,因为 Policy2 中存在显式阻止规则。 Policy1 也 隐式 阻止了它,因为没有允许规则覆盖该策略中的文件。
- Windows 签名文件 wmic.exe 被阻止,因为 Policy2 中存在显式阻止规则。
- 允许所有其他 Windows 和Microsoft签名的应用程序,因为 Policy1 和 Policy2 中有一个涵盖该文件的显式允许规则。
- 所有其他应用程序均被隐式拒绝。 例如,不允许 ExampleApp.exe,因为它仅受 Policy2 (信任,因为“允许所有”规则) 而不是 Policy1。
混合允许和拒绝策略注意事项
如果要将拒绝规则集添加到包含显式允许规则的现有策略中,则不要包括前面的“全部允许”规则。 相反,应通过应用控制向导或使用以下 PowerShell 命令将拒绝规则与现有 应用控制 策略合并:
$DenyPolicy = <path_to_deny_policy>
$ExistingPolicy = <path_to_existing_policy>
Merge-CIPolicy -PolicyPaths $ DenyPolicy, $ExistingPolicy -OutputFilePath $ExistingPolicy
最佳做法
首先在审核模式下进行测试 - 与所有新策略一样,我们建议在审核模式下推出新的拒绝策略,并监视 3076 审核阻止事件 ,以确保仅阻止要阻止的应用程序。 有关通过事件查看器日志监视阻止事件的详细信息和高级搜寻:管理和故障排除业务应用控制策略
建议的拒绝规则类型 - 建议从安全性、可管理性和性能角度考虑签名者和文件属性规则。 仅在必要时才应使用哈希规则。 由于文件哈希随文件的任何更改而更改,因此很难跟上基于哈希的阻止策略,攻击者可以在其中简单更新文件。 虽然应用控制已优化哈希规则分析,但如果策略具有数万个或更多哈希规则,则某些设备可能会在运行时评估中看到性能影响。
创建拒绝策略教程
可以使用 PowerShell cmdlet 或 应用控制向导创建拒绝规则和策略。 建议尽可能 (PCACertificate、Publisher 和 FilePublisher) 创建签名者规则。 对于未签名的二进制文件,必须对文件的属性(如原始文件名或哈希)创建规则。
基于软件发布服务器的拒绝规则
$DenyRules += New-CIPolicyRule -Level FilePublisher -DriverFilePath <binary_to_block> -Fallback SignedVersion,Publisher,Hash -Deny
基于软件属性的拒绝规则
$DenyRules += New-CIPolicyRule -Level FileName -DriverFilePath <binary_to_block> -Fallback Hash -Deny
基于哈希的拒绝规则
$DenyRules += New-CIPolicyRule -Level Hash -DriverFilePath <binary_to_block> -Deny
将拒绝规则与 AllowAll 模板策略合并
创建拒绝规则后,可以将它们与 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
部署拒绝策略
现在应准备好部署拒绝策略。 请参阅 应用控制部署指南 ,将策略部署到托管终结点。