Windows安全防护:Device Guard、WDAG与Exploit Guard深度解析
在当今数字化的时代,系统安全至关重要。为了应对日益增长的安全威胁,Windows系统推出了一系列强大的安全防护功能,如Device Guard、Windows Defender Application Guard(WDAG)和Windows Defender Exploit Guard。下面将详细介绍这些功能。
1. Device Guard概述
系统运行有两种方式:一种是在有证据表明软件恶意之前信任一切,证据通常由杀毒软件提供,但这种方式难以应对每天新产生的超39万个恶意软件;另一种是只信任已知的软件、可执行文件和脚本。
传统的软件限制策略或AppLocker在白名单所有可执行文件、DLL和脚本时存在诸多问题。例如,可执行文件数量众多,并非所有都有数字签名,还会遇到运行时创建无签名随机命名可执行文件的情况;DLL文件的清单和规则创建复杂,检查时可能导致系统性能下降;脚本大多无签名,运行时创建和执行脚本也会破坏AppLocker的安全性,且AppLocker可能被管理员或恶意软件篡改。
Code Integrity(即Device Guard)应运而生。它最早在Windows Vista中引入,Windows 8.0桌面版的KMCI强制执行数字签名、Windows内核二进制文件、Windows第一方驱动和x64驱动签名;移动和Windows RT版本扩展到用户模式代码完整性(UMCI),强制执行所有可执行文件的数字签名和完整性。但Windows 8.x版本的Code Integrity存在不足,它运行在高级操作系统的同一内核空间,可能被恶意软件篡改,且UMCI需要企业友好的方式来签署LOB和Win32应用程序。
在Windows 10中,KMCI和UMCI组件移到了安全的VBS容器中,Code Integrity可配置,KMCI模式下可允许第三方驱动,UMCI中所有可执行文件都可集成到Code Integrity策略或受信任的签名目录文件中。Code Integrity策略存储在防篡改的TPM中,即使从Windows预安装环境DVD启动或重新安装操作系统,策略依然有效。
Device Guard Code Integrity优先使用数字签名,无签名时可使用文件哈希,但应尽量减少哈希的使用,以避免应用更新后出现问题。Device Guard用于白名单所有可执行文件、DLL和脚本,还可结合AppLocker进行额外的黑名单设置。
2. 创建Code Integrity策略的步骤
创建Code Integrity策略的步骤如下:
1. 准备黄金系统 :用于收集强制执行策略。
2. 启用VBS和Device Guard :将Device Guard设置为审核模式。
3. 收集文件信息 :使用PowerShell cmdlets创建策略。
4. 重复操作并合并策略 :针对所有不同的硬件模型和基础映像配置重复步骤1 - 3,合并多个策略或部署差异化策略,同一系统同一时间只能有一个活动的Device Guard策略。
5. 转换并签名策略 :将策略转换为二进制格式并签名。
6. 部署并测试策略 :以审核模式将策略部署到目标系统并测试。
7. 根据审核日志创建并合并策略 :使用Windows PowerShell cmdlets从审核日志创建策略并合并。
8. 启用并测试策略强制执行 :启用策略的强制执行并测试。
启用Device Guard时,需先激活VBS,然后通过GPO启用。选择“Enabled with UEFI lock”要谨慎,启用后不能通过GPO禁用,需执行脚本并在下次重启时按键才能禁用。
Code Integrity策略创建成功后,可通过GPO或MDM强制执行。应用到系统的策略只能由具有相同签名证书的另一个策略替换,要注意使用短期证书时需在证书过期前替换策略。策略应放在UNC路径或本地有效路径,推荐使用UNC路径。
3. 创建应用程序目录文件的步骤
创建应用程序的签名目录文件的步骤如下:
1. 准备目录系统 :用于收集目录文件的所有新文件添加信息。
2. 启用VBS和Device Guard :将Device Guard设置为审核模式。
3. 初始扫描系统 :运行“PackageInspector.exe start C:”。
4. 安装应用程序 :安装所需的应用程序。
5. 停止信息收集 :使用“PackageInspector.exe stop c: -name \Catalog.cat -cdfpath \Catalog.cdf”(可更改.cat和.cdf文件的名称)。
6. 签名目录文件 :使用SignTool.exe签名目录文件。
7. 复制目录文件 :将签名的目录文件复制到目标系统的“C:\Windows\System32\catroot{F750E6C3 - 38EE - 11D1 - 85E5 - 00C04FC295EE}”。
8. 部署目录文件 :测试成功后,将目录文件部署到所有系统的该文件夹中。虽然没有官方记录的目录文件数量限制,但应尽量减少并清理不必要的目录文件。
4. 自动添加应用程序到Device Guard Code Integrity
Windows 10 1703增加了将托管安装程序安装的应用程序自动添加到Device Guard Code Integrity的选项。托管安装程序使用规则信任一个或多个可执行文件作为应用程序部署的授权源。指定可执行文件为托管安装程序后,该可执行文件进程写入的所有文件将被Windows标记为来自受信任的安装机构。目前没有图形用户界面对话框来定义托管安装程序,且存在一些已知限制,具体步骤可参考 相关文档 。
5. Device Guard的其他强制执行措施
Device Guard还引入了其他强制执行措施:
- 内核内存和驱动方面 :即使存在漏洞允许未经授权的内核模式访问,Code Integrity规则仍会强制执行,因为它运行在安全的VBS空间;只有通过Code Integrity验证的内存页面才会被标记为可执行;Device Guard KMCI保护激活的内核内存不能同时标记为可写和可执行,以降低难以检测的自修改恶意代码的风险。但并非所有驱动目前都兼容,需要更新为支持Device Guard的驱动。可使用 Device Guard和Credential Guard硬件就绪工具 测试现有驱动。
- 脚本处理方面 :Windows脚本主机要求脚本签名,包括VBScript(.vbs和.vbe)、JScript(.js)、Windows脚本文件(.wsf)和Windows脚本组件(.wsc)文件,否则无法执行;所有MSI必须签名,否则无法执行;无签名的PowerShell脚本处于受限语言模式,会阻止一些危险命令,要使用完整功能需签名运行在完整语言模式;.bat和.cmd脚本目前不受限制。
6. Device Guard的适用场景
Device Guard有四种不同的使用场景:
| 使用场景 | 特点 | 安全措施 |
| ---- | ---- | ---- |
| 固定工作负载 | 软件和硬件配置明确,管理严格,变更率低,理想情况下无用户或只有标准用户 | 可激活安全链的所有必要部分,以强制执行模式运行KMCI和UMCI |
| 完全管理 | 硬件配置明确,仅管理软件,管理严格,理想情况下只有标准用户 | 可激活安全链的所有必要部分,以强制执行模式运行KMCI和UMCI,有管理员权限的用户无法安装自己的软件 |
| 轻度管理 | 多种不同的硬件配置,用户可安装非管理软件,有标准或管理员用户 | 只能激活安全链的部分部分,Secure Boot和VBS通常可用,KMCI需检查,UMCI只能在审核模式下激活,需定期检查日志 |
| BYOD | 个人拥有的设备,硬件和软件高度可变 | 无法激活安全链的任何部分,包括Secure Boot、VBS或Device Guard |
目前,Device Guard只能在固定工作负载和完全管理的场景中运行,未来的实现将能够在轻度管理场景中提供保护,且会改进Code Integrity策略和目录文件的扫描时间,并添加新的安全功能。违反KMCI会导致蓝屏,若反复出现蓝屏,需检查Code Integrity策略并扫描恶意软件。
7. Windows Defender Application Guard for Microsoft Edge
Windows 10 1709引入了Windows Defender Application Guard for Microsoft Edge(WDAG)。它将VBS的概念扩展到软件容器,将浏览器等暴露的软件在额外的虚拟操作系统中执行,通过远程桌面协议(RDP)连接。Microsoft Edge是首个支持该功能的程序,未来Windows 10的其他版本会有更多产品支持。若运行在安全容器中的Microsoft Edge实例被黑客攻击,它无法访问主机操作系统。当显示内部网或可信任网站时,在主机操作系统中执行;浏览其他网站时,在Windows操作系统中执行新实例并通过RDP连接。
激活该安全功能的条件和步骤如下:
- 条件 :需要运行Hyper-V和VBS,因此需要64位操作系统和CPU虚拟化扩展,Hyper-V来宾需激活Hyper-V嵌套功能,至少需要4GB内存,推荐8GB或更多,且需要企业版。
- 步骤 :VBS运行后,可添加Windows Defender Application Guard功能,该功能可在Insider Preview版本16251及零售版Windows 10 1709中找到,也可通过GPO“Turn On/Off Windows Defender Application Guard (WDAG)”控制,激活需要重启。
在独立模式下,用户可通过上下文菜单打开受保护的Edge实例。组织可通过GPO控制WDAG的各个方面,例如:
- 定义信任站点 :通过“Enterprise resource domains hosted in the cloud GPO”定义信任站点,该GPO位于“Computer Configuration | Administrative Templates | Network | Network Isolation”,条目需以“.”开头,多个条目用“|”分隔,不允许使用占位符字符,若资源需要代理地址访问,需用逗号后跟代理地址配对。
- 其他GPO设置 :“Configure Windows Defender Application Guard clipboard settings GPO”控制剪贴板操作,默认情况下,与WDAG Edge之间的剪贴板操作完全阻止,可启用复制并限制内容类型,但会降低安全性;“Configure Windows Defender Application Guard Print Settings GPO”控制打印功能,默认关闭,可启用并限制打印选项,启用会降低安全性;“Allow data persistence for Windows Defender Application Guard GPO”控制用户数据(如cookie、收藏夹和下载文件)是否在应用程序防护容器中持久化,默认情况下实例停止后会删除所有用户数据,启用GPO后仍可使用“Reset-ApplicationGuard”PowerShell命令删除内容;“Allow auditing events in Windows Defender Application Guard GPO”用于收集Edge日志文件,默认不收集审核事件日志,启用后会在主机事件中记录。
首次启动WDAG时,会显示启动提示,启动时间根据RAM、HDD和CPU情况,可能从10 - 20秒到1 - 2分钟不等。运行在WDAG模式下,Edge图标会显示盾牌符号,用户还会看到信息框,可选择关闭。任务管理器不会显示受保护的Edge实例,而是显示WDAG RDP客户端。目前,没有简单的方法检查应用程序防护容器内应用程序的内存消耗,Microsoft Edge是首个支持WDAG模式的产品,未来会有更多Microsoft产品支持,第三方基于虚拟化的安全解决方案Bromium可与WDAG并行运行。
8. Windows Defender Exploit Guard
过去可使用免费的Enhanced Mitigation Experience Toolkit(EMET)为操作系统添加额外安全功能,但EMET的开发已停止,支持将于2018年7月结束,最新版本的EMET 5.5.2在Windows 10 1709中不再支持,升级时会被卸载,安装也会被阻止。
Windows 10 1709内置了Windows Defender Exploit Guard,它集成了EMET的所有功能并增加了更多特性,位于Windows Defender安全中心的“App & browser control | Exploit protection”。
通过访问“Exploit protection settings”,可控制系统范围的设置和特定程序的覆盖设置。系统范围的设置包括:
- 数据执行预防(DEP) :防止从仅数据的内存页面执行代码。
- 地址空间布局随机化(ASLR,现称Mandatory ASLR) :强制映像(DLL)重新定位。
- 结构化异常处理覆盖保护(SEHOP) :在执行异常处理程序之前确保其完整性,验证堆喷雾和堆损坏的堆完整性。
- 控制流防护(CFG) :确保所有间接调用的完整性。
- 自下而上的ASLR :随机化虚拟内存分配的所有位置。
部分安全选项会产生CPU开销,使用支持Intel Processor Trace(IPT)的CPU(如Intel Skylake及更新型号)可获得最佳的CFG性能,Skylake及更新处理器的性能损失低于15%,目前不确定新的AMD RyzenPro架构是否支持类似的CFG功能。
特定程序的设置可通过程序名称或确切文件路径定义,可覆盖每个系统范围的设置并定义更多设置。与EMET相比,新的审核功能可帮助快速找到不兼容的设置。特定程序的设置包括:
- 任意代码防护(ACG) :防止代码页修改。
- 阻止低完整性映像 :防止加载标记为低完整性的映像。
- 阻止远程映像 :防止从远程设备加载映像。
- 阻止不受信任的字体 :防止加载系统字体目录外的GDI字体。
- 代码完整性防护 :只允许加载Microsoft签名的映像。
- 禁用扩展点 :禁用允许DLL注入到所有进程的各种可扩展机制。
- 禁用Win32k系统调用 :阻止程序使用任何Win32k系统调用。
- 不允许子进程 :防止程序创建子进程。
- 导出地址过滤(EAF) :检测恶意代码解析的危险导出函数。
- 导入地址过滤(IAF) :与EAF类似,但针对导入函数。
- 模拟执行(SimExec) :确保对敏感函数的调用返回给合法调用者。
- 验证API调用(CallerCheck) :确保敏感API由合法调用者调用。
- 验证句柄使用 :对任何无效句柄引用引发异常。
- 验证映像依赖完整性 :强制执行Windows映像依赖加载的代码签名。
- 验证堆栈完整性(StackPivot) :确保敏感函数的堆栈未被重定向。
每个功能在增加应用程序安全性的同时会带来CPU开销,需单独检查每个应用程序的性能。设置只能由管理员用户更改或删除,所有设置可在GUI中编辑并导出为XML,用于通过GPO配置。
综上所述,Windows的这些安全防护功能为系统提供了多层次的保护,用户和组织可根据自身需求和场景选择合适的功能和配置,以提高系统的安全性。
graph LR
classDef startend fill:#F5EBFF,stroke:#BE8FED,stroke-width:2px
classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px
classDef decision fill:#FFF6CC,stroke:#FFBC52,stroke-width:2px
A([开始]):::startend --> B{选择防护功能}:::decision
B -->|Device Guard| C(创建Code Integrity策略):::process
C --> D(启用VBS和Device Guard):::process
D --> E(收集文件信息):::process
E --> F(合并和部署策略):::process
F --> G(测试和启用强制执行):::process
B -->|WDAG| H(满足激活条件):::process
H --> I(添加WDAG功能):::process
I --> J(通过GPO控制):::process
B -->|Exploit Guard| K(访问Exploit protection settings):::process
K --> L(设置系统范围和程序特定设置):::process
G --> M([结束]):::startend
J --> M
L --> M
以上就是Windows系统中Device Guard、WDAG和Exploit Guard的详细介绍和操作指南,希望能帮助你更好地保护系统安全。
Windows安全防护:Device Guard、WDAG与Exploit Guard深度解析
9. 三种安全防护功能对比
为了更清晰地了解Device Guard、Windows Defender Application Guard(WDAG)和Windows Defender Exploit Guard的区别和联系,下面通过表格进行对比:
| 安全防护功能 | 主要作用 | 适用场景 | 核心技术 | 配置方式 |
| ---- | ---- | ---- | ---- | ---- |
| Device Guard | 白名单所有可执行文件、DLL和脚本,结合AppLocker进行额外黑名单设置,保护系统免受恶意软件侵害 | 固定工作负载、完全管理场景,未来可用于轻度管理场景 | Code Integrity,运行在安全的VBS容器中,策略存储在TPM | 通过PowerShell cmdlets创建策略,可通过GPO或MDM部署 |
| Windows Defender Application Guard(WDAG) | 将浏览器等暴露软件在额外虚拟操作系统中执行,通过RDP连接,防止被攻击的软件访问主机系统 | 适用于有网络浏览需求的场景,尤其是需要访问不可信网站 | 基于VBS的软件容器技术 | 通过GPO控制,需满足Hyper-V、VBS等条件 |
| Windows Defender Exploit Guard | 集成EMET功能并增加更多特性,防止代码执行漏洞和恶意软件利用系统漏洞 | 适用于各种Windows 10 1709系统,保护应用程序安全 | 多种安全防护机制,如DEP、ASLR、CFG等 | 可在GUI中编辑设置并导出为XML通过GPO配置 |
10. 操作流程总结
下面通过mermaid流程图总结Device Guard、WDAG和Exploit Guard的主要操作流程:
graph LR
classDef startend fill:#F5EBFF,stroke:#BE8FED,stroke-width:2px
classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px
classDef decision fill:#FFF6CC,stroke:#FFBC52,stroke-width:2px
A([开始]):::startend --> B{选择防护类型}:::decision
B -->|Device Guard| C(准备黄金系统):::process
C --> D(启用VBS和Device Guard并设为审核模式):::process
D --> E(收集文件信息创建策略):::process
E --> F(合并或部署策略):::process
F --> G(转换并签名策略):::process
G --> H(部署并测试策略):::process
H --> I(根据日志合并策略):::process
I --> J(启用强制执行并测试):::process
B -->|WDAG| K(满足激活条件):::process
K --> L(添加WDAG功能):::process
L --> M(通过GPO配置):::process
M --> N(测试并使用):::process
B -->|Exploit Guard| O(访问设置界面):::process
O --> P(设置系统和程序特定选项):::process
P --> Q(测试并应用设置):::process
J --> R([结束]):::startend
N --> R
Q --> R
11. 注意事项与建议
在使用这些安全防护功能时,有以下注意事项和建议:
- Device Guard
- 尽量减少文件哈希的使用,因为哈希过多可能导致应用更新后系统或策略出现问题。
- 选择“Enabled with UEFI lock”要谨慎,先在无锁的情况下测试,确保所有设置固定且解锁脚本测试通过后,再在生产环境中激活。
- 使用短期签名证书时,要注意在证书过期前替换Code Integrity策略。
- Windows Defender Application Guard(WDAG)
- 激活该功能需要满足一定的硬件和软件条件,如64位操作系统、CPU虚拟化扩展、足够的内存等,确保系统满足要求后再进行配置。
- 配置信任站点时,遵循GPO的规则,注意条目格式和分隔符的使用,避免出现错误。
- 启用剪贴板、打印等功能会降低安全性,根据实际需求谨慎启用。
- Windows Defender Exploit Guard
- 部分安全选项会产生CPU开销,根据系统硬件配置和应用需求,合理选择安全选项。
- 使用支持Intel Processor Trace(IPT)的CPU可获得更好的CFG性能,若使用AMD RyzenPro架构,需关注其是否支持类似的CFG功能。
- 利用新的审核功能,快速找到不兼容的设置,避免应用程序出现问题。
12. 总结
Windows系统的Device Guard、Windows Defender Application Guard(WDAG)和Windows Defender Exploit Guard为用户和组织提供了强大的安全防护能力。Device Guard通过白名单机制保护系统免受恶意软件侵害,适用于固定工作负载和完全管理的场景;WDAG将浏览器等软件隔离在虚拟操作系统中,防止被攻击的软件影响主机系统;Exploit Guard集成了多种安全防护机制,防止代码执行漏洞和恶意软件利用系统漏洞。
用户和组织可以根据自身的需求、硬件配置和使用场景,选择合适的安全防护功能,并按照正确的操作步骤进行配置和部署。同时,要注意各项功能的注意事项和建议,以确保系统的安全性和稳定性。随着技术的不断发展,这些安全防护功能也将不断完善和优化,为Windows系统提供更可靠的安全保障。
在实际应用中,建议用户和组织持续关注微软的官方更新和技术文档,及时了解这些安全防护功能的最新特性和改进,以便更好地保护系统免受各种安全威胁。
总之,合理利用这些安全防护功能,能够有效提升Windows系统的安全性,为用户和组织的数字化工作和生活提供坚实的保障。
超级会员免费看
28

被折叠的 条评论
为什么被折叠?



