首页
社区
课程
招聘
[讨论]不知是不是新的 mscomctl 漏洞(附件是病毒样本,勿直接运行)
发表于: 2013-5-30 18:02 15490

[讨论]不知是不是新的 mscomctl 漏洞(附件是病毒样本,勿直接运行)

2013-5-30 18:02
15490
VT 扫描结果如下:
https://www.virustotal.com/en/file/c4e24d587f7014af48b2dcc8fc53251c25225f2b8e0f23ea86a445e6baaeff00/analysis/1369893428/
没有报出 CVE 号的。
看了下,应该不是 MS12-027 和 MS12-060。
大概分析如下,mscomctl.ocx (v6.01.9545)中的这个函数导致的栈溢出 :

.text:27602D22
.text:27602D22                 push    ebp
.text:27602D23                 mov     ebp, esp
.text:27602D25                 sub     esp, 148h
...
.text:27602E87                 mov     eax, [esi-4]  ;从 Contents 流中读取的值
.text:27602E8A                 mov     ecx, eax
.text:27602E8C                 lea     edi, [ebp+MultiByteStr]
.text:27602E92                 mov     edx, ecx
.text:27602E94                 mov     [ebp+var_4], esi
.text:27602E97                 shr     ecx, 2
.text:27602E9A                 rep movsd               ; overflow stack
.text:27602E9C                 mov     ecx, edx
.text:27602E9E                 push    1
.text:27602EA0                 and     ecx, 3
.text:27602EA3                 rep movsb
...
分配了 148h 大小的堆栈,后面从文件 Contents 流中读取长度值堆栈拷贝,没有进行判断,导致堆栈溢出。
漏洞样本密码为 “infected”。(样本有害,请在虚拟机中调试运行!!!!!!!!!!!)

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

上传的附件:
收藏
免费 0
支持
分享
最新回复 (11)
雪    币: 55
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
是CButton::Load调用LoadMFCPropertySet时的栈溢出,应该是ms12-060吧。
这样本在打了ms12-060补丁后,还是crash,可以看到补丁的LoadMFCPropertySet里对size限制为0x1000,大于这个值时不拷贝,只是memset了下,然后返回了,但相加的值还是原先流中的值

.text:275D4F83 loc_275D4F83:                           ; CODE XREF: sub_275D4EA0+15Dj
.text:275D4F83                 mov     eax, [ebp+pBuffer]
.text:275D4F86
.text:275D4F86 loc_275D4F86:                           ; CODE XREF: sub_275D4EA0+E1j
.text:275D4F86                 mov     ecx, [eax]
.text:275D4F88                 mov     esi, [eax+4]
.text:275D4F8B                 add     eax, 8
.text:275D4F8E                 push    esi             ; user controlled size
.text:275D4F8F                 mov     [ebp+pBuffer], eax
.text:275D4F92                 push    eax
.text:275D4F93                 lea     eax, [ebp+MultiByteStr]
.text:275D4F99                 push    100h            ; max size
.text:275D4F9E                 push    eax
.text:275D4F9F                 mov     [ebp+var_28], ecx
.text:275D4FA2                 call    sub_275CEAD4
.text:275D4FA7                 add     [ebp+pBuffer], esi ; add directly!!!


(c10.c44): Access violation - code c0000005 (first chance)
First chance exceptions are reported before any exception handling.
This exception may be expected and handled.
eax=380b88b8 ebx=00300500 ecx=7c93005d edx=025c0008 esi=2762bee0 edi=2762bd90
eip=275d4f86 esp=00125e2c ebp=00125f7c iopl=0         nv up ei pl nz na po nc
cs=001b  ss=0023  ds=0023  es=0023  fs=003b  gs=0000             efl=00010202
MSCOMCTL!DllGetClassObject+0x9cb8:
275d4f86 mov     ecx,dword ptr [eax]                  ds:0023:380b88b8=????????
0:000> knL 10
 # ChildEBP RetAddr  
WARNING: Stack unwind information not available. Following frames may be wrong.
00 00125f7c 275a71dd MSCOMCTL!DllGetClassObject+0x9cb8
01 00125fc4 275a29d3 MSCOMCTL!DLLGetDocumentation+0x1c2ed
02 00126004 275cdfe6 MSCOMCTL!DLLGetDocumentation+0x17ae3
*** ERROR: Symbol file could not be found.  Defaulted to export symbols for C:\Program Files\Common Files\Microsoft Shared\office11\mso.dll - 
03 00126018 30eb4eaa MSCOMCTL!DllGetClassObject+0x2d18
04 0012604c 307f4090 mso!MsoHrLoadStorageFromPersistStorage+0x31
05 001260e0 307f451a WINWORD!wdGetApplicationObject+0x9de21
06 00126320 6520e294 WINWORD!wdGetApplicationObject+0x9e2ab
07 00126360 651deeb1 VBE6!ExtendedControlCF::CreateExtendedControl+0xd0
08 00126394 651e02ba VBE6!CVBAControlMgr::CreateControlInstance+0x61
09 00126424 307f4d5c VBE6!CVBAControlMgr::DefineControl+0x273
0a 00126488 307f5353 WINWORD!wdGetApplicationObject+0x9eaed
0b 001264c4 307f5596 WINWORD!wdGetApplicationObject+0x9f0e4
0c 001264ec 302c5d61 WINWORD!wdGetApplicationObject+0x9f327
0d 00126594 7c9300b8 WINWORD+0x2c5d61
0e 001265a0 7c930041 ntdll!RtlpFreeToHeapLookaside+0x22
0f 0012666c 7c931452 ntdll!RtlFreeHeap+0x1e9
0:000> lm vm mscomctl
start    end        module name
27580000 27684000   MSCOMCTL   (export symbols)       C:\WINDOWS\System32\MSCOMCTL.OCX
    Loaded symbol image file: C:\WINDOWS\System32\MSCOMCTL.OCX
    Image path: C:\WINDOWS\System32\MSCOMCTL.OCX
    Image name: MSCOMCTL.OCX
    Timestamp:        Thu May 03 01:55:51 2012 (4FA17527)
    CheckSum:         00108C6A
    ImageSize:        00104000
    File version:     6.1.98.34
    Product version:  6.1.98.34
    File flags:       0 (Mask 3F)
    File OS:          40004 NT Win32
    File type:        2.0 Dll
    File date:        00000000.00000000
    Translations:     0409.04e4
    CompanyName:      Microsoft Corporation
    ProductName:      MSCOMCTL
    InternalName:     MSCOMCTL
    OriginalFilename: MSCOMCTL.OCX
    ProductVersion:   6.01.9834
    FileVersion:      6.01.9834
    FileDescription:  Windows Common Controls ActiveX Control DLL
    LegalCopyright:   Copyright © 1987-2000 Microsoft Corp.
    LegalTrademarks:  Microsoft® is a registered trademark of Microsoft Corporation. Windows(TM) is a trademark of Microsoft Corporation
    Comments:         May 2, 2012
2013-5-31 15:29
0
雪    币: 1491
活跃值: (985)
能力值: (RANK:860 )
在线值:
发帖
回帖
粉丝
3
有可能是CVE-2012-0158
2013-5-31 17:53
0
雪    币: 34
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
好崇拜你们,菜鸟一枚,完全看不懂
2013-6-1 14:52
0
雪    币: 220
活跃值: (721)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
.VOC后缀?
用什么打开?
2013-6-1 15:37
0
雪    币: 29214
活跃值: (7719)
能力值: ( LV15,RANK:3306 )
在线值:
发帖
回帖
粉丝
6
mark下
从Toolbar Control修改而来, 变量大小0x100, 应该没有cve, 但是被ms12-027补了
2013-6-2 00:14
0
雪    币: 34
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
我打了060的补丁就不crash了,打开后显示一个红叉。
2013-6-4 16:52
0
雪    币: 232
活跃值: (40)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
8
12-027的补丁也把它补了
2013-6-6 15:34
0
雪    币: 34
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
好像没有完全补上,027的补丁安装后还是会crash,但是不知道飞哪儿去了,自己不会修改,不知道有没有高人优化一下
2013-6-6 21:10
0
雪    币: 345
活跃值: (122)
能力值: ( LV2,RANK:150 )
在线值:
发帖
回帖
粉丝
10
感谢楼主,分析下看看。
2013-6-25 21:13
0
雪    币: 19
活跃值: (40)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
11
遇到了同样的漏洞,也无法确认CVE号,不知道楼主是否已经确认是哪个CVE了,cve-2012-1856不是堆的use-after-free吗?这个应该是栈溢出吧。。。
2013-11-29 18:40
0
雪    币: 108
活跃值: (44)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
12
搞“漏洞”的,你们说的啥完全看不懂
2013-11-30 12:18
0
游客
登录 | 注册 方可回帖
返回
//