apk病毒特征库构建方法、装置及apk病毒检测系统转让专利

申请号 : CN201410086359.5

文献号 : CN104915596B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 袁国庆苏海峰舒鑫

申请人 : 可牛网络技术(北京)有限公司

摘要 :

本发明实施例公开了一种apk病毒特征库构建方法、装置及apk病毒检测系统,该方法包括:获得给定样本集,样本集由N个正常apk文件样本和N个病毒apk文件样本组成;针对给定样本集中任意样本,根据预设的M条特征,分别得到该样本的M个特征值;对M条特征的特征值进行组合,根据排列结果将给定样本集划分为2M个样本子集;对于任意样本子集i(i=1,…,2M),判断该样本子集是否满足:子集样本总数Ci总与给定样本集样本总数的比值大于预设的第一阈值且病毒样本总数Ci病毒与Ci总的比值大于预设的第二阈值,如果是,则将该样本子集i所对应的M条特征的特征值的组合确定为病毒特征;生成包含多条病毒特征的apk病毒特征库,apk病毒特征库用于对apk文件进行检测。

权利要求 :

1.一种apk病毒特征库构建方法,其特征在于,该方法包括:获得给定样本集,所述样本集由N个正常apk文件样本和N个病毒apk文件样本组成,其中,所述apk文件为安卓系统应用程序安装包文件,N>1;

针对所述给定样本集中的任意样本,根据预设的M条特征,分别得到该样本的M个特征值,其中,每条特征分别对应2种特征值;

对M条特征的特征值进行组合,根据排列结果将给定样本集划分为2M个样本子集,具体为:利用二叉树算法,生成关于所述样本集的二叉树;该二叉树以所述给定样本集作为根节M点,该根节点对应的样本数量为2N,对该根节点进行M次决策,形成叶子节点数为2、深度为M+1的二叉树,其中,每次决策分别以第j(j=1,2,3,…,M)条特征的特征值作为决策判别条件;

对于任意样本子集i(i=1,2,3,…,2M),判断该样本子集是否满足:该子集的样本总数Ci总与所述给定样本集的样本总数2N的比值大于预设的第一阈值、且病毒样本总数Ci病毒与Ci总的比值大于预设的第二阈值,如果是,则将该样本子集i所对应的M条特征的特征值的组合确定为病毒特征;

生成包含多条病毒特征的apk病毒特征库,所述apk病毒特征库用于对apk文件进行检测。

2.根据权利要求1所述的方法,其特征在于,所述针对所述给定样本集中的任意样本,根据预设的M条特征,分别得到该样本的M个特征值,具体为:针对所述给定样本集中的任意样本,根据预设的M条特征,分别提取该样本的M条特征;

对所提取到的特征进行处理,得到给定样本集中各个样本的M个特征值。

3.根据权利要求2所述的方法,其特征在于,所述对所提取到的特征进行处理,得到给定样本集中各个样本的M个特征值,具体为:对所提取到的特征进行数值处理,得到给定样本集中各个样本的M个特征值,其中,特征值是整型数值。

4.根据权利要求1所述的方法,其特征在于,所述对apk文件进行检测,具体包括:获得目标apk文件;

根据所述apk病毒特征库,对所述目标apk文件进行检测;

如果所述目标apk文件中的子文件中包含所述apk病毒特征库中的任意一条病毒特征,则确定所述目标apk文件含有病毒。

5.根据权利要求4所述的方法,其特征在于,如果所述目标apk文件含有病毒,还包括:根据预设的M条特征,提取所述目标apk文件的M条特征;

对所提取的目标apk文件的M条特征进行处理,得到所述目标apk文件的M个特征值;

对所得到的目标apk文件的M个特征值进行保存。

6.根据权利要求4所述的方法,其特征在于,所述对所述目标apk文件进行检测,具体为:对所述目标apk文件中以下类型的子文件进行检测:classes .dex、androidmanifest.xml和manifest.mf。

7.根据权利要求1所述的方法,其特征在于,所述M条预设特征为给定样本集中2N个apk文件样本的通用检测特征。

8.根据权利要求1所述的方法,其特征在于,所述预设的第一阈值为数值5%。

9.根据权利要求1所述的方法,其特征在于,所述预设的第二阈值为数值95%。

10.一种apk病毒特征库构建装置,其特征在于,该装置包括:样本集获得模块,用于获得给定样本集,所述样本集由N个正常apk文件样本和N个病毒apk文件样本组成,其中,所述apk文件为安卓系统应用程序安装包文件,N>1;

特征值提取模块,用于针对所述给定样本集中的任意样本,根据预设的M条特征,分别得到该样本的M个特征值,其中,每条特征分别对应2种特征值;

样本子集划分模块,用于对M条特征的特征值进行组合,根据排列结果将给定样本集划分为2M个样本子集,具体用于:利用二叉树算法,生成关于所述样本集的二叉树;该二叉树以所述给定样本集作为根节点,该根节点对应的样本数量为2N,对该根节点进行M次决策,形成叶子节点数为2M、深度为M+1的二叉树,其中,每次决策分别以第j(j=1,2,3,…,M)条特征的特征值作为决策判别条件;

判断模块,用于对于任意样本子集i(i=1,2,3,…,2M),判断该样本子集是否满足:该子集的样本总数Ci总与所述给定样本集的样本总数2N的比值大于预设的第一阈值、且病毒样本总数Ci病毒与Ci总的比值大于预设的第二阈值,如果是,则将该样本子集i所对应的M条特征的特征值的组合确定为病毒特征;

病毒特征库生成模块,用于生成包含多条病毒特征的apk病毒特征库,所述apk病毒特征库用于对apk文件进行检测。

11.根据权利要求10所述的装置,所述特征值提取模块,具体用于:针对所述给定样本集中的任意样本,根据预设的M条特征,分别提取该样本的M条特征;

对所提取到的特征进行处理,得到给定样本集中各个样本的M个特征值。

12.根据权利要求11所述的装置,所述特征值提取模块对所提取到的特征进行处理,得到给定样本集中各个样本的M个特征值,具体为:对所提取到的特征进行数值处理,得到给定样本集中各个样本的M个特征值,其中,特征值是整型数值。

13.根据权利要求10所述的装置,其特征在于,所述M条预设特征为给定样本集中2N个apk文件样本的通用检测特征。

14.根据权利要求10所述的装置,其特征在于,所述预设的第一阈值为数值5%。

15.根据权利要求10所述的装置,其特征在于,所述预设的第二阈值为数值95%。

16.一种apk病毒检测系统,其特征在于,该系统包括如权利要求10-13任意一项所述的apk病毒特征库构建装置和apk病毒检测装置,其中,该apk病毒检测装置包括:文件获取模块,用于获得目标apk文件;

文件检测模块,用于根据所述apk病毒特征库构建装置构建的apk病毒特征库,对所述目标apk文件进行检测;

文件识别模块,用于当所述目标apk文件中的子文件中包含所述apk病毒特征库中的任意一条病毒特征时,确定所述目标apk文件含有病毒。

17.根据权利要求16所述的系统,其特征在于,还包括:病毒特征保存模块,用于当所述目标apk文件含有病毒时,根据预设的M条特征,提取所述目标apk文件的M条特征;

对所提取的目标apk文件的M条特征进行处理,得到所述目标apk文件的M个特征值;

对所得到的目标apk文件的M个特征值进行保存。

18.根据权利要求16所述的系统,其特征在于,所述文件检测模块,具体用于:对所述目标apk文件中以下类型的子文件进行检测:classes .dex、androidmanifest.xml和manifest.mf。

说明书 :

apk病毒特征库构建方法、装置及apk病毒检测系统

技术领域

[0001] 本发明涉及信息安全应用技术领域,特别涉及一种apk病毒特征库构建方法、装置及apk病毒检测系统。

背景技术

[0002] 安卓操作系统,是由Google公司和开放手机联盟开发的一种开源操作系统,主要应用于智能移动终端(如智能手机、平板电脑等等)。系统的开源性使安卓系统受到了众多手机厂商和用户的青睐,也让更多的开发者加入安卓系统应用的开发行列。
[0003] 开发者对安卓系统应用程序的代码进行编译处理,然后将编译好的源代码打包成为一个能被安卓操作系统识别、安装、并运行的文件。这种文件的格式就是apk(android application package,安卓应用程序安装包)格式。用户将apk格式的文件直接传到安卓模拟器或安卓手机等安卓设备上执行,即可完成安装。
[0004] 然而,同样是因为系统的开源性,病毒作者可以将病毒代码直接植入安卓系统应用程序的源代码中,达到扣话费、走流量、窃取用户隐私等目的。例如,一些病毒制造者对安卓系统应用程序进行反编译,获得相应的程序代码,并将病毒代码植入原本安全的程序代码中,之后将含有病毒代码的程序代码重新进行打包处理,最后,通过各种渠道将携带病毒代码的apk发送给手机用户。
[0005] 现有技术中,通过hash算法提取大量病毒apk文件的hash值,构建包含多个hash值的病毒特征库,对目标apk文件进行检测,如果目标apk文件的hash值与病毒特征库中的任意一个hash值相同,就确定该目标apk文件含有病毒。
[0006] 然而,病毒作者修改含有病毒的目标apk文件的一个字符,修改后的目标apk文件的hash值就会改变,这样也就绕过了现有技术方法的检测。

发明内容

[0007] 为达到上述目的,本发明实施例公开了一种apk病毒特征库构建方法、装置及apk病毒检测系统,具体技术方案如下:
[0008] 一种apk病毒特征库构建方法,包括:
[0009] 获得给定样本集,所述样本集由N个正常apk文件样本和N个病毒apk文件样本组成,其中,所述apk文件为安卓系统应用程序安装包文件,N>1;
[0010] 针对所述给定样本集中的任意样本,根据预设的M条特征,分别得到该样本的M个特征值,其中,每条特征分别对应2种特征值;
[0011] 对M条特征的特征值进行组合,根据排列结果将给定样本集划分为2M个样本子集;
[0012] 对于任意样本子集i(i=1,2,3,…,2M),判断该样本子集是否满足:
[0013] 该子集的样本总数Ci总与所述给定样本集的样本总数2N的比值大于预设的第一阈值、且病毒样本总数Ci病毒与Ci总的比值大于预设的第二阈值,
[0014] 如果是,则将该样本子集i所对应的M条特征的特征值的组合确定为病毒特征;
[0015] 生成包含多条病毒特征的apk病毒特征库,所述apk病毒特征库用于对apk文件进行检测。
[0016] 一种apk病毒特征库构建装置,包括:
[0017] 样本集获得模块,用于获得给定样本集,所述样本集由N个正常apk文件样本和N个病毒apk文件样本组成,其中,所述apk文件为安卓系统应用程序安装包文件,N>1;
[0018] 特征值提取模块,用于针对所述给定样本集中的任意样本,根据预设的M条特征,分别得到该样本的M个特征值,其中,每条特征分别对应2种特征值;
[0019] 样本子集划分模块,用于对M条特征的特征值进行组合,根据排列结果将给定样本集划分为2M个样本子集;
[0020] 判断模块,用于对于任意样本子集i(i=1,2,3,…,2M),判断该样本子集是否满足:
[0021] 该子集的样本总数Ci总与所述给定样本集的样本总数2N的比值大于预设的第一阈值、且病毒样本总数Ci病毒与Ci总的比值大于预设的第二阈值,
[0022] 如果是,则将该样本子集i所对应的M条特征的特征值的组合确定为病毒特征;
[0023] 病毒特征库生成模块,用于生成包含多条病毒特征的apk病毒特征库,所述apk病毒特征库用于对apk文件进行检测。
[0024] 一种apk病毒检测系统,包括:
[0025] 文件获取模块,用于获得目标apk文件;
[0026] 文件检测模块,用于根据所述apk病毒特征库构建装置构建的apk病毒特征库,对所述目标apk文件进行检测;
[0027] 文件识别模块,用于当所述目标apk文件中的子文件中包含所述apk病毒特征库中的任意一条病毒特征时,确定所述目标apk文件含有病毒。
[0028] 应用上述技术方案,本发明实施例通过将大量apk文件样本的多个特征进行排列组合,得到多条病毒特征,构建包含多条病毒特征的apk病毒特征库,用于对目标apk文件进行检测。本发明实施例中,含有病毒的目标apk文件的字符被修改后,目标apk文件的多个特征不会完全改变,这样也就不能绕过本发明实施例的检测。

附图说明

[0029] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0030] 图1为本发明实施例提供的一种apk病毒特征库构建方法的流程图;
[0031] 图2为本发明实施例提供的一种利用二叉树算法划分样本子集的示意图;
[0032] 图3为本发明实施例提供的一种apk病毒检测方法的流程图;
[0033] 图4为本发明实施例提供的另一种apk病毒检测方法的流程图;
[0034] 图5为本发明实施例提供的一种apk病毒特征库构建装置的结构示意图;
[0035] 图6为本发明实施例提供的一种apk病毒检测系统的结构示意图;
[0036] 图7为本发明实施例提供的另一种apk病毒检测系统的结构示意图。

具体实施方式

[0037] 首先对本发明实施例所提供的一种apk病毒特征库构建方法进行说明,该方法可以包括以下步骤:
[0038] 获得给定样本集,所述样本集由N个正常apk文件样本和N个病毒apk文件样本组成,其中,所述apk文件为安卓系统应用程序安装包文件,N>1;
[0039] 针对所述给定样本集中的任意样本,根据预设的M条特征,分别得到该样本的M个特征值,其中,每条特征分别对应2种特征值;
[0040] 对M条特征的特征值进行组合,根据排列结果将给定样本集划分为2M个样本子集;
[0041] 对于任意样本子集i(i=1,2,3,…,2M),判断该样本子集是否满足:
[0042] 该子集的样本总数Ci总与所述给定样本集的样本总数2N的比值大于预设的第一阈值、且病毒样本总数Ci病毒与Ci总的比值大于预设的第二阈值,
[0043] 如果是,则将该样本子集i所对应的M条特征的特征值的组合确定为病毒特征;
[0044] 生成包含多条病毒特征的apk病毒特征库,所述apk病毒特征库用于对apk文件进行检测。
[0045] 应用上述技术方案,本发明实施例通过将大量apk文件样本的多个特征进行排列组合,得到多条病毒特征,构建包含多条病毒特征的apk病毒特征库,用于对目标apk文件进行检测。在实际的检测过程中,当含有病毒的目标apk文件的字符被修改后,目标apk文件的多个特征不会完全改变,利用本发明实施例构建的apk病毒特征库对目标apk文件进行检测,仍然能够识别目标apk文件的病毒特性。
[0046] 为了使本领域技术人员更好地理解本发明中的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行详细地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员所获得的所有其他实施例,都应当属于本发明保护的范围。
[0047] 图1所示,为本发明实施例所提供的一种apk病毒特征库构建方法的流程图,该方法可以包括以下步骤:
[0048] S101,获得给定样本集,所述样本集由N个正常apk文件样本和N个病毒apk文件样本组成,其中,所述apk文件为安卓系统应用程序安装包文件,N>1。
[0049] 在本发明实施例中,正常apk文件样本可以是从该apk文件的官方网站上获取的,它是不含有病毒的、安全的文件,例如,从腾讯官网上下载的手机qq安装文件,这个安装就是不含有病毒的、安全的apk文件;病毒apk文件样本是含有病毒的、或者存在安全隐患的文件,它一旦在用户安卓设备上运行,就会危及用户的财产及隐私。例如病毒apk在用户的安卓设备上运行之后,这个apk程序会发生扣话费、走流量,或窃取用户隐私等行为。
[0050] 可以理解的是,选取的apk文件样本的数量越多,获取的病毒特征对病毒apk文件的检测准确率越高,本发明实施例通过选取海量的病毒apk文件样本和相同数量的正常apk文件样本,一方面在数量上提供了可靠保障;另一方面,以相同数量的正常apk文件作为对比文件,增加了对病毒特征的辨识度。
[0051] S102,针对所述给定样本集中的任意样本,根据预设的M条特征,分别得到该样本的M个特征值,其中,每条特征分别对应2种特征值。
[0052] 在本发明实施例中,预设的M条特征可以是给定样本集中2N个apk文件样本的通用检测特征,例如预设的特征可以是“是否包含广告sdk(software development kit,软件开发工具包)功能”、
[0053] “是否包含录音功能”、
[0054] “包含广告sdk的数量”、
[0055] “包含的支付sdk数量”、
[0056] “是否包含后台运行特征”、
[0057] “是否包含删除短信功能”、
[0058] “是否包含开机启动功能”、
[0059] “apk包名是否是风险包名”、
[0060] “是否包含卸载应用的功能”、
[0061] “是否包含安装新应用的功能”、
[0062] “是否包含删除联系人的功能”、
[0063] “是否包含获取root权限的功能”、
[0064] “是否包含添加新联系人的功能”、
[0065] “是否包含删除浏览器书签功能”、
[0066] “是否包含添加浏览器书签功能”、
[0067] “是否包含自动下载文件的功能”、
[0068] “是否包含自动发送短信的功能”、
[0069] “apk文件监听的系统事件的数量”、
[0070] “是否包含动态加载jar包的功能”、
[0071] “是否包含关闭其他应用的功能”、
[0072] “调用短信发送相关函数的数量”、
[0073] “通过反射方式调用函数的数量”、
[0074] “apk文件中是否包含子apk文件”、
[0075] “apk文件是否监控网络改变事件”
[0076] “apk文件是否申请有设备管理权限”、
[0077] “是否包含动态加载dex文件的功能”、
[0078] “是否包含获取安装应用列表的功能”、
[0079] “apk解压后的asset目录下的文件数量”、
[0080] “apk文件签名issue是否包含风险字符串”、
[0081] “apk文件是否有在其他应用中弹出窗口的权限”、
[0082] “是否包含使用编译器默认的自带图标的功能”、
[0083] “apk解压特定目录下文件后缀名与文件实际格式不符的文件数量”等32条特征。
[0084] 利用上述预设特征检测得到的特征值形式都是两种:例如利用“是否包含删除浏览器书签功能”这条预设特征对apk样本文件进行检测时,得到的特征值可以为“apk样本文件包含删除浏览器书签的功能”或“apk样本文件不包含删除浏览器书签的功能”两种形式;
[0085] 例如利用“包含广告sdk的数量”这条预设特征进行检测时,得到的特征值可以为“包含广告sdk的数量大于预设值”或“包含广告sdk的数量不大于预设值”两种形式;本发明实施例对于特征值的具体形式并不限制。
[0086] 可以理解的是,选取的检测特征越多,获取的病毒特征对病毒apk文件的检测准确率越高,本发明实施例对此并不限制,实际应用中,可以根据具体的需求进行设置。
[0087] 在本发明一个具体实施方式中,针对所述给定样本集中的任意样本,根据预设的M条特征,分别提取该样本的M条特征;对所提取到的特征数值进行处理,得到给定样本集中各个样本的M个特征值。
[0088] 例如,根据“是否包含动态加载jar包的功能”、“是否包含关闭其他应用的功能”、“调用短信发送相关函数的数量”、“通过反射方式调用函数的数量”、“apk文件中是否包含子apk文件”、“apk文件是否监控网络改变事件”等6条特征,提取给定样本集中的一个样本的6条特征,提取到的6条特征分别是“包含动态加载jar包的功能”、“包含关闭其他应用的功能”、“有6个调用短信发送相关函数的函数”、“有8个通过反射方式调用函数的函数”、“apk文件中不包含子apk文件”、“apk文件监控网络改变事件”。
[0089] 对所提取的6条特征进行数值处理,将“包含关闭其他应用的功能”用1表示;将“包含动态加载jar包的功能”用1表示;将“apk文件中不包含子apk文件”用0表示;将“apk文件监控网络改变事件”用1表示;将有6个调用短信发送相关函数的函数”用6表示;将“有8个通过反射方式调用函数的函数”用8表示。
[0090] S103,对M条特征的特征值进行组合,根据排列结果将给定样本集划分为2M个样本子集。
[0091] 在本发明实施例中,每个特征对应两种特征值,根据统计学中的组合算法,对于M条特征,就有2M种组合方式,从而将给定的样本集划分成2M个样本子集,例如,对于一个给定样本集,假定第一条特征是“是否包含动态加载jar包的功能”,对这条特征做数值处理后,“包含动态加载jar包的功能”对应特征值“1”、“不包含动态加载jar包的功能”对应特征值“0”,同理,第二条特征“是否包含关闭其他应用的功能”也对应“0”和“1”两种特征值,第三条特征“调用短信发送相关函数的数量”对应“≥6”和“<6”两种特征值,对这3条特征的特征值进行组合,就有23种组合方式,分别是{0、0、≥6}、{0、0、<6}、{0、1、≥6}、{0、1、<6}、{1、0、≥6}、{1、0、<6}、{1、1、≥6},及{1、1、<6},从而将给定样本集划分成了8个样本子集。
[0092] 在本发明实施例的一个具体实施方式中,本发明实施例利用二叉树算法,生成关于所述样本集的二叉树;该二叉树以所述给定样本集作为根节点,该根节点对应的样本数量为2N,对该根节点进行M次决策,形成叶子节点数为2M、深度为M+1的二叉树,其中,每次决策分别以第j(j=1,2,3,…,M)条特征的特征值作为决策判别条件。
[0093] 以图2为例进行说明,假设给定样本集中包含200个样本文件,特征1对应“0”和“1”两种特征值,特征2对应“>2”和“≤2”两种特征值,特征3对应“≥8”和“<8”两种特征值;以包含200个样本文件的给定样本集作为根节点,以特征1、特征2及特征3作为决策判别条件,对根节点进行3次决策;对根节点做第一次决策之后,得到2个第一级叶节点;对所得到的2个第一级叶节点做第二次决策,得到4个第二级叶节点;对所得到的4个第二级叶节点做第三次决策,得到8个叶子节点,所得到的8个叶子节点即为划分得到的样本子集。
[0094] 可以理解的是,特征1、特征2及特征3作为决策判别条件,在二叉树中出现的位置并不影响最终的决策结果,用户可以根据需要自行设置各特征在二叉树中出现的位置,本发明实施例对此不进行具体限制。
[0095] 需要说明的是,“二叉树”只是将给定样本集划分成样本子集的一种具体实现算法,不能对本发明构成限定。
[0096] 其中,用于决策判别条件的特征值可以是“apk样本文件包含删除浏览器书签的功能”或“apk样本文件不包含删除浏览器书签的功能”;还可以是“包含广告sdk的数量大于预设值”或“包含广告sdk的数量不大于预设值”等等,本发明实施例中,二叉树各层的决策判别条件不同,但是对于各层的具体决策判别条件不作限制,实际应用中,可以根据具体的场景来选择合适的决策判别条件。
[0097] S104,对于任意样本子集i(i=1,2,3,…,2M),判断该样本子集是否满足:
[0098] 该子集的样本总数Ci总与所述给定样本集的样本总数2N的比值大于预设的第一阈值、且病毒样本总数Ci病毒与Ci总的比值大于预设的第二阈值,如果是,则转到S105,否则转到S106;
[0099] 假设给定样本集的样本总数2N为20000,第i个样本子集的样本总数Ci总为2000,预设的第一阈值为5%,2000/20000的比值为10%,大于预设的第一阈值5%;该样本子集的病毒样本总数Ci病毒为1900,预设的第二阈值为95%,1900/2000的比值为96%,大于预设的第二阈值为95%;同时满足这两个条件时,转到S105,否则转到S106。
[0100] 需要说明的是,第一阈值的选择是为了选定的样本子集的样本总数占到给定样本集的样本总数一定的比例,使得选取的样本子集具有一定的代表性;可以理解的是,第一阈值的取值越高,选取的样本子集越具有代表性。第二阈值的选择是为了选定的样本子集中病毒样本总数占到该样本子集样本总数一定的比例,使得选取的样本子集具有一定的代表性;可以理解的是,第二阈值的取值越高,选取的样本子集越具有代表性。
[0101] 此外,需要说明的是,本发明实施例依据经验通常取第一阈值为5%,第二阈值为95%,给定样本集的样本总数2N的取值不做限制,实际应用当中,可以根据具体的情况进行设置。
[0102] S105,将该样本子集i所对应的M条特征的特征值的组合确定为病毒特征。
[0103] 以图2为例进行说明,假设第一阈值为20%,第二阈值为95%,特征1是“apk文件签名issue是否包含风险字符串”,特征2是“apk文件监听的系统事件的数量”、特征3是“apk解压特定目录下文件后缀名与文件实际格式不符的文件数量”,对叶子节点从左至右依次编号1,2,…,8,叶子节点6中含有59个病毒样本,叶子节点6中的样本总数与根节点中含有的样本总数的比值60/200高于第一阈值,叶子节点6中含有的病毒样本数与叶子节点6中的样本总数的比值59/60也高于第二阈值,于是确定将根节点划分到叶子节点6所需的决策判别条件,与这些决策判别条件所对应的特征分别是:“apk文件签名issue是否包含风险字符串”对应特征值“1”、“apk文件监听的系统事件的数量”对应特征值“>2”、“apk解压特定目录下文件后缀名与文件实际格式不符的文件数量”对应特征值“≥8”,这些特征组合成的病毒特征为“apk文件签名issue包含风险字符串”且“apk文件监听的系统事件的数量大于2”且“apk解压特定目录下文件后缀名与文件实际格式不符的文件数量大于等于8”。
[0104] 需要说明的是,本发明实施例仅以三条特征为例进行说明,在实际应用中,用户可以根据实际需求,自行设定特征的数量。
[0105] S106,舍弃该样本子集i。
[0106] S107,生成包含多条病毒特征的apk病毒特征库,所述apk病毒特征库用于对apk文件进行检测。
[0107] 本发明实施例对2M个样本子集进行逐个判别,将符合预设条件的样本子集所对应的M条特征的特征值的组合确定为病毒特征;将不符合预设条件的样本子集舍弃;处理完2M个样本子集之后,将符合预设条件的多个样本子集的多条病毒特征生成apk病毒特征库。例如,符合预设条件的样本子集有1000个,1000个样本子集对应1000条病毒特征,生成的apk病毒特征库中就包含1000条病毒特征。
[0108] 按照上述步骤,把给定样本集划分成的2M个样本子集逐个的进行筛选,将符合条件的样本子集从根节点起的决策判别条件组合病毒特征,从而生成包含多条病毒特征的apk病毒特征库,用与对apk文件的检测。
[0109] 当样本子集i不能同时满足该子集的样本总数Ci总与所述给定样本集的样本总数2N的比值大于预设的第一阈值,和病毒样本总数Ci病毒与Ci总的比值大于预设的第二阈值这两个条件时,则将该样本子集i舍弃。
[0110] 在本发明的一个实施例中,如图3所示,利用构建的apk病毒特征库对apk文件进行检测的具体步骤,可以包括:
[0111] S301,获得目标apk文件。
[0112] S302,根据apk病毒特征库,对所述目标apk文件进行检测。
[0113] 其中,apk病毒特征库的构建步骤已经在本发明的上一实施例中做了详细的描述,这里不再赘述。
[0114] S303,判断目标apk文件中的子文件中是否包含病毒特征库中的任意一条病毒特征,如果是,则转到S304,否则转到S305。
[0115] 其中,对所述目标apk文件进行检测,具体可以为:
[0116] 对所述目标apk文件中以下类型的子文件进行检测:classes.dex、androidmanifest.xml和manifest.mf。
[0117] S304,确定所述目标apk文件含有病毒。
[0118] 本发明实施例利用apk病毒特征库,对目标apk文件进行检测,只要目标apk文件中包含有apk病毒特征库中的任意一条特征,就确定这个目标apk文件是含有病毒的apk文件。
[0119] S305,确定所述目标apk文件不含有病毒。
[0120] 从上述实施例可以看出,本发明实施例通过将大量apk文件样本的多个特征进行排列组合,得到多条病毒特征,构建包含多条病毒特征的apk病毒特征库,用于对目标apk文件进行检测;由于本发明实施例构建的apk病毒特征库所包含的病毒特征是宽泛的病毒特征,不是针对某个样本或某个家族的病毒特征,病毒特征的产生是建立在大量样本的基础上,因此,在实际的检测过程中,当含有病毒的目标apk文件的字符被修改后,目标apk文件的多个特征不会完全改变,利用本发明实施例构建的apk病毒特征库对目标apk文件进行检测,仍然能够识别目标apk文件的病毒特性,从而提高了对变种病毒和病毒家族的识别率,并且能够检测新的未知样本。
[0121] 在本发明的另一个实施例中,如图4所示,在S304后增加S306、S307和S308,其中,[0122] S306,根据预设的M条特征,提取所述目标apk文件的M条特征;
[0123] S307,对所提取的目标apk文件的M条特征进行处理,得到所述目标apk文件的M个特征值;
[0124] S308,对所得到的目标apk文件的M个特征值进行保存。
[0125] 可以理解的是,将病毒文件的特征值进行保存,对于apk病毒特征库的构建有指导意义。
[0126] 相应于上面的方法实施例,本发明还提供一种apk病毒特征库构建装置,参见图5所示,该装置可以包括:
[0127] 样本集获得模块501,用于获得给定样本集,所述样本集由N个正常apk文件样本和N个病毒apk文件样本组成,其中,所述apk文件为安卓系统应用程序安装包文件,N>1。
[0128] 特征值提取模块502,用于针对所述给定样本集中的任意样本,根据预设的M条特征,分别得到该样本的M个特征值,其中,每条特征分别对应2种特征值。
[0129] 其中,所述M条预设特征为给定样本集中2N个apk文件样本的通用检测特征。
[0130] 样本子集划分模块503,用于对M条特征的特征值进行组合,根据排列结果将给定M样本集划分为2个样本子集;
[0131] 判断模块504,用于对于任意样本子集i(i=1,2,3,…,2M),判断该样本子集是否满足:
[0132] 该子集的样本总数Ci总与所述给定样本集的样本总数2N的比值大于预设的第一阈值、且病毒样本总数Ci病毒与Ci总的比值大于预设的第二阈值,
[0133] 如果是,则将该样本子集i所对应的M条特征的特征值的组合确定为病毒特征。
[0134] 病毒特征库生成模块505,用于生成包含多条病毒特征的apk病毒特征库,所述apk病毒特征库用于对apk文件进行检测。
[0135] 在本发明的一个具体实施方式中,特征值提取模块502,具体用于:
[0136] 针对所述给定样本集中的任意样本,根据预设的M条特征,分别提取该样本的M条特征;
[0137] 对所提取到的特征进行数值处理,得到给定样本集中各个样本的M个特征值,其中,特征值是整型数值。
[0138] 利用二叉树算法,生成关于所述样本集的二叉树;该二叉树以所述给定样本集作为根节点,该根节点对应的样本数量为2N,对该根节点进行M次决策,形成叶子节点数为2M、深度为M+1的二叉树,其中,每次决策分别以第j(j=1,2,3,…,M)条特征的特征值作为决策判别条件。
[0139] 本发明实施例还提供一种apk病毒检测系统,如图6所示,该系统可以包括:
[0140] apk病毒特征库构建装置601和apk病毒检测装置602。
[0141] 其中,apk病毒特征库构建装置601,在上述装置实施例中已做说明,本发明对此不再进行赘述。
[0142] apk病毒检测装置602,可以包括:
[0143] 文件获取模块602a,用于获得目标apk文件。
[0144] 文件检测模块602b,用于根据apk病毒特征库构建装置601构建的apk病毒特征库,对目标apk文件进行检测。
[0145] 文件识别模块602c,用于当目标apk文件中的子文件中包含apk病毒特征库中的任意一条病毒特征时,确定所述目标apk文件含有病毒。
[0146] 在本发明的一个具体方式中,文件检测模块602b,具体用于对目标apk文件中以下类型的子文件进行检测:classes.dex、androidmanifest.xml和manifest.mf。
[0147] 在本发明的另一个实施例中,该系统还包括:
[0148] 病毒特征保存模块603,用于当所述目标apk文件含有病毒时,根据预设的M条特征,提取所述目标apk文件的M条特征;
[0149] 对所提取的目标apk文件的M条特征进行处理,得到所述目标apk文件的M个特征值;
[0150] 对所得到的目标apk文件的M个特征值进行保存。
[0151] 为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本发明时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
[0152] 需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0153] 本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0154] 本领域普通技术人员可以理解实现上述方法实施方式中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于计算机可读取存储介质中,这里所称得的存储介质,如:ROM/RAM、磁碟、光盘等。
[0155] 以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。