WDAC 在终端对抗中的应用
字数 2996 2025-08-29 08:30:18

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. 基本创建流程

  1. 选择策略格式(Single/Multiple)
  2. 选择策略模板
  3. 设置策略保存位置
  4. 配置高级选项
  5. 添加自定义规则
  6. 生成策略文件

2. 策略文件部署

  1. 将生成的 SiPolicy.p7b 文件拷贝至:
    C:\Windows\System32\CodeIntegrity\
  2. 重启电脑使策略生效

重要警告:策略可能造成系统无法启动,建议在虚拟机中测试并做好快照备份。

3. 常见问题解决

问题:删除默认 Allow 规则后系统无法启动

原因:没有定义允许启动的应用,违反了WDAC"默认拒绝"原则

解决方案

  1. 使用示例策略文件(如 AllowAll.xml)作为基础
  2. 在 App Control Policy Wizard 中使用 Policy Merger 功能
  3. 将融合后的 .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. 有效策略设计要点

  1. 必须处于强制模式(关闭审核模式)
  2. 允许一个通用路径用于部署后渗透功能
  3. 针对特定发布者或文件属性进行阻止
  4. 避免影响系统关键功能

3. XML 配置文件结构

主要部分:

  • <VersionEx>:策略版本号
  • <PolicyTypeID>:策略ID
  • <PlatformID>:平台ID
  • <Rules>:启用的选项规则
  • <EKUs>:扩展密钥用途对象列表
  • <FileRules>:具体文件规则
  • <SigningScenarios>:签名验证场景

六、参考资料

  1. WDAC官方文档
  2. WDAC配置指南
  3. WDAC实战应用

重要提示:本指南仅供安全研究和防御用途,实际应用中需遵守相关法律法规。

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> :签名验证场景 六、参考资料 WDAC官方文档 WDAC配置指南 WDAC实战应用 重要提示 :本指南仅供安全研究和防御用途,实际应用中需遵守相关法律法规。