本帖最后由 ELOHIM 于 2018-10-4 22:44 编辑
Windows 10 Fall Creators Update安全新特性之WDEG ——张云海 ———————————————————————————————————————————————
文章目录
- 一、概述
- 二、攻击防护
- 2.1 设置
- 2.1.1 系统设置
- 2.1.2 程序设置
- 2.2.2 加载程序设置
- 2.2.3 应用设置
- 2.2.4 加载Payload Restriction
- 三、攻击面减少
- 四、网络保护
- 五、受控制文件夹的访问
- 六、总结
一、概述
微软于2017年10月17日正式发布了Windows 10的新版本Fall Creators Update(RS3)。
在此次更新中,微软将其缓解工具集EMET(The Enhanced Mitigation Experience Toolkit)的功能集成到操作系统中,推出了WDEG(Windows Defender Exploit Guard)。
WDEG
主要实现以下四项功能:
通过应用缓解技术来阻止攻击者利用漏洞,可以应用于指定的程序或者系统中所有的程序。
- 攻击面减少(Attack surface reduction)
通过设置智能规则来减少潜在的攻击面,以阻止基于Office应用、脚本、邮件等的攻击。
扩展Windows Defender SmartScreen的范围,为所有网络相关的操作提供基于信誉的防护。
- 受控制文件夹的访问(Controlled folder access)
协助保护系统中的重要文件,使其不会被恶意软件(尤其是加密文件的勒索软件)修改。
二、攻击防护
攻击防护功能由系统的缓解措施与EMET的增强功能发展而来,通过阻止漏洞利用中的关键技术来进行防护。
2.1 设置
攻击防护可以通过Windows Defender安全中心进行设置:
攻击防护的设置有系统设置与程序设置两类:
2.1.1 系统设置
系统设置用于设置全局性的策略,包含以下项目:
确保间接调用的控制流完整性。
默认设置为打开。
阻止代码从仅数据内存页中运行。
默认设置为打开。
强制重定位未用/DYNAMICBASE编译的映像。
默认设置为关闭。
随机化虚拟内存分配位置。
默认设置为打开。
确保调度期间异常链的完整性。
默认设置为打开。
检测到堆损坏时终止进程。
默认设置为打开。
2.1.2 程序设置
程序设置用于对特定程序进行自定义设置,包含以下项目:
阻止非映像支持的可执行代码和代码页修改。
可选设置有:允许线程退出、审核。
阻止加载标记低完整性的映像。
可选设置有:审核。
阻止从远程设备加载映像。
可选设置有:审核。
阻止加载系统字体目录中未安装的任何基于GDI的字体。
可选设置有:审核。
只允许加载由Microsoft签名的映像。
可选设置有:同时允许加载由Windows应用商店签名的映像、审核。
确保间接调用的控制流完整性。
可选设置有:使用严格CFG。
阻止代码从仅数据内存页中运行。
可选设置有:启用ATL形式转换模拟。
禁用各种允许DLL注入到所有进程的可扩展机制,如窗口挂接。
阻止程序使用Win32k系统调用表。
可选设置有:审核。
阻止程序创建子进程。
可选设置有:审核。
检测由恶意代码解析的危险导出函数。
可选设置有:验证通常被攻击滥用的模块的访问权限、审核。
强制重定位未用/DYNAMICBASE编译的映像。
可选设置有:不允许去除的映像。
检测由恶意代码解析的危险导入函数。
可选设置有:审核。
随机化虚拟内存分配位置。
可选设置有:不使用高熵。
确保对敏感函数的调用返回到合法调用方。
可选设置有:审核。
确保由合法调用方调用敏感API。
可选设置有:审核。
确保调度期间异常链的完整性。
对任何无效句柄引用引发异常。
检测到堆损坏时终止进程。
对Windows映像依赖项加载强制执行代码签名。
可选设置有:审核。
确保未对敏感函数重定向堆栈。
可选设置有:审核。
攻击防护的系统设置保存在注册表中HKLM\System\CurrentControlSet\Control\Session Manager\kernel项下:
系统启动时,在初始化过程中会调用nt!CmGetSystemControlValues函数来获取注册表中保存的设置:
其中,MitigationOptions的值保存到nt!PspSystemMitigationOptions中,MitigationAuditOptions的值保存到nt!PspSystemMitigationAuditOptions中:
2.2.2 加载程序设置
攻击防护的程序设置保存在对应程序的IFEO(Image File Execution Options)项中:
系统创建新的进程时,将调用nt!PspAllocateProcess函数:
nt!PspAllocateProcess函数调用nt!PspReadIFEOMitigationOptions函数以及nt!PspReadIFEOMitigationAuditOptions函数来读取IFEO中保存的程序设置:
2.2.3 应用设置
然后,nt!PspAllocateProcess函数调用nt!PspInheritMitigationOptions函数合并系统设置与程序设置,得到需要应用的设置:
最后,nt!PspAllocateProcess函数调用nt!PspApplyMitigationOptions函数来应用设置:
nt!PspApplyMitigationOptions根据MitigationOptions与MitigationAuditOption的值来设置EPROCESS的MitigationFlags与MitigationFlags2对应的标志位:
MitigationFlags对应系统的缓解措施,设置对应的标志位之后即可生效。
MitigationFlags2对应增强的缓解措施,需要加载动态库PayloadRestrictions.dll来实现。
2.2.4 加载Payload Restriction
完成进程创建之后,将调用ntdll.dll的LdrInitializeThunk函数进行初始化。
初始化过程中,将逐步调用到ntdll!LdrpInitializeExecutionOptions函数:
ntdll!LdrpInitializeExecutionOptions函数检查PEB的NtGlobalFlag是否设置了FLG_HEAP_PAGE_ALLOCS或FLG_APPLICATION_VERIFIER标志位,同时调用ntdll!LdrpPayloadRestrictionMitigationsEnabled函数来判断是否启用了Payload Restriction的缓解措施:
满足任一条件时,将调用ntdll!LdrpInitializeApplicationVerifierPackage函数来初始化ApplicationVerifier;后者将调用ntdll!AvrfMiniLoadDll函数来加载动态库verifier.dll:
verifier.dll进行初始化时,将调用verifier!MitLibInitialize函数:
verifier!MitLibInitialize函数完成动态库PayloadRestrictions.dll的加载:
2.2.5 应用Payload Restriction
PayloadRestrictions.dll进行初始化时,将调用ntdll!LdrRegisterDllNotification函数来注册回调函数PayloadRestrictions!MitLibDllNotification:
此后加载、卸载模块时,系统会调用PayloadRestrictions!MitLibDllNotification函数进行通知:
加载模块时,PayloadRestrictions!MitLibHandleDllLoadEvent为该模块注入相应的防护机制:
三、攻击面减少
攻击面减少用于阻止Office应用、脚本、邮件的一些特性被攻击者滥用,包括:
- 在Office应用或Web Mail中执行程序或脚本来下载或执行文件;
- 执行混淆的可疑脚本;
- 其他在正常的日常工作中不太可能出现的行为;
攻击面减少可以通过组策略编辑器来设置,其路径为“计算机配置 > 管理模板 > Windows组件 > Windows Defender防病毒程序 > Windows Defender攻击防护 > 攻击面减少”:
攻击面减少规则由GUID来标识,启用后可以设置每个规则的状态(1表示阻止,0表示关闭,2表示审核)。
目前支持的规则如下:
规则ID | 说明 | BE9BA2D9-53EA-4CDC-84E5-9B1EEEE46550 | 阻止从邮件中执行内容 | D4F940AB-401B-4EFC-AADC-AD5F3C50688A | 阻止Office应用创建子进程 | 3B576869-A4EC-4529-8536-B80A7769E899 | 阻止Office应用创建可执行内容 | 75668C1F-73B5-4CF0-BB93-3ECF5CB7CC84 | 阻止Office应用向其他进程注入代码 | D3E037E1-3EB8-44C8-A917-57927947596D | 阻止脚本执行下载的内容 | 5BEB7EFE-FD9A-4556-801D-275E5FFC04CC | 阻止执行混淆的脚本 | 92E97FA1-2EDF-4476-BDD6-9DD0B4DDDC7B | 阻止在宏中调用Win32 API |
同时,可以指定从上述规则中排除的文件和路径:
攻击面减少的规则保存在注册表中
HKCU\Software\Microsoft\Windows\CurrentVersion\Group Policy Objects\{EE798E8D-335D-4D47-9C4B-ECDF73662A1F}Machine\Software\Policies\Microsoft\Windows Defender\Windows Defender Exploit Guard\ASR\Rules项下。
四、网络保护
网络保护通过阻止任意程序访问危险的网站(可能包含钓鱼诈骗、漏洞利用等恶意内容)来减少基于网络的攻击面。
网络保护扩展了Windows Defender SmartScreen的范围,将阻断全部试图连接低信誉目标的HTTP / HTTPS流量。
网络保护可以通过组策略编辑器来设置,其路径为“计算机配置 > 管理模板 > Windows组件 > Windows Defender防病毒程序 > Windows Defender攻击防护 > 网络保护”:
网络保护的规则保存在注册表中
HKCU\Software\Microsoft\Windows\CurrentVersion\Group Policy Objects\{EE798E8D-335D-4D47-9C4B-ECDF73662A1F}Machine\Software\Policies\Microsoft\Windows Defender\Windows Defender Exploit Guard\ Network Protection项下。
五、受控制文件夹的访问
受控制文件夹的访问用于阻止恶意应用(如勒索软件)修改重要的文件,只有Windows Defender防病毒程序评估为安全的应用才被允许修改受控制文件夹中的文件。
受控制文件夹的访问可以通过组策略编辑器来设置,其路径为“计算机配置 > 管理模板 > Windows组件 > Windows Defender防病毒程序 > Windows Defender攻击防护 > 受控制文件夹的访问”:
可以通过配置允许的应用程序,将受信任的程序加入白名单:
缺省情况受保护的只有系统文件夹,可以通过配置受保护的文件夹来添加应该受到该功能保护的文件夹:
受控制文件夹的访问的规则保存在注册表中
HKCU\Software\Microsoft\Windows\CurrentVersion\Group Policy Objects\{EE798E8D-335D-4D47-9C4B-ECDF73662A1F}Machine\Software\Policies\Microsoft\Windows Defender\Windows Defender Exploit Guard\ Controlled Folder Access项下。
六、总结
Windows 10 Fall Creators Update更新中的WDEG提供了全面而强大的漏洞利用防护功能。
然而,安全与便捷往往不可兼得,为了不过多的影响用户体验,WDEG中的许多功能缺省并未开启。
系统管理员应当根据其实际情况来设置组策略,以便更好的利用WDEG来进行防护。
|