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

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

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

[CTF入门培训]顶尖高校博士及硕士团队亲授《30小时教你玩转CTF》,视频+靶场+题目!助力进入CTF世界

上传的附件:
收藏
点赞3
打赏
分享
最新回复 (49)
雪    币: 435
活跃值: (1117)
能力值: ( LV13,RANK:388 )
在线值:
发帖
回帖
粉丝
bitt 5 2012-4-27 21:14
2
0
不是没检查,检查了 但没检查好哈哈
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]


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

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

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

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

学习了,我分析的时候哦比你懒多了,直接虚拟机快照+trace
雪    币: 793
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
happymhx 2012-4-28 10:49
22
0
感谢楼主的分享精神,学习了!
本人菜鸟也把在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没分析 菜鸟水平有限 期待牛人分享下
雪    币: 429
活跃值: (1875)
能力值: ( LV17,RANK:1820 )
在线值:
发帖
回帖
粉丝
riusksk 41 2012-4-28 11:06
23
0
我感觉windbg与od\immdbg的差别除了使用方法外,最重要的一点就是在文档的篇幅上,用windbg调试然后写出的文档永远是用od\immdbg调试时写的文档的好几倍长,用od\immdbg写出来的的文档总感觉就是比较精简,呵呵……
雪    币: 292
活跃值: (153)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
Dstlemoner 2012-4-28 11:18
24
0

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