其中,所述的朴素贝叶斯分类模型模块中包括:
[0047] 分类计算模块,设X={ai,a2, . . .,am},为一待分类软件,每个a为X的特征属性,分 类集合?={&,&,····,C n},计算Ρ(&|Χ),Ρ(&|Χ),· ··,P(Cn|X),
[0048] 分类判别模块,如果 Ρ^ΙΧ^ΜΑΧ^&ΙΧΚΡ^ΙΧΚ.,.,ΡΚΙΧ)},则 XECk。
[0049] 其中,其特征在于,所述的分类计算模块包括:
[0050]条件概率计算模块,用于统计训练样本集合中各特征属性下的条件概率:
[0051] P(ai|Ci),P(a2|Ci), . ..,P(am|Ci) ;P(ai | C2) ,P(a21 C2), . . . ,P(am|C2); . ..;P(ai Cn) ,P(a2 ICn) , . . . ,P(am|Cn);
[0052] 分子计算模块,根据贝叶斯定理
B各属性值相互条件独 立,即属性间不存在依赖关系,窄
3
【附图说明】
[0053] 图1为一实施例的特征属性列表;
[0054]图2为一实施例的主流程图;
【具体实施方式】
[0055]为进一步说明各实施例,本发明提供有附图。这些附图为本发明揭露内容的一部 分,其主要用以说明实施例,并可配合说明书的相关描述来解释实施例的运作原理。配合参 考这些内容,本领域普通技术人员应能理解其他可能的实施方式以及本发明的优点。现结 合附图和【具体实施方式】对本发明进一步说明。
[0056]本实施例中,首先对已公布的应用软件进行特征属性的提取,建立一个特征属性 列表及及其训练集合。目前现有的分析APK应用的方法有两种,静态分析和动态分析。
[0057] 静态分析主要通过文件结构解析、反汇编、反编译等技术对恶意代码进行分析,不 实际运行恶意代码,而是通过捕获恶意代码的程序流程和功能,但由于加壳、多态和变形技 术的应用,使得静态分析技术要求高难度大;动态分析是通过在一个可控的环境中运行恶 意应用,利用API Hooking等技术对恶意代码运行过程中的行为进行监测,分析恶意应用代 码与操作系统之间的行为特征,能捕获到可靠、准确的特征,但该方法只能针对特定API接 口有效,且运行时间长,加上反虚拟机技术的应用,准确性会大大降低。
[0058] 在恶意应用分类中,选择恰当的属性特征对分类的准确性具有决定性的影响。在 属性特征提取的过程中,抽象层次越高,越能反映出恶意应用的本质,对分类也越有效果, 但是特征的提取过程也越复杂,反之则相反。本实施例考虑到静态分析技术的不足,通过动 静结合思想,分析现有已公布的恶意应用软件,采集了 30个使用频率最高的应用权限和10 个使用频率最高的API接口作为属性特征列表,该属性列表如图1所示。
[0059] 本领域技术人员应该知道,本实施例实施采用的特征属性列表,其中图1选取的属 性特征,仅为本发明较佳的实施案例,仅用于帮助理解本发明的方法和思想。
[0060] 图2示出了实施例的主流程图:该流程包括以下步骤:
[0061 ] S1:反编译 APK;
[0062] S2:提取权限列表;
[0063] S3:判断权限是否在属性列表中;
[0064] S4:在模拟器中模拟运行APK;
[0065] S5:收集日志信息;
[0066] S6:匹配属性列表中的敏感API接口;
[0067] S7:形成样本特征向量;
[0068] S8:形成分类模型;
[0069] S9:输出分类结果。
[0070]本实施例步骤S1至步骤S6均属于样本属性特征值得采集部分,分为静态采集和动 态采集,其中步骤S1至步骤S3为静态采集部分,主要使用现有的APKT00L工具,对待测样本 进行反编译,获得其中的配置文件AndroidManifest. xml,并根据其中的声明的〈uses-permission〉字段列表,获取每个待测样本对应的权限列表信息。将获取到的样本权限列表 与属性特征相匹配,如果存在,则标记为第一标志符,否则标记为第二标志符。步骤S3至步 骤S6为动态采集部分通过将APK应用安装到自定义的Android沙箱(Android模拟器A VD)中 运行,并采集输出的敏感行为日志。自定义的Android沙箱在应用程序Framework框架层、 Dalvik虚拟机和本地Native层采用API Hooking技术,标记敏感API,一旦恶意应用触发敏 感API,会自动记录日志。通过采集输出的日志信息,匹配属性列表中的API接口,如果存在, 则标记为第一标志符,否则标记为第二标志符。
[0071] 本实施例的朴素贝叶斯分类模型,以已采集的现有的特征集合进行分类,形成训 练集合,设x= {ai,a2, . . .,am}为一待分类软件,每个a为X的特征属性,分类集合C= {Cl, C2, · · · ·,Cn},计算Ρ(&|Χ),Ρ(&|Χ),· · ·,P(Cn|X);
[0072] 如果卩(〇15|父)=]^父{?((:1|父),?((:2|父),...,?(& 1|父)},则)(已〇{。
[0073] 其中,各特征属性下的条件概率可由训练样本的数据计算得出:
[0074] P(ai|Ci),P(a2|Ci), . ..,P(am|Ci);P(ai|C2) ,P(a21 C2), . . .,P(am|C2); ...;P(ai Cn) ,P(a2 ICn) , . . . ,P(am|Cn);
[0075] 根据贝叶斯定理.
,而各属性值相互条件独立,即属性间不 存在依赖关系,羊
> 这样便可计算出属于每一类别的概率, 最后以其中概率最大的类别作为该待测样本的类别并输出分类的结果。分类完成后对分类 模型进行更新,以完善分类模型使分类更为准确。
[0076] 基于上述的基于朴素贝叶斯的Android恶意软件分类的方法,本发明还提出一种 基于朴素贝叶斯的Android恶意软件分类的装置,包括以下模块:
[0077]特征属性集合模块,用于建立特征属性集合,该特征属性集合至少包括权限特征 属性和敏感API特征属性,并对相应的特征属性进行分类,获得训练样本集合,该训练样本 集合至少包括特征属性集合和分类集合;
[0078]权限特征属性模块,用于提取权限特征属性,匹配特征属性集合中的权限特征属 性;
[0079]敏感API特征属性模块,用于收集日志信息,匹配特征属性集合中的敏感API特征 属性;
[0080] 朴素贝叶斯分类模型模块,用于形成朴素贝叶斯分类模型;
[0081] 输出模块,用于输出分类结果;
[0082] 更新模块,用于更新训练样本集合和朴素贝叶斯分类模型。
[0083]其中,所述的权限特征属性模块包括:
[0084] 权限特征属性获取模块,用于反编译待分类软件,获取待分类软件的权限特征属 性;
[0085] 权限特征属性匹配模块,用于将获取到的样本权限列表与属性特征相匹配,如果 存在,则标记为第一标志符,否则标记为第二标志符。
[0086]其中,所述的敏感API特征属性模块包括:
[0087]敏感行为日志采集模块,用于将待分类软件安装到Android沙箱中运行,并采集输 出的敏感行为日志;
[0088] 敏感API标记模块,用于Android沙箱在应用程序Framework框架层、Dalvik虚拟机 和本地Native层采用API Hooking技术,标记敏感API;
[0089] 自动记录模块,用于触发敏感API,自动记录日志;
[0090] 敏感API特征属性匹配模块,用于采集输出的日志信息,匹配属性特征集合中的敏 感API特征属性,如果存在,则标记为第一标志符,否则标记为第二标志符。
[0091] 其中,所述的朴素贝叶斯分类模型模块中