首页
社区
课程
招聘
[原创]CVE-2012-0158 MSCOMCTL控件漏洞分析
发表于: 2012-4-27 20:55 25284

[原创]CVE-2012-0158 MSCOMCTL控件漏洞分析

2012-4-27 20:55
25284

引言:一个朋友给了我一个比较新的样本,用360一扫,直接报了CVE-2012-0158。一直都觉得360对于文件病毒不敏感,这回倒是给了我一个惊讶。看来360也不能藐视。。。
     网上搜了搜,没发现有分析这个漏洞的。论坛分析漏洞的文章比较少了,我下个决心自己试着分析一下,一来努力提升一下我这个菜鸟的逆向分析能力,二来为论坛的发展贡献一点棉薄之力。大致分析完毕,出拙文,与看雪坛友分享之~下面附上样本和分析文档,样本解压密码为chence.水平有限,错误之处,恳请牛人们批评指正!
       感谢bitt的指点,修改了一个错误! 使得这个 漏洞更加有意思了,哈哈哈。。。。


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

上传的附件:
收藏
免费 6
支持
分享
最新回复 (49)
雪    币: 435
活跃值: (1282)
能力值: ( LV13,RANK:388 )
在线值:
发帖
回帖
粉丝
2
不是没检查,检查了 但没检查好哈哈
0:000> p
eax=00000000 ebx=08150810 ecx=7c93056d edx=00150608 esi=001a120c edi=00000000
eip=275c8b7a esp=00122478 ebp=00122498 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+0x3ab41:
275c8b7a 837df408 cmp dword ptr [ebp-0Ch],8 ss:0023:0012248c=00008282
0:000> p
eax=00000000 ebx=08150810 ecx=7c93056d edx=00150608 esi=001a120c edi=00000000
eip=275c8b7e esp=00122478 ebp=00122498 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+0x3ab45:
275c8b7e 0f82efa20000 jb MSCOMCTL!DllGetClassObject+0x44e3a (275d2e73) [br=0]


第二次调用之前有一次检查,但是 ..
大于号小于号 写错了 哈哈.........
2012-4-27 21:14
0
雪    币: 1689
活跃值: (379)
能力值: ( LV15,RANK:440 )
在线值:
发帖
回帖
粉丝
3
果断顶。下载学习。。。。。。
2012-4-27 21:33
0
雪    币: 1327
活跃值: (370)
能力值: ( LV11,RANK:190 )
在线值:
发帖
回帖
粉丝
4
谢谢bitt指出错误,说的很对啊
2012-4-27 21:38
0
雪    币: 95
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
前几天也分析了这个漏洞 栈溢出 这个东西竟然没有栈溢出保护机制 很奇怪 是因为编译的时间过老么
2012-4-27 21:40
0
雪    币: 589
活跃值: (119)
能力值: ( LV11,RANK:190 )
在线值:
发帖
回帖
粉丝
6
这个POC我昨天也看了下,分析起来还是比较简单的,关键得搞清楚文件格式
MSF上Office 2010的poc用ROP可过ASLR+DEP,附上
msf.doc
上传的附件:
2012-4-27 21:44
0
雪    币: 589
活跃值: (119)
能力值: ( LV11,RANK:190 )
在线值:
发帖
回帖
粉丝
7
VC5.2?
2012-4-27 21:48
0
雪    币: 1327
活跃值: (370)
能力值: ( LV11,RANK:190 )
在线值:
发帖
回帖
粉丝
8
用peid查,真是vc5.2!
2012-4-27 22:31
0
雪    币: 177
活跃值: (471)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
support!
2012-4-27 23:31
0
雪    币: 859
活跃值: (309)
能力值: ( LV11,RANK:180 )
在线值:
发帖
回帖
粉丝
10
尼玛啊 0158 彻底裸了。。。
2012-4-28 00:04
0
雪    币: 859
活跃值: (309)
能力值: ( LV11,RANK:180 )
在线值:
发帖
回帖
粉丝
11
有道理

看看我那个ocx是04年的。。。
2012-4-28 00:07
0
雪    币: 3542
活跃值: (239)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
12
最近再找这个样本,关注一下!
2012-4-28 00:22
0
雪    币: 177
活跃值: (471)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
(7ffa4512 在样本 doc 里找不到)

地址在文件偏移0x1338h 处,地址后面紧跟着就是shellcode了
1245fa7f90909090909090908bc40510010000c
那个0x8282也就在这个地址上方,不过内嵌的com格式没搞清楚,等科普。
2012-4-28 00:34
0
雪    币: 1489
活跃值: (1053)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
14
学习了,我也研究过这个漏洞,发生溢出函数的内有一个CALL [reg+Imm]就搞不清楚了。
好像是在解析OLESSHEADER里的数据,貌似TEB结构有一个成员是维护OLE的,里面的代码真是多啊。
迷茫中。。
脱壳破解是在学习汇编,分析漏洞是在学习调试。
CVE-2012-0158简单分析报告.zip
上传的附件:
2012-4-28 00:47
0
雪    币: 146
活跃值: (182)
能力值: ( LV13,RANK:220 )
在线值:
发帖
回帖
粉丝
15
球各种样本啊 球
2012-4-28 09:00
0
雪    币: 72
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
16
[QUOTE=金罡;1067866]学习了,我也研究过这个漏洞,发生溢出函数的内有一个CALL [reg+Imm]就搞不清楚了。
好像是在解析OLESSHEADER里的数据,貌似TEB结构有一个成员是维护OLE的,里面的代码真是多啊。
迷茫中。。
脱壳破解是在学习汇编,分析漏洞是在学习调试。
66874...[/QUOTE]

简单粗暴有效
调试过程很棒
2012-4-28 09:43
0
雪    币: 345
活跃值: (122)
能力值: ( LV2,RANK:150 )
在线值:
发帖
回帖
粉丝
17
楼主不加载符号文件,这种报告怎么看啊
2012-4-28 09:50
0
雪    币: 1327
活跃值: (370)
能力值: ( LV11,RANK:190 )
在线值:
发帖
回帖
粉丝
18
感谢!1245fa7f 文件中是以31 32 34 35 66 61 37 66形式存在的,WORD竟2个字节地把它合并了
2012-4-28 09:51
0
雪    币: 345
活跃值: (122)
能力值: ( LV2,RANK:150 )
在线值:
发帖
回帖
粉丝
19
金罡的分析报告还清楚些
2012-4-28 09:53
0
雪    币: 1327
活跃值: (370)
能力值: ( LV11,RANK:190 )
在线值:
发帖
回帖
粉丝
20
因为调试的时候会频繁地重启调试器,机子不怎么好,加载符号有点慢,所以就把没加了!抱歉,下次改进~
2012-4-28 09:54
0
雪    币: 589
活跃值: (119)
能力值: ( LV11,RANK:190 )
在线值:
发帖
回帖
粉丝
21
[QUOTE=金罡;1067866]学习了,我也研究过这个漏洞,发生溢出函数的内有一个CALL [reg+Imm]就搞不清楚了。
好像是在解析OLESSHEADER里的数据,貌似TEB结构有一个成员是维护OLE的,里面的代码真是多啊。
迷茫中。。
脱壳破解是在学习汇编,分析漏洞是在学习调试。
66874...[/QUOTE]

学习了,我分析的时候哦比你懒多了,直接虚拟机快照+trace
2012-4-28 10:18
0
雪    币: 793
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
感谢楼主的分享精神,学习了!
本人菜鸟也把在may.doc的信息分析如下:
1.地址内容0x0000-0x283f 是完全按照漏洞POC文档格式来的 见http://www.exploit-db.com/exploits/18780
2.接下来是magic标志:ABABABABEFEFEFEF
3.后面是个缓冲区保存:a.doc和a.exe文件(计算器)的释放路径和大小 路径是%USERPROFILE%
4.docx格式的文件和计算器二进制文件(0xAC异或加密)
大牛的shellcode没分析 菜鸟水平有限 期待牛人分享下
2012-4-28 10:49
0
雪    币: 433
活跃值: (1870)
能力值: ( LV17,RANK:1820 )
在线值:
发帖
回帖
粉丝
23
我感觉windbg与od\immdbg的差别除了使用方法外,最重要的一点就是在文档的篇幅上,用windbg调试然后写出的文档永远是用od\immdbg调试时写的文档的好几倍长,用od\immdbg写出来的的文档总感觉就是比较精简,呵呵……
2012-4-28 11:06
0
雪    币: 292
活跃值: (153)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
24

不是。。。。呢个 DOC的样本。。我不小心 在宿主机 点开了。。。没事吧 我晕。。。????
2012-4-28 11:18
0
雪    币: 793
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
25
计算器 不怕哈 呵呵
2012-4-28 11:22
0
游客
登录 | 注册 方可回帖
返回
//