CVE-2012-1535分析报告

@Puzzor

头一次做弱点分析报告,整体下来感觉过程比较复杂艰难,此漏洞也比较早了,是12年下半年的一个,后续会带来更新更深入的分析。

调试环境:

Windbg

Adobe FlashPlayer 11.3.300.257

Windows XP SP2 简体中文

IDA Pro

调试过程:

       样本链接中有两个swf文件,1.swf没有进行exploit,仅会造成程序的Crash,不具有危害性。 2.swf中进行了exploit并激活了shellcode,故在对2.swf进行测试时,请利用虚拟机进行。

       首先打开Iexplore,利用windbg附加到iexplore进程中之后go一下。此时用IE打开我们已经准备好的1.swf,打开后,IE会弹出安全提示

 

      点允许后会触发一个crash并引发windbg的中断,windbg中断信息如下:

可以看到在0x1043ce98处的call指令出现了异常,此时EAX :0x1e0d0000,要访问的地址为0x1e0d0008,而此处的内存并不可访问,所以会造成程序的Crash.接下来我们对指令进行回溯可以发现

  EAX的值由ESI地址传递过来,而ESI的值又与ESP的值有关。一般来说ESI与调用函数的参数有紧密关系,而ESP一般指向栈帧的顶部。此时由EAX的值出现异常推出了ESP的值出现了异常,接下来就是要找出是什么原因造成了ESP值的异常。我们观察ESP的值为

由此值以及简单的堆栈回溯便可以算出此函数过程的返回地址为0x10440e65,这个返回地址也正处于存在问题的函数中

接下来,在内存中跳转到0x10440e65,如下图所示

可以看到0x10440e5f处对esi进行了push,紧接着call 0x1043ce89,这也证实了之前我们所说的ESI作为函数的一个参数进行传递,接下来就是要找出0x10440e5f处于哪一个模块。

       我们查看一下当前所载入的模块

从上图我们可以看出,0x10440e5f正处于Flash32_11_3_300_257.ocx模块之中,至此我们已然能够确定漏洞出现在这个文件当中了。

        接下来我们要找出具体这个漏洞存在于整个模块中的哪个函数中,我们利用IDA不难发现,0x10440e5f恰恰处于sub_10440CC5 proc near函数中。至此我们能够判断漏洞出现于此函数中。找出所在函数后,接下来我们将会用到下一个样本文件2.swf,此文件进行了exploit

       接下来我们要定位shellcode,这次我们将断点设置在0x1043ce98上面,这个地址也是刚才出现crash的地址。接着从ie里面打开2.swf文件,程序会中断在断点处。此时我们跳转到0x0c0c0c0c,会发现地址段内布满了0x0c

在这里,堆栈被Spray了大量的0x0c+shellcode,通过指令的跳转我们继续向下执行,会找到shellcode的入口处

至此,指令落入shellcode.


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值