2010,46(21)ComputerEngineeringandApplications计算机工程与应用1引言网页恶意代码是木马用来传播的主要方式之一,各种有危害性的木马都可以做成网页恶意代码来传播危害用户,也是网络黑色产业的开路先锋,利用病毒木马来窃取网络用户的财产[1-2]。北京理工大学信息安全与对抗研究中心获得国家242信息安全计划的两期资助,对网页恶意代码的运行机理进行了深入研究,提出了主动检测方法和防范措施,通过研发的“网页木马搜索检测系统”平均4天完成一次对全国160多万个备案网站的周期性检测,每个周期都会产生大约15000多个告警。全天候自动运行的网页木马搜索检测系统将告警信息保存到数据库中,并提供Web界面进行时段、域名、IP等数据的统计查询。系统运行界面和告警统计界面如图1和图2所示。从告警信息来看网页恶意代码依然在大量传播,对上网用户存在巨大的安全危害。网页恶意代码传播的第一个步骤跨安全域网页恶意代码运行机理与防范李志勇1,薛亮2,陶然1,张昊1LIZhi-yong1,XUELiang2,TAORan1,ZHANGHao11.北京理工大学信息科学技术学院,北京1000812.海军装备研究院,北京1001611.SchoolofInformationTechnology,BeijingInstituteofTechnology,Beijing100081,China2.NavyAcademyofArmament,Beijing100161,ChinaE-mail:lizhiyongmail@tom.comLIZhi-yong,XUELiang,TAORan,etal.Mechanismandpreventionofcross-domainWebpagemaliciouscode.Comput-erEngineeringandApplications,2010,46(21):135-137.Abstract:TheWebpagemaliciouscodeisamainwayforthetrojantospread.ManytrojanprogramscanbemadeasWebpagemaliciouscodetospreadanddoharmtousers.TheoperationmechanismofWebpagemaliciouscodeisanalysed.ThemethodthatWebmaliciouscodecrossesthesecuritydomainisdiscussed.Thereasonsofcross-domainvulnerabilityareanalysed.Thenmethodsaregiventopreventthecross-domainWebpagemaliciouscodeinthedeveloper’sview,inordertoprovideasafenetworkenvironmentforInternetusers.Keywords:Webpagemaliciouscode;securitydomain;cross-domainvulnerability摘要:网页恶意代码是木马用来传播的主要方式之一,各种有危害性的木马都可以做成网页恶意代码来传播危害用户,通过分析网页恶意代码的运行机理,对其中网页恶意代码实现跨安全域的方法进行深入探讨,分析跨域漏洞形成原因,从程序开发人员的角度给出跨域网页恶意代码的防范方法,为上网用户提供安全的网络环境。关键词:网页恶意代码;安全域;跨域漏洞DOI:10.3778/j.issn.1002-8331.2010.21.038文章编号:1002-8331(2010)21-0135-03文献标识码:A中图分类号:TP309.5基金项目:国家242信息安全计划资助课题(No.2005A10,No.2007F40)。作者简介:李志勇(1977-),男,博士研究生,讲师,研究方向为信息安全与对抗;薛亮(1976-),男,工程师,研究方向为软件工程化和质量保障;陶然(1964-),男,教授,博士生导师,研究方向为信息安全与对抗理论与技术,通信系统理论与技术,信息处理理论与技术;张昊(1981-),男,博士研究生,研究方向为信息安全与对抗。收稿日期:2009-04-02修回日期:2009-05-18图1网页木马搜索检测系统运行界面图2网页木马搜索检测系统Web统计界面135ComputerEngineeringandApplications计算机工程与应用2010,46(21)就是利用漏洞突破安全限制来获得执行权限,突破的方法主要有两种:一是利用漏洞跨安全域;另一种方法就是利用缓冲溢出来执行非法指令[3-4]。本文将主要对跨安全域网页恶意代码进行详细分析和论述。2跨安全域漏洞文献[5]对网页恶意代码与跨域漏洞关系进行了阐述,但没有说明其中的原理,这里将对其原理进行深入剖析。浏览器是用户电脑与互联网信息交互的主要窗口和渠道,为了防止网络中恶意信息和软件的干扰,浏览器提供的主要安全功能之一就是:确保由不同Web站点控制的浏览器窗口不能互相干扰或者访问彼此的数据,同时允许来自同一站点的窗口彼此交互。为了区分协同性和非协同性浏览器窗口,创造了“域”的概念。域是一种安全边界,同一个域中的任何打开的窗口可以彼此交互,但是不同域中的窗口不能彼此交互。跨域安全策略是使不同域中的窗口无法彼此交互访问。例如访问的子窗口,则这两个窗口可以彼此交互,因为它们都属于同一个域:。但是,如果访问,而它打开了一个指向另一个Web站点的窗口,则跨域安全策略将阻止这两个窗口进行交互。在本地计算机上的文件系统也是一个域。因此,以访问为例,它可以打开一个窗口并显示硬盘驱动器上的文件。但是,由于本地文件系统与该Web站点位于不同的域中,跨域安全策略将阻止Web站点读取所显示的文件。浏览器通过网络将远程服务器的网页内容下载到本地,并执行相关的脚本进行显示,为防止远程服务器传送过来的网页对本地计算机带来安全性危害,严格限制远程服务器的网页、脚本只能对远程服务器的网页进行操作,使得脚本只运行在原始安全的上下文,禁止脚本对本地计算机除网页临时缓存区中指定上下文件外的其他文件进行操作,另外安全域策略同样要限制不同域名的服务器脚本之间不能相互访问调用。本地安全域是执行权限最高的,网页恶意代码则需利用漏洞获得本地安全域的权限,跨越其自身所被限定的安全域。InternetExplorer安全区域将联机内容根据其可信任的程度划分为多个“类别”(或“区域”)。可以根据对各个域中内容的信任程度,将特定的Web域指定到一个区域。然后,该区域基于区域设置来限制Web内容的功能。默认情况下,大多数Internet域都被视为Internet区域的一部分,该区域具有一些能够阻止脚本和其他活动代码访问本地系统上的资源的设置。与此相反,本地计算机区域是一个限制很少的区域,它允许某些内容访问和操纵本地系统上的内容。默认情况下,本地计算机上存储的文件在本地计算机区域中运行。然而由于浏览器在设计上的某些漏洞会造成某些恶意跨越自身的安全域显示,从而实现破坏性操作。攻击者可以利用漏洞创建一个Web页,使攻击者能够跨域访问数据。这可能包括读取用户或操作系统使用的本地系统文件。它还可能包括访问用户选择与其他Web站点共享的任何数据。攻击者还可以调用执行用户本地文件系统上的可执行文件。这样攻击者就可以通过创建一个恶意的Web页,然后诱使用户访问该页来尝试触发此漏洞。用户访问该页后,攻击者就可以使脚本在“我的电脑”区域安全上下文中运行,攻击者还可以创建一个Web页,当用户查看该页时,将启动一个已经位于用户本地系统上的可执行文件。早期这种跨安全域漏洞不太多,网络的安全意识也相对弱些,微软早期的操作系统中就默认允许远程网页脚本访问本地注册表,现在来看这其实是个非常明显的跨安全域漏洞,结果出现了大量的利用脚本修改用户浏览器默认首页,修改浏览器的其他属性的恶意网页代码。这些恶意网页是含有有害代码的ActiveX网页文件,通过修改注册表进行破坏。例如修改IE默认连接首页,IE浏览器上方的标题栏被改成“欢迎访问******网站”的样式,这是最常见的篡改手段,受到更改的注册表项目为:HKEY_LOCAL_MACHINE\SOFTWARE\MicrosoftInternetExplor-er\Main\StartPageHKEY_CURRENT_USER\Software\MicrosoftInternetExplorer\Main\StartPage通过修改“StartPage”的键值,来达到修改浏览者IE默认连接首页的目的,如浏览“*****”就会将你的IE默认连接首页修改为http://****.com”。通过修改注册表恶意代码会强迫IE浏览器每次都去访问固定的网站来刷网站访问浏量。这些破坏都是恶意代码通过修改注册表实现的,看似只是些干扰,还不具备运行外部程序的权限,其实已经给用户本地安全带来巨大威胁,例如修改系统启动项,使系统启动后自动访问某个ftp站点,然后从站点下载病毒、木马程序,接着在下次启动时运行这些程序。下面对几个典型的跨安全域网页恶意代码进行分析。3跨安全域形成原因(1)协议漏洞造成跨安全域例如MS04-023:HTML帮助存在跨域漏洞[6]。测试代码如下:HTMLHEADTITLEINDEX/TITLE/HEADBODYSCRIPTlanguage=JavaScriptfunctionsopen(){try{window.showModelessDialog(icyfox1.htm,,status:no;scroll:no;dialogHeight:100px;dialogWidth:100px;dialogTop:2000px;dialogLeft:2000px;help:no;);self.focus();}catch(e){}}ie=navigator.appVersion;if(ie.indexOf(MSIE5.0)==-1&&ie.indexOf(NT5.2)==-1&&!(ie.indexOf(NT5.1)!=-1&&navigator.appMinorVersion.in-dexOf(SP2)!=-1)){setTimeout('sopen();',0);}else{document.write('OBJECTWidth=0Height=0style=display:none;type=text/x-scriptletdata=mk:@MSITStore:mhtml:c:\.mht!http://10.1.8.131/muma/网页恶意代码测试/ms04-023-冰狐浪子/icyfox.chm::/%23.htm/OBJECT');}/SCRIPT/BODY/HTML该测试代码由冰狐浪子网页恶意代码生成器生成,代码利用漏洞实现跨域执行木马程序。其中利用了InfoTech协议(ms-its、its、mk:@msitstore)的漏洞。mk:@msitstore:是一种访问文档的协议,C:\.mht是一个并不存在的mht格式的文件,也可以用任何其他硬盘上并不存在的文件,比如C:\fdfdsf.txt,因为前面已经指定用mk:@MSITStore:mhtml协议来访问了,IE不管对什么文件都会用这个协议来解析,而该协议具有本1362010,46(21)李志勇,薛亮,陶然,等:跨安全域网页恶意代码运行机理与防范地运行权限将从远程主机下载的icyfox.chm打开,而icyfox.chm文件中打包了一个木马程序,并且在chm文件打开时自动运行,由于