Windows Defender Application Control (WDAC) 终端对抗应用指南
一、WDAC 基础概念
1. WDAC 定义
Windows Defender Application Control (WDAC) 是微软 Windows 操作系统中的一项安全功能,允许系统管理员控制哪些应用程序和驱动程序可以在计算机上运行。其核心思想是从"所有应用程序默认可信任"转变为"应用程序必须赢得信任才能运行"。
2. 主要策略规则类型
- 路径规则(Path Rules):基于文件位置决定是否允许运行
- 哈希规则(Hash Rules):根据文件内容的哈希值识别特定版本文件
- 发布者规则(Publisher Rules):利用数字签名验证文件来源
- 目录规则(Folder Rules):指定目录及其子目录下所有文件的规则
- 脚本规则(Script Rules):专门管理 PowerShell 脚本等脚本文件
3. WDAC 与 AppLocker 的区别
| 特性 | AppLocker | WDAC |
|---|---|---|
| 策略定义方式 | 基于路径、哈希或发布者规则 | 更严格的声明式策略语言,支持平台规则 |
| 适用范围 | 用户模式下的应用程序和脚本 | 用户模式和内核模式组件(包括驱动程序) |
| 兼容性 | Windows 7及更高版本 | Windows 10企业版/教育版及更高版本 |
| 默认行为 | 默认允许所有应用程序 | 默认拒绝所有代码执行 |
重要提示:WDAC 可以管理内核模式组件,包括驱动程序,设置规则时需格外小心,否则可能导致系统无法启动。
二、WDAC 工具使用
1. 工具准备
下载地址:https://webapp-wdac-wizard.azurewebsites.net/
环境要求:
- 需要安装 .NET Desktop Runtime
- 安装 App Control Policy Wizard
2. 策略格式选择
-
Single Policy Format:
- 所有规则包含在一个策略文件中
- 适合简单或小型环境
- 管理简单,便于查看和编辑
-
Multiple Policy Format:
- 规则分隔成多个独立策略文件
- 提供更高灵活性
- 适合大型企业或复杂安全需求
3. 策略模板选择
| 模板类型 | 描述 | 适用场景 |
|---|---|---|
| Default Windows Mode | 最宽松模式,允许大多数已知安全应用 | 保持用户便利性同时有一定安全性 |
| Allow Microsoft Mode | 仅允许微软签名或发布的应用程序 | 对安全性有较高要求的企业 |
| Signed and Reputable Mode | 最严格模式,要求所有应用有可信数字签名 | 高安全性需求环境(金融、政府等) |
建议:为减少对目标用户影响,通常选择 Default Windows Mode。
4. 高级选项配置
| 选项 | 功能描述 |
|---|---|
| Advanced Boot Options Menu | 启用/禁用高级启动选项菜单 |
| Managed Installer | 控制是否允许使用受管安装程序 |
| Require WHQL | 要求所有驱动程序通过WHQL认证 |
| Disable Script Enforcement | 关闭脚本执行强制机制 |
| Hypervisor-protected Code Integrity | 启用基于hypervisor的代码完整性保护 |
| User Mode Code Integrity | 强制用户模式下的代码完整性检查 |
| Intelligent Security Graph | 集成微软智能安全图谱 |
| Treat Revoked as Unsigned | 将撤销证书视为未签名处理 |
重要提示:某些EDR供应商拥有WHQL驱动程序,默认允许加载,需特别注意。
三、WDAC 策略创建与部署
1. 基本创建流程
- 选择策略格式(Single/Multiple)
- 选择策略模板
- 设置策略保存位置
- 配置高级选项
- 添加自定义规则
- 生成策略文件
2. 策略文件部署
- 将生成的 SiPolicy.p7b 文件拷贝至:
C:\Windows\System32\CodeIntegrity\ - 重启电脑使策略生效
重要警告:策略可能造成系统无法启动,建议在虚拟机中测试并做好快照备份。
3. 常见问题解决
问题:删除默认 Allow 规则后系统无法启动
原因:没有定义允许启动的应用,违反了WDAC"默认拒绝"原则
解决方案:
- 使用示例策略文件(如 AllowAll.xml)作为基础
- 在 App Control Policy Wizard 中使用 Policy Merger 功能
- 将融合后的 .cip 文件拷贝至:
C:\Windows\System32\CodeIntegrity\CiPolicies\Active
四、WDAC 在攻防对抗中的应用
1. 禁用安全软件
通过添加路径规则可禁用常见安全软件:
-
Windows Defender:
%ProgramFiles%\Windows Defender\*
%ProgramFiles%\Windows Defender Advanced Threat Protection\* -
360安全软件:
%ProgramFiles%\360\360safe\*
%ProgramFiles%\360\360sd\* -
火绒:
%ProgramFiles%\Huorong\*
注意:禁用Defender后可能导致浏览器下载功能异常。
2. 阻止应急工具
添加应急工具的路径或哈希规则可阻止其运行,增加应急响应难度:
示例(Process Hacker):
%ProgramFiles%\Process Hacker 2\*
扩展应用:可批量添加常见应急工具规则,或利用AI生成更全面的阻止列表。
五、高级技巧与注意事项
1. 内核模式组件控制
- 可基于特定发布者或文件属性专门阻止内核模式组件
- 避免直接禁止所有WHQL驱动程序,可能导致设备无法启动
- 测试发现某些EDR驱动程序不允许运行会导致机器无法启动
2. 有效策略设计要点
- 必须处于强制模式(关闭审核模式)
- 允许一个通用路径用于部署后渗透功能
- 针对特定发布者或文件属性进行阻止
- 避免影响系统关键功能
3. XML 配置文件结构
主要部分:
<VersionEx>:策略版本号<PolicyTypeID>:策略ID<PlatformID>:平台ID<Rules>:启用的选项规则<EKUs>:扩展密钥用途对象列表<FileRules>:具体文件规则<SigningScenarios>:签名验证场景
六、参考资料
重要提示:本指南仅供安全研究和防御用途,实际应用中需遵守相关法律法规。