PS:恭喜泉哥的新书编写成就达成!
此篇是2015年ISC大会的演讲整理,存了一年了,放出来吧!
[1]内容简介
浏览器是用户进入互联网的第一道门槛,更是网络攻防对抗的桥头堡!本议题依据作者针对最近五到八年间在浏览器方面爆发的各种漏洞,就网络攻击者和防御者在攻防技术方面,给大家一一总结和演示。操作系统厂商、软件厂商、软件安全爱好者、黑客军火商、在以浏览器为名的网络战争中各自扮演着举足轻重的角色。道高一尺抑或魔高一丈,希望通过本次议题能给大家一点启发。
[2]浏览器-互联网门户
一位普通的网民,接触到万分精彩的互联网的第一件事就是接触浏览器,通过浏览器访问网络。现代网络模型中,浏览器充当了网络接入器,是用户进入互联网的第一渠道。《2015年第35次中国互联网络发展状况统计报告》中截止2014年12月,我国网民规模达6.49亿。下图是2015年8月份全球主流浏览器市场份额排行榜,从中可以看出,Microsoft Internet Explorer(以下简称IE浏览器) 以52.17%的市场占有率排在第一位。
图1:2015年8月份全球主流浏览器市场份额排行榜
浏览器的地位在整个互联网的位置尤为重要,而针对浏览器的漏洞攻防一直是整个互联网攻防对抗的第一线和桥头堡。君不见微软每个月发布系统补丁中都要带上针对IE浏览器的漏洞补丁,今天就以IE浏览器为对象讨论一下针对浏览器漏洞攻防对抗的艺术史。
[3] 浏览器攻防对抗参与方
基于浏览器漏洞攻防对抗有几大参与方,主要分为攻击方和防御方,中立方是墙头草,随时会偏向任意一方。
攻击方使用漏洞挖掘和逆向方面的技术,挖掘浏览器的漏洞并进行利用。主要有以下:
<1>. APT组织
APT组织会想这种办法搞到漏洞,比如APT_1蓝白蚁,APT28,隐秘的山猫这些组织,使用浏览器漏洞针对有价值目标进行定点攻击,产生非常大的影响。
<2>. 武器军火商
网络军火商负责兜售漏洞,从个人或者其他军火商手中购买漏洞,进行加工以后出售给APT组织或政府组织,依此盈利。法国的VUPEN和意大利的HackingTeam都属于此类军火商。
攻防对抗的防御方则负责了浏览器的维护更新和漏洞防御的工作,主要有以下几个:
<1>. 浏览器厂商
微软作为浏览器市场的一哥,自然首当其冲,基本上形成了每月的“漏洞大姨妈”。google的Chrome浏览器的市场占有率也是非常高,其他浏览器比如苹果公司的safari,奇虎360公司的360极速浏览器也是在此之列。
<2>. 操作系统厂商
操作系统在底层提供了防御浏览器漏洞攻击的各种措施,比如地址随机化(ASLR),数据执行保护(DEP),栈Cookies等。
<3>. 安全厂商
卡巴斯基、诺顿、麦咖啡,当然也包括国内的奇虎360和金山这些安全厂商,在操作系统的基础上防御漏洞和木马的攻击。
这包括大部分安全爱好者比如我,对漏洞挖掘和漏洞分析有着非常浓厚的兴趣,会对浏览器漏洞进行持续的跟进和分析。
浏览器漏洞攻击参与方整体如下图:
图2:浏览器漏洞攻防对抗参与者
[4] 浏览器漏洞防护手段
上文说到浏览器攻防对抗的防御方为了达到防御的目的,设计并实现了各种防护手段,主要有一下几点:
<1>. 地址随机化(ASLR)
ASLR(Address space layout randomization)是一种针对缓冲区溢出的安全保护技术,通过对堆、栈、共享库映射等线性区布局的随机化,通过增加攻击者预测目的地址的难度,防止攻击者直接定位攻击代码位置,达到阻止溢出攻击的目的。
<2>. 数据执行保护
数据执行保护(DEP) 是一套软硬件技术,能够在内存上执行额外检查以帮助防止在系统上运行恶意代码。在 Microsoft Windows XP Service Pack 2、 Microsoft Windows Server 2003 Service Pack 1 、Microsoft Windows XP Tablet PC Edition 2005 、 Microsoft Windows Vista 和 Microsoft windows7 中,由硬件和软件一起强制实施 DEP。
<3>. EAF—Export Address Table Filtering
这种缓解措施是保护对导出地址表的访问(EAT),允许或者禁止调用代码的读写操作。在EMET(Enhanced Mitigation Experience Toolkit)中显示,现今大部分shellcode都会因为在攻击载荷中查找API地址被拦截。
<4>. CFG
CFG是Control Flow Guard的缩写,就是控制流保护,它是一种编译器和操作系统相结合的防护手段,目的在于防止不可信的间接调用。
<5>. SEHOP
SEHOP的全称是Structured Exception Handler Overwrite Protection(结构化异常处理覆盖保护),SEHOP的核心是检测程序栈中的所有SEH结构链表,特别是最后一个SEH结构,它拥有一个特殊的异常处理函数指针,指向的是一个位于NTDLL中的函数。异常处理时,由系统接管分发异常处理,因此上面描述的检测方案完全可以由系统独立来完成,正因为SEH的这种与应用程序的无关性,因此应用程序不用做任何改变,你只需要确认你的系统开启了SEHOP即可。
<6>. EPM
增强保护模式最先在Internet Explorer10中被引入,并在Internet Explorer11中得到了进一步的加强。在保护模式开启的情况下,即使攻击者已经利用了浏览器本身,或者利用了浏览器中运行的控件的漏洞,用户的数据依然可以保持安全状态。增强保护模式的前身“保护模式”,最先出现在Windows Vista中的Internet Explorer7上。它提供了“深度的保护”,以帮助防止攻击者安装恶意软件,或者修改系统设置,哪怕他们已经成功运行了可以利用漏洞的代码。例如,通常浏览器无须修改系统设置,或者写入用户的“文档”目录。保护模式基于最小权限的原则——通过限制Internet Explorer所拥有的能力,使得入侵代码所获得的能力也相应地受到了限制。增强保护模式进一步运用最小权限的概念,对Internet Explorer的能力做了进一步的限制。
<7>. 栈Cookeis(GS)
微软为了解决栈溢出这个重灾区,Windows在VS 7.0(Visual Studio 2003)及以后版本的Visual Studio中默认启动了一个安全编译选项——GS(针对缓冲区溢出时覆盖函数返回地址这一特征),来增加栈溢出的难度。 GS编译选项为每个函数调用增加了一些额外的数据和操作,用以检查栈中的溢出。在返回地址钱添加Security Cookie外,在Visual Studio 2005及后续版本还使用了变量重排技术,在编译时根据局部变量的类型对变量在栈帧中的位置进行调整,将字符串变量移动到栈帧的高地址。这样可以防止该字符串溢出时破坏其他的局部变量。同时还会降指针参数和字符串参数复制到内存中的低地址,防止函数参数被破坏。
自然也有其他的保护技术,这里也就不一一展开讨论,后续的讨论过程中会对其中的一些技术进行技术绕过的演示。
[5] 浏览器漏洞攻击时间线
作者从2008年起从事软件安全漏洞挖掘分析方面的工作,所以就以2008年为起始,2015年9月为知为大家梳理浏览器漏洞攻击的时间线。
此阶段以ActiveX、栈溢出、简单堆溢出为主线。利用方式则是非常的简单和暴力,ActiveX控件的漏洞多见于IE6、IE7,多以播放器的堆栈溢出漏洞为主。其中比较出名的是realplayer 10.5版本的漏洞。
2005~2008年之间,虽然有互联网泡沫,但是互联网真正在国内发展起来,特别是新闻的浏览器和视频的播放,其中realplayer播放器成为浏览器播放的事实标准,其主要的攻击对象是IE6、IE7浏览器为主,以CVE-2007-5601为例:
RealPlayer 10.0/10.5/11 ierpplug.dll ActiveX Control Import Playlist Name Stack Buffer Overflow Vulnerability:
再以CVE-2009-1537漏洞为例:
DirectX的DirectShow组件(quartz.dll)在解析畸形的QuickTime媒体文件时存在错误,用户受骗打开了恶意的媒体文件就会导致执行任意代码。由于用户可能在浏览器中安装媒体播放插件,因此访问恶意网页就足以导致播放QuickTime文件,触发Quartz.dll中的漏洞。
来看具体的漏洞利用代码:通过暴力填充来加载.net 模块,目的是内存占位,方便进行漏洞利用。
其c.avi中保存了木马的URL下载链接:
[招生]科锐逆向工程师培训(2025年3月11日实地,远程教学同时开班, 第52期)!
上传的附件: