论文摘要
随着万维网的迅速发展,大量的web新技术应运而生。它们的出现大大丰富了web的内容,但同时也使得浏览器的功能越来越复杂,其自身的安全性越来越难以保证。而由于浏览器的普及程度已经和操作系统相当,其使用时间也占了用户上网时间的绝大部分,它逐渐成为了黑客攻击的首要目标。据微软统计,2011年,各种浏览器发现的漏洞数量己经超过了操作系统,并且差距在逐渐拉大。HTML/Javascript类型攻击的数量自2011年以来就稳居榜首,占到攻击总数的三分之一。SQL注入、破坏会话、跨站脚本、跨站请求伪造等攻击手段层出不穷,严重威胁着各种web应用及广大互联网用户的安全。Drive-by download攻击是web攻击中最常见的一种方式。它利用用户浏览器或插件的漏洞,使用传统的软件安全领域的各种攻击技术攻陷用户的浏览器,并且下载病毒执行,进而盗取用户隐私信息或者将受害者主机加入僵尸网络中。用户主机只要访问某个Drive-by download类型的恶意网站,即会感染病毒,甚至被完全控制。Drive-by download攻击需要首先将自己的恶意脚本挂载到某个网站上。挂载有两种方式:一种是攻击者自己搭建网站;另一种是攻击某个知名的网站,将部分网页内容嵌入到该网站的网页中。第二种方式占大多数,因为其成本低、易伪装,且可以获得较高的访问量。攻击者将某个IFrame嵌入到某个合法网页中,该IFrame的实际内容需要经过多次请求跳转才能获得,攻击者用此方法来隐藏真实攻击服务器的位置。IFrame中包含一段恶意的Javascript脚本,针对某个具体的浏览器漏洞。当用户访问该网站,脚本会自动执行,并且劫持用户浏览器的控制流,然后从远程病毒服务器上下载病毒,并在用户主机上运行。恶意脚本通常采用Heap-Spray攻击方法,在堆上申请大量空间,方便准确跳转到目标shellcode中。针对插件的攻击,与此类似,不过其攻击代码使用插件能够解析的语言来实现,比如:ActionScript、Java等。本文采用阻止运行的方法来防御Drive-by download攻击,即是允许payload下载病毒,但阻止其运行,而从避免用户主机受到侵害。我们认为用户下载的文件是善意的,可以被执行,而浏览器下载的其他文件可能存在潜在的危险,不允许执行。本文使用浏览器扩展来获取用户下载文件的信息,并且将其中的可执行文件加入到白表中。同时,安装一个驱动去监控浏览器的所有进程创建活动。当某个进程创建请求对应的可执行文件不在白表中,即阻止其运行。本文实现了一个在Windows操作系统上,基于Firefox扩展的原型系统:DPrevent (Drive-by Download Prevent)。实验表明,该系统的误报和漏报率都为零。同时因为它本身不需要知道具体的攻击方法,因此还可以有效地防御zero-day攻击。该系统的性能开销几乎为零,优于目前这方面的各种动态防御技术。