用于恶意软件检测的对应用的通用拆包制造技术

技术编号:18526402 阅读:25 留言:0更新日期:2018-07-25 12:57
用于检测可执行文件中的恶意软件的技术允许在判断该可执行文件是否是恶意软件之前就对经打包的可执行文件拆包。在具有硬件辅助的虚拟化的系统中,硬件虚拟化特征可以被用来不需要对打包技术的知晓就以受控方式迭代地对经打包的可执行文件拆包。一旦可执行文件被完全拆包,则可以采用诸如签名扫描之类的恶意软件检测技术来判断可执行文件是否包含恶意软件。硬件辅助的虚拟化可以被用来促进对存储器中的运行时可执行文件的扫描。

【技术实现步骤摘要】
用于恶意软件检测的对应用的通用拆包本申请是PCT国际申请号为PCT/US2014/019960、国际申请日为2014年3月3日、进入中国国家阶段的申请号为201480008695.6,题为“用于恶意软件检测的对应用的通用拆包”的专利技术专利申请的分案申请。
本公开一般涉及用于拆包可执行二进制文件以使较少地依赖多个签名(例如,针对每一个打包方法的一个签名)来标识潜在的恶意软件被保持在病毒签名DAT文件中的系统和方法。更具体而言,但不作为限制,本公开涉及:在对经打包的可执行文件进行拆包时使用硬件辅助的虚拟化来确定其原始的入口点,并且在执行该原始的入口点之前,一旦可执行文件到达其完全扩展的形式就执行对其的正式扫描。
技术介绍
当代的应用代码的递送通常涉及其通过打包(pack)过程进行的压缩。通过使用打包过程,二进制文件尺寸可以减小,并且多个文件可以被合并成一个文件。现代的打包过程创建“自解压(self-extracting)可执行文件”,可执行其来对经打包的代码的内容进行拆包(unpack)。也就是说,经打包的代码本身伴随着可执行代码段,当执行该可执行代码段时,其导致使经打包的代码膨胀或解压缩。相应地,运行自解压可执行文件会导致经打包的代码可执行文件被扩展在磁盘上、存储器中,或两者中。当对文件打包以创建自解压可执行文件时,可以采用许多不同类型的压缩算法以及打包技术。这些技术中的某些是已知的并有文档记载的,而其他技术不是这样。对相同文件采用不同的技术来创建自解压可执行文件将产生不同的文件——由于不同的打包器(packer)以及不同的压缩算法所产生的不同结果,打包代码(packingcode)和经打包的代码(packedcode)两者都可能不同。此外,如果使用未知的或文档未记载的技术来将文件打包为自解压可执行文件,则可能甚至难以确定打包代码和经打包的代码之间的区别。自解压可执行文件的这些特性常常被恶意软件开发者利用以对反病毒程序或恶意软件检测程序隐藏恶意软件。检测恶意软件的一种常见的方法是签名扫描。利用签名扫描,对文件进行扫描以发现已知或被怀疑与恶意软件相关联的位模式或签名。当文件中的位模式匹配已知恶意软件的签名时,则可将该文件标识为恶意软件或标识为包含恶意软件。然而,恶意可执行文件的签名可以被轻松地更改以力图误导可执行文件。当恶意软件被打包时,可能避开检测,因为经拆包的恶意软件的已知签名将不会匹配经打包的恶意软件文件的任何位模式。为了尝试克服隐藏恶意软件的这些企图,反病毒程序和恶意软件检测程序可以采用多项技术。一项技术是在存储器中提取经打包的代码而不执行它,然后,尝试对经解压缩的二进制文件扫描恶意软件签名。可以通过仿真经打包代码的执行来提取该经打包的代码,或者如果打包算法是已知的,则由反病毒程序来执行提取。如果打包技术不是公知的或未经文档记载,则在反病毒程序的控制下来提取经打包的代码可能无法是可能的。此外,许多打包算法在检测到正在由调试器或通过执行仿真来执行拆包之后,使用反仿真和反调试技术来简单地终止拆包过程。对代码流的诸部分标记时间戳是可用于判断代码正在被仿真的标准方法。类似地,标识代码正在被调试可以通过查询操作系统来容易地确定。即使自解压可执行文件被允许执行或被仿真,反病毒程序也可能在确定执行的拆包部分何时完成以及原始压缩的可执行文件何时开始执行时存在困难。在自解压可执行文件中,拆包代码和经打包的可执行文件是相同的二进制文件的部分,并且在存储器中确定这两者之间的区别可能是困难的。克服隐藏恶意软件的企图的另一技术是一旦标识了经打包的恶意软件的新签名,就将包含恶意软件的已知的自解压可执行文件的签名添加到反病毒签名数据库中。此技术的弱点在于,可以通过稍微更改打包器代码或打包技术从而产生不同的自解压可执行文件并由此产生不同的签名来轻易地避开该技术。将导致打包技术中的这些变化的签名添加到反病毒签名数据库中会导致增加签名数据库的尺寸。这导致签名的数量以及维持签名文件的难度会相应地增大的问题。此外,由于可按不同的顺序,使用不同的打包算法来重复任意次数的打包过程,从而创建将标识并维持的更大数量的签名,因此可能进一步挫败这些努力。附图说明图1是示出现有技术中已知的可执行文件101和经压缩的自解压可执行文件102(可能具有更小的尺寸)的简化结构的框图100。图2是示出能够被配置成促进一个或多个所公开的实施例的基础结构200的框图。图3是示出具有可根据一个或多个所公开的实施例而配置的处理单元的计算机的框图。图4是示出具有虚拟机监视器、访客操作系统和应用的计算机系统的软件栈的框图。图5是示出根据一个或多个所公开的实施例的用于通用对可执行文件拆包直到不要求进一步的拆包的技术的流程图。图6A是示出根据一个或多个所公开的实施例的用于在可执行文件的通用拆包以及执行阶段期间设置存储器页面许可并解决存储器页面许可违规以控制对存储器的页面的存储器访问的技术的流程图。图6B示出状态图650,其示出了可执行文件从其二进制加载时刻到其执行的终止的受控执行的状态转换。图7是示出根据一个或多个所公开的实施例的在可执行文件的通用拆包和执行阶段期间所看到的页面存储器许可的各阶段的框图。具体实施方式如上文所解释的那样,不同的打包器的可用性以及可对可执行文件打包多次的事实导致通过将经打包的恶意可执行文件与签名进行比较来标识它是困难的。经打包的恶意可执行文件的每一个经标识的变体都可能需要在反病毒程序的病毒签名数据库中的其自身的签名。这导致病毒签名数据库增长并增加了维护成本和精力——签名文件更新必须被传递到使用反病毒程序的最终用户计算机并由其下载。此外,这些相同的因素也使确定何时应用签名检测算法复杂化。同样如上文所解释的那样,尝试对经打包的文件拆包以暴露原始的可执行文件也呈现了诸多挑战。由于拆包代码与经打包的可执行文件组合,因此,标识拆包代码完成执行且原始的二进制文件开始执行的时刻可能是困难的。为了避免对原始的可执行文件的执行,反病毒程序可尝试对经打包的可执行文件拆包,而不是让拆包器代码执行。为了做到这一点,反病毒程序必须配备有用于对可执行文件打包的拆包算法。然而,当使用了未知的或未经文档记载的打包技术时,反病毒程序可能不能对该软件拆包。在这些类型的实例中,必须通过包括拆包器算法来更新反病毒软件。由于拆包器算法可能时复杂的,因此,反病毒软件开发者可能需要花费相当长的时间(数月或数年)来包括用于新发现的打包算法的解决方案。此外,甚至通过对打包器算法的轻微的更改就会规避这些努力或使这些努力更费力。如下文中进一步解释的那样,公开了通过使用用于以受控方式来通用对经单次或多次打包的应用拆包以检测恶意软件的系统和方法来解决这些及其他问题的技术。对经打包的应用通用地拆包允许独立于对拆包算法的知晓并独立于对拆包存根(stub)的实现的知晓就可对应用拆包。可以使用与硬件辅助的虚拟化相关联的功能来帮助以受控方式通用地对经打包的应用拆包。这些技术可以减少或消除为单个类型的恶意软件维持多个签名的需求。参考图1,框图100示出两个文件(根据现有技术的可执行文件以及该文件的经打包版本)之内的内部区段。通用可执行文件101表示扩展(即,运行时)形式的可执行二进制文件。还示出了经打本文档来自技高网...

【技术保护点】
1.一种非瞬态计算机可读介质,其上存储用于对自解压可执行文件进行拆包的软件,所述软件包括当被执行时使一个或多个处理单元执行以下操作的指令:将自解压可执行文件加载到存储器中,所述自解压可执行文件包括第一拆包存根和经打包的可执行文件;允许所述第一拆包存根将所述经打包的可执行文件拆包为经拆包的可执行文件;通过使用硬件辅助的虚拟化控制存储器页面访问许可来检测向先前被执行的代码所在的存储器页面的写入的尝试;使用一个或多个试探法来检测由所述第一拆包存根进行的对所述经打包的可执行文件的拆包的完成;以及对所述经拆包的可执行文件扫描恶意软件,其中,所述一个或多个试探法包括:用于判断生成页面写入异常的向存储器页面的写入是否是向存储器页面的区段的最后一页的写入的试探法。

【技术特征摘要】
2013.03.15 US 13/838,6631.一种非瞬态计算机可读介质,其上存储用于对自解压可执行文件进行拆包的软件,所述软件包括当被执行时使一个或多个处理单元执行以下操作的指令:将自解压可执行文件加载到存储器中,所述自解压可执行文件包括第一拆包存根和经打包的可执行文件;允许所述第一拆包存根将所述经打包的可执行文件拆包为经拆包的可执行文件;通过使用硬件辅助的虚拟化控制存储器页面访问许可来检测向先前被执行的代码所在的存储器页面的写入的尝试;使用一个或多个试探法来检测由所述第一拆包存根进行的对所述经打包的可执行文件的拆包的完成;以及对所述经拆包的可执行文件扫描恶意软件,其中,所述一个或多个试探法包括:用于判断生成页面写入异常的向存储器页面的写入是否是向存储器页面的区段的最后一页的写入的试探法。2.如权利要求1所述的非瞬态计算机可读介质其中,所述经打包的可执行文件是包括一个或多个中间自解压可执行文件的经迭代打包的可执行文件,其中,所述指令使一个或多个处理单元允许所述第一拆包存根对所述经打包的可执行文件拆包包括所述指令使一个或多个处理单元:允许所述第一拆包存根将所述经打包的可执行文件拆包为所述一个或多个中间自解压可执行文件中的一个;以及允许所述一个或多个中间自解压可执行文件中的所述一个相继地拆包,直到最终拆包存根将最终经打包的可执行文件拆包为最终经拆包的可执行文件为止,其中,所述指令使一个或多个处理单元对所述经拆包的可执行文件扫描恶意软件包括:所述指令使一个或多个处理单元对所述最终经拆包的可执行文件扫描恶意软件。3.如权利要求2所述的非瞬态计算机可读介质,其中,所述指令使一个或多个处理单元对所述经拆包的可执行文件扫描恶意软件进一步包括:所述指令使一个或多个处理单元对所述一个或多个中间自解压可执行文件中的至少一个扫描恶意软件。4.如权利要求2所述的非瞬态计算机可读介质,其中,如果检测到恶意软件,则所述最终经拆包的可执行文件不被允许执行。5.如权利要求1-4中的任一项所述的非瞬态计算机可读介质,其特征在于,所述指令使一个或多个处理单元允许所述第一拆包存根对所述经打包的可执行文件拆包包括:所述指令使一个或多个处理单元使用硬件辅助的虚拟化来控制存储器页面访问许可以检测执行先前由所述第一拆包存根写入到存储器页面中的代码的尝试。6.如权利要求5所述的非瞬态计算机可读介质,其特征在于,所述指令使一个或多个处理单元允许所述第一拆包存根对所述经打包的可执行文件拆包进一步包括所述指令使一个或多个处理单元:在检测到所述尝试之后,使用硬件辅助的虚拟化来暂停所述第一拆包存根的执行;当所述第一拆包存根的执行被暂停时,收集试探法统计信息;基于所述试探法统计信息来判断是否应当扫描存储器;基于所述判断来扫描存储器;以及允许所述第一拆包存根的执行继续。7.如权利要求1-4中的任一项所述的非瞬态计算机可读介质,其特征在于,所述指令使一个或多个处理单元允许所述第一拆包存根对所述经打包的可执行文件拆包包括:所述指令使一个或多个处理单元使用硬件辅助的虚拟化来控制存储器页面访问许可以检测所述自解压可执行文件的入口点的执行。8.如权利要求1-4中的任一项所述的非瞬态计算机可读介质,其特征在于,所述一个或多个试探法进一步包括:判断执行代码的尝试是否是在写入包括所述存储器页面的代码段的全部页面之后执行来自所述代码段的代码的第一次尝试。9.如权利要求8所述的非瞬态计算机可读介质,其特征在于,所述指令使一个或多个处理单元允许所述第一拆包存根对所述经打包的可执行文件拆包进一步包括所述指令使一个或多个处理单元:在检测到所述写入之后,使用硬件辅助的虚拟化来暂停所述第一拆包存根的执行;当所述第一拆包存根的执行被暂停时,收集试探法统计信息;基于所述试探法统计信息来判断是否应当扫描存储器;基于所述判断来扫描存储器;以及允许所述第一拆包存根的执行继续。10.如权利要求1-4中的任何一项所述的非瞬态计算机可读介质,其特征在于,在所述经拆包的可执行文件的执行之前执行扫描所述经拆包的可执行文件。11.如权利要求1-4中的任何一项所述的非瞬态计算机可读介质,其特征在于,所述经打包的可执行文件是使用未知的或不可检测的打包算法来打包的。12.如权利要求1-4中的任何一项所述的非瞬态计算机可读介质,其特征在于,所述一个或多个试探法包括:用于将在检测到所述第一拆包存根的完成之前记录的栈指针值和栈内容与在允许所述第一拆包存根开始对所述经打包的可执行文件拆包之前记录的栈指针值和栈内容进行比较的试探法。13.如权利要求1-4中的任何一项所述的非瞬态计算机可读介质,其特征在于,所述指令使一个或多个处理单元允许所述第一拆包存根对所述经打包的可执行文件拆包包括:所述指令使一个或多个处理单元在允许所述第一拆包存根将所述经打包的可执行文件拆包为经拆包的可执行文件的同时控制所述第一拆包存根的执行。14.一种对自解压可执行文件拆包以检测恶...

【专利技术属性】
技术研发人员:D·古普塔
申请(专利权)人:迈克菲有限公司
类型:发明
国别省市:美国,US

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1