为什么要研究IE漏洞
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么要研究IE漏洞相关的知识,希望对你有一定的参考价值。
目前就漏洞利用对抗这一层面来说,android、ios、基于Linux的移动平台是大家关注的热门方向,与这些热点比起来Windows上的一些“老家伙”诸如IE(包括Edge,以下皆是)可能就不怎么受到关注了,但是我个人作为一个二进制的入门小白还是觉得围绕着IE的攻防对抗有很多值得学习的东西。其实主要是因为自己想了一下,为啥Windows的这些洞前辈们都搞了这么多年了,还去费心思去研究它?这里列出了想到的几点:
- 1.IE一直处于攻防对抗的最前沿:IE系列一直是采用了微软最新最强的漏洞缓解技术,比如2014年IE下面大量的UAF漏洞被曝出后,微软同年推出隔离堆和延迟释放对利用进行围堵,之后又很快的演化到Edge中的MemGC对堆进行单独管理并启用独立的分配释放函数。又比如EMET对各种利用手段进行逐一封堵,被绕过后又很快推出新版本进行修复(底下付了一张EMET演化表,其中EMET多次爆出绕过技术),其中对函数头的Hook过滤、调用者检查我觉得都比较有启发性以后很有可能会被使用在其它平台上。
- 2.IE下攻防对抗发展很快:拿堆喷射举例,从最早的Nozzle到禁止喷射BSTR到javascript9启用再到隔离堆扰乱内存布局再到启用64位进程,喷射的对象也从BSTR、Heaplib到DEPS到Element Array到Javascript Array再结合了各种Heap-fengshui进行布局,几乎每个版本的IE浏览器都会新增一些对抗机制,这一点在Linux中可能很难看到。
- 3.IE浏览器的对抗离我们很近:对比一下2010年的Pwn2Own和去年的Pwn2Own要求就可以看出这一点,2010是Windows 7下的IE8+DEP+ASLR,去年的Pwn2Own是Windows8.1下的IE11+增强沙箱+64位进程+EMET+全保护。5年时间里就叠加出这么多的缓解措施,相比一下平台下还可以使用十多年前的jmp esp或是简单的ROP(正好我前几天翻译过一篇某平台路由器漏洞的文章,其中提到了尚不支持DEP保护),IE的对抗离我们的时代很近(我觉得2010年才算IE对抗的开始)。
- 4.缓解措施的攻防对抗更通用:个人感觉CTF中的Pwn更多是针对代码本身的考量,比如Pwn里的堆漏洞其实就是针对ptmalloc的代码进行利用,这种利用更多的是“特洞特办”,但是漏洞缓解机制却具有很强的通用性,一个平台的缓解机制如果很有效那么完全可以移植到另一个平台上。
EMET 1.x, 2009年10月27日发布
SEHOP:防止结构化异常处理SEH被覆盖和篡改。
DEP:强制的DEP,因此栈和堆等数据段不再有执行权限。
空页面保护:预分配空页面,防止攻击者对空页面进行利用。
堆喷射保护:防止进行堆喷射(其实是把常用的堆喷射内存区域预先分配了。)
EMET 2.x,2010年9月2日发布
强制ASLR:强制执行ASLR,即使是不支持ASLR的老旧dll模块也会被强制启用ASLR。
导出表访问过滤:有的shellcode会遍历模块的导出函数,以解析如kernel32.dll, ntdll.dll和kernelbase.dll等模块导出的重要函数。EMET使用硬件断点来阻止访问这些模块导出表的任何线程,并且EMET会验证它们是否合法。
EMET 3.x,2012年5月25日发布
ROPGuard:使用ROPGuard来阻止ROP。
加载库检查:阻止通过通用命名约定(UNC)路径加载DLL文件。(ROP中会使用这种技术)
ROP缓解措施 - 内存保护检查:保护关键Windows API(如VirtualProtect),这些API可能被用于将堆栈标记为可执行。
ROP缓解措施 - 调用者检查:防止使用跳转或返回指令调用关键Windows API。
ROP缓解措施 - 堆栈翻转:检测堆栈是否已被翻转。
ROP缓解措施 - 模拟执行流程:通过操纵和跟踪堆栈寄存器,在调用关键Windows API后检测ROP Gadgets。
自底向上的ASLR:将随机化8位的熵添加到自底向上分配(包括堆,堆栈和其他内存分配)的基址。
EMET 4.x,2013年4月18日发布
深度Hook:启用此功能后,EMET不再只是挂钩上层的API函数,而是会一并挂钩那些上层API调用的底层函数。
反绕道:由于EMET在跳转(挂钩)Windows API函数的前言中放置跳转指令,所以攻击者可以制作一个返回到绕行跳转指令之后的指令的ROP。 此保护尝试停止这些旁路。
禁止重要函数调用:默认情况下,它不允许调用ntdll!LdrHotpatchRoutine以防止DEP / ASLR被绕过。 还可以配置其他功能。
证书信任(可配置证书锁定):在证书链信任验证过程中提供更多的检查和验证。 默认情况下,它仅支持Internet Explorer。
EMET 5.x,于2014年7月31日发布
攻击面减少(ASR):允许配置在某些应用程序中阻止加载模块的列表。
EAF +:与EAF类似,它提供了额外的功能来保护kernel32.dll,ntdll.dll和kernelbase.dll的导出表。 它还检测MZ / PE读取以及堆栈指针是否指向堆栈边界之外的某处或者是否与堆栈指针之间不匹配。
以上是关于为什么要研究IE漏洞的主要内容,如果未能解决你的问题,请参考以下文章
IE UAF 漏洞(CVE-2012-4969)漏洞分析与利用
《Look Mom, I don’t use Shellcode》议题解析&IE11漏洞利用小议