程序特征的检测方法和装置与流程

文档序号:11476023阅读:181来源:国知局
程序特征的检测方法和装置与流程

本发明涉及程序安全领域,具体而言,涉及一种程序特征的检测方法和装置。



背景技术:

随着移动互联网的迅速发展,具有移动操作系统的智能手机和平板得到了大范围应用。由于不再局限于普通的通讯功能,智能手机等拥有独立的操作系统,因而人们可以使用智能手机随时随地进行收发邮件、购物、交易等,移动互联网市场已经显露出它巨大的价值。而在此背景下的安全风险也随之而来:恶意软件、钓鱼网站越来越多,公共wifi之类的风险应用场景也越来越多。相比于其他操作系统,随着基于linux内核的安卓智能手机操作系统的市场份额越来越多,安卓手机已经成为当前恶意软件最重要的攻击目标。

安卓系统是一种开源的操作系统,开发人员可以将应用程序直接上传到市场供用户使用而无需经过任何审查。方便快捷的开发方式激发了各种功能的应用程序的涌现,也进一步促进了安卓操作系统的发展和普及,但也使它面临着更大的风险。移动设备存储量的增长,使其能够存储大量的个人信息和商业数据;另外,安卓智能手机可以支持支付业务,且供应商,销售商,批发商,内容提供商,移动操作者以及银行都在创建各种新的移动支付业务。这些都使移动设备等成为了攻击者们的众矢之的。越来越多的恶意程序利用移动设备来获取用户资料,进行恶意扣费和系统破坏。恶意程序利用移动设备来恶意拨打电话,发送垃圾短信,泄露用户证书,和破坏手机软硬件的事例已经屡见不鲜。

对安卓设备上的恶意软件检测方法主要分为静态检测和动态检测两 种方法。静态检测是在不运行应用程序的前提下,通过分析反编译应用程序,获取程序的源代码,或者分析程序的外部特征如文件签名等对恶意软件进行检测。而动态检测则是将应用程序运行在沙箱或者安卓系统中,在程序运行的过程中,分析程序的运行轨迹,查看程序对系统敏感资源的通信情况和使用情况,检测出程序对用户资料或者系统敏感资源的泄露来判定为恶意软件或者病毒。

在现有的静态检测中,主要是根据安卓包提取数字签名,或运行权限做的静态分析,并得到恶意软件检测结果,以确定该apk软件是否为恶意软件。在上述方法中,由于数字签名可以被更改,因此,其并不能全面地反映恶意软件的特征,因此,仅根据数字签名进行恶意软件检测,不能够高效准确地对恶意软件进行识别。

针对上述的问题,目前尚未提出有效的解决方案。



技术实现要素:

本发明实施例提供了一种程序特征的检测方法和装置,以至少解决相关技术中不能对安卓软件的程序特征进行准确识别的技术问题。

根据本发明实施例的一个方面,提供了一种程序特征的检测方法,该方法包括:获取输入的待检测的程序特征和程序特征所属的特征类型;按照特征类型从数据库中查询具有程序特征的样本程序包的安全指示信息,其中,安全指示信息用于指示样本程序包的安全特性;根据样本程序包的安全指示信息确定待检测的程序特征是否为病毒特征。

根据本发明实施例的另一方面,还提供了一种程序特征的检测装置,该装置包括:获取单元,用于获取输入的待检测的程序特征和程序特征所属的特征类型;查询单元,用于按照特征类型从数据库中查询具有程序特征的样本程序包的安全指示信息,其中,安全指示信息用于指示样本程序包的安全特性;确定单元,用于根据样本程序包的安全指示信息确定待检测的程序特征是否为病毒特征。

在本发明实施例中,在获取输入的待检测的程序特征和程序特征所属的特征类型之后,按照特征类型从数据库中查询具有程序特征的样本程序包的安全指示信息(安全指示信息用于指示样本程序包的安全特性),并根据得到的样本程序包的安全指示信息确定待检测的程序特征是否为病毒特征,与相关技术中使用程序的签名信息进行病毒检测的方法相比,本申请的方案可以将需要检测程序的各类程序特征与海量数据库(数据库中存储有实时采集到的各类应用市场的程序应用的特征,如google应用市场、安卓市场、机锋市场等)中的样本程序包进行对比,以确定待检测的程序特征是否为病毒特征,从而解决了相关技术中不能对安卓软件的程序特征进行准确识别的技术问题,实现了对安卓软件的程序特征是否为病毒特征或者安全特征的准确判断,同时还能通过对程序特征的识别判断出待检测程序是否为包括病毒或木马的恶意软件。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1是根据本发明实施例的一种终端的硬件环境示意图;

图2是根据本发明实施例的一种可选的程序特征的检测方法的流程图;

图3是根据本发明实施例的另一种可选的程序特征的检测方法的流程图;

图4是根据本发明实施例的第三种可选的程序特征的检测方法的流程图;

图5是根据本发明实施例的第四种可选的程序特征的检测方法的流程图;

图6是根据本发明实施例的第五种可选的程序特征的检测方法的流程 图;

图7是根据本发明实施例的第六种可选的程序特征的检测方法的流程图;

图8是根据本发明实施例的一种可选的程序特征的检测装置的示意图;

图9是根据本发明实施例的另一种可选的程序特征的检测装置的示意图;

图10是根据本发明实施例的第三种可选的程序特征的检测装置的示意图;

图11是根据本发明实施例的第四种可选的程序特征的检测装置的示意图;

图12是根据本发明实施例的第五种可选的程序特征的检测装置的示意图;以及

图13是根据本发明实施例的另一种终端的硬件环境示意图。

具体实施方式

首先,对本发明实施例中涉及的术语解释如下:

apk:即安卓软件的安装包。

eclipse:一种用于编译安卓软件包的编译软件。

axmlprinter2:一种典型的用于反编译的软件。

为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。

需要说明的是,本发明的说明书和权利要求书及上述附图中的术语 “第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

实施例1

根据本发明实施例,提供了一种程序特征的检测方法,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。

可选地,在本实施例中,上述的检测方法可以应用于如图1所示的检测终端10和服务器20所构成的硬件环境中。如图1所示,检测终端20通过网络与服务器20进行连接。上述的终端可以为移动终端或者固定终端,如笔记本电脑、台式电脑、平板电脑和pda,以及其他的手持设备。

上述网络包括但不限于:广域网、城域网或局域网。优选地,上述的网络为局域网。

根据本发明实施例,提供了一种程序特征的检测方法,图2是根据本发明实施例的一种可选的程序特征的检测方法的流程图,如图2所示,该方法包括:

步骤s201:获取输入的待检测的程序特征和程序特征所属的特征类型。

步骤s202:按照特征类型从数据库中查询具有程序特征的样本程序包的安全指示信息,其中,安全指示信息用于指示样本程序包的安全特性。

步骤s203:根据样本程序包的安全指示信息确定待检测的程序特征 是否为病毒特征。

采用本发明上述实施例,在获取输入的待检测的程序特征和程序特征所属的特征类型之后,按照特征类型从数据库中查询具有程序特征的样本程序包的安全指示信息(安全指示信息用于指示样本程序包的安全特性),并根据得到的样本程序包的安全指示信息确定待检测的程序特征是否为病毒特征,与相关技术中使用程序的签名信息进行病毒检测的方法相比,本申请的方案可以将需要检测程序的各类程序特征与海量数据库(数据库中存储有实时采集到的各类应用市场的程序应用的特征,如google应用市场、安卓市场、机锋市场等)中的样本程序包进行对比,以确定待检测的程序特征是否为病毒特征,从而解决了相关技术中不能对安卓软件的程序特征进行准确识别的技术问题,实现了对安卓软件的程序特征是否为病毒特征或者安全特征的准确判断,同时还能通过对程序特征的识别判断出待检测程序是否为包括病毒或木马的恶意软件。

其中,待检测的程序特征可以为在检测安卓包时无法确定是否为病毒特征的特征,将这些特征提取出来,使用上述方法进行校验,可以准确验证该特征是否为病毒特征,并将确定结果用特征id标识,如安全特征用0标识,疑似病毒特征用1标识,病毒特征用2标识。

在检测出该特征为病毒特征的情况下,将其保存入病毒查杀应用的病毒库中,从而在使用病毒查杀应用查杀程序包的病毒时,可以更准确地检测程序包是否为病毒程序包。

需要说明的是,在按照特征类型从数据库中查询具有程序特征的程序碎片之前,本申请的检测方法还包括如图3所示的下述步骤:

步骤s301,从收集到的源程序包中提取属于多个特征类型的程序碎片。

需要说明的是,多个特征类型包括下述至少之二:程序包名、程序证书、程序的数据容量大小、程序的版本、程序所属的类以及程序的常量字 符串。

步骤s302,将提取到的程序碎片按照程序碎片所属的特征类型,保存入数据库,并以字典分词的方式建立数据库的索引。

具体地,上述方法中的步骤s301和步骤s302可以通过如图4所示的子步骤s401至s406实现。

步骤s401,apk收集,即获取安卓apk程序包(即源程序包),如通过官方合作渠道,实时收集通过官方渠道(如google应用市场、安卓市场、机锋市场等)发布的各种安卓程序包;再如,由于安卓系统的开放性,一些用户可以自行编写和发布安卓程序包,因此,还可以通过爬虫技术实时收集各类用户在互联网发布的安卓程序包。

步骤s402,apk特征提取,即提取收集到的各安卓源程序包的不同类型的特征。

上述步骤s402可以通过特征提取模块实现,特征提取模块实时去获取收集渠道来源的安卓程序包,利用解包技术,对各种安卓包进行逆向工程分析,提取里面的apk文件结构、classes.dex文件和mainfeset.xml文件。

需要说明的是,安卓程序包(即apk文件)是用专业软件eclipse编译生成的文件包,上述的解包技术即利用反编译软件对apk文件的内容进行反编译的技术,具体可以通过axmlprinter2工具软件等反编译软件实现;通过解包技术得到classes.dex文件和mainfeset.xml文件等即上述的属于多个特征类型的程序碎片。

可选地,该方案也可以应用于其他操作系统的程序包,如ios程序包。

需要进一步说明的是,apk文件的实质是一个zip压缩包,apk文件结构是指解压得到的apk文件组成架构,其主要包括mainfeset.xml文件、classes.dex文件、manifest文件、meta-inf文件、res目录、resource.arsc文件(即属于多个特征类型的程序碎片)等。

在得到程序碎片之后,即可根据程序碎片确定其对应的包名、证书、大小、版本、类(主要指源代码的数据结构)、字符串(即常量字符串,如包括一个或多个字符的字符串)等多种维度特征(即上述实施例中的特征类型)。

步骤s403,特征存储,即将上述得到的各个程序碎片及其包括的多种维度特征的特征数据写入特征数据库。

步骤s404,检索服务器从特征数据库获取各个类型的程序碎片及其特征数据。

步骤s405,检索服务器打包得到的程序碎片及其特征数据,可以将同一类型的程序碎片及其特征数据打包至同一个文件中。

步骤s406,将得到的各个文件存储数据库中,并以字典分词的方式建立数据库的索引。该数据库可以是如图1所示的服务器集群20上的分布式数据库。

需要说明的是,检索服务器可以实时获取特征数据库中更新的数据(即增量的特征),并对服务器集群上的文件进行及时更新和替换,在数据库中,为了标识新增的数据,可以通过时间戳来区分每天新增的数据。

通过上述实施例,可以实时收集已发布的各类安卓源程序,即相当于提供了相关的海量数据,并提取收集到的安卓源程序的多种维度特征,包括包名、证书、大小、版本、类、字符串等多种维度,这样,在进行病毒检测时,即可基于海量数据进行特征维度搜索,从而可以提高病毒检测的准确率。

在一个可选的实施例中,步骤s202的按照特征类型从数据库中查询具有程序特征的样本程序包的安全指示信息可以通过如下子步骤实现:步骤s1,按照特征类型从数据库中查询具有程序特征的程序碎片,即利用特征类型和索引,查询数据库中具有程序特征的程序碎片;步骤s2,将查找到的程序碎片中,属于同一程序包的程序碎片进行拼接,得到样本程 序包;步骤s3,读取查找到的样本程序包的安全指示信息。具体地,如图5所示:

步骤s501,分析人员根据需要分析的不同特征类型,在浏览器上面进行元特征(即待检测程序的程序特征)提交,同时可以对元特征进行逻辑上面的与或操作。如以包名、证书、大小、版本、类、字符串、代码块为特征类型进行元特征(即具体的程序特征,如具体的证书值、版本值)的提交。

上述的浏览器是指提供有分析人员进行特征提交功能的web界面,其相当于为用户提供一个操作接口。对元特征进行逻辑上面的与操作是指进行搜索时,搜索同时具有提交的多个元特征的程序碎片;对元特征进行逻辑上面的或操作是指,搜索具有提交的至少一个元特征的程序碎片。

上述的对元特征进行逻辑操作,是指对包名、证书、大小、版本、类、字符串、代码块等查询条件进行与或操作,其是指是提供一个检索条件,如将“包名”和“证书”进行与操作时,其相当于需要查询同时满足该“包名”和“证书”条件的程序碎片;再如将“包名”和“证书”进行或操作时,其相当于需要查询满足该“包名”或“证书”条件的程序碎片。

可选地,可以搜索一个元特征对应的程序碎片,如表1所示,在特征类型为“constantstring”(即字符串)的情况下,搜索字符串“broadcastprocess”对应的程序碎片;也可以搜索多个元特征对应的程序碎片,如在特征类型为“classprefix”(即类名前缀),搜索满足元特征“net.youmi.android.offers.”、“net.youmi.android.appoffers.”、“com.grady.mx.”、“com.youmi.offers.”、“net.owan.android.”、“net.youmi.android.adbrowser”、“cn.winads.studentsearn.ympointsreceiver”、“net.slidinggmenu.tool.adreceiver”中至少之一的程序碎片,表中的“|”符号表示或操作。

表1:

步骤s502,通过web浏览器把进行逻辑操作过后的元特征数据通过post的方式提交至虚拟特征cgi。

需要说明的是,post方法一种基于http传输协议的向指定的目标对象提交需要被处理的数据的一种方法;cgi(即通过用网关接口,英文全称commongatewayinterface),是外部应用程序(主要指cgi程序)与web服务器间的接口标准。

步骤s503,通过cgi接口向检索服务器发起搜索请求。

cgi接口端的设备对特征类型进行适配,检查分析人员提交的检索条件是否符合检索规则。如果符合检索规则,则对检索服务器发起检索请求,否则对该请求进行丢弃并且返回不符合检索规则的提示。

步骤s504,检索服务器向分布式数据库发起数据检索。

具体地,检索服务器接收到cgi接口提交的请求后,会对提交上来的元数据进行解释,如对分析人员提交的检索条件进行解释,按照不同的类 型和逻辑关系进行数据组合,生成满足搜索语法的语句,对存储集群发起数据检索。若分析人员提交的检索条件是需要检索满足“包名”和“证书”条件的程序碎片,则根据该检索条件生成满足搜索语法的语句,以进行查询。

若上述分布式数据库为sql数据库,则集群服务可以根据查询条件自动生成对应的sql查询语句,以对sql数据库进行查询。

步骤s505,集群服务器根据检索服务器的请求进行搜索,即搜索满足请求中的程序特征的程序碎片。

可选地,在进行检索服务时,根据待检测程序的程序特征从数据库中查询对应的程序碎片,即利用特征类型和索引,查询数据库中具有相同程序特征的程序碎片。

如根据待检测程序的特征类型在数据库中确定一个需要搜索的大概范围(如包括同一类特征类型的程序碎片的文件),再以程序特征为关键字查询数据库中的各个程序碎片,并提取出具有与待检测程序具有相同程序特征的程序碎片。在这里,可以以待检测程序的多个特征类型(如包名、证书、大小、版本、类等)来执行程序碎片的提取,以实现对待检测程序的准确检测。

步骤s506,返回命中的程序碎片至检索服务,即将满足请求中的程序特征的程序碎片返回至检索服务器。也即存储集群服务器把存储于各节点满足检索要求的数据拼接起来,返回到检索服务。

步骤s507,返回打包好的样本程序包至cgi接口,即检索服务器将接收到的程序碎片进行打包,得到样本程序包,并将样本程序包发送至cgi接口。

步骤s508,cgi接口端的设备根据样本程序包从服务器端获取对应于该样本程序包的各个维度的信息(也即安全指示信息),并将各个维度的信息进行打包并发送至检测终端(即上述分析人员使用的具有web服务 器的电脑终端)。

步骤s509,接收打包好的数据包,并通过解包获取样本程序包的各个维度的信息(也即安全指示信息)。

步骤s510,根据样本程序包(样本程序包的数量可以为1个,也可以为多个)的各个维度的信息(也即安全指示信息)确定待检测程序的安全性。如分析人员通过浏览器上面的安全指示信息进行对应的分析,判断出待检测程序的程序特征是否为病毒特征或者安全特征,以确定待检测程序是否为病毒或木马。

通过上述实施例,突破了以往的单数据杀包可能导致的误杀漏杀;结合系统服务的多维度数据,对安卓包中各个维度的特征类型,进行快速检索和分析,依赖后台存储的海量数据,多安卓包数据、多维度数据去分析该安卓包的安全特性。同时提高了分析的效率,有效做到对安卓程序包病毒性特征的更精确的检测。

在一个可选地实施例中,在样本程序包为一个的情况下,上述的步骤s203的根据样本程序包的安全指示信息确定待检测的程序特征是否为病毒特征可以包括如图6所示的如下步骤:

步骤s601,若安全指示信息指示样本程序包为病毒程序包,则确定待检测的程序特征为疑似病毒特征。

上述安全指示信息包括多个安全维度信息,具体可以包括“安全级别”、“老白名单”、“新白名单”、“病毒id”等信息。如其安全级别为“风险”,则可以确定待检测的程序特征为疑似病毒特征。

步骤s602,若安全指示信息指示样本程序包是安全程序包,则确定待检测的程序特征为安全特征。即在各个安全维度信息的信息均正常的情况下,则确定待检测的程序特征为安全特征。

在另一个可选地实施例中,在样本程序包为多个的情况下,上述的步骤s203的根据样本程序包的安全指示信息确定待检测的程序特征是否为 病毒特征可以包括如图7所示的如下步骤:

步骤s701,基于各个样本程序包的安全指示信息确定样本程序包为病毒程序包或者为安全程序包。

可选地,步骤s701的基于各个样本程序包的安全指示信息确定样本程序包为病毒程序包或者为安全程序包可以包括:步骤s7011,获取样本程序包的安全指示信息的每个安全维度信息的属性值和每个安全维度信息的权重;步骤s7012,判断每个安全维度信息的属性值和权重的乘积之和是否超过预设阈值;步骤s7013,若超过预设阈值,则确定样本程序包为安全程序包;若未超过预设阈值,则确定样本程序包为病毒程序包。

具体地,可以根据历史信息为每一个安全维度信息设置一个权重比,在得到每个安全维度信息的属性值之后,将其与对应的权重值相乘得到其权重,再将每个安全维度信息的权重相加,即可根据得到的和值和预设阈值判断样本程序包是否为病毒程序包。

步骤s702,若确定多个样本程序包全部为安全程序包,则确定待检测的程序特征为安全特征。

步骤s703,若确定的病毒程序包的个数超过预设个数,则确定待检测的程序特征为病毒特征。该预设个数可以为5,在得到的多个样本程序包中,若为病毒程序包的数量超过5个,则确定待检测的程序特征为病毒特征,即待检测程序为带病毒的程序。

步骤s704,若确定的病毒程序包的个数不超过预设个数,则确定待检测的程序特征为疑似病毒特征。

例如,在得到的多个样本程序包中,若为病毒程序包的数量大于0且不大于5个,则确定待检测的程序特征为疑似病毒特征,即待检测程序可能为带病毒的程序。

通过上述实施例,结合根据待检测程序的各个程序特征得到的样本程序包,并判断样本程序包的程序特征是否为病毒特征或者疑似病毒特征, 从而可以实现对程序特征的准确识别。

需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。

实施例2

根据本发明实施例,还提供了一种用于实施上述程序特征的检测方法的程序特征的检测装置,如图8所示,该装置包括:获取单元30、查询单元40以及确定单元50。

获取单元30用于获取输入的待检测的程序特征和程序特征所属的特征类型。

查询单元40用于按照特征类型从数据库中查询具有程序特征的样本程序包的安全指示信息,其中,安全指示信息用于指示样本程序包的安全特性。

确定单元50用于根据样本程序包的安全指示信息确定待检测的程序特征是否为病毒特征。

采用本发明上述实施例,在获取单元获取输入的待检测的程序特征和 程序特征所属的特征类型之后,查询单元按照特征类型从数据库中查询具有程序特征的样本程序包的安全指示信息(安全指示信息用于指示样本程序包的安全特性),确定单元根据得到的样本程序包的安全指示信息确定待检测的程序特征是否为病毒特征,与相关技术中使用程序的签名信息进行病毒检测的方法相比,本申请的方案可以将需要检测程序的各类程序特征与海量数据库(数据库中存储有实时采集到的各类应用市场的程序应用的特征,如google应用市场、安卓市场、机锋市场等)中的样本程序包进行对比,以确定待检测的程序特征是否为病毒特征,从而解决了相关技术中不能对安卓软件的程序特征进行准确识别的技术问题,实现了对安卓软件的程序特征是否为病毒特征或者安全特征的准确判断,同时还能通过对程序特征的识别判断出待检测程序是否为包括病毒或木马的恶意软件。

其中,待检测的程序特征可以为在检测安卓包时无法确定是否为病毒特征的特征,将这些特征提取出来,使用上述方法进行校验,可以准确验证该特征是否为病毒特征,并将确定结果用特征id标识,如安全特征用0标识,疑似病毒特征用1标识,病毒特征用2标识。

在检测出该特征为病毒特征的情况下,将其保存入病毒查杀应用的病毒库中,从而在使用病毒查杀应用查杀程序包的病毒时,可以更准确地检测程序包是否为病毒程序包。

需要说明的是,为了提高检测的全面性和准确性,本申请的检测装置还包括如图9所示的提取单元60,用于在按照特征类型从数据库中查询具有程序特征的程序碎片之前,从收集到的源程序包中提取属于多个特征类型的程序碎片;保存单元70,用于将提取到的程序碎片按照程序碎片所属的特征类型,保存入数据库,并以字典分词的方式建立数据库的索引。

图9中还示出了获取单元30、查询单元40以及确定单元50,上述的多个特征类型包括下述至少之二:程序包名、程序证书、程序的数据容量大小、程序的版本、程序所属的类以及程序的常量字符串。

具体地,可以通过官方合作渠道,实时收集通过官方渠道(如google 应用市场、安卓市场、机锋市场等)发布的各种安卓程序包;由于安卓系统的开放性,一些用户可以自行编写和发布安卓程序包,因此,还可以通过爬虫技术实时收集各类用户在互联网发布的安卓程序包。然后利用解包技术,对各种安卓包进行逆向工程分析,提取里面的apk文件结构、classes.dex文件和mainfeset.xml文件。

需要说明的是,安卓程序包(即apk文件)是用专业软件eclipse编译生成的文件包,上述的解包技术即利用反编译软件对apk文件的内容进行反编译的技术,具体可以通过axmlprinter2工具软件等反编译软件实现;通过解包技术得到classes.dex文件和mainfeset.xml文件等即上述的属于多个特征类型的程序碎片。

可选地,该方案也可以应用于其他操作系统的程序包,如ios程序包。

需要进一步说明的是,apk文件的实质是一个zip压缩包,apk文件结构是指解压得到的apk文件组成架构,其主要包括mainfeset.xml文件、classes.dex文件、manifest文件、meta-inf文件、res目录、resource.arsc文件(即属于多个特征类型的程序碎片)等。

在得到程序碎片之后,即可根据程序碎片确定其对应的包名、证书、大小、版本、类(主要指源代码的数据结构)、字符串(即常量字符串,如包括一个或多个字符的字符串)等多种维度特征(即上述实施例中的特征类型)。并将上述得到的各个程序碎片及其包括的多种维度特征的特征数据写入特征数据库。这样,检索服务器即可从特征数据库获取各个类型的程序碎片及其特征数据,并将同一类型的程序碎片及其特征数据打包至同一个文件中。然后将得到的各个文件存储数据库中,并以字典分词的方式建立数据库的索引。该数据库可以是如图1所示的服务器集群20上的分布式数据库。

需要说明的是,检索服务器可以实时获取特征数据库中更新的数据(即增量的特征),并对服务器集群上的文件进行及时更新和替换,在数据库中,为了标识新增的数据,可以通过时间戳来区分每天新增的数据。

通过上述实施例,可以实时收集已发布的各类安卓源程序,即相当于提供了相关的海量数据,并提取收集到的安卓源程序的多种维度特征,包括包名、证书、大小、版本、类、字符串等多种维度,这样,在进行病毒检测时,即可基于海量数据进行特征维度搜索,从而可以提高病毒检测的准确率。

如图10所示,上述实施例中的查询单元40可以包括:查询模块401,用于按照特征类型从数据库中查询具有程序特征的程序碎片;拼接模块402,用于将查找到的程序碎片中,属于同一程序包的程序碎片进行拼接,得到样本程序包;读取模块403,用于读取查找到的样本程序包的安全指示信息。查询模块401包括:查询子模块4011,用于利用特征类型和索引,查询数据库中具有程序特征的程序碎片。

分析人员根据需要分析的不同特征类型,在浏览器上面进行元特征(即待检测程序的程序特征)提交,同时可以对元特征进行逻辑上面的与或操作。如以包名、证书、大小、版本、类、字符串、代码块为特征类型进行元特征(即具体的程序特征,如具体的证书值、版本值)的提交。在通过web浏览器把进行逻辑操作过后的元特征数据通过post的方式提交至虚拟特征cgi之后,cgi接口端的设备对特征类型进行适配,检查分析人员提交的检索条件是否符合检索规则。如果符合检索规则,则对检索服务器发起检索请求,否则对该请求进行丢弃并且返回不符合检索规则的提示。

检索服务器接收到cgi接口提交的请求后,会对提交上来的元数据进行解释,如对分析人员提交的检索条件进行解释,按照不同的类型和逻辑关系进行数据组合,生成满足搜索语法的语句,对存储集群发起数据检索。若分析人员提交的检索条件是需要检索满足“包名”和“证书”条件的程序碎片,则根据该检索条件生成满足搜索语法的语句,以进行查询。如根据待检测程序的程序特征从数据库中查询对应的程序碎片,即利用特征类型和索引,查询数据库中具有相同程序特征的程序碎片,并返回查询到的 程序碎片。

cgi接口端的设备根据样本程序包从服务器端获取对应于该样本程序包的各个维度的信息(也即安全指示信息),并将各个维度的信息进行打包并发送至检测终端(即上述分析人员使用的具有web服务器的电脑终端)。从而可以根据样本程序包(样本程序包的数量可以为1个,也可以为多个)的各个维度的信息(也即安全指示信息)确定待检测程序的安全性。如分析人员通过浏览器上面的安全指示信息进行对应的分析,判断出待检测程序的程序特征是否为病毒特征或者安全特征,以确定待检测程序是否为病毒或木马。

通过上述实施例,突破了以往的单数据杀包可能导致的误杀漏杀;结合系统服务的多维度数据,对安卓包中各个维度的特征类型,进行快速检索和分析,依赖后台存储的海量数据,多安卓包数据、多维度数据去分析该安卓包的安全特性。同时提高了分析的效率,有效做到对安卓程序包病毒性特征更精确的检测。

在一个可选的实施例中,在样本程序包为一个的情况下,如图11所示,确定单元50可以包括:第一确定模块501,用于若安全指示信息指示样本程序包为病毒程序包,则确定待检测的程序特征为疑似病毒特征;第二确定模块502,用于若安全指示信息指示样本程序包是安全程序包,则确定待检测的程序特征为安全特征。

在另一个可选的实施例中,在样本程序包为多个的情况下,如图12所示,确定单元50可以包括:第三确定模块503,用于基于各个样本程序包的安全指示信息确定样本程序包为病毒程序包或者为安全程序包;第四确定模块504,用于若确定多个样本程序包全部为安全程序包,则确定待检测的程序特征为安全特征;第五确定模块505,用于若确定的病毒程序包的个数超过预设个数,则确定待检测的程序特征为病毒特征,该预设个数可以为5,在得到的多个样本程序包中,若为病毒程序包的数量超过5个,则确定待检测的程序特征为病毒特征,即待检测程序为带病毒的程序; 第六确定模块506,用于若确定的病毒程序包的个数不超过预设个数,则确定待检测的程序特征为疑似病毒特征,例如,在得到的多个样本程序包中,若为病毒程序包的数量大于0且不大于5个,则确定待检测的程序特征为疑似病毒特征,即待检测程序可能为带病毒的程序。

可选地,上述的安全指示信息包括多个安全维度信息(如“安全级别”、“老白名单”、“新白名单”、“病毒id”等信息),其中,第三确定模块包括:获取子模块,用于获取样本程序包的安全指示信息的每个安全维度信息的属性值和每个安全维度信息的权重;判断子模块,用于判断每个安全维度信息的属性值和权重的乘积之和是否超过预设阈值;第一确定子模块,用于若超过预设阈值,则确定样本程序包为安全程序包;第二确定子模块,用于若未超过预设阈值,则确定样本程序包为病毒程序包。

具体地,可以根据历史信息为每一个安全维度信息设置一个权重比,在得到每个安全维度信息的属性值之后,将其与对应的权重值相乘得到其权重,再将每个安全维度信息的权重相加,即可根据得到的和值和预设阈值判断样本程序包是否为病毒程序包。

通过上述实施例,结合根据待检测程序的各个程序特征得到的样本程序包,并判断样本程序包的程序特征是否为病毒特征或者疑似病毒特征,从而可以实现对程序特征的准确识别。

本实施例中所提供的各个模块与方法实施例对应步骤所提供的使用方法相同、应用场景也可以相同。当然,需要注意的是,上述模块涉及的方案可以不限于上述实施例中的内容和场景,且上述模块可以运行在计算机终端或移动终端,可以通过软件或硬件实现。

实施例3

根据本发明实施例,还提供了一种用于实施上述程序特征的检测方法的终端,上述实施例中的程序特征的检测装置可以设置在该终端上。

如图13所示,该终端包括:一个或多个(图中仅示出一个)处理器 901、存储器902、以及传输装置903,如图13所示,该终端还可以包括输入输出设备904。

其中,存储器902可用于存储软件程序以及模块,如本发明实施例中的程序特征的检测方法和装置对应的程序指令/模块,处理器901通过运行存储在存储器902内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的程序特征的检测方法。存储器902可包括高速随机存储器,还可以包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器902可进一步包括相对于处理器901远程设置的存储器,这些远程存储器可以通过网络连接至终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

上述的传输装置903用于经由一个网络接收或者发送数据,还可以用于处理器与存储器之间的数据传输。上述的网络具体实例可包括有线网络及无线网络。在一个实例中,传输装置903包括一个网络适配器(networkinterfacecontroller,nic),其可通过网线与其他网络设备与路由器相连从而可与互联网或局域网进行通讯。在一个实例中,传输装置903为射频(radiofrequency,rf)模块,其用于通过无线方式与互联网进行通讯。

其中,具体地,存储器902用于存储应用程序。

处理器901可以通过传输装置903调用存储器902存储的应用程序,以执行下述步骤:获取输入的待检测的程序特征和程序特征所属的特征类型;按照特征类型从数据库中查询具有程序特征的样本程序包的安全指示信息,其中,安全指示信息用于指示样本程序包的安全特性;根据样本程序包的安全指示信息确定待检测的程序特征是否为病毒特征。

采用本发明上述实施例,在获取输入的待检测的程序特征和程序特征所属的特征类型之后,按照特征类型从数据库中查询具有程序特征的样本程序包的安全指示信息(安全指示信息用于指示样本程序包的安全特性),并根据得到的样本程序包的安全指示信息确定待检测的程序特征是否为 病毒特征,与相关技术中使用程序的签名信息进行病毒检测的方法相比,本申请的方案可以将需要检测程序的各类程序特征与海量数据库(数据库中存储有实时采集到的各类应用市场的程序应用的特征,如google应用市场、安卓市场、机锋市场等)中的样本程序包进行对比,以确定待检测的程序特征是否为病毒特征,从而解决了相关技术中不能对安卓软件的程序特征进行准确识别的技术问题,实现了对安卓软件的程序特征是否为病毒特征或者安全特征的准确判断,同时还能通过对程序特征的识别判断出待检测程序是否为包括病毒或木马的恶意软件。

其中,待检测的程序特征可以为在检测安卓包时无法确定是否为病毒特征的特征,将这些特征提取出来,使用上述方法进行校验,可以准确验证该特征是否为病毒特征,并将确定结果用特征id标识,如安全特征用0标识,疑似病毒特征用1标识,病毒特征用2标识。

需要说明的是,为了提高检测的全面性和准确性,还可以在按照特征类型从数据库中查询具有程序特征的程序碎片之前,从收集到的源程序包中提取属于多个特征类型的程序碎片;将提取到的程序碎片按照程序碎片所属的特征类型,保存入数据库,并以字典分词的方式建立数据库的索引。从而通过数据库进行检测。

上述实施例中的终端可以为台式计算机或移动终端,通过移动终端的屏幕输入的显示指令,可以为用户操作终端的屏幕输入的触摸指令,如长按指令、滑动指令等,本申请对显示指令的形式不作限定。

可选地,本实施例中的具体示例可以参考上述实施例中所描述的示例,本实施例在此不再赘述。

需要进一步说明的是,寄存区域为系统的内存和系统处理器中的寄存器。

本领域普通技术人员可以理解,图13所示的结构仅为示意,终端可以是台式机、笔记本、平板电脑、掌上电脑以及移动互联网设备(mobile internetdevices,mid)、pad等终端设备。图13其并不对上述电子装置的结构造成限定。例如,终端还可包括比图13中所示更多或者更少的组件(如网络接口、显示装置等),或者具有与图13所示不同的配置。

本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令终端设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(read-onlymemory,rom)、随机存取器(randomaccessmemory,ram)、磁盘或光盘等。

实施例4

本发明的实施例还提供了一种存储介质。可选地,在本实施例中,上述存储介质可以用于执行程序特征的检测方法。

可选地,在本实施例中,上述存储介质可以位于上述实施例所示的网络中的多个网络设备中的至少一个网络设备上。

可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:获取输入的待检测的程序特征和程序特征所属的特征类型;按照特征类型从数据库中查询具有程序特征的样本程序包的安全指示信息,其中,安全指示信息用于指示样本程序包的安全特性;根据样本程序包的安全指示信息确定待检测的程序特征是否为病毒特征。

采用本发明上述实施例,在获取输入的待检测的程序特征和程序特征所属的特征类型之后,按照特征类型从数据库中查询具有程序特征的样本程序包的安全指示信息(安全指示信息用于指示样本程序包的安全特性),并根据得到的样本程序包的安全指示信息确定待检测的程序特征是否为病毒特征,与相关技术中使用程序的签名信息进行病毒检测的方法相比,本申请的方案可以将需要检测程序的各类程序特征与海量数据库(数据库中存储有实时采集到的各类应用市场的程序应用的特征,如google应用市场、安卓市场、机锋市场等)中的样本程序包进行对比,以确定待检测的 程序特征是否为病毒特征,从而解决了相关技术中不能对安卓软件的程序特征进行准确识别的技术问题,实现了对安卓软件的程序特征是否为病毒特征或者安全特征的准确判断,同时还能通过对程序特征的识别判断出待检测程序是否为包括病毒或木马的恶意软件。

其中,待检测的程序特征可以为在检测安卓包时无法确定是否为病毒特征的特征,将这些特征提取出来,使用上述方法进行校验,可以准确验证该特征是否为病毒特征,并将确定结果用特征id标识,如安全特征用0标识,疑似病毒特征用1标识,病毒特征用2标识。

需要说明的是,为了提高检测的全面性和准确性,还可以在按照特征类型从数据库中查询具有程序特征的程序碎片之前,从收集到的源程序包中提取属于多个特征类型的程序碎片;将提取到的程序碎片按照程序碎片所属的特征类型,保存入数据库,并以字典分词的方式建立数据库的索引。从而通过数据库进行检测。

上述实施例中的终端可以为台式计算机或移动终端,通过移动终端的屏幕输入的显示指令,可以为用户操作终端的屏幕输入的触摸指令,如长按指令、滑动指令等,本申请对显示指令的形式不作限定。

可选地,本实施例中的具体示例可以参考上述实施例中所描述的示例,本实施例在此不再赘述。

需要进一步说明的是,寄存区域为系统的内存和系统处理器中的寄存器。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

上述实施例中的集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在上述计算机可读取的存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得一台或多台计算 机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。

在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。

在本申请所提供的几个实施例中,应该理解到,所揭露的客户端,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1