IE7 0Day 漏洞分析及防御原理
IE7 0Day 漏洞的危害性极大,以下是0DAY代码片断:
安天实验室指出,溢出是由于XML 解析字符串SRC片段时导致,由于SR 字符串当中的
rਊr |
非正常字符导致对象分配失败,而失败后的内存指针没有被释放,继续利用,而这个指针被人为指向了一段堆地址,而如果这段地址被 ShellCode 覆盖过的话,调用这个指针就会导致有溢出。
r把十进制的114转成0x0072
ਊ把十进制的2570转成0x0a0a
刚好它们组合在一起就是一个可利用的堆地址0x0a0a0072,在以下代码中图所示:
据安天防线研发人员介绍,以上是溢出代码分配过程,由于 Windows 操作系统对分配的特点,以下三句:
aaablk=(0x0a0a0a0a-0x100000)/heapBlockSize; zzchuck=new Array(); for(i=0;i<aaablk;i++){zzchuck[i]=retVal+infect} |
保证了从堆开始的地址直到0x0a0a0a0a 都会被溢出代码淹没,所以最终通过 0x0a0a0072 跳到了溢出代码处,导致了系统溢出。
IE7 0day漏洞的防御原理
大多数网页挂马者,对于该漏洞多采用js脚本配合畸形xml的方式实现挂马,对其防御通过以下方式即可实现:
1. 特征检测清理畸形并进行清理xml
2. 通过行为分析打断网页挂马从网络到本地执行的过程
3. 将使用该网页木马的站点加入黑名单
4. 阻断网页木马执行。
据安天防线团队研发人员介绍,由于网页挂马变形方式的多样性,安天防线将采取多种方式相结合的方式对其进行防御,首先在IE下载页面时进行黑名单匹配可以过滤常见的使用该技术进行挂马的职业挂马站。在IE下载完所有的页面元素后,对页面元素进行检查,清理掉挂马脚本。经过分析测试发现,广泛传播的IE7 0day网马生成器,它所生成的shellcode会调用一些特殊的函数,这些函数一直被网页防挂马防御模块所监控,在shellcode调用这些函数进行木马下载和运行的时候,防御模块会对其进行阻断,以达到防御的目的。由于网页木马利用的是溢出漏洞,有可能会导致部分正常代码被覆盖,所以在IE创建进程的过程中,防御模块对进程创建的文件进行了数字签名和可信任度检测,以阻止被下载的木马执行。综合使用上述方法,安天防线实现了对该漏洞的有效防御