用于恶意软件检测的方法和装置的制造方法

文档序号:10517859阅读:200来源:国知局
用于恶意软件检测的方法和装置的制造方法
【专利摘要】提供了一种用于提供离线恶意软件检测以及附加的实时恶意软件检测的方法。离线恶意软件检测可以包括:离线检测应用的至少一个函数调用图,其中该函数调用图记录该应用所调用的函数之间的调用关系;从该至少一个函数调用图中提取该应用的函数调用的模式;并且将所提取的模式与正常应用的至少一种基本模式进行比较。该实时恶意软件检测可以包括:在真实环境中运行应用;记录该应用在其运行时间的行为;从所记录的行为中提取行为模式;并且将所提取的行为模式与正常应用的基本模式或先前针对该应用所记录的模式中的至少一种进行比较。
【专利说明】
用于恶意软件检测的方法和装置
技术领域
[0001]本发明一般地涉及计算机和网络安全。更具体地,本发明涉及恶意软件检测。
【背景技术】
[0002]移动设备已经演进为用于执行各种应用的开放平台。也被称为“app”的应用通常是指能够在诸如移动设备的计算设备上执行的软件应用。app特别是移动app例如通过即时访问互联网上的海量信息并且提供各种功能而对我们的许多日常活动加以提升。移动app的快速增长对于未来移动互联网和经济的成功扮演着关键角色。如今有超过一百万的移动£ΦΡ并且每天有大约2000个新的app被投入市场。
[0003]然而,移动app可能是恶意的、有缺陷的(buggy),意外运行或者对移动设备带来安全漏洞。此外,恶意app可能威胁到连接至互联网的其它主机以及移动和无线通信网络节点。移动恶意软件是指在移动设备中表现出恶意行为的恶意的软件。移动恶意软件的恶意行为可以被宽泛地归类为包括驻留在移动设备中的病毒、僵尸网络、蠕虫、特洛伊木马。最初,其强调移动通信系统的安全漏洞。近来,恶意的移动代码已经成为了一种通过盗取用户证书、销售用户信息、操控内容递送和发送SMS垃圾邮件而获取大规模经济利益的渠道。哪些移动app值得用户信任从而进行消费成为了影响app和移动互联网的最终成功的关键因素,并且影响与移动网络相关的经济。
[0004]因此,在本领域提供一种允许有效且高效地检测恶意软件的方法和系统将会是有利的。

【发明内容】

[0005]为了克服以上所描述的问题并且克服在阅读和理解现有技术时将会显而易见的局限性,本公开提供了在离线情况下和/或在运行时间有效且高效地检测恶意软件的方法。
[0006]根据一个实施例,一种方法包括使得对应用进行离线恶意软件检测。该离线恶意软件检测包括离线检测应用的至少一个函数调用图,其中该函数调用图记录该应用所调用的函数之间的调用关系;从该至少一个函数调用图中提取该应用的函数调用的模式;并且将所提取的模式与正常应用的至少一种基本模式进行比较。该离线恶意软件检测的结果可以被通报以指示来自应用的潜在恶意威胁。
[0007]在示例性实施例中,该检测可以包括在虚拟环境中运行该应用的代码的至少一部分并且获取该应用的函数调用的日志。该提取可以包括使用数据挖掘方法来分析该日志。
[0008]在示例性实施例中,该至少一个函数调用图可以包括以下三种类型的函数调用图中的至少一种:完整调用图,其包含能够供所述应用贯穿所述运行所调用的功能之间的所有调用关系;不同时间的调用图,其包含所述应用在所述运行期间的所述不同时间的时间点之前所调用的功能之间的调用关系;和部分调用图,其包含所述应用在所述运行期间的一个时间段中所调用的功能之间的调用关系。
[0009]在示例性实施例中,该离线恶意软件检测可以进一步包括通过添加用于获取该功能调用的日志的功能模块而对该应用的执行代码的至少一部分进行重新编译,以及在该虚拟环境中运行所重新编译的代码以获取该日志。
[0010]在示例性实施例中,该方法可以进一步包括根据应用的声誉来调度该应用的离线恶意软件检测。具有较高声誉的应用可以先于具有较低声誉的应用被调度以进行离线恶意软件检测。
[0011]在示例性实施例中,该方法可以进一步包括使得在所述应用在真实环境中被执行的同时对所述应用进行实时恶意软件检测。该实时恶意软件检测包括记录该应用在其运行时间的行为;从所记录的行为中提取行为模式;并且将所提取的行为模式与正常应用的基本模式或先前针对该应用所记录的模式中的至少一种进行比较。所记录的行为可以包括以下三种类型的行为中的至少一种:与应用的函数调用相关联的行为,与应用所引起的本地数据访问相关联的行为,和与该应用所引发的传入(i nbound)和/或出站(outbound)流量相关联的行为。该实时恶意软件检测可以进一步包括通过增加用于获取该应用的行为的日志的功能模块而对该应用的至少一部分程序代码进行重新编译。
[0012]根据另一个实施例,一种方法包括在真实环境中运行应用;记录该应用在其运行时间的行为;从所记录的行为中提取行为模式;并且将所提取的行为模式与正常应用的基本模式或先前针对该应用所记录的模式中的至少一种进行比较。
[0013]根据另一个实施例,一种装置包括至少一个处理器,和至少一个包括计算机程序代码的存储器,该至少一个存储器和计算机程序代码被配置为与该至少一个处理器一起至少部分地使得该装置:在真实环境中运行应用;记录该应用在其运行时间的行为;从所记录的行为中提取行为模式;并且将所提取的行为模式与正常应用的基本模式或先前针对该应用所记录的模式中的至少一种进行比较。
[0014]根据另一个实施例,一种计算机可读存储介质,其承载一个或多个指令的一个或多个序列,一个或多个指令的一个或多个序列在被一个或多个处理器执行时使得装置执行以上所讨论的方法之一。
[0015]根据另一个实施例,一种装置包括用于执行以上所讨论的方法之一的器件。
[0016]—种计算机程序产品,包括一个或多个指令的一个或多个序列,一个或多个指令的一个或多个序列在被一个或多个处理器执行时使得装置执行以上所讨论的方法之一。
[0017]简单地通过图示包括被预期实施本发明的最佳模式在内的多个特定实施例和实施方式,本发明的其它方面、特征和优势将由于以下的详细描述而是显然的。本发明还支持其它且不同的实施例,并且其若干细节可以在各个显然的方面被加以修改,全部这些都并不背离本发明的精神和范围。因此,附图和描述要被视为是实质上是说明性的而并非作为限制。
【附图说明】
[0018]在附图的图中通过示例而非限制来对本发明的实施例进行图示:
[0019]图1图示了根据本发明一些实施例的用于检测移动设备的恶意软件的架构;
[0020]图2是图示根据本发明一些实施例的用于进行综合恶意软件检测的过程的流程图;
[0021]图3图示了根据本发明一些实施例的通过声誉评估来驱动离线恶意软件检测的过程;
[0022]图4是根据本发明一些实施例的用于离线恶意软件检测的流程图;
[0023]图5是根据本发明一些实施例的用于实时恶意软件检测的流程图;和
[0024]图6图示了本发明各个示例性实施例可以被应用于其中的装置的示例框图。
【具体实施方式】
[0025]公开了用于提供恶意软件检测的方法、装置、系统和计算机程序的示例。在以下描述中,出于解释的目的而给出了很多具体细节以便提供对本发明实施例的全面理解。然而,对于本领域技术人员而言显而易见的是,本发明的实施例可以在没有这些具体细节的情况下或者利用等同的部署形式进行实践。在其它实例中,以框图形式示出了公知的结构和设备以免对本发明的实施例造成不必要的混淆。同样的附图标记始终指代同样的要素。
[0026]在下文中,移动设备将被用作被恶意软件威胁的计算设备的一个示例,但是诸如膝上计算机、台式计算机、家居自动化和/或控制设备之类的其它类型的计算设备也是可能的。此外,在描述中将使用移动恶意软件,但是其它类型的恶意软件也是可能的,包括但并不局限于膝上计算机上的恶意软件或未知恶意软件。
[0027]将安全性作为主要考量,通过研究每个app以查明该app是恶意的还是善意的而对所有app进行跟踪将会是一项难以企及的任务。许多app商店使用下载统计而给出app的信任度或声誉以便作出推荐。但是研究发现26%的移动app在下载之后被试用过一次而随后就被弃用。显然,跟踪下载根本无法准确计量app的成功和安全性,因为下载统计所提供的观点经常是不准确且夸张的。由于app的数量庞大,所以高效且有效地检测恶意软件是非常困难的。首先,数量庞大的应用使得安全服务提供方(例如,F-secure、中国的360等)对每个应用的安全性进行验证并且决定哪一个应当以优先级加以确认是困难且高成本的。其次,一些应用会在安装和使用一段时间之后变为恶意的。目前,并没有在运行时间以动态的方式检测移动恶意软件的良好解决方案。
[0028]已经提出了许多用于检测恶意软件的技术,它们之中的大多数集中于综合调查。然而,有关移动恶意软件的研究仍处于其初级阶段。恶意软件检测技术可以被归类为以下类别。能够用于检测移动恶意软件以及其它安全漏洞的技术具有变化的强度和弱点。
[0029](I)静态分析
[0030]静态分析是在并不执行应用的情况下找出它们中的恶意特征或坏代码分段的方式。它们通常在首次对可疑应用进行评估以检测任何显见的安全性威胁的时候在预备分析中被使用。一种静态恶意软件检测技术首先对移动应用进行拆分并且提取系统调用(特征提取)。其随后使用质心机(Centroid Machine)--一种轻量级聚类机制--将该移动应用归类为恶意的或良性的(异常检测)。第二种静态恶意软件检测机制通过首先拆分移动应用并且构建控制流程图(CFG)来执行静态污染分析。该分析考虑始于诸如地址簿、当前GPS坐标、键盘高速缓存、唯一设备ID和其它电话相关信息之类的敏感来源的路径。数据流分析针对从来源传送的任何敏感数据进行检查以进行同步而并不通知用户并且因此导致隐私泄露。该方法仅可以检测单一应用内的隐私泄露,并且在两个或更多应用传递相连在一起的情况下则无效。第三种静态恶意软件检测技术使用反向编译器(例如,用于安卓代码)从应用的安装镜像生成Java源代码并且随后使用静态代码分析套件来评估所恢复的源代码。该技术局限于使用相对少量的许可和API调用的那些app。
[0031]静态分析是一种快速且廉价的方法,但是难以检测到在长时间良好运行之后自行修改并因此突然出现恶意行为的代码所导致的安全威胁。其无法克服移动僵尸网络主控方或僵尸网络或病毒所导致的攻击或入侵。
[0032](2)动态分析
[0033]动态分析涉及在诸如虚拟机或仿真程序之类的隔离环境中执行移动应用,使得研究人员能够监控应用的动态行为。研究人员主要将动态分析使用污染追踪或系统调用跟踪之中。例如,TaintDroid提供了针对安卓的系统范围的动态污染追踪。移动应用送至Dalvik虚拟机以执行四种粒度的污染传播:变量、方法、消息和文件级别。污染追踪对来自于诸如位置、麦克风、相机和其它电话标识符之类的敏感来源的任何歧义数据进行标记。该技术对本地库集加载器进行修改以确保所有的本地库都从虚拟机进行调用,因此防止不被信任的应用直接执行本地方法。最后,动态分析在受影响数据在网络接口一一污染槽一一离开系统之前针对任何潜在的敏感数据泄露而对其进行筛选。然而,TaintDroid可能受到错误否定和错误肯定结果的影响;此外,其仅关注数据流而并未考虑其它漏洞。安卓应用沙箱(AASandbox)系统针对安卓应用提供了两个步骤的分析。移动应用送至AASandbox,在那里其以离线模式执行静态和动态分析。静态分析将应用镜像二进制码进行拆解并且使用拆解后的代码搜索任何的可疑模式(http://bit.ly/171MnI)。动态分析在安卓仿真程序中执行该二进制码并且将系统调用记入日志。虽然研究人员使用了安卓Monkey(ADB Monkey)来生成输入,但这并不像利用真实用户进行测试那样有效。此外,该方法还没有针对表现出多形态行为或代码段加密的恶意软件进行过测试。
[0034]该大的数量要求自动化方法在应当进行更接近的(人工)分析的样本以及作为已知威胁的变化形式的那些样本之间进行快速区分。该自动分析可以以两种方式来执行。动态分析是指执行样本并且验证该样本实际上所执行的动作的技术,而静态分析则在并不实际执行样本的情况下执行其任务。而静态分析有可能覆盖通过程序的所有可能执行流程,动态分析则受到不完整路径覆盖的问题的影响。
[0035](3)应用许可分析
[0036]应用许可分析旨在通过许可检查而找出移动app的恶意行为。例如,Kirin是用于安卓平台的应用认证。Kirin在安装期间对应用执行许可检查。当用户安装应用时,Kirin提取其安全配置并且针对已经具有的安全策略规则对它们进行检查。如果应用无法通过所有安全策略规则,则Kirin能够将其删除或者警告用户。Kirin仅对应用作者的许可请求进行检查而并不验证应用如何使用这些许可。其对于检查恶意公开敏感用户数据或者(在具有所同意的许可的情况下)引入所不希望的内容的一些app的安全漏洞的检查可能是无效的。
[0037](4)基于云的检测
[0038]由于有限的计算能力和能量来源,智能电话可能无法承载功能完整的安全机制,诸如简单文件扫描器。基于云的恶意软件保护技术将安全分析和计算移动至主控在仿真装置上运行的移动电话的多个副本的远程服务器。位于移动电话中的跟踪程序记录重放移动应用的执行所需的所有必要信息。该跟踪程序将所记录的信息传送至基于云的重放器,该重放器对仿真装置中的执行进行重放。该重放器能够对多种安全检查进行部署,诸如来自云的丰富资源的动态恶意软件分析、存储器扫描、系统调用异常检测和商业防病毒扫描。但是使用该方法最初可能导致错误的肯定结果,因为样本的大小仍然非常小。此外,并不清楚用户在被要求将应用行为发送至第三方时将会如何反应,并且对于用户行为的总体依赖性可能并不会产生准确的结果。用户隐私也是一个开放性的问题。该方法还具有检测延期。其无法在网络连接不可用或者被恶意软件损毁的情况下得以应用。
[0039](5)电池寿命监控
[0040]由于智能电话的电池容量有限,所以观察能量消耗有时识别出比善意应用消耗更多能量的恶意应用。如果正常的用户行为、当前电池状态以及诸如信号强度和网络业务量之类的其它特定于域的细节是已知的,则可能更为精确地检测到隐藏的恶意活动。无法预测的用户行为和恶意软件所引入的虚假事件会影响到功率模型的准确性。此外,该方法无法被应用于具有多任务特征的智能电话。
[0041]如能够从上文所看到的,每种类型的方法都具有其缺陷而且它们都不是综合性的。此外,大多数用于移动恶意软件检测的现有方法无法实时检测运行时间的移动恶意软件。然而,一些恶意移动app会在被长时间使用之后或者通过代码的自行修改而突然入侵移动设备。这种威胁挑战到对于移动app的信任管理的研究。
[0042]根据各个示例性实施例,可以在离线检查中以及附加地在应用运行时间的实时检查中提供高效且有效的恶意软件检测。对于恶意软件的“离线”检查意味着在并不在真实环境中实际执行应用的情况下检测该应用中的异常。在一些实施例中,所要检查的应用的至少一部分代码可以在虚拟环境中运行,从而获取该应用的函数调用的日志。从函数调用的日志,能够得出函数调用图以反映出该应用所调用的函数之间的调用关系。应用的函数调用图包含表示该应用所调用的函数的节点以及指示节点之间的调用关系的边。边能够根据其相应调用关系的详细信息(诸如调用密度和调用频率)而进一步被加权。通过例如经由数据挖掘技术对函数调用图进行统计分析,该函数调用图的统计特征或模式可以被提取。随后,所提取到的模式或特征可以与正常应用的基本模式或规则进行比较,以便找出所检查的应用中的异常。这样,可以基于对应用的函数调用的结构的自动分析而进行离线恶意软件检测。该离线恶意软件检测的结果例如可以通过发出指示来自所检测应用的可能恶意威胁的安全证书而被通报,从而帮助用户作出应用下载的决策。
[0043]在一些实施例中,即使应用(经过或未经过离线检查)已经在真实环境中在移动设备上被下载、安装并随后实际被执行,该移动设备也可以自动检测到该应用的恶意行为。就此而言,应用在其运行时间的执行行为可以被实时挖掘以便提取出模式或统计特征。所提取的模式可以与该应用的正常模式和先前所记录的模式进行比较以便找出异常。一些恶意应用可能在被安装之后正常运行一段时间,但是在得到用户信任之后突然变为恶意的。因此该模式比较可以有效检测这种潜在威胁。这提供了检测恶意软件的综合方式。
[0044]在一些实施例中,可以使用相应应用的声誉来自动驱动离线恶意软件检测。就此而言,基本思想在于,没有针对恶意软件进行过检测的最具声誉的应用需要被仔细分析以消除嫌疑。应用的声誉表示该应用在用户间的信任程度和流行度。例如,应用的较高声誉值意味着该应用更值得信任且流行。在一些实施例中,根据应用的使用行为,用户对于应用的个人信任例如可以在移动设备处被自动生成。基于该个人用户信任以及诸如用户反馈之类的关于应用的其它信息,可以进一步生成应用的声誉。基于应用的声誉,还没有被检查过的具有较高声誉且流行(被广泛使用)的应用在信誉低且较少使用的应用之前被检查。
[0045]图1是根据一些实施例的用于检测移动设备的恶意软件的架构的功能框图。如图1所示,系统100包括计算设备101a,其经由通信网络105而具有到应用商店107、安全服务提供方109、声誉中心111和其它通信实体(诸如其它计算设备1lb)的连接。作为示例,系统100的通信网络105包括一个或多个网络,诸如数据网络(未示出)、无线网络(未示出)、电话网络(未示出)或者它们的任意组合。所预见到的是,数据网络可以是任意的局域网(LAN)、城域网(MAN)、广域网(WAN)、公共数据网(例如,互联网)、自组织移动网络,或者任意其它适当的分组交换网络,诸如商业所有的、专用分组交换网络,例如专有线缆或光纤网络。此外,无线网络例如可以是蜂窝网络并且可以各种技术,包括全球演进增强数据速率(EDGE)、通用分组无线电服务(GPRS)、全球移动通信系统(GSM)、互联网协议多媒体子系统(MS)、通用移动电信系统(UMTS)等,以及任意其它的适当无线介质,例如全球微波接入互操作性(WiMAX)、无线局域网(WLAN)、长期演进(LTE)网络、码分多址(CDMA)、宽带码分多址(WCDMA)、无线保真度(WiFi)、卫星、移动专设网络(MANET),等等。
[0046]计算设备101a、101b(此后统称为101)可以是能够例如利用处理器执行软件应用的任意类型的设备。例如,计算设备101可以是移动设备,诸如智能电话、平板电脑、膝上计算机、笔记本或者个人数字助理;固定设备,诸如站点、单元、多媒体计算机、多媒体平板电脑、互联网节点或者台式计算机;或者嵌入式设备,或者它们的任意组合。如图1所示,计算设备101可以从应用商店107下载应用103a、103b,并且执行所下载的应用。计算设备101还可以被用来向应用商店107或者诸如声誉中心111和/或其它实体的其它方提供应用使用的反馈。
[0047]应用商店107可以高速缓存并管理各种应用以便进行上传、下载、更新等。例如,对于智能电话而言,存在用于诸如Windows Phone系统、安卓系统和1S系统之类的不同操作系统的多种应用商店。虽然图1中仅示出了一个应用商店,但是可以提供任意数量的应用商店。
[0048]安全服务提供方(SSP)109被提供用于对多个应用进行离线扫描以检测应用异常和恶意软件。在一些实施例中,SSP 109可以直接或间接从应用商店103下载所要扫描的应用。然而,应当理解的是,SSP 109可以从任意应用来源获得所要扫描的应用的执行代码,上述来源诸如软件应用的开发方、企业、政府组织、用户和/或其它实体。扫描或恶意软件检测的结果可以被发布以帮助用户作出有关应用下载的决策。例如,存在有提供软件应用的安全服务的多个企业或组织,诸如F-secure、360等。在一些实施例中,SSP 109可以被体现为这样的企业或组织的服务器以便检查软件应用的安全性或者被部署为能够由任意其它各方进行访问的公众或私人云服务。在一些实施例中,SSP 109甚至可以被部署在计算设备处,后者实际上也能够自行执行这些应用。
[0049]此外,SSP109中的离线恶意软件检测或扫描可以基于这些应用的声誉排名来进行。在其中存在大量应用的实例中,SSP 109验证每个应用的安全性可能是困难且昂贵的。因此,有必要利用优先级来决定应当对哪一个进行检测。根据声誉排名,最具声誉且流行的应用能够首先被检查以排除嫌疑。
[0050]声誉中心(RC)Ill可以被提供以生成应用的声誉并且将其提供至SSP109oRC 111收集与应用使用相关的信息以及来自用户(例如,来自用户的计算设备)的有关应用的反馈。根据该信息,可以生成应用的声誉值以反映出应用值得信任的程度以及流行度。RC 111可以被部署在服务SSP 109的云服务提供方处,或者以其它方式在应用商店108或SSP 109之中进行协同操作。
[0051]图2是根据一些实施例的用于进行综合恶意软件检测的过程的流程图。该综合恶意软件检测包括两个阶段,即离线恶意软件检测和实时恶意软件检测。在203,可以对应用进行离线恶意软件检测。例如,其可以在SSP 109处通过工具套件来完成。SSP 109可以检查在应用的函数调用中是否存在任何异常。离线恶意软件检测的详细过程随后将参考图4进行描述。
[0052]恶意软件检测的结果例如可以通过在205发出检查结果(肯定或否定的)的证书而被通报。如果恶意软件检测的结果是否定的,即应用中存在一些异常,则SSP 109可以通报所检测到的问题并且证明该检测结果。如果恶意软件检测的结果是肯定的,SSP 109可以发出证书以证明该肯定的检查结果。该结果可以被提供至用户以帮助作出是否将应用下载到他们的移动设备101的决策。该结果可以进一步被提供至应用商店107以辅助对应用的管理,诸如将应用下架和/或为应用开发补丁。利用该离线恶意软件检测,可能在投入使用之前排除一些恶意软件。
[0053]该离线恶意软件检测可以根据相应软件的声誉进行调度。在一些实施例中,SSP109可以被配置为在多个应用中优先检查具有较高声誉的应用。例如,RC 111可以决定需要针对恶意软件进行检查的具有较高声誉的应用,并且随后在SSP 109触发对该应用的离线恶意软件检测。
[0054]如果应用通过了离线恶意软件检测,并且在真实环境中一一例如在计算设备1la中一一被实际执行,则能够在207对该应用进行实时恶意软件检测。计算设备1la可以监控该应用在运行时间的应用行为,诸如函数调用、数据访问行为和联网行为,并且检查这些行为是否正常。实时恶意软件检测的详细过程随后将参考图5进行描述。
[0055]如果实时恶意软件检测的结果是否定的,即如果在应用行为中存在异常,则计算设备在209作出反应以控制所检测到的恶意应用。例如,计算设备的用户可以被通知移除该应用或者采取相应的动作。
[0056]如以上所讨论的,离线恶意软件检测可以由声誉评估来驱动。图3图示了根据一些实施例的这样的过程。在301,RC 111可以针对应用例如从移动设备101收集用户的使用数据。该使用数据可以包括与正常应用使用相关的app使用行为数据,其主要可以由所过去的使用时间、使用次数、和使用频率来反映;app反映行为数据,其涉及到用户面对应用问题/错误或者具有良好/不好的使用体验之后的使用行为;和app相关行为数据,其涉及到与多个功能类似的应用相关的使用行为。基于所收集到的使用数据,可以确定指示应用中的个人用户信任度的信任度级别。基于应用的信任度级别和/或用户的主观反馈,可以在303生成应用的声誉。存在许多用于生成或评估声誉的算法。例如,一些算法在发明人的题为aTruBeRepec:A Trust-Behav1r-Based Reputat1n and Recommender System forMobile Applicat 1ns”(Z.Yan、P.Zhang、R.H.Deng,Journal of Personal andUbiquitous Computing, Springer,Vol.16, Issue 5,pp.485-506,2012)中有所描述。也可以使用现在已知或后续开发的用于生成或评估app声誉的其它方法。
[0057]根据相应应用的声誉,RC111可以在305例如按照声誉值的降序对要进行恶意软件检测的应用进行排名。随后,RC 111可以在307针对还没有进行检查的应用决定恶意软件检测的优先级。例如,排名前N(N是检测阈值)的应用可以被决定以按照优先级接受离线恶意软件检测。在309,该决策可以触发SSP 109逐个加载这些所决定的应用的代码以便例如通过SSP 109处的离线恶意软件检测工具套件进行检查。
[0058]利用app声誉评估,SSP 109易于合理安排离线恶意软件检测的调度。SSP 109可以关注检查具有高声誉和流行度的最具价值的应用。这可以帮助SSP 109节约成本并且更为有效地进行恶意软件检测。例如,对于不喜欢的应用,SSP 109将不需要匆忙检查或者不必要检测它们的问题。对于流行应用,SSP 109可以尽可能早地检查其安全性,以便大幅减少它们所导致的潜在风险。因此,SSP 109被允许关注于市场需求。
[0059]参考图4,现在将对离线恶意软件检测的过程进行描述。在离线恶意软件检测中,对应用的函数调用的结构进行分析以便找出应用中的异常。在401,对应用的函数调用图进行离线检测。函数调用图可以记录应用所调用的函数之间的调用关系。其可以包含表示应用所调用的函数的节点以及对节点进行链接从而指示节点之间的函数调用关系的边。边可以进一步具有方向以指示调用方向和顺序。图中的函数可以是应用所调用的任意函数,包括应用自身所设计并划分的函数和子函数。可替换地或除此之外,图中的函数可以包括其它应用所提供的服务函数,和/或底层操作系统所提供的系统级函数或服务,诸如移动电话的通讯录函数、拍照函数、联网函数、定位函数等。节点所表示的粗糙粒度的函数可以进一步包括精细粒度的函数的集合。两个节点之间的边可以进一步根据这两个节点所表示的两个函数之间的调用的属性而进行加权。例如,边可以基于调用密度和调用频率进行加权。
[0060]在一些实施例中,应用的执行代码可以被反向编译,并且可以被重新编译从而促进获取函数调用的日志。例如,应用可以被嵌入有用于通过使用工具套件而获取函数调用的日志的功能模块。通过在虚拟环境中运行应用经重新编译的执行代码,可以离线获得该应用的函数调用的日志。基于该函数调用的日志,可以得出该应用的函数调用图并且对其进行分析以找出该应用中的异常。
[0061]在403,从该函数调用图,可以提取出应用的函数调用的模式。例如,SSP 109可以使用数据挖掘技术来自动挖掘函数调用日志。提取函数调用的模式以检测app异常是有效的。接下来在405,SSP 109可以将所提取的模式与正常应用的基本模式或规则进行比较,以确定所提取的模式是否符合该基本模式或规则。例如,如果所提取的模式与正常应用的基本模式之间存在显著差异,或者如果所提取的模式并未遵循正常模式的规则,则可以确定所检测的应用是异常的并且可能是恶意软件。
[0062]在该阶段,可以应用任意的动态和/或静态方法来进行离线恶意软件检测。在一些实施例中,SSP 109可以检查不同类型的函数调用图,并且以动态和/或静态的方式分析时间进行时的调用关系、调用顺序、调用密度和调用频率。就此而言,SSP 109可以检查包含可供应用在完整仿真运行中所调用的函数之间的所有调用关系的完整调用图。可以以静态方式分析该完整调用图,因为该完整调用图对于应用而言几乎就是静态的。SSP 109可以确定该完整调用图是否符合正常应用的基本模式,例如具有功率法则程度分布的无标度和小群体复杂网络。
[0063]除此之外或可替换地,可以检查不同时间的调用图,其包含应用在仿真期间的不同时间的时点之前所调用的函数之间的调用关系。例如,应用的仿真被假设运行十分钟。不同时间的调用图可以包含该应用从仿真开始到第一分钟,或者到第二分钟,或者到第三分钟等等所调用的函数之间的调用关系。作为对比,完整调用图则可以包含应用贯穿整个十分钟所调用的函数之间的调用关系。SSP 109可以确定不同时间的调用图是否与正常应用的基本模式(例如密实化(Dens i f i cat i on)功率法则)相符。
[0064]除此之外或可替换地,包含所选择应用在仿真运行期间的一段时间所调用的函数之间的调用关系的部分调用图。采用以上所提到的仿真作为示例,部分调用图可以包含应用在前两分钟,或者第二个两分钟,或者第三个两分钟等的期间所调用的函数之间的调用关系。部分调用也可以被分析以确定其是否与正常应用的某些基本规则相符,例如某些稳定行为模式,诸如密实化功率法则。
[0065]正常应用的基本模式通常反映正常应用经常所涉及到的属性。例如,近年来,已经发现真实网络经常在其演进中表现出持续趋势,其经常被表达为e(t)an(t)a,其中e(t)和n(t)是网络中在时间t的边和节点的数量,而“a”则是I和2之间的指数。该关系被称作密实化功率法则。一些研究发现所有被测试的良好软件调用图在它们生长期间都严格遵守密实化功率法则。部分调用图的密实化功率法则属性与软件系统动态的实质性机制有关。这样,例如如果应用的部分调用图距密实化功率法则具有大幅偏差,则可以确定该应用是异常的并且可能是恶意软件。
[0066]403和405处的模式提取和比较可以分别关于这些不同类型的函数调用图来进行。如果发现了任何异常,则SSP 109可以提出进行附加检查的警告,例如进入到更为严格的恶意软件检测处理。
[0067]在其中应用在计算设备上被安装和执行的实例中,即使恶意应用通过了离线恶意软件检查,仍然可能根据一些实施例在运行时间找出恶意应用行为。能够基于从实时app行为进行挖掘并且与正常应用和/或app行为的之前记录进行比较来进行实时恶意软件检测。参考图5,现在将对实时恶意软件检测的过程进行描述。在这样的实施例中,过程500由一个或多个计算设备(诸如计算设备101a、101b)来执行,并且例如在包括如图6所示的处理器和存储器的芯片组中实施。这样,计算设备可以提供用于完成过程500的各个部分的器件以及用于结合其它组件完成其它处理的器件。
[0068]在501,计算设备可以在实际在该计算设备处被执行(例如,由该计算设备的处理器执行)的应用的运行时间、在一段时间内记录该应用的行为。所记录的应用行为的信息可以涉及与应用或计算设备的安全相关联的任意操作、处理和数据。例如,在app运行时间,计算设备可以记录与函数调用相关联的函数调用行为,诸如当前时间的部分调用图和调用图。该计算设备可以进一步记录与本地数据访问相关联的数据访问行为,诸如用于从计算设备的存储器读取数据的操作,用于向计算设备的存储器写入数据的操作,所访问数据的属性(例如,安全级别、大小等)。计算设备可以进一步记录与应用所导致的传入和传出流量相关联的联网行为,诸如用于发起或终止与其它网络设备、用于联网的通信端口和地址的通信连接的操作。
[0069]应用行为可以通过读取在运行时间应用的执行日志而被记录。在一些实施例中,计算设备可以通过增加相应的功能模块而对应用的执行代码进行重新编译。可替换地,应用的重新编译可以被销售该应用的应用商店支持。
[0070]在503,从所记录的应用行为,该计算设备可以例如通过数据挖掘技术而提取出该应用在运行时间的行为模式。在运行时间自动使用数据挖掘技术来挖掘app行为是有效的。随后,所提取的行为模式可以与良好模式进行比较,后者诸如正常应用的基本模式或规则,尤其针对所检测的应用在过去运行时间和/或离线所分析的模式。如果应用行为明显与常见的正常应用或者其自己之前的行为(其看上去是正常的)有所不同,则可以确定该应用中存在一些异常。这样,在并不进行离线检查的情况下执行app的风险可以被有效降低。此外,针对在一段时间行为良好从而赢得用户信任而随后突然将其行为变为恶意的那些恶意软件,仍然可以在其运行时间对其进行检测。与此同时,在安装和执行之后能够被病毒所感染而变为恶意的正常应用也能够在app运行时间被检测。
[0071]例如,计算设备可以(在505)将当前时间的部分调用图和调用图与在过去的运行时间和/或离线所分析的相应的良好模式进行比较,并且(在507)检查所提取的调用行为的模式是否与相应的良好模式相符。如果检查结果是否定的,则该计算设备可以在509发出警告并且建议用户对此异常作出应对。
[0072]如果在507的检查结果是肯定的,则该计算设备可以进一步(在511)将数据访问行为与在过去的运行时间和/或离线所分析的相应的良好模式进行比较,并且(在513)检查所提取的数据访问行为的模式是否与相应的良好模式相符。如果检查结果是否定的,则该计算设备可以在509发出警告并且建议用户对此异常作出应对。
[0073]否则,如果在513的检查结果是肯定的,则该计算设备可以进一步(在515)将app联网行为与在过去的运行时间和/或离线所分析的相应的良好模式进行比较,并且(在517)检查所提取的数据访问行为的模式是否与相应的良好模式相符。如果检查结果是否定的,则该计算设备可以在509发出警告并且建议用户对此异常作出应对。
[0074]如果对应用行为的以上每项检查都是肯定的,则如从517至501的连线所示,该过程可以返回以再次定期监控并分析所记录的app行为。虽然以上检查是参考图5以某种顺序进行描述,但是应当意识到的是,这些操作可以以可替换的顺序来执行,并且一些操作可以被调节、合并或者甚至被省略。例如,针对联网行为的检查可以被调节为在针对app调用行为之前进行或者与之并行进行。
[0075]现在参考图6,其图示了本发明各个示例性实施例可以被应用于其中的装置600的示例框图。这可以是安全服务提供方或者计算设备,诸如服务器、用户设备(UE)、移动终端或其它计算设备。装置600的总体结构包括处理模块601,耦合至处理模块601的通信接口模块609。装置600可以进一步包括耦合至处理模块601的用户接口模块611,以及耦合至处理模块601的非易失性存储器613。通信接口模块609、用户接口模块611和非易失性存储器613还可以互相通信。
[0076]处理模块601包括处理器603和存储器605。处理模块601进一步包括存储在存储器605中并且能够进行操作而被加载到处理器603中并在其中执行的软件607。软件607可以包括一个或多个软件模块并且可以为计算机程序产品的形式。处理模块601可以包括用于应用程序或数据以及用于装置600的正常操作的单独处理和存储器区域。
[0077]通信接口模块609例如可以是无线电接口模块,诸如WLAN、蓝牙、GSM/GPRS、CDMA、WCDMA或LTE(长期演进)无线电模块。通信接口模块609可以被整合到装置600中或者被整合到可以被插入装置600的适当插槽或端口之中的适配器、卡等。通信接口模块609可以支持一种无线电接口技术或多种技术。图6示出了一个通信接口模块609,但是装置600可以包括多个通信接口模块609。
[0078]处理器603例如可以是中央处理单元(CPU)、微处理器、数字信号处理器(DSP)、图形处理单元等。图6示出了一个处理器603,但是装置600可以包括多个处理器。
[0079]存储器605例如可以包括非易失性或易失性存储器,诸如只读存储器(R0M)、可编程只读存储器(PROM)、可擦除可编程只读存储器(EPR0M)、随机访问存储器(RAM)、闪存、数据盘、光学存储、磁性存储、智能卡等。装置600可以包括多个存储器。存储器605可以被构建为装置600的一部分或者其可以被用户插入到装置600的插槽、端口等之中。存储器605可以提供单纯的存储数据的用途,或者其可以被构造为提供诸如处理数据或进行恶意软件检测之类的其它用途的装置的一部分。非易失性存储器613例如可以是闪存并且例如可以提供接收并存储软件更新的用途。非易失性存储器613可以被构造为装置600的一部分或者其可以被用户插入到装置600的插槽、端口等之中。
[0080]用户接口模块611可以包括用于例如经由小键盘、装置600的显示器上所示出的图形用户界面、话音识别电路或者诸如头戴式耳机的附属设备接收来自装置600的用户的输入并且例如经由图形用户界面或扬声器向用户提供输出的电路。
[0081]本领域技术人员理解,除了图6所示的部件之外,装置600可以包括其它部件,诸如麦克风、显示器以及附加电路,诸如输入/输出(I/O)电路、存储器芯片、应用特定集成电路(ASIC)、用于具体用途的处理电路,诸如源编码/解码电路、信道编码/解码电路、加密/解密电路等。此外,装置600可以包括可任意处理或可充电的电池(未示出)以便在外部电源无法使用的情况下为装置600进行供电。
[0082]通常,各个示例性实施例可以以硬件或专用电路、软件、逻辑或者其任意组合来实施。例如,一些方面可以以硬件实施,而其它方面则可以以关键或者可由控制器、微处理器或其它计算设备所执行的软件来实施,虽然本公开并不局限于此。虽然本公开的示例性实施例的各个方面可以被图示并描述为框图、流程图,或者使用一些其它的图形表示形式,但是所要理解的是,这里所描述的这些模块、装置、系统、技术或方法作为非限制示例可以以硬件、软件、固件、专用电路或逻辑、通用硬件或控制器或者其它计算设备或者它们的一些组合来实施。
[0083]应当意识到的是,本发明的示例性实施例的至少一些方面可以以一个或多个计算机或其它设备所执行的计算机可执行指令来体现,诸如以一个或多个程序模块来体现。通常,程序模块包括在被计算机或其它设备中的处理器所执行时实施特定任务或实施特定抽象数据类型的例程、程序、对象、组件、数据结构等。计算机可执行指令可以被存储在诸如硬盘、光盘、可移除存储媒体、固态存储器、RAM等的计算机可读介质上。如本领域技术人员将会意识到的,程序模块的功能在各个实施例中可以按照期望进行组合或分布。此外,功能可以整体或部分在固件或硬件等同形式中体现,诸如集成电路、现场可编程门阵列(FPGA)等。
[0084]本发明各个实施例的各种特征可以提供各种益处。通过根据一些实施例在离线情况下以及运行时间检查恶意软件,可以将恶意软件的风险降低至最小。在离线恶意软件检测期间,可以对静态完整调用图、部分调用图和不同时间的调用图中的至少一个进行检查以找出恶意软件。在实时恶意软件检测中,可以对调用图模式进行检查以找出函数调用所导致的安全漏洞。此外,可以对数据访问行为进行检查以找出存在风险的局部数据访问,特别是不同于以往的异常访问。此外,通过对应用的联网行为进行检查,可以对应用的传入流量进行检查以找出潜在入侵,并且可以对应用的传出流量进行检查以解决一些突发攻击所导致的可能感染,例如使得计算设备变为病毒机器人(bot)。这样,可以应对偷窃并销售用户信息、操控内容递送、发送垃圾邮件或者在计算设备上进行突发入侵的恶意软件,并且提供了广泛的检测和保护。
[0085]本发明包括这里明确公开的任何新颖特征或特征组合或者其任意的概括形式。在结合附图阅读时,针对本发明的以上示例性实施例的各种修改和调适在考虑到以上描述的情况下对于相关领域的技术人员会是显而易见的。然而,任何及全部的修改都将落入本发明的非限制性和示例性实施例的范围之内。
【主权项】
1.一种方法,包括: 使得对应用进行离线恶意软件检测,其中所述离线恶意软件检测包括: 离线检测所述应用的至少一个函数调用图,其中所述函数调用图记录所述应用所调用的函数之间的调用关系; 从所述至少一个函数调用图中提取所述应用的函数调用的模式;以及 将所提取的模式与正常应用的至少一种基本模式进行比较。2.根据权利要求1所述的方法,其中所述检测包括在虚拟环境中运行所述应用的代码的至少一部分并且获取所述应用的所述函数调用的日志。3.根据权利要求2所述的方法,其中所述提取包括使用数据挖掘方法来分析所述日志。4.根据权利要求3所述的方法,其中所述至少一个函数调用图包括以下三种类型的函数调用图中的至少一种:完整调用图,其包含能够供所述应用贯穿所述运行所调用的函数之间的所有调用关系; 不同时间的调用图,其包含所述应用在所述运行期间的所述不同时间的时间点之前所调用的函数之间的调用关系;和 部分调用图,其包含所述应用在所述运行期间的一个时间段中所调用的函数之间的调用关系。5.根据权利要求1所述的方法,其中所述离线恶意软件检测进一步包括: 通过添加用于获取所述函数调用的日志的功能模块而对所述应用的执行代码的至少一部分进行重新编译,以及 在所述虚拟环境中运行所重新编译的代码以获取所述日志。6.根据权利要求1所述的方法,进一步包括: 根据所述应用的声誉来调度对所述应用的所述离线恶意软件检测。7.根据权利要求6所述的方法,其中具有较高声誉的应用先于具有较低声誉的应用被调度以进行所述离线恶意软件检测。8.根据权利要求1所述的方法,进一步包括: 通报所述离线恶意软件检测的指示来自所述应用的潜在恶意威胁的结果。9.根据权利要求1-8中任一项所述的方法,进一步包括使得在所述应用在真实环境中被执行的同时对所述应用进行实时恶意软件检测,其中所述实时恶意软件检测包括: 记录在所述应用的所述执行期间所述应用的行为; 从所记录的行为中提取行为模式;以及 将所提取的行为模式与正常应用的基本模式或先前针对所述应用所记录的模式中的至少一种进行比较。10.根据权利要求9所述的方法,其中所记录的行为包括以下三种类型的行为中的至少一种: 与所述应用的函数调用相关联的行为, 与所述应用所引起的本地数据访问相关联的行为,和 与所述应用所引发的传入和/或传出流量相关联的行为。11.根据权利要求9-10中任一项所述的方法,其中所述实时恶意软件检测进一步包括: 通过添加用于获取所述应用的所述行为的日志的功能模块而对所述应用的执行代码的至少一部分进行重新编译。12.一种方法,包括: 在真实环境中运行应用; 记录在所述应用的运行时间所述应用的行为; 从所记录的行为中提取行为模式;以及 将所提取的行为模式与正常应用的基本模式或先前针对所述应用所记录的模式中的至少一种进行比较。13.根据权利要求12所述的方法,其中所记录的行为包括以下三种类型的行为中的至少一种: 与所述应用的函数调用相关联的行为, 与所述应用所引起的本地数据访问相关联的行为,和 与所述应用所引发的传入和/或传出流量相关联的行为。14.根据权利要求12-13中任一项所述的方法,进一步包括: 通过添加用于获取所述应用的所述行为的日志的功能模块而对所述应用的执行代码的至少一部分进行重新编译。15.—种装置,包括: 至少一个处理器;和 包括计算机程序代码的至少一个存储器, 所述至少一个存储器和所述计算机程序代码被配置为与所述至少一个处理器一起使得所述装置至少执行以下: 使得对应用进行离线恶意软件检测,其中所述离线恶意软件检测包括: 离线检测所述应用的至少一个函数调用图,其中所述函数调用图记录所述应用所调用的函数之间的调用关系; 从所述至少一个函数调用图中提取所述应用的函数调用的模式;以及 将所提取的模式与正常应用的至少一种基本模式进行比较。16.根据权利要求15所述的装置,其中所述检测包括在虚拟环境中运行所述应用的代码的至少一部分并且获取所述应用的所述函数调用的日志。17.根据权利要求16所述的装置,其中所述提取包括使用数据挖掘方法来分析所述日V 1、1、O18.根据权利要求17所述的装置,其中所述至少一个函数调用图包括以下三种类型的函数调用图中的至少一种: 完整调用图,其包含能够供所述应用贯穿所述运行所调用的函数之间的所有调用关系; 不同时间的调用图,其包含所述应用在所述运行期间的所述不同时间的时间点之前所调用的函数之间的调用关系;和 部分调用图,其包含所述应用在所述运行期间的一个时间段中所调用的函数之间的调用关系。19.根据权利要求15所述的装置,其中所述离线恶意软件检测进一步包括: 通过添加用于获取函数调用的日志的功能模块而对所述应用的执行代码的至少一部分进行重新编译,以及 在所述虚拟环境中运行所重新编译的代码以获取所述日志。20.根据权利要求15所述的装置,其中所述装置被进一步使得: 根据所述应用的声誉来调度对所述应用的所述离线恶意软件检测。21.根据权利要求20所述的装置,其中具有较高声誉的应用先于具有较低声誉的应用被调度以进行所述离线恶意软件检测。22.根据权利要求15所述的装置,其中所述装置被进一步使得: 通报所述离线恶意软件检测的指示来自所述应用的潜在恶意威胁的结果。23.根据权利要求15-22中任一项所述的装置,其中所述装置被进一步使得:引起在所述应用在真实环境中被执行的同时对所述应用进行实时恶意软件检测,其中所述实时恶意软件检测包括: 记录在所述应用的所述执行期间所述应用的行为; 从所记录的行为中提取行为模式;以及 将所提取的行为模式与正常应用的基本模式或先前针对所述应用所记录的模式中的至少一种进行比较。24.根据权利要求23所述的装置,其中所记录的行为包括以下三种类型的行为中的至少一种: 与所述应用的函数调用相关联的行为, 与所述应用所引起的本地数据访问相关联的行为,和 与所述应用所引发的传入和/或传出流量相关联的行为。25.根据权利要求23-24中任一项所述的装置,其中所述实时恶意软件检测进一步包括: 通过添加用于获取所述应用的所述行为的日志的功能模块而对所述应用的执行代码的至少一部分进行重新编译。26.—种装置,包括: 至少一个处理器;和 包括计算机程序代码的至少一个存储器, 所述至少一个存储器和所述计算机程序代码被配置为与所述至少一个处理器一起使得所述装置至少执行以下: 在真实环境中运行应用; 记录在所述应用的运行时间所述应用的行为; 从所记录的行为中提取行为模式;以及 将所提取的行为模式与正常应用的基本模式或先前针对所述应用所记录的模式中的至少一种进行比较。27.根据权利要求26所述的装置,其中所记录的行为包括以下三种类型的行为中的至少一种: 与所述应用的函数调用相关联的行为, 与所述应用所引起的本地数据访问相关联的行为,和 与所述应用所引发的传入和/或传出流量相关联的行为。28.根据权利要求26-27中任一项所述的装置,其中所述装置被进一步配置为: 通过添加用于获取所述应用的所述行为的日志的功能模块而对所述应用的执行代码的至少一部分进行重新编译。29.—种计算机可读存储介质,承载一个或多个指令的一个或多个序列,所述一个或多个指令的所述一个或多个序列在被一个或多个处理器执行时使得装置至少执行根据权利要求1-14中任一项所述的方法。30.—种装置,包括用于执行根据权利要求1-14中任一项所述的方法的装置。31.—种计算机程序产品,包括一个或多个指令的一个或多个序列,所述一个或多个指令的所述一个或多个序列在被一个或多个处理器执行时使得装置至少执行根据权利要求1 -14中任一项所述的方法的步骤。
【文档编号】G06F21/56GK105874463SQ201380081921
【公开日】2016年8月17日
【申请日】2013年12月30日
【发明人】闫峥
【申请人】诺基亚技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1