您当前的位置:首页 > 计算机论文>计算机网络论文

自动下载行为检测

2016-07-21 13:59 来源:学术参考网 作者:未知

  目前,很多恶意网页仅利用常规的Web编程技术使得浏览器自动下载木马等恶意软件并诱骗用户执行。这种恶意行为被称为自动下载。浏览器中现有的防御机制并不能有效地识别这种攻击。针对此类恶意行为,提出了一种防御方法。该方法通过监控网页中能导致自动下载的操作,并在下载实际发生时判断是否由用户触发,来识别自动下载行为并加以阻断。此防御方法已经在WebKitGtk+2.8.0Chromium 38.0.2113.1两个浏览器中实现,并进行了评估:两个检测防御系统针对现存的攻击样本均无误报和漏报,额外的性能开销分别为1.26%7.79%。实验结果表明,该方法能够有效地计算机网络监测并阻断自动下载攻击且性能开销较小。

 


  0引言

 

  目前,很多恶意网页都存在将攻击者的木马自动下载到用户主机的行为,并在下载后诱骗用户执行攻击者的木马。本文将这种攻击称为自动下载。在201412月至20153月收集到的68296条恶意网页攻击记录中,有58425条攻击记录包含自动下载行为,占所有攻击记录的85.55%

 

  与DrivebyDownload[1]攻击相比,自动下载型攻击虽然不能在恶意软件下载后自动运行,但是攻击页面通常会诱骗用户,让用户相信下载下来的恶意软件是用户需要的、正常的软件或插件,诱使用户执行。

 

  例如,图1是一个包含自动下载行为的恶意网页,在网页打开后3s,会自动下载一个名为“microsoft xps document writer__3039_i1755271595_il358621.exe”的文件。用户根据如图1网页中所给的信息以为自己下载的是一个虚拟打印程序;但实际上,这是一个恶意应用。用户点击运行这个程序的时候,并不能像用户期望的那样安装虚拟打印机,而是在用户的主机上运行了一个木马程序,让用户主机成为攻击者僵尸网络中的一台肉机

 

  此类攻击并没有利用任何浏览器漏洞,仅利用浏览器的正常机制和现有的Web技术就能够将攻击者的木马下载到用户本地,并诱使用户执行。尽管并非所有的用户都会运行自动下载的恶意应用;但是其广泛撒网的方式,仍然使攻击者能够获得大量的肉机

 

  自动下载为用户的计算机安全带来了很大的威胁;但是,浏览器现有的安全机制并不足以抵御自动下载攻击。

 

  主流浏览器对恶意网页的防御方法是黑名单机制。以Chrome浏览器为例,其在加载网页前,先检测此网址是否在预设的黑名单中。如果在,则认为其是恶意网页;否则认为其是正常网页。这种黑名单机制实现简单、效率高,对用户体验的影响非常低;但是,利用黑名单机制来检测网页自动下载行为并不完全有效。黑名单列表需要及时更新来保证结果的准确性。对于新出现的未知恶意网页这种方法存在可被攻击者利用的时延窗口。

 

  浏览器的反弹窗机制也对自动下载有一定的拦截效果;但遗憾的是,这种防御机制只能拦截利用自动弹窗触发的下载,并不能拦截所有的自动下载方式。

 

  当前的安全工具对于此类攻击的检测,通常是在下载完成后,通过扫描文件是否包含恶意程序的特征码来判断下载文件是否是恶意软件,并不能在事前就阻止自动下载的发生。而且,这种方法对于未知木马的检测往往无能为力。

 

  在恶意网页研究领域,目前也没有研究者专门对此类利用浏览器正常机制和Web技术来将木马在未经用户同意的情况下自动下载到用户主机上的行为进行研究。

 

  为此,本文提出了一种检测方法,以应对网页中的自动下载行为。

 

  自动下载的关键特征在于不经用户交互就触发下载操作。通过在浏览器中加入相应的检测模块,基于浏览器的用户交互机制判断下载操作或导致下载的方法是否由用户触发,从而判断该下载行为是否是自动下载。本文在WebKitGtk+2.8.0Chromium 38.0.2113.1中实现了相应的原型系统。实验证明本文提出的方法可以有效识别出自动下载,针对现存的攻击样本无误报和漏报,额外的性能开销分别为1.26%7.79%,完全在可接受范围内。

 

  本文的主要工作如下:1)系统地界定了目前浏览器中可被利用的自动下载方式;2)提出了一种针对性的基于用户交互判断的自动下载检测方法;3)WebKitGtk+2.8.0Chromium 38.0.2113.1浏览器中实现了对自动下载行为的检测与拦截,验证了此方法的有效性。

 

自动下载行为检测


  1相关工作

 

  自动下载行为是恶意网页的攻击方式之一。本章从基于行为、基于统计或机器学习以及其他三个方面介绍相关的恶意网页检测工作,并分别分析用这些方法检测自动下载行为的可行性。

 

  1.1基于行为的检测

 

  基于行为的检测方法主要是客户端蜜罐:建立一个虚拟环境,通过检测和监听异常行为、运行时参数来检测攻击。例如:2006年,微软研究院的HoneyMonkey项目[2]以及华盛顿大学Moshchuk[3]SpyCrawler采用该方法均发现了一定数量的恶意网页。此外,还有一些开源的高交互式客户端蜜罐,如HoneyClient[4]以及国际蜜网项目组新西兰小组的CaptureHPC[5];但是,基于行为的检测方法并未关注此类仅利用正常浏览器机制和Web编程技术的自动下载行为。

 

  1.2基于统计或机器学习的检测

 

  通过提取恶意网页相对于正常网页的特征,利用机器学习对网页进行分类。Seifert[6]Canali[7]Cova[8]Heiderich[9]提取页面中的静态或动态特征进行机器学习来对页面进行分类。例如Heidertich[9]IceShield通过动态插桩的方式包裹document.write()等危险方法,在网页渲染时动态提取危险标签、可疑的Unicode字符等特征,为网页评分。通过机器学习在大量的样本中得到一个合适的阈值,利用此阈值对网页进行分类:网页评分大于该阈值的,被分类为恶意网页;小于等于的,被认为是正常网页。此类检测方法同样未关注自动下载行为。

 

  1.3其他防御机制

 

  BLADE[10]对操作系统作一定的安全扩展,阻断所有不是通过浏览器的图形用户界面(Graphical User InterfaceGUI)进行的下载行为,将所有通过浏览器进程下载的可执行文件放入一个虚拟的、权限受限的隔离存储空间,并在每一个文件被放到隔离空间中后向用户发起确认,只有经过用户确认的下载文件才会被转移到真实的文件系统中。这种方式虽然阻止了下载文件到文件系统中;但是阻断了那些不经过浏览器进程下载的任务,为用户带来了很大的不便。

 

  JShield[11]的团队收集了2007年至2014年所有关于浏览器JavaScript引擎以及PDF文件的相关漏洞,并提取了这些漏洞的操作码特征,使用确定有限自动机(Deterministic Finite AutomatonDFA)在操作码级别匹配漏洞特征,从而检测Drivebydownload,但是本文关注的自动下载没有利用任何漏洞。

 

  总体而言,目前恶意网页检测研究领域的研究忽略了此类仅利用正常浏览器机制和Web技术的自动下载行为,没有对其进行有效的检测和防御。

 

  2系统概述

 

  本文提出的自动下载行为检测方法如图2所示。首先,监控所有可能导致自动下载的触发点,并在其被触发时进行交互判断。非用户触发的可疑下载的统一资源定位符(Uniform Resource LocatorURL)将被收集到一个可疑列表中。同时,监听下载操作以在浏览器建立下载任务时进行检查,如果触发下载任务没有经过用户交互(下载操作的源地址在可疑列表中),则认为这是一个自动下载,并进行阻断;反之,认为是由用户触发的,允许下载。

 

  此方法的关键在于找出尽可能全面地自动下载的触发点,插入检测代码,进行用户交互判断,从而获取可疑列表。

 

  3自动下载方式界定

 

  为了选取合适的检测点插入检测代码,需要了解当前浏览器有哪些下载方式可以被利用来实现自动下载。

 

  本文通过分析浏览器内核代码、HTML协议以及JavaScript对象、方法来找出当前浏览器中可以被攻击者利用来实现自动下载的方式。

 

  首先,分析浏览器内核源代码(Chromium为例)。在Chromium浏览器内核源码中找到了实现下载的方法DownloadItemView::OnDownloadUpdated(),并利用静态代码分析工具Understand[12]遍历所有调用此方法的路径。本文将下载分成两大类:一类是页面请求导致的下载。浏览器在向服务器发起页面请求(打开新页面或页面重定向)后,发现返回资源的多用途互联网邮件扩展类型(Multipurpose Internet Mail ExtensionsMIME)并不是其所支持的类型时,浏览器会将返回资源下载到用户本地。另一类是利用浏览器的资源保存机制下载文件。例如,利用FileSystem API(Application Programming Interface)可以将指定资源保存到用户主机中。

 

  任何页面请求和资源保存的方式都有可能导致下载,但是攻击者要在网页中实现自动下载,只能利用页面中的超文本标记语言(Hyper Text Markup LanguageHTML)元素和JavaScript对象方法,因此,本文分析了HTML标准和JavaScript对象方法,通过查找页面请求和保存资源的方法,找出了6种可绕开浏览器安全防御机制导致自动下载的方法。 利用History API的两个新方法替换当前历史记录,然后用history.go()刷新页面,可实现当前页面向任意同源页面的跳转。当服务器返回的页面跳转请求资源不能被浏览器渲染时,浏览器会将资源下载到用户的文件系统中。代码2中的页面利用History API实现了恶意软件的自动下载。

 

  代码2使用History API实现自动下载。 3.4标签

 

  元素[17]可提供有关页面的元信息(metainformation)。标签的属性定义了与文档相关联的名称/值。如果标签的httpequiv属性值为“refresh”,则可以使页面自动重定向到content属性中的URL页面中。

 

  如果contentURL的值是一个不能被浏览器解析的文件的网络地址,则浏览器会自动将此文件下载到用户本地文件系统中。

 

  程序前

 

  程序后

 

  例如,页面中如果包含以上代码,会在用户加载完页面2s后,自动下载malware.exe文件。

 

  3.5HTTP重定向码

 

  在服务器返回的HTTP报文中,HTTP状态码为客户端提供了一种理解事务处理的便捷方式。HTTP状态码被分成了五大类。其中300399的重定向状态码[18]要么告知客户端使用替代位置来访问它们所感兴趣的资源,要么就是提供一个可替代的响应而不是资源的内容。如果资源已经被移动,可以发送一个重定向状态码和一个可选的Location首部来告知客户端资源已被移走,以及现在可以在哪里找到它。这样浏览器就可以在不打扰使用者的情况下,透明地转入新的位置了。

 

  和其他页面请求操作一样,如果服务器返回的资源不能被浏览器渲染,浏览器会将该资源保存到用户的文件系统中。

 

  3.6利用FileSystem API自动下载

 

  为了给Web应用程序提供一个永久保存数据的空间,HTML5新增了FileSystem API,通过使用该API,用户可以将数据保存在磁盘上的文件系统中,从而得到一个永久保存数据的空间。

 

  HTML5的这个新特性导致了新的下载方式的产生——利用FileSystem实现下载[19]:首先,获取要保存的文件内容,将其转换成blob对象;然后,利用FileSystem API将其写入沙箱隔离环境文件中;最后,将下载到沙箱隔离环境中的文件看成下载源[20],利用脚本自动触发页面请求,将文件从沙箱隔离环境中移入(下载)到用户的本地文件系统中,如图3所示。

 

  同window.locationHistory API类似,FileSystem API也可以在未经用户交互的情况下被调用来实现自动下载。

 

  攻击者可以利用以上6种方式绕开浏览器现有的安全防御机制实现自动下载。

 

  4系统实现

 

  本文分别在WebKitGtk+2.8.0Chromium 38.0.2113.1浏览器中实现了对自动下载行为的检测与拦截。

 

  4.1WebKitGtk+ 2.8.0

 

  Webkit是一个开源的浏览器引擎,目前市面上很多浏览器都使用Webkit的内核。Gnome领导的WebKitGtk+[21]是一个基于Gtk+WebKit渲染引擎接口,也是目前Linux下最受瞩目的WebKit开源项目之一。

 

  4.1.1检测点

 

  在WebKitGtk+中,UserGestureIndicator对象负责记录用户操作,并提供了一个名为processingUserGesture()的方法判断用户交互。processingUserGesture()方法具有时效性,在下载时的返回值都是false(无用户交互),因此,在自动下载触发方式的对应内核方法中进行用户交互判断,而不是在下载发生时才进行。

 

  5实验

 

  本文在插入检测代码后的WebKitGtk+2.8.0Chromium 38.0.2113.1浏览器中进行了功能和性能测试。

 

  5.1功能测试

 

  将Alexa网站公布的前500个网站主页认为是正常网页,从恶意样本中选取3052个网页。然后,使用加入了自动下载检测功能的Chromium 38.0.2113.1WebKitGtk+2.8.0浏览器去访问Alexa网站公布的前500个网页以及52个自动下载类型的恶意网页,以检测准确率。

 

  如表2所示,无论是在Chromium 38.0.2113.1还是WebKitGtk+2.8.0中,500个正常网页都没有被误报,误报率为0。在Chromium 38.0.2113.1中,52个网页的自动下载行为都被检测并拦截了,漏报率为0。在WebKitGtk+2.8.0中,由于WebKitGtk+不支持由FileSystem API导致的自动下载,有2个网页在WebKitGtk+2.8.0上不能自动下载,但剩下的50个恶意网页的自动下载行为也都能被成功检测,漏报率为0

 

  通过测试说明:本文提出的检测方法能够有效地检测并拦截自动下载行为。

 

  5.2性能测试

 

  谷歌的OctaneBenchmark[22]是网页渲染速度测试通常使用的测试方法。通过Google官方的JavaScript脚本测试集,全面检测浏览器的JavaScript性能。此测试分数越高代表浏览器性能越好。通过OctaneBenchmark分别对插入检测代码前后的WebKitGtk+2.8.0Chromium 38.0.2113.1进行了测试,以评估插入代码对浏览器性能影响。

 

  测试结果如表3所示,在WebKitGtk+2.8.0Chromium 38.0.2113.1浏览器中插入了检测代码后,其性能开销分别增加了1.26%7.79%,对用户体验几乎没有影响。

 

  通过实验证明:本文提出的自动下载检测方法可以非常准确地检测网页的自动下载行为;同时,其造成的额外开销非常小,不影响用户浏览正常网页时的体验。

 

  6结语

 

  本文总结了目前攻击者可以利用的所有自动下载方式,并提出了一种新的针对于恶意网页自动下载行为的检测方法,利用现有浏览器中已存在的用户交互判别机制来检测恶意网页的自动下载行为,能够有效阻止恶意程序的自动下载。实验证明,这种检测方法准确度高,对浏览器性能几乎没有影响,可以对恶意网页进行实时检测,具有很强的应用性;但是,随着Web技术的发展,触发自动下载的方式也会增加。以后将继续关注HTML5CSS3等新的Web技术,跟踪新的自动下载方式,进行检测、拦截。

 

  作者:黄吉鲲 龚伟刚 游伟 秦波 石文昌 梁彬 来源:计算机应用 20167

相关文章
学术参考网 · 手机版
https://m.lw881.com/
首页