利用CVE-2012-0158老漏洞最新APT攻击 V1.0

格式溢出漏洞经常被APT攻击所利用。在这类漏洞中,CVE-2012-0158是过去一年中最常被用到的一个。利用该漏洞的载体通常是RTF格式的文件,其内部数据以十六进制字符串形式保存。2013年1月份捕获到通过邮件附件进行攻击的样本,该样本利用了MIME格式,目前该样本信息已经在VirusTotal上能够查询到,对此样本所采用的技术进行下介绍。

大部分之前利用CVE-2012-0158的样本都是RTF格式的,如下:

图 1 RTF格式溢出样本数据截图
图1 RTF格式溢出样本数据截图

而本文捕获到的样本是MIME格式如图2:

图 2 MIME格式溢出样本
图2 MIME格式溢出样本

其中嵌入的ocxstg001.mso文件是一个doc文档文件,MIME中使用base64编码对其进行编码,使用的CLSID正是cve2012-0158所在漏洞的模块的CLSID “BDD1F04B-858B-11D1-B16A-00C0F0283628”。

图 3 MIME中的CLSID
图3 MIME中的CLSID

图 4ocxstg001.mso 内容
图4 ocxstg001.mso 内容

对ocxstg001.mso 内容的BASE64解码后得到一个doc文件:

图 5解析出doc文件
图5 解析出doc文件

可以找到contents结构体:

图 6 Contenets
图6 Contenets

可以发现cobj的数据长度x8282,后面跟着shellcode,其中包含90909090等汇编代码。

图 7 shellcode
图7 shellcode

与RTF格式0158漏洞构造不一样的地方就在于RTF格式的CLSID是在doc文件中而MIME格式是在MIME文本中,解码后的doc文件中不会出现CLSID,通过这几种变化就可以逃避大部分杀软的检测,在doc中没有了CLSID,而且编码格式发生了变化。掌握了漏洞原理编写出来的查杀程序因为这种变化也变得无效。

针对RTF形式的漏洞半数杀软都可以检测。

https://www.virustotal.com/en/file/334fe74b0167a50a35575ccb6058d03a98b11e158d05a412
71aab6c9161047db/analysis/

图 8 RTF格式检出
图8 RTF格式检出

VirusTotal上MIME格式样本刚出现时只有极少的反病毒厂商可以检测,目前已经增加到10家可以检测该样本。

图 9 VirusTotal样本检出
图9 VirusTotal样本检出