一种基于朴素贝叶斯的Android恶意软件分类方法和装置的制造方法
【技术领域】
[000?]本发明涉及软件安全领域,特别是涉及一种基于朴素贝叶斯的Android恶意软件 分类方法和装置。
【背景技术】
[0002] Android自2007年问世以来,Google公司将其定位为开源的移动操作系统,采用软 件堆层的架构,底层以Linux内核为基础,中间层包含软件库和Dalivk虚拟机,最上层是各 种应用程序。随着Android的迅速发展,基于Android平台的移动终端、软件开发者、应用程 序也日益增多,以成为智能手机市场的主导地位,但也正由于它自身的开源性,成为了众多 恶意软件开发者的目标,新的恶意软件、变种木马每个季度都在爆发式的增长,移动终端遭 受的攻击和威胁、私密信息的泄露也越来越多。
[0003] 目前Android平台应用更多的焦点是关注在恶意行为如何触发捕捉,如何判别行 为是否存在恶意,仅停留在区分正常应用与恶意应用层次,然而对于恶意应用进一步的细 分类,更多的是参考AndroguarcUMobile Sandbox等知名团队定期的公布Android恶意软件 分类列表。
[0004] 现有的对恶意应用的进行分类,寻找共通性方面缺乏,更多依赖于知名团队的定 期发布的结果列表,但随着Android恶意应用指数型增长的速度,这种方式缺乏实时性,灵 活性。
[0005] 随着Android平台的快速发展,恶意应用出现的速度越来越快,据统计,新出现的 恶意代码大部分是在原恶意代码基础上进一步修改而来。新生成的恶意应用通常是设计者 为了绕过反病毒软件的查杀,而在原有基础上修改而成。因此,采用变形技术生成的新的恶 意应用不仅与原恶意应用存在共性,而且新生成的恶意应用之间也存在共性。如果能根据 已知恶意应用代码类别对新生成的恶意应用代码进行快速、准确的分类,并提取出"共性" 特征,能极大的缩短对新恶意软件的分析时间,提高分析效率。
[0006] 现有的对恶意应用细化的分类,由于寻找同类应用的"共性"方面缺乏,更多的是 依赖于Mobi 1 e Sandbox这类的团队定期发布的分类列表。然而面对层出不穷的恶意程序的 新变种及未知恶意程序,仅仅靠定期发布的分类列表是远远不足的,目前常用的分类算法 有:支持向量机、K-最近邻、神经网络等算法等。支持向量机(Support Vector Machine, SVM),可以很好的解决高维问题、非线性问题,但对缺失数据的敏感度高;K-最邻近(k neareast neighbor,ΚΝΝ)算法简单、有效,但计算量大,当样本不平衡时出错率高;人工神 经网络算法分类准确度高,但需要大量的参数支持。
【发明内容】
[0007] 本发明提出一种基于朴素贝叶斯的Android恶意软件分类方法和装置,通过选取 恶意应用程序间的"共性"来作为分类依据,能对恶意应用快速、准确的进行分类,提高了分 类效率。
[0008] 具体方案如下:
[0009] 一种基于朴素贝叶斯的Android恶意软件分类方法,包括以下步骤:
[0010] S1:建立特征属性集合,该特征属性集合至少包括权限特征属性和敏感API特征属 性,并对相应的特征属性进行分类,获得训练样本集合,该训练样本集合至少包括特征属性 集合和分类集合;
[0011] S2:提取权限特征属性,匹配特征属性集合中的权限特征属性;
[0012] S3:收集日志信息,匹配特征属性集合中的敏感API (Application Programming Interface,应用程序编程接口)特征属性;
[0013] S4:形成朴素贝叶斯分类模型;
[0014] S5:输出分类结果;
[0015] S6:更新训练样本集合和朴素贝叶斯分类模型。
[0016] 其中,所述的步骤S2中提取权限特征属性,匹配特征属性集合中的权限特征属性 的具体步骤是:
[0017] S21:反编译待分类软件,获取待分类软件的权限特征属性;
[0018] S22:将获取到的样本权限列表与属性特征相匹配,如果存在,则标记为第一标志 符,否则标记为第二标志符。
[0019] 其中,所述的步骤S3中收集日志信息,匹配特征属性集合中的敏感API特征属性的 具体步骤是:
[0020] S31:将待分类软件安装到Android沙箱中运行,并采集输出的敏感行为日志;
[0021 ] S32 :Android沙箱在应用程序Framework框架层、Dalvik虚拟机和本地Native层采 用API Hooking技术,标记敏感API;
[0022] S33:触发敏感API,自动记录日志;
[0023] S34:采集输出的日志信息,匹配属性特征集合中的敏感API特征属性,如果存在, 则标记为第一标志符,否则标记为第二标志符。
[0024]其中,所述的步骤S4中形成分类朴素贝叶斯分类模型的具体步骤是:
[0025] S41:设X= {ai,a2, . . .,am},为一待分类软件,每个a为X的特征属性,分类集合C = {&,&,····,Cn},计算Ρ(&|Χ),Ρ(&|Χ),· ··,P(Cn|X);
[0026] 342:如果卩(〇1{|父)=]^父{?((: 1|父),?((:2|父),...,?(&1|父)},则)(已〇 {。
[0027] 其中,所述的步骤S41计算P(&|X),P(C2|X),. . .,P(Cn|X)的具体步骤是:
[0028] S411:统计训练样本集合中各特征属性下的条件概率:
[0029] 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);
[0030] S412:根据贝叶斯定理
而各属性值相互条件独立,即属 性间不存在依赖关系,有
[0031] 一种基于朴素贝叶斯的Android恶意软件分类的装置,包括以下模块:
[0032] 特征属性集合模块,用于建立特征属性集合,该特征属性集合至少包括权限特征 属性和敏感API特征属性,并对相应的特征属性进行分类,获得训练样本集合,该训练样本 集合至少包括特征属性集合和分类集合;
[0033]权限特征属性模块,用于提取权限特征属性,匹配特征属性集合中的权限特征属 性;
[0034]敏感API特征属性模块,用于收集日志信息,匹配特征属性集合中的敏感API特征 属性;
[0035]朴素贝叶斯分类模型模块,用于形成朴素贝叶斯分类模型;
[0036]输出模块,用于输出分类结果;
[0037] 更新模块,用于更新训练样本集合和朴素贝叶斯分类模型。
[0038] 其中,所述的权限特征属性模块包括:
[0039]权限特征属性获取模块,用于反编译待分类软件,获取待分类软件的权限特征属 性;
[0040]权限特征属性匹配模块,用于将获取到的样本权限列表与属性特征相匹配,如果 存在,则标记为第一标志符,否则标记为第二标志符。
[0041 ]其中,所述的敏感API特征属性模块包括:
[0042]敏感行为日志采集模块,用于将待分类软件安装到Android沙箱中运行,并采集输 出的敏感行为日志;
[0043] 敏感API标记模块,用于Android沙箱在应用程序Framework框架层、Dalvik虚拟机 和本地Native层采用API Hooking技术,标记敏感API;
[0044] 自动记录模块,用于触发敏感API,自动记录日志;
[0045] 敏感API特征属性匹配模块,用于采集输出的日志信息,匹配属性特征集合中的敏 感API特征属性,如果存在,则标记为第一标志符,否则标记为第二标志符。
[0046]