CVE-2014-6352漏洞及定向攻击样本分析 – 360安全卫士

  • A+
所属分类:WooYun-Drops

http://drops.wooyun.org/papers/16825

Author:360天眼实验室

0x00 引子


人在做,天在看。

近期360天眼实验室捕获到一例针对印度的定向攻击样本,样本利用了沙虫漏洞的补丁绕过漏洞CVE-2014-6352,经分析确认后我们认为这是趋势科技在今年三月份发布的名为“Operation C-Major”APT攻击活动的新样本。关于C-Major行动的相关内容,有兴趣的读者可以在文后的参考链接中查看。

本文主要对CVE-2014-6352漏洞做基本的分析并剖析一个现实中利用此漏洞执行定向攻击的案例。

0x01 漏洞分析


样本利用的漏洞为CVE-2014-6352,该漏洞是CVE-2014-4114的补丁绕过(MS14-060)问题,在管理员模式或者关闭UAC的情况下可以实现不弹出警告窗运行嵌入的恶意程序。与CVE-2014-4114的利用样本相比,CVE-2014-6352样本的特点是没有嵌入inf,只有一个嵌入PE的OLE对象。从攻击者的角度看,这类样本可以说有利有弊。在管理员模式下,可以无警告窗执行PE文件,绕开MS14-060的补丁。但是如果不是在管理员模式下,就算受害者没有安装MS14-060的补丁,也会弹窗提示是否要执行嵌入的EXE文件。

我们知道CVE-2014-4114漏洞的成因在于packager.dll的CPackage::Load方法加载对应的OLE复合文档对象时,对不同类型的复合文档有不同的处理流程,其中对某些复合文档嵌入的不可信来源文件没有经过处理,从而使得攻击者可以通过伪造OLE复合文档的CLSID来达到执行特定文件的效果:

CVE-2014-6352漏洞及定向攻击样本分析 - 360安全卫士

packager!Cpackage:: Load方法中处理不同类型复合文档的分支

在MS14-060这个补丁中,微软通过添加MarkFileUnsafe函数来弥补这个漏洞:

CVE-2014-6352漏洞及定向攻击样本分析 - 360安全卫士

ms14-060补丁中的packager!Cpackage:: EmbedReadFromStream方法

CVE-2014-6352漏洞及定向攻击样本分析 - 360安全卫士

未安装ms14-060的packager!Cpackage:: EmbedReadFromStream方法

MarkFileUnsafe()通过调用IZoneIdentifier::SetId来设置文件的Security Zone,传入的参数3对应的是设置URLZONE_INTERNET,从而标明此文件来自于其他计算机,运行时会弹出警告窗口:

CVE-2014-6352漏洞及定向攻击样本分析 - 360安全卫士

CVE-2014-6352漏洞及定向攻击样本分析 - 360安全卫士

然而漏洞并不仅仅只是未对不可信来源的文件处理,攻击者还可以通过伪造OLE复合文档的CLSID和XML中的OLE Verb来改变执行流程。问题还在于对一个exe文件来说,即使被标记了URLZONE_INTERNET之后,右键点击以管理员权限运行时,将不会再弹窗提示该文件来自于其他计算机,而是以UAC的提示窗弹出:

CVE-2014-6352漏洞及定向攻击样本分析 - 360安全卫士

所以只需要构造特定的CLSID和OLE Verb,使执行流程来到右键界面的第二项管理员权限运行EXE程序,那么在关闭UAC或者管理员权限的情况下,就能绕过MS14-060补丁施加的限制。下面我们结合这次从外面捕获到的样本来展示一下整个漏洞利用的过程。

0x02 样本分析


首先我们拿到了一个名为vedio.ppsx的PPT文件,MD5为b6a1ee16de885c70682a7a8e4c1b556c ,从VirusTotal的上传来源看为来自印度。对这个ppsx解压处理,可以看到其内嵌了一个OLE对象,嵌入的是一个PE文件:

CVE-2014-6352漏洞及定向攻击样本分析 - 360安全卫士

CVE-2014-6352漏洞及定向攻击样本分析 - 360安全卫士

video.ppsx\ppt\slides\slide1.xml中,指定了嵌入的对象id = rId3

CVE-2014-6352漏洞及定向攻击样本分析 - 360安全卫士

video.ppsx \ppt\slides\_rels\ slide1.xml.rels中指定了rId3对应的是前面提到的oleObject1.bin

CVE-2014-6352漏洞及定向攻击样本分析 - 360安全卫士

复合文档对应的CLSID 如下图,是{0003000c-0000-0000-c000-000000000046},对应的是CLSID_OldPackage,那么根据上面的分析,CPackage::Load调用CPackage::PackageReadFromStream进一步处理,PackageReadFromStream会通过CPackage::EmbedReadFromStream在临时目录释放嵌入的PE文件。

CVE-2014-6352漏洞及定向攻击样本分析 - 360安全卫士

packager!CPackage::EmbedReadFromStream中调用了 packager!CopyStreamToFile这个函数,将嵌入的PE释放到temp目录下的putty.exe,并通过MarkFileUnsafe设置文件标记:

CVE-2014-6352漏洞及定向攻击样本分析 - 360安全卫士

然后,通过CPackage::DoVerb方法来响应终端用户的动作,在 CPackage::DoVerb中,会先对第二个参数进行判断,这个参数在video.ppsx\ppt\slides\slide1.xml中指定:

CVE-2014-6352漏洞及定向攻击样本分析 - 360安全卫士

CVE-2014-6352漏洞及定向攻击样本分析 - 360安全卫士

样本中构造的参数是3,所以进入使用popup菜单命令执行操作的流程:

CVE-2014-6352漏洞及定向攻击样本分析 - 360安全卫士

调用GetMenuItemInfo时,第二个参数uItem代表菜单的位置,这里参数为1,也就是右键菜单的第二项,对于exe文件,右键菜单的第二项是“以管理员权限运行”

CVE-2014-6352漏洞及定向攻击样本分析 - 360安全卫士

最终调用了SHELL32!CDefFolderMenu::InvokeCommand方法,这时就会以试图管理员权限运行putty.exe,在关闭了UAC或者管理员模式下,就绕过了MS14-060的保护静默地执行了一个PE文件。

0x03 所释放程序的分析


putty.exe

ppt文件释放出来的putty.exe实际上是一个改名后的经过混淆的.NET 程序,MD5为 78fab9978ae4de4f684908f47fdc2333 ,这个程序其实是一个Dropper。

经过去混淆后,我们可以清楚地看到其程序代码,首先遍历是否有杀软进程:

CVE-2014-6352漏洞及定向攻击样本分析 - 360安全卫士

样本在这里其实不是一次遍历查找,而是分成多次遍历穿插在功能代码中,每次查找一到两款杀软的进程,查找的杀软进程如下:

ekrn.exe(ESET)

guardxkickoff.exe(IKARUS)

AvastSvc.exe

btagent.exe

bdagent.exe(BitDefender)

avgui.exe。

然后从资源中读取数据,并解密为一个PE文件

CVE-2014-6352漏洞及定向攻击样本分析 - 360安全卫士

启动cmd进程,将自身拷贝成%temp%\net\health.exe并添加注册表启动项

CVE-2014-6352漏洞及定向攻击样本分析 - 360安全卫士

CVE-2014-6352漏洞及定向攻击样本分析 - 360安全卫士

HKEY_CURRENT_USER/Software/Microsoft/Windows NT/CurrentVersion/Windows - load这个值可以指定在用户登录后自动运行的程序文件名。

然后将RegAsm.exe拷贝为%temp%\svhost.exe

CVE-2014-6352漏洞及定向攻击样本分析 - 360安全卫士

CVE-2014-6352漏洞及定向攻击样本分析 - 360安全卫士

CVE-2014-6352漏洞及定向攻击样本分析 - 360安全卫士

接着以Suspend方式启动svhost.exe,将之前解密出来的PE注入,并恢复线程。

CVE-2014-6352漏洞及定向攻击样本分析 - 360安全卫士

最后在%temp%/net/目录下写入health.exe.bat文件并执行

CVE-2014-6352漏洞及定向攻击样本分析 - 360安全卫士

health.exe.bat的代码如下,作用是不断遍历进程查看svhost.exe是否启动,没有启动的话则将其启动。

CVE-2014-6352漏洞及定向攻击样本分析 - 360安全卫士

svhost.exe

在HKEY_CURRENT_USER中设置一个值di用于判断是否已经感染过该系统:

CVE-2014-6352漏洞及定向攻击样本分析 - 360安全卫士

设置HKEY_CURRENT_USER\Environment\SEE_MASK_NOZONECHECKS的值为1,这是用于关闭附件管理器检查的:

CVE-2014-6352漏洞及定向攻击样本分析 - 360安全卫士

然后用命令行启动netsh.exe,添加防火墙规则,允许其通过防火墙

CVE-2014-6352漏洞及定向攻击样本分析 - 360安全卫士

命令行如下

#!shell
netsh firewall add allowedprogram "C:\Users\***\AppData\Local\Temp\svhost.exe" " svhost.exe" ENABLE

申请一片内存空间用于存放接收/发送的数据,开始网络连接:

CVE-2014-6352漏洞及定向攻击样本分析 - 360安全卫士

C&C地址: 191.101.23.190

CVE-2014-6352漏洞及定向攻击样本分析 - 360安全卫士

端口号: 5552

CVE-2014-6352漏洞及定向攻击样本分析 - 360安全卫士

收集受害者的系统信息,包括上线时间、系统版本、系统位数、磁盘信息、当前用户等等,并发送出去:

CVE-2014-6352漏洞及定向攻击样本分析 - 360安全卫士

然后开启一个线程循环查询socket是否可读(接收命令):

CVE-2014-6352漏洞及定向攻击样本分析 - 360安全卫士

读取命令后,开启新线程根据指令执行对应的操作:

CVE-2014-6352漏洞及定向攻击样本分析 - 360安全卫士

开启键盘记录线程,并将记录信息保存在注册表HKEY_CURRENT_USER\SoftWare\ ce99f8fa1676b15364293a0db3d6a707中:

CVE-2014-6352漏洞及定向攻击样本分析 - 360安全卫士

CVE-2014-6352漏洞及定向攻击样本分析 - 360安全卫士

设置自启动项:

CVE-2014-6352漏洞及定向攻击样本分析 - 360安全卫士

CVE-2014-6352漏洞及定向攻击样本分析 - 360安全卫士

接收命令后,对命令做出相应的处理,在switch中根据命令执行对应的功能,这里就不再详细分析,下面给出部分功能与对应的命令,如下:

  • rn 下载/执行文件
  • CAP 屏幕监控
  • un 自删除、启动和终止进程
  • up 在线更新
  • Ex 加载插件
  • GTV 获取注册表HKEY_CURRENT_USER\SoftWare\ ce99f8fa1676b15364293a0db3d6a707中的键盘记录信息
  • STV 设置注册表HKEY_CURRENT_USER\SoftWare\ ce99f8fa1676b15364293a0db3d6a707开始键盘记录

0x04 IOC


类型
C&C 191.101.23.190:5552
Downloader URL http://pcdopune.com/ad/video.ppsx

0x05 总结


在网上公开的IOC平台中发现,该C&C地址与趋势科技在今年三月份发布的“Operation C-Major”报告中的一个C&C完全一致。另外,样本下载的域名pcdopune.com关联到的其他样本中,也出现了与报告中几乎一样的恶意宏样本,由此我们认为这是与C-Major相关的攻击行动。

根据360威胁情报中心的数据,我们发现本文所涉及的样本仅仅只是C-Major行动中使用的多种Dropper中的一种类型,CVE-2010-3333、CVE-2012-0158等漏洞也被利用来做恶意代码的植入,不仅如此,甚至还利用了宏和脚本,所使用的PE样本更是灵活多变。从这些迹象来看C-Major行动背后团伙非常积极地利用所能得到各种植入手段,极有可能是专业的有背景及一定技术能力的组织。

参考链接

  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的微信公众号
  • 我的微信公众号扫一扫
  • weinxin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: