CVE-2018-8414:SettingContent-ms文件任意代码执行漏洞及在野攻
背景
2018年6月,国外安全研究人员公开了利用Windows 10下才被引入的新文件类型“.SettingContent-ms”执行任意命令的攻击技巧,并公开了POC(详见参考[1])。而该新型攻击方式被公开后就立刻被黑客和APT组织纳入攻击武器库用于针对性攻击,并衍生出各种利用方式:诱导执行、利用Office文档执行、利用PDF文档执行。
2018年8月14日,微软发布了针对该缺陷的系统补丁,对应的漏洞编号为:CVE-2018-8414。360威胁情报中心在该攻击技术公开的第一时间便密切跟踪相关的在野攻击样本,由于漏洞相关的技术细节和验证程序已经公开,且漏洞已被微软修复。因此,360威胁情报中心发布针对该漏洞的分析以及跟踪到的在野攻击分析,提醒用户采取应对措施。
360威胁情报中心云沙箱第一时间支持该特殊文件格式的检测和恶意行为的识别,由于文件格式为XML,且此类攻击只针对Windows 10,所以大多数沙箱并不支持对此恶意文件的检测。以下为360云沙箱对此类恶意样本的检测结果:
CVE-2018-8414漏洞分析
漏洞成因
Windows 10下执行.SettingContent-ms后缀的文件,系统并未判断该类文件所在的路径是否在控制面板相关目录下,便直接执行了文件中用于控制面板设置相关的DeepLink标签指定的任意程序,导致用户执行系统任意目录下的此类文件或者从网络上下载的经过精心设计的.SettingContent-ms文件也会直接执行其中指定的恶意程序对象,导致任意代码执行。
SettingContent-ms介绍
SettingContent-ms是Windows 10中引入的新文件类型,主要用于创建Windows设置页面的快捷方式,相关文件后缀即为“.SettingContent-ms”。表面上看SettingContent-ms只是一个XML文件,正常的SettingContent-ms文件内容如下所示:
SettingContent-ms文件包含标签,比如我们在Windows 10上双击打开一个指向任务管理器的SettingContent-ms文件,则会执行DeepLink标签中指定的对象:
可以看到Windows 10下有大量默认的SettingContent-ms文件及其包含的DeepLink标签:
不幸的是,如果攻击者将SettingContent-ms文件中DeepLink标记指向其它恶意程序或者可以执行的脚本代码(比如PowerShell),并诱导用户在Windows 10下执行该文件,或者通过其它载体(Office、PDF)执行该文件,都可能执行恶意代码从而导致电脑被控制。
并且通过浏览器超链接或者直接从Internet下载/执行SettingContent-ms文件,由于该文件不在SmartScreen拦截范围内,执行过程中也不会出现安全提示,大大增加了这类攻击的风险。
360威胁情报中心针对该漏洞以及未被SmartScreen拦截的原因进行了分析,并进一步分析了微软补丁的修复方式,过程如下。
SettingContent-ms执行任意命令漏洞分析
双击执行一个SettingContent-ms文件后系统会调用windows.storage.dll模块的函数CBindAndInvokeStaticVerb::Execute执行:
在该函数中将调用一系列检查函数,诸如EDP(Enterprise Data Protection)保护(见参考[3]):
随后将调用SmartScreen过滤器:
其中,windows_storage!CBindAndInvokeStaticVerb::CheckSmartScreen函数会首先调用windows_storage!CBindAndInvokeStaticVerb::ShouldInvokeSmartScreen函数检查是否需要调用SmartScreen进行保护,如下图:
然后调用windows_storage!CBindAndInvokeStaticVerb::ZoneCheckFile函数进行Zone.Identifier检查:
其函数内部其实是调用windows.storage!ZoneCheckUrlExW函数进行Zone.Identifier检查:
继续跟进windows.storage!ZoneCheckUrlExW函数,最后定位到关键函数urlmon!GetZoneFromAlternateDataStreamEx,该函数读取Zone.Identifier文件中的ZoneId:
背景
2018年6月,国外安全研究人员公开了利用Windows 10下才被引入的新文件类型“.SettingContent-ms”执行任意命令的攻击技巧,并公开了POC(详见参考[1])。而该新型攻击方式被公开后就立刻被黑客和APT组织纳入攻击武器库用于针对性攻击,并衍生出各种利用方式:诱导执行、利用Office文档执行、利用PDF文档执行。
2018年8月14日,微软发布了针对该缺陷的系统补丁,对应的漏洞编号为:CVE-2018-8414。360威胁情报中心在该攻击技术公开的第一时间便密切跟踪相关的在野攻击样本,由于漏洞相关的技术细节和验证程序已经公开,且漏洞已被微软修复。因此,360威胁情报中心发布针对该漏洞的分析以及跟踪到的在野攻击分析,提醒用户采取应对措施。
360威胁情报中心云沙箱第一时间支持该特殊文件格式的检测和恶意行为的识别,由于文件格式为XML,且此类攻击只针对Windows 10,所以大多数沙箱并不支持对此恶意文件的检测。以下为360云沙箱对此类恶意样本的检测结果:
CVE-2018-8414漏洞分析
漏洞成因
Windows 10下执行.SettingContent-ms后缀的文件,系统并未判断该类文件所在的路径是否在控制面板相关目录下,便直接执行了文件中用于控制面板设置相关的DeepLink标签指定的任意程序,导致用户执行系统任意目录下的此类文件或者从网络上下载的经过精心设计的.SettingContent-ms文件也会直接执行其中指定的恶意程序对象,导致任意代码执行。
SettingContent-ms介绍
SettingContent-ms是Windows 10中引入的新文件类型,主要用于创建Windows设置页面的快捷方式,相关文件后缀即为“.SettingContent-ms”。表面上看SettingContent-ms只是一个XML文件,正常的SettingContent-ms文件内容如下所示:
SettingContent-ms文件包含标签,比如我们在Windows 10上双击打开一个指向任务管理器的SettingContent-ms文件,则会执行DeepLink标签中指定的对象:
可以看到Windows 10下有大量默认的SettingContent-ms文件及其包含的DeepLink标签:
不幸的是,如果攻击者将SettingContent-ms文件中DeepLink标记指向其它恶意程序或者可以执行的脚本代码(比如PowerShell),并诱导用户在Windows 10下执行该文件,或者通过其它载体(Office、PDF)执行该文件,都可能执行恶意代码从而导致电脑被控制。
并且通过浏览器超链接或者直接从Internet下载/执行SettingContent-ms文件,由于该文件不在SmartScreen拦截范围内,执行过程中也不会出现安全提示,大大增加了这类攻击的风险。
360威胁情报中心针对该漏洞以及未被SmartScreen拦截的原因进行了分析,并进一步分析了微软补丁的修复方式,过程如下。
SettingContent-ms执行任意命令漏洞分析
双击执行一个SettingContent-ms文件后系统会调用windows.storage.dll模块的函数CBindAndInvokeStaticVerb::Execute执行:
在该函数中将调用一系列检查函数,诸如EDP(Enterprise Data Protection)保护(见参考[3]):
随后将调用SmartScreen过滤器:
其中,windows_storage!CBindAndInvokeStaticVerb::CheckSmartScreen函数会首先调用windows_storage!CBindAndInvokeStaticVerb::ShouldInvokeSmartScreen函数检查是否需要调用SmartScreen进行保护,如下图:
然后调用windows_storage!CBindAndInvokeStaticVerb::ZoneCheckFile函数进行Zone.Identifier检查:
其函数内部其实是调用windows.storage!ZoneCheckUrlExW函数进行Zone.Identifier检查:
继续跟进windows.storage!ZoneCheckUrlExW函数,最后定位到关键函数urlmon!GetZoneFromAlternateDataStreamEx,该函数读取Zone.Identifier文件中的ZoneId:
www.wnhack.com