背景
2018年6月,国外安全研究人员披露了利用引入10次的新文件类型“.-ms”执行任意命令的攻击技术,并发布了POC(详见参考文献[1])。 这种新的攻击方式公开后,立即被黑客和APT组织纳入攻击武器库进行针对性攻击,衍生出多种利用方式:诱导执行、文档执行、PDF文档执行。
2018年8月14日,微软针对该漏洞发布了系统补丁,对应的漏洞编号为:CVE-2018-8414。 该攻击技术一公开,360威胁情报中心就密切跟踪相关野攻击样本,因为该漏洞相关的技术细节和验证流程已经公开,该漏洞已被微软修复。 为此,360威胁情报中心发布了对该漏洞的分析以及野外追踪到的攻击分析,提醒用户采取应对措施。
360威胁情报中心云沙箱即刻支持对这种特殊文件格式的检测和恶意行为的识别。 由于文件格式为XML,且此类攻击仅针对10个,因此大多数沙箱不支持对该恶意文件的检测。 检测。 以下是360云沙盒对此类恶意样本的检测结果:
CVE-2018-8414漏洞分析漏洞成因
如果在10下执行.-ms后缀的文件,系统不判断该类文件的路径是否在控制面板的相关目录下,直接执行相关标签指定的任意程序文件中的控制面板设置,导致用户执行系统任意目录下的此类文件或从网上下载的经过精心设计的.-ms文件,也会直接执行指定的恶意程序对象,导致任意代码执行。
-ms简介
-ms是10引入的新文件类型,主要用于创建设置页面的快捷方式,相关文件后缀为 .-ms"。 从表面上看,-ms只是一个XML文件,普通的-ms文件内容如下:
-ms 文件包含标签。 比如我们双击打开一个-ms文件指向10上的任务管理器,就会执行标签中指定的对象:
可以看到有大量的-ms文件及其包含的标签在10以下:
不幸的是,如果攻击者将-ms文件中的标记指向其他恶意程序或可执行脚本代码(例如),并诱导用户执行10以下的文件,或通过其他载体(,PDF)执行文件,所有恶意代码可能会被执行,计算机可能会被接管。
而通过浏览器超链接或直接下载/执行-ms文件,由于该文件不在拦截范围内,执行时不会有安全提示,大大增加了此类攻击的风险。
奇虎360威胁情报中心分析了该漏洞及未被封杀的原因,并进一步分析了微软补丁的修复方式。 过程如下。
-ms执行任意命令漏洞分析
双击执行一个-ms文件后,系统会调用..dll模块的函数Verb:::
在这个函数中,会调用一系列的校验函数,比如EDP(Data)保护(见参考文献[3]):
然后将调用过滤器:
其中!Verb::函数会先调用!Verb::een函数检查是否需要调用保护,如下图:
然后调用 !Verb:: 函数来检查 Zone.:
函数内部实际上调用了.! 区域的功能。 查看:
继续跟进中。! 功能,最后找到关键功能!,它读取区域。 文件:
然后调用函数转换为另一个 ID。 当等于3时,转换后的ID为1,然后一路返回:
由于这里是3,即文件被标记为网络下载,所以需要通过过滤器过滤:
然后会调用该函数,如果要执行的文件标记为从网络下载(),并且文件后缀是过滤黑名单中的文件,则会看到如下弹窗,询问用户是否执行文件:
-ms 文件通过 !Verb:: 检查后,将调用 !Verb::ndler 函数执行该文件:
函数内部调用Verb::,通过一些查询操作得到-ms处理接口,然后调用接口执行-ms文件,最后执行!::函数:
!::会再次调用!::函数,其中会调用和h获取当前用户控制面板设置目录和系统控制面板设置目录,然后与需要-ms文件的目录进行比较执行了,“漏洞”就出现在这里,按理说这种与控制面板相关的“快捷方式”文件应该只允许在与控制面板相关的目录下执行标签中指定的命令,这里仅作对比做了,比较的结果没有比较。 相应的处理会导致该文件在10的任意目录下执行-ms文件指定的任意命令,从而产生“漏洞”:
最后根据::::的值调用相应的函数执行标签中的命令
没有被阻止
我们通过浏览器超链接或直接从中下载/执行 -ms 文件。 下载的文件虽然标记为=3(),但执行过程中不会有安全提示,大大增加了此类攻击的风险。 经360威胁情报中心分析发现,后缀为-ms的文件不在过滤器的风险文件后缀列表中。 分析过程如下:
依次调用前面分析的判断文件是否为风险文件的函数!->!->!->!:
wapi! 函数将查询黑名单。 黑名单有100个,但是没有一个包含.-ms类型的文件,所以在执行从网络下载的.-ms文件时,不会被拦截:
开发
攻击者可以向受害者发送精心构造的-ms文件(如在标签中指定执行带有恶意参数的程序等)并诱导其打开,或者将恶意-ms文件插入到文档中,如.pdf等诱骗受害者Open最终执行标签中指定的恶意代码。
补丁分析
微软发布的补丁程序判断执行路径。 只有在%%\Local\\.\\\\[]或%%\l\子目录下打开-ms后缀的文件才能进入执行控制面板设置分支执行命令. 下面是补丁前后的代码对比图:
该函数的两个参数分别在两个路径中传递,用于判断第二个参数是否为第一个参数的子目录。 如果不是子目录,则返回1或2,同8的结果为0; 如果是子目录返回8或12,同8结果为8。函数实现如下:
两次调用后,将结果与8进行AND运算,达到判断是否为子目录的目的。 如果是子目录,则赋值为0,否则赋值为(-,最后通过判断有符号整数类型来决定是否执行命令。
我们将补丁环境中的 PoC 复制到:
%%\Local\\.\\\\en-US目录可以正常执行PoC。
野外攻击样本分析
360威胁情报中心的云沙箱第一时间支持了对此类攻击样本的检测,通过360云沙箱检测到了大量用于实际攻击的-ms样本。 下面列举一些利用该漏洞进行野外攻击的典型案例。 分析。
APT组织疑似使用的攻击样本
MD5:
对应的示例如下,直接下载示例然后运行:
对应抄送地址:
对于生成的样本
MD5:
调用.-ms文件,解密如下:
然后访问46.101.141.96,下载一个名为的文件:
该文件也是一个脚本,如下:
与第一层不同的是,这个是用gzip压缩的,解压后是这样的:
示例的主要功能是在内存中加载运行,然后运行返回结果:
而本身就是一个,用来和CC通信,下载最终的恶意样本:
() 如下:
这其实是生成的样本,偏移0的位置就是对应的解密算法:
对应的数据格式如下:
解密后的如下,通过以下方式加载到内存中:
进入后,对加密后的进行XOR 0x69解码:
解密前:
解密后如下图,CC还是IP 46.101.141.96:
使用 PDF 文档执行的恶意样本
Md5(1):
MD5(2):
攻击者在 PDF 文档中嵌入了一个恶意的 .-ms 文件:
打开恶意PDF文档后,提示是否执行嵌入的-ms文件。 一旦用户允许执行,嵌入在-ms文件中的恶意代码将在没有任何提示的情况下执行:
交付带有普通数字签名木马的样本
MD5:
此示例还将 -ms 包含到 PDF 文件中以供交付:
下载执行的样本是用普通签名签名的,签名是DIGI:
编译时间如下:
样本运行后,检查杀毒进程是否开启:
检查调试:
然后从资源中获取第二阶段样本,异或解密:
判断PE头并加载:
第二阶段样本没有数字签名:
通过传入参数和HASH动态返回API地址:
检测系统环境是否有ammyy木马痕迹,并删除:
链接,下载第三阶段的,通过RC4解密,秘钥为,然后写入wsus运行:
第三阶段的示例如下所示,也由证书签名:
可以看到对应的ammyy字符串,说明这是一个开源的恶意代码:
抄送是:185.99.132.119:443
对应的开源软件链接如下:
团伙用来传递 DNS 隧道通信的攻击样本
MD5:
该示例将下载一个 ps1 文件并执行:
下载的PS如下,内置代码通过并gzip压缩:
解码后如下,内置8个DNS:
检测沙盒虚拟机环境:
然后释放名为.ps1、.bat 和.lnk 的三个文件。 在启动目录下释放.lnk,加载BAT文件,BAT文件启动ps1:
对应的lnk文件如下:
bat脚本如下:
然后获取环境相关信息:
样本的一大亮点是与CC的通信使用了DNS隧道,如下图通过发起的DNS请求:
Quary被封装到split函数中:
示例中包含的其他相关功能如下图所示,如文件管理、SHELL、模块插件安装、屏幕截图等:
有意思的是,样本投递的域名在几天后披露的群中被用于iqy的投递攻击。
通过wmic加载远程列表文件的攻击样本
MD5:
样例如下,通过wmic os get /在现场加载一个远程列表文件:
list是上面的一个测试脚本,通过js运行一个CMD:
人为分享,目前看来这只是一个测试样本:
经过测试,确实可以通过这种方式启动并运行CMD:
虽然只是测试样品,但不排除未来会大规模使用。
总结和安全建议
企业用户可以禁止邮件附件接收.-ms附件,尽量不要点击打开来源不明或不常见的文件。 用户端需要尽快升级相应的补丁:
目前,基于360威胁情报中心威胁情报数据的全线产品,包括360威胁情报平台(TIP)、高级威胁检测系统、360 NGSOC等,已经支持对此类攻击的检测和检测。利用此漏洞进行攻击活动。
国际奥委会
46.101.141.96
参考
[1].
[2].
[3].
[4].
[5].