[0001]技术领域
[0002]本发明属于软件安全领域,具体涉及一种面向安卓应用的多模型联合检测系统和方法。
[0003]背景技术
[0004]21世纪是信息化、网络化和知识经济的时代,随着以计算机技术为核心的信息技术,特别是数字技术、集成电路技术和网络技术的飞速发展和普及应用,移动终端已经成为人们生活中不可或缺的工具之一。安卓(Android)移动平台开源的特性与出色的性能受到了众多的用户、应用开发者和终端制造商的青睐。同时安卓移动平台也进入了恶意软件开发者的视线。安卓系统允许从第三方应用市场下载和安装应用程序,这为恶意软件开发者提供了将重新打包的恶意应用程序放置在第三方应用程序商店中并攻击安卓设备的机会。根据最近的一项研究,仅在2019年的第四季度,就发现了超过3500万个安卓恶意应用程序,其中包括超过75万个新的安卓恶意软件。
[0005]为了阻止Android恶意软件的传播,保证用户的终端设备的安全性,Android平台提供了多种安全措施,其中最引人注目的是Android权限系统。为了在设备上执行某些任务,每个应用程序都必须在安装过程中明确要求用户许可相关权限。但是,许多用户倾向于盲目地将权限授予未知应用程序,从而破坏了Android权限系统的目的。同时应用程序的评分和评论会直接影响到应用的排名。所以生成虚假的描述和评论同样是安卓恶意应用隐藏自己的另一种方式。综上所述,安卓恶意应用对于日常生活隐私的威胁让人难以忽视。随着Android恶意应用检测研究的不断推进和恶意软件形式上的不断演化,机器学习正在恶意软件的检测中发挥更重要的作用。然而对于机器学习的应用大多数以单个机器学习算法来构建分类器,但是在实际的应用中仍存在着以下问题:
[0006](1)单一分类器模型可能在某些问题上表现出极佳的性能,但是由于其适用范围很小所以在一些问题上表现出的性能可能很一般。
[0007](2)单一分类器模型在遭到安全攻击后性能会急剧下降。而且相较于多分类器集成框架,单一分类器模型受到攻击的影响会更大。
[0008](3)多分类器集成模型的判定机制会在一定程度上影响模型的性能。目前许多研究方法中均使用简单的判定机制,这不利于发挥出多分类器集成模型对判定结果的校正作用。
[0009]发明内容
[0010]本发明的目的在于提供一种面向安卓应用的多模型联合检测系统和方法,解决现有Android恶意软件检测系统基于单一分类器构建、多分类器集成系统判定机制准确度不足的缺点,向用户屏蔽底层服务细节差异,提供自动化的检测服务。针对当前安卓应用市场中恶意软件数量快速增长的大趋势,在各种第三方应用市场数量庞大的背景下,所设计的Android恶意软件检测系统有利于快速、自动的评判软件在使用过程中是否会产生恶意行为,使得软件的分析、评判过程变得简洁和高效。
[0011]为了达到上述目的,面向安卓应用的多模型联合检测方法,包括以下步骤:
[0012]S1,从APK文件中提取所需的静态特征信息,使用已标记的应用程序构建集成学习框架;
[0013]S2,定义n维的向量空间,通过构造特征向量将应用程序映射到联合数据集中,从应用程序中提取静态特征信息;
[0014]S3,使用提取到的静态特征信息构建训练数据集和测试数据集;
[0015]S4,基于不同的机器学习算法构建多个不同基分类器,并通过训练数据集进行训练,训练完成后,保存分类器模型;
[0016]S5,使用测试数据集测试基分类器的准确率,所有测试后的基分类器模型共同构成集成学习框架;
[0017]S6,根据不同基分类器模型的贡献为基分类器分配权重值,并保存权重向量;
[0018]S7,提取待检测应中用于检测分析的特征信息,并生成特征向量;
[0019]S8,通过集成学习框架对特征向量后进行预测,多个基分类器得到各自的判定结果并记录结果;
[0020]S9,解析每个基分类器的判定结果并读取权重向量后,将基分类器的结果加权求和,得到加权后的综合评分;
[0021]S10,对加权后的评分进行判断,得到该软件是否为恶意软件,将判断结果呈现。
[0022]S1中,静态特征信息包括硬件组件、请求的权限、App组件、意图信息和可疑的API调用信息。
[0023]S2中,每次从应用程序中提取到静态特征信息后就将相应的维度设置为1,提取完成后,未提取到的维度设置为0;
[0024]S4中,基分类器包括向量机、随机森林或神经网络基分类器。
[0025]S6中,使用基分类器对测试数据集的预测结果和已知的标签值构造随机森林模型,该模型基于基分类器的预测结果对该模型建模贡献为基分类器分配权重值。
[0026]S10的判断方法如下:
[0027]若对待检测应用程序的评分小于预设阈值则判定该软件为恶意软件;反之判定该软件为良性应用。
[0028]面向安卓应用的多模型联合检测系统,包括特征提取子系统、基分类器训练子系统、权重分配子系统、基分类器检测子系统和加权投票子系统;
[0029]特征提取子系统用于分析应用程序的APK文件并从中提取所需的静态特征信息生成特征向量;
[0030]基分类器训练子系统用于基于已标记应用程序提取特征向量,并训练多个基于不同机器算法的基分类器;
[0031]权重分配子系统用于根据基分类器对测试数据集的预测结果和真实标签进行二次建模随机森林模型,由新建模型生成权重向量作为各基分类器的权重值;
[0032]基分类器检测子系统用于调用训练好的基分类器根据特征提取子系统提取的特征向量分析判定待检测的应用程序;
[0033]加权投票子系统用于对基分类器的判定结果进行加权求和的加权投票过程,并得到最终的判定结果并呈现。
[0034]基分类器训练子系统包括数据集解析模块、基分类器训练模块、基分类器保存模块、基分类器测试模块、测试结果记录模块和权重训练集生成模块;
[0035]数据集解析模块用于解析csv文件中保存的静态特征信息数据集,读取文件内容为基分类器训练模块、基分类器测试模块和权重训练集生成模块提供需要的数据信息;
[0036]基分类器训练模块用于根据数据集解析模块解析出的训练数据集中的特征数据,模块将基于不同的机器学习算法训练多个基分类器;
[0037]基分类器保存模块用于保存训练好的基分类器,供后续检测过程中基分类器检测子系统调用;
[0038]基分类器测试模块用于根据数据解析模块解析出的测试数据集中的特征数据,测试训练好的基分类器的准确率,供使用者查看基分类器的准确率;
[0039]测试结果记录模块用于将基分类器对测试数据集的判定结果记录下来供后续的权重训练集生成模块使用;
[0040]权重训练集生成模块用于接收来自测试结果记录模块的数据信息,对数据格式进行调整后保存至csv文件中供后续权重分配子系统读取使用。
[0041]权重分配子系统包括数据集解析模块、权重分配器训练模块、权重向量生成模块和权重向量记录模块;
[0042]数据集解析模块用于解析csv文件中保存的基分类器对测试数据集的判定结果,读取文件内容为权重分配器训练模块提供需要的数据信息;
[0043]权重分配器训练模块用于根据数据集解析模块解析出的判定结果数据集和真实标签数据集中的特征数据,模块将构建一个随机森林模型作为权重分配器模型;
[0044]权重向量生成模块用于根据基尼系数评估各基分类器的判定结果对构建模型的贡献程度,并以此作为各基分类器的权重值生成权重向量;
[0045]权重向量记录模块用于记录生成的权重向量并将该向量保存至csv文件中供后续加权投票子系统使用。
[0046]基分类器检测子系统包括数据集解析模块、基分类器读取模块、基分类器检测模块和检测结果记录模块;
[0047]数据集解析模块用于负责解析csv文件中保存的待检测应用程序中提取的特征向量,读取文件内容为基分类器检测模块提供需要的数据信息;
[0048]基分类器读取模块用于解析保存的基分类器模型,将基分类器模型读入系统供后续的基分类器检测模块调用;
[0049]基分类器检测模块用于调用读取的基分类器模型根据解析的特征向量对待检测应用程序的属性进行判定,得出判定结果;
[0050]检测结果记录模块用于记录各基分类器对待检测应用程序的判定结果并将判定结果传送至加权投票子系统进行最终的判定。
[0051]与现有技术相比,本发明的方法针对单一分类器模型适用范围小、易受到安全攻击的缺点,采用了多分类器集成的检测框架,将基于不同机器学习算法的基分类器集成在同一框架下并行运行,最终判定结果受到多个基分类器的判定结果的共同影响。所采用的多分类器集成模式增强了恶意软件检测系统的鲁棒性和泛化能力。本发明的加权投票机制在已有的均权投票机制上为不同分类器分配不同的权重值,并为此设计了权重分配的方案,该方案会为准确率高的分类器分配较高的权重值。通过应用加权投票机制提升了多分类器集成框架的对基分类器判定结果的校正能力。
[0052]本发明的系统的主要架构由特征提取子系统、基分类器训练子系统、权重分配子系统、基分类器检测子系统和加权投票子系统组成,该系统提供了特征提取、分类器训练和软件检测等功能。系统训练并集成了多个基分类器,同时系统基于基分类器的判定结果以加权投票的方式得出最终的判定结果。在这种方式下能够有效的避免单一分类器适用范围小和易受到安全威胁的问题,增强了系统的鲁棒性和泛化能力。同时投票机制能够对单一分类器的错误预测进行一定程度上的校正,使系统判定的准确率更高。加权机制则会给性能更好的分类器分配更高的权重值,使系统对结果的校正更加准确。
[0053]附图说明
[0054]图1为本发明系统框图;
[0055]图2为本发明中特征提取的流程图;
[0056]图3为本发明中权重值训练的流程图;
[0057]图4为本发明中加权投票检测的流程图。
[0058]具体实施方式
[0059]下面结合附图对本发明做进一步说明。
[0060]面向安卓应用的多模型联合检测系统,包括特征提取子系统、基分类器训练子系统、权重分配子系统、基分类器检测子系统和加权投票子系统;面向安卓应用的多模型联合检测系统中的特征提取子系统是整个系统的入口,分别与基分类器训练子系统、基分类器检测子系统相连,特征提取子系统会分析待检测应用程序的APK文件,并从中提取出判定所需的特征信息,为基分类器检测子系统的运行提供检测数据,根据解析出的特征信息数据内容,在基分类器得到初步判定结果后,调用与之相连的加权投票子系统,完成对待检测应用的判定过程。本发明部署了面向安卓应用的多模型联合检测系统和方法,具体的实施包括以下几个部分:
[0061]一、面向安卓应用的多模型联合检测系统的设计
[0062]如图1所示,面向安卓应用的多模型联合检测系统分为特征提取子系统、基分类器训练子系统、权重分配子系统、基分类器检测子系统和加权投票子系统5个部分。
[0063]1.特征提取子系统
[0064]特征提取子系统分析应用程序的APK文件并从中提取所需的静态特征信息生成特征向量。特征提取子系统包括静态特征提取模块、特征向量生成模块和特征向量管理模块。为后续的判定步骤提供必要的数据信息。
[0065]2.基分类器训练子系统
[0066]基分类器训练子系统负责基于已标记应用程序提取特征向量,并训练多个基于不同机器算法的基分类器。它包括数据集解析模块、基分类器训练模块、基分类器测试模块、基分类器保存模块、测试结果记录模块和权重训练集生成模块。
[0067](a)数据集解析模块
[0068]该模块负责解析csv文件中保存的静态特征信息数据集,读取文件内容为基分类器训练模块、基分类器测试模块和权重训练集生成模块提供需要的数据信息。
[0069](b)基分类器训练模块
[0070]根据数据集解析模块解析出的训练数据集中的特征数据,模块将基于不同的机器学习算法训练多个基分类器。
[0071](c)基分类器保存模块
[0072]该模块负责保存训练好的基分类器,供后续检测过程中基分类器检测子系统调用。
[0073](d)基分类器测试模块
[0074]该模块根据数据解析模块解析出的测试数据集中的特征数据,测试训练好的基分类器的准确率,供使用者查看基分类器的准确率。
[0075](e)测试结果记录模块
[0076]该模块将基分类器对测试数据集的判定结果记录下来供后续的权重训练集生成模块使用。
[0077](f)权重训练集生成模块
[0078]该模块接收来自测试结果记录模块的数据信息,对数据格式进行调整后保存至csv文件中供后续权重分配子系统读取使用。
[0079]3.权重分配子系统
[0080]主要负责根据基分类器对测试数据集的预测结果和真实标签进行二次建模随机森林模型,由新建模型生成权重向量作为各基分类器的权重值。它包括数据集解析模块、权重分配器训练模块、权重向量生成模块和权重向量记录模块。
[0081](a)数据集解析模块
[0082]该模块负责解析csv文件中保存的基分类器对测试数据集的判定结果,读取文件内容为权重分配器训练模块提供需要的数据信息。
[0083](b)权重分配器训练模块
[0084]根据数据集解析模块解析出的判定结果数据集和真实标签数据集中的特征数据,模块将构建一个随机森林模型作为权重分配器模型。
[0085](c)权重向量生成模块
[0086]随机森林模型根据基尼系数评估各基分类器的判定结果对构建模型的贡献程度,并以此作为各基分类器的权重值生成权重向量。
[0087](d)权重向量记录模块
[0088]该模块负责记录生成的权重向量并将该向量保存至csv文件中供后续加权投票子系统使用。
[0089]4.基分类器检测子系统
[0090]主要负责调用训练好的基分类器根据特征提取子系统提取的特征向量分析判定待检测的应用程序。它包括数据集解析模块、基分类器读取模块、基分类器检测模块和检测结果记录模块。
[0091](a)数据集解析模块
[0092]该模块负责解析csv文件中保存的待检测应用程序中提取的特征向量,读取文件内容为基分类器检测模块提供需要的数据信息。
[0093](b)基分类器读取模块
[0094]该模块负责解析保存的基分类器模型,将基分类器模型读入系统供后续的基分类器检测模块调用。
[0095](c)基分类器检测模块
[0096]该模块负责调用读取的基分类器模型根据解析的特征向量对待检测应用程序的属性进行判定,得出判定结果。
[0097](d)检测结果记录模块
[0098]该模块负责记录各基分类器对待检测应用程序的判定结果并将判定结果传送至加权投票子系统进行最终的判定。
[0099]5.加权投票子系统
[0100]主要负责对基分类器的判定结果进行加权求和的加权投票过程,并得到最终的判定结果并呈现。它包括数据统计模块、加权求和模块、结果判定模块和结果呈现模块。
[0101](a)数据统计模块
[0102]该模块负责接受基分类器检测子系统传递来的数据,并统计各基分类器的判定结果。
[0103](b)加权求和模块
[0104]该模块负责为统计的基分类器判定结果附加权重值并求和得到用于判定的综合评分。
[0105](c)结果判定模块
[0106]该模块负责根据加权求和模块得到的综合评分进行最终的判定,如果结果大于0就判定其是恶意软件,反之就判定为良性软件。
[0107](d)结果呈现模块
[0108]该模块负责将最终的判定结果呈现给使用者。
[0109]面向安卓应用的多模型联合检测系统中的特征提取子系统是整个系统的入口,分别与基分类器训练子系统和基分类器检测子系统相连,特征提取子系统对待检测应用程序的APK文件进行解析后,提取相应的静态特征信息并为其构造特征向量后存入csv文件中,为基分类器训练子系统和基分类器检测子系统的运行提供执行数据。其余四个子系统分为两个部分,基分类器训练子系统和权重分配子系统作为系统的初始化部分,基分类器检测子系统和加权投票子系统作为系统的检测部分,两个部分彼此之间并无直接交互。
[0110]二、面向安卓应用的多模型联合检测系统部署和使用方法的设计
[0111]面向安卓应用的多模型联合检测系统使用方法,若初次部署,则需要进行系统的初始化过程,即集成检测框架的构建过程,初始化完成后可使用加权投票检测过程。若不是初次部署且无需更新基分类,则系统可调用已训练好的基分类器直接进入加权投票检测过程,即可进行Android恶意软件的检测。
[0112]参考设计的面向安卓应用的多模型联合检测系统,系统的初始化过程主要由特征提取子系统、基分类器训练子系统和权重分配子系统三者协同完成。系统的检测过程则主要由特征提取子系统、基分类器检测子系统和加权投票子系统三者协同完成
[0113]1.集成检测框架构建过程
[0114]根据面向安卓应用的多模型联合检测系统的功能要求,在首次进行检测前应完成集成检测框架的构建过程。因此,集成检测框架的构建是为后续的加权检测过程提供基分类器和相应权重值的必要步骤。该过程分为两个部分,即特征提取部分和权重值训练部分。特征提取部分包括下列步骤1-3;权重值训练部分包括下列步骤4-7。
[0115]具体的集成检测框架构建流程如下:
[0116]1)解析软件的APK文件并从APK文件中提取所需的静态特征信息包括:硬件组件、请求的权限、App组件、意图信息和可疑的API调用等信息,构建集成学习框架的过程使用已标记的应用程序。
[0117]2)通过构造特征向量将应用程序映射到定义n维向量空间的联合数据集中,每次从应用程序中提取到特征后就将相应的维度设置为1。提取完成后,未提取到的维度设置为0。
[0118]3)使用提取到的特征信息构建用来训练和测试基分类器的数据集并保存至csv文件中,至此特征提取部分结束。特征提取部分流程如图2所示。
[0119]4)解析csv数据集并基于不同的机器学习算法(这里选则支持向量机、随机森林和神经网络三种机器学习算法)构建基分类器。
[0120]5)基分类器训练成功之后,保存分类器模型。
[0121]6)基分类器保存后,使用测试数据集测试基分类器的准确率,测试后的基分类器模型共同构成集成学习框架。
[0122]7)使用基分类器对测试数据集的预测结果和已知的标签值构造随机森林模型,该模型基于基分类器的预测结果对该模型建模的贡献为基分类器分配权重值,并保存权重向量。至此权重值训练部分结束。权重值训练部分流程如图3所示。
[0123]2.加权投票检测过程
[0124]加权投票检测是面向安卓应用的多模型联合检测系统中关键的步骤,它包括了特征提取、基分类器检测、加权投票等多种类型的关键操作。通过调用基分类器判定待检测应用程序的性质,再统计基分类器的判定结果并分配对应的权重值,最后对加权的结果相加求和,若结果大于0则判定其是恶意软件,反之则判定为正常软件。具体的加权投票检测流程如图4所示。
[0125]具体的加权投票检测流程如下:
[0126]1)特征提取子系统提取用于检测分析的特征信息,并生成特征向量。
[0127]2)基分类器检测子系统读取待检测应用的特征向量后进行预测,多个基分类器得到各自的判定结果并记录结果。
[0128]3)加权投票子系统解析基分类器的判定结果并读取权重向量后,将基分类器的结果加权求和,得到加权后的综合评分。
[0129]4)对加权后的评分进行判断,若对待检测应用程序的评分小于0则判定该软件为恶意软件;反之判定该软件为良性应用,将判定结果呈现。
[0130]应当理解的是,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,而所有这些改进和变换都应属于本发明所附权利要求的保护范围。