一种安卓应用恶意性、恶意种族检测模型构建方法及应用与流程

文档序号:22677725发布日期:2020-10-28 12:35阅读:89来源:国知局
一种安卓应用恶意性、恶意种族检测模型构建方法及应用与流程

本发明属于移动恶意应用检测领域,更具体地,涉及一种安卓应用恶意性、恶意种族检测模型构建方法及应用。



背景技术:

android应用市场的持续发展以及android应用数量的持续快速增长,涌现出很多第三方应用市场,然而android应用内包含着android用户的个人隐私数据,吸引来一些攻击者将恶意应用传播到用户的移动智能手机上,以窃取用户的隐私和财产,严重威胁着android用户的隐私数据安全。

安全厂商360公司发布的一份android恶意软件专题报告显示,仅2019年度,360安全大脑共截获移动端恶意应用约180.9万个,累计为全国手机用户拦截android恶意程序攻击约9.5亿次,这些恶意应用会窃取用户信息、自动拨打电话、未经许可发送短信等,对智能手机用户造成极大的威胁。为了检测android恶意应用,一些研究者采用规则匹配或机器学习的方法,对android应用内代码进行分析,提取api、数据流、签名等特征,达到了不错的检测效果。然而,近期一项研究表明,攻击者可以利用代码混淆技术,如api反射、控制流切分、字符串加密等,破坏代码的特征,极大地降低现有方法中代码分析的效果,绕过许多android恶意应用检测系统。

专利cn108280348a所属方法公开了一种基于rgb图像映射的安卓恶意应用识别方法,该方法对android应用集内应用进行反编译,提取应用内操作码、敏感api调用及高风险api特征,并将特征转化为rgb图像,采用深度学习模型进行训练,并将待测应用转化为rgb图像输入模型中,检测待测应用恶意性。该方法在检测待测应用时,不支持对恶意应用分析其恶意家族类别。此外,该方法未对特征进行有效筛选,无法有效检测android恶意应用混淆变种,如api相关特征容易受到api反射混淆的影响,操作码特征在部分混淆技术下,其分布会发生一定的变化。

专利cn109271788a所属方法公开了一种基于深度学习的android恶意应用检测方法,该方法对应用进行反编译,提取应用的统计特征,具体包括文件结构、安全经验和dalvik指令集三种特征,训练深度神经网络模型来检测android恶意应用。此方法中的文件结构特征,在应用经过类名混淆后,特征完全会失效,而dalvik特征在api反射等混淆后,也会出现较大变化,这都一定程度限制了该方法在恶意应用混淆变种检测上的准确度。

专利cn109145605a所属方法公开了一种基于singlepass算法的android恶意软件家族聚类方法。该方法先提取android应用的敏感权限、系统action、敏感系统api调用及系统category,该方法用过滤式方法对特征进行选择,以筛选出可以区别不同家族的特征。该方法未考虑到混淆技术下,android恶意应用家族识别的检测准确度会受到影响的问题,如敏感权限可能在权限修改混淆中发生较大变化。

综上可知,已有的android恶意应用混淆变种检测方案都具有一定的局限性。



技术实现要素:

本发明提供一种安卓应用恶意性、恶意种族检测模型构建方法及应用,用以解决现有安卓应用恶意性检测方法无法对android应用代码混淆技术进行有效抵抗的问题。

本发明解决上述技术问题的技术方案如下:一种安卓应用恶意性检测模型的构建方法,包括:

采集安卓良性应用和恶意应用样本,构成原始样本集,采用多种安卓应用混淆方法对原始样本集内各样本混淆,构成对应多个混淆变种样本集;

提取每个样本各种粒度的操作码特征,计算每种粒度下原始样本集以及该种粒度混淆方法集所对应的所有混淆变种样本内各种操作码特征的权重,以从该各种操作码特征中选取用于加强原始样本集检测效果和降低混淆前后样本差异性的操作码特征,作为该种粒度的抗混淆特征集;

从每个原始样本的粗粒度操作码特征中,按照粗粒度到细粒度顺序过滤不在各抗混淆特征集的操作码特征,得到该样本操作码特征序列;

将各样本的所述操作码特征序列转化为灰度图,基于各样本的灰度图及其恶意性标签,训练得到安卓应用恶意性检测模型。

本发明的有益效果是:针对收集的包含良性和恶意android应用的样本集,利用多种android应用代码混淆技术,生成每个android应用的混淆变种,构建android应用混淆变种样本集。基于上述原始样本集和混淆变种样本集,提取android应用多粒度的操作码特征序列特征,预先分析各类混淆技术所对应的粒度的操作码特征序列特征,针对原始样本集以及每种粒度混淆方法集所对应的所有混淆变种样本内各种操作码特征,基于保证样本区分度和抵抗混淆的基础上计算每种粒度下每种操作码特征的权重,进而实现该种粒度的操作码特征的选择。然后根据各种粒度对应的所选择的操作码特征,对原始样本的操作码特征进行过滤并可视化,将android应用恶意性检测问题转变为图像分类问题,通过图像分类模型的训练,实现对android应用混淆样本恶意行为的准确检测。本发明在支持android应用恶意性检测的同时,有效抵抗主流android应用混淆技术对检测结果的干扰,防止android恶意应用混淆变种绕过检测系统的检测,解决了现有方法无法对android应用代码混淆技术进行有效抵抗的问题。另外,提取android应用内操作码特征序列特征并转化为图像的过程中,操作码特征序列作为一种实际代码语义表示,可以有效代表应用的代码逻辑,采用图像特征无需对操作码特征序列进行裁剪,完整保留操作码语义,此外,该过程无需对应用进行复杂的数据流和控制流分析,资源消耗低且耗时短,且支持在资源有限的移动端设备上实现检测功能的集成,极大提高所得模型的检测效率。

上述技术方案的基础上,本发明还可以做如下改进。

进一步,各种粒度混淆方法集的确定方法为:提取每个样本各种粒度的操作码特征,分析所述多种安卓应用混淆方法中各混淆方法对原始样本集混淆前后操作码特征的影响程度,确定各混淆方法的特征混淆粒度,以对所述多种安卓应用混淆方法分类,得到各种粒度混淆方法集;

所述转化为灰度图的具体方式为:根据操作码编码规则,将所述操作码特征序列中的每个操作码特征转化为一个八位二进制整数编码,按照相邻两个操作码特征构成一个像素点的规则,对操作码编码序列按一行预设像素点数进行分片、分行,末尾行若操作码编码不足预设像素点数,则用零补齐,从而将所述操作码特征序列转化为灰度图。

进一步,所述计算每种粒度下原始样本集以及该种粒度混淆方法集所对应的所有混淆变种样本内各种操作码特征的权重,具体为:

从原始样本集以及每种粒度混淆方法集所对应的所有混淆变种样本中提取该种粒度的操作码特征;

计算原始样本集的该种粒度操作码特征频数矩阵、该种粒度混淆方法集对应的各混淆变种样本集的该种粒度操作码特征频数矩阵;

基于所有所述频数矩阵,计算原始样本集内第j个原始样本中该种粒度第k种操作码特征的tfidf值,并计算原始样本集内第j个原始样本中该种粒度第k种操作码特征的频数与各混淆方法混淆后对应的频数的差值的第一加和;

计算所有原始样本对应的所述tfidf值的加和与原始样本集中所有原始样本对应的所述第一加和的第二加和的比值,作为该种粒度第k种操作码特征的权重。

本发明的进一步有益效果是:采用tfidf值,并将混淆前后操作码特征差异性指标代表操作码特征在采用android应用混淆方法前后频数的差异性,可以有效选取对加强未混淆样本数据集检测效果和降低混淆前后样本差异性最有利的一些操作码特征。

进一步,所述该种粒度下第k种操作码特征的权重wk表示为:

其中,tfidfjk表示原始样本集内第j个原始样本中该种粒度第k种操作码特征的tfidf值,ajk(i)为第i号混淆方法对应的混淆变种样本集内第j个样本中该种粒度第k种操作码特征的频数,当i为0时,表示原始样本集。

本发明的进一步有益效果是:公式中加1运算可以避免分子或分母为0,有效提高了模型训练的可靠性和样本数据适用范围。

本发明还提供一种安卓应用恶意性检测方法,包括:

反编译待测安卓应用,提取该应用的粗粒度操作码特征并从中按照粗粒度到细粒度顺序过滤不在如上所述的一种安卓应用恶意性检测模型的构建方法中所述的各抗混淆特征集内的操作码特征,得到该样本的操作码特征序列并将其转化为灰度图;

将该灰度图输入如上所述的一种安卓应用恶意性检测模型的构建方法构建得到的安卓应用恶意性检测模型,得到该待测安卓应用的恶意性。

本发明的有益效果是:采用上述安卓应用恶意性检测模型的构建方法构建得到的安卓应用恶意性检测模型,可有效抵抗混淆干扰,提高android应用恶意性检测准确度。另外,反编译提取android应用内操作码特征序列特征并转化为图像的过程中,能够完整保留操作码语义。此外,该过程无需对应用进行复杂的数据流和控制流分析,资源消耗低且耗时短,极大提高检测效率。

本发明还提供一种安卓恶意应用恶意家族检测模型的构建方法,基于如上所述的一种安卓应用恶意性检测模型的构建方法得到的原始样本集中各恶意应用样本的灰度图以及对应的恶意家族标签,训练得到安卓恶意应用恶意家族检测模型。

本发明的有益效果是:同上述一种安卓应用恶意性检测模型的构建方法的有益效果,在支持android恶意应用恶意家族检测的同时,有效抵抗主流android应用混淆技术对检测结果的干扰,防止android恶意应用混淆变种绕过检测系统的检测,解决了现有方法无法对android应用代码混淆技术进行有效抵抗的问题。同时,该方法将操作码特征序列转化为灰度图,使用于多种应用样本,并极大提高所构建模型的检测效率。

本发明还提供一种安卓恶意应用恶意家族检测方法,包括:

反编译待测安卓应用,提取所述待测安卓应用的粗粒度操作码特征并从中按照粗粒度到细粒度顺序过滤不在如上所述的一种安卓应用恶意性检测模型的构建方法中所述的各抗混淆特征集内的操作码特征,得到所述待测安卓应用的操作码特征序列并将其转化为灰度图;

将该灰度图输入如上所述的一种安卓恶意应用恶意家族检测模型的构建方法构建得到的安卓恶意应用恶意家族检测模型,得到该待测安卓恶意应用的恶意家族。

本发明的有益效果是:采用上述安卓恶意应用恶意家族检测模型的构建方法构建得到安卓恶意应用恶意家族检测模型,可有效抵抗混淆干扰,提高android恶意应用恶意家族检测准确度。另外,反编译提取android应用内操作码特征序列特征并转化为图像的过程中,能够完整保留操作码语义。此外,该过程无需对应用进行复杂的数据流和控制流分析,资源消耗低且耗时短,极大提高检测效率。

本发明还提供一种终端设备,包括:待测安卓应用,处理单元,以及如上所述的一种安卓应用恶意性检测模型的构建方法构建得到的安卓应用恶意性检测模型;

所述处理单元用于反编译待测安卓应用,提取该应用的粗粒度操作码特征并从中按照粗粒度到细粒度顺序过滤不在如上所述的一种安卓应用恶意性检测模型的构建方法中所述的各抗混淆特征集内的操作码特征,得到该应用的操作码特征序列并将其转化为灰度图;

所述安卓应用恶意性检测模型用于基于该灰度图检测所述待测安卓应用的恶意性。

本发明的有益效果是:采用上述安卓应用恶意性检测模型的构建方法构建得到的安卓应用恶意性检测模型,在支持android应用恶意性检测的同时,有效抵抗主流android应用混淆技术对检测结果的干扰,防止android恶意应用混淆变种绕过检测系统的检测。同时,该方法将操作码特征序列转化为灰度图,使用于多种应用样本,并极大提高终端设备对安卓应用的检测效率和使用范围,有效保障了终端设备的安全。

进一步,还包括:如上所述的一种安卓恶意应用恶意家族检测模型的构建方法构建得到的安卓恶意应用恶意家族检测模型;当所述待测安卓应用经所述安卓应用恶意性检测模型检测为恶意应用时,则采用所述安卓恶意应用恶意家族检测模型基于所述灰度图检测所述待测安卓应用的恶意家族。

本发明的进一步有益效果是:在检测到恶意应用时,采用上述方法构建的安卓恶意应用恶意家族检测模型,可以有效抵抗混淆干扰,准确检测到该恶意应用所属恶意家族。

本发明还提供一种计算机存储介质,其特征在于,所述机器可读存储介质存储有机器可执行指令,所述机器可执行指令在被处理器调用和执行时,所述机器可执行指令促使所述处理器实现如上所述的一种安卓应用恶意性检测模型的构建方法、如上所述的一种安卓应用恶意性检测方法、如上所述的一种安卓恶意应用恶意家族检测模型的构建方法、和/或如上所述的一种安卓恶意应用恶意家族检测方法。

附图说明

图1为本发明实施例提供的一种安卓应用恶意性检测模型的构建方法的流程框图;

图2为本发明实施例提供的一种抗混淆的android应用恶意性及恶意家族检测方法的检测模型构建图;

图3为本发明实施例提供的android应用恶意性及恶意家族预测的流程图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。

实施例一

一种安卓应用恶意性检测模型的构建方法100,如图1所示,包括:

步骤110、采集安卓良性应用和恶意应用样本,构成原始样本集,采用多种安卓应用混淆方法对原始样本集内各样本混淆,构成对应多个混淆变种样本集;

步骤120、提取每个样本各种粒度的操作码特征,计算每种粒度下原始样本集以及该种粒度混淆方法集所对应的所有混淆变种样本内各种操作码特征的权重,以从该各种操作码特征中选取用于加强原始样本集检测效果和降低混淆前后样本差异性的操作码特征,作为该种粒度的抗混淆特征集;

步骤130、从每个原始样本的粗粒度操作码特征中,按照粗粒度到细粒度顺序过滤不在各抗混淆特征集的操作码特征,得到该样本操作码特征序列;

步骤140、将各样本的操作码特征序列转化为灰度图,基于各样本的灰度图及其恶意性标签,训练得到安卓应用恶意性检测模型。

android恶意应用是指一类利用重打包、动态加载恶意负载、偷渡式下载等方式将具有恶意性的代码安装至用户手机上,实现权限提升、远程控制、话费吸取、隐私窃取等目的的android应用。android恶意应用变种生成技术与android恶意应用检测机制存在一种对抗性关系,android恶意应用变种生成技术的不断变化,需要更成熟的android恶意应用检测机制来检测应用的恶意性;android恶意应用检测机制不断发展的同时,攻击者也可能提升android恶意应用变种生成技术以绕过现有android恶意应用检测机制,如近期一种android恶意应用混淆变种技术avpass声称可以通过构建多种android恶意应用混淆变种,绕过现有大部分android恶意应用检测技术,极大地降低现有android恶意应用检测技术的准确性,基于此,本实施例提出一种安卓应用恶意性检测模型的构建方法。

需要说明的是,步骤110中,收集android良性应用和未标记恶意家族的恶意应用样本,构建应用原始样本集a,并借助多种android应用混淆技术,生成样本集a内应用的混淆变种。具体的,获取android恶意应用样本:借助爬虫获取android恶意应用标准样本集,每个恶意应用均已标记恶意家族类别,构建android应用恶意样本原始样本集;获取android良性应用样本:编写爬虫程序,从主流应用市场获取android应用,利用大部分主流杀毒引擎对爬取的应用进行筛选,得到其中良性应用样本,构建android应用良性样本原始样本集;构建样本集:利用各类android应用混淆技术,对获取的恶意应用样本集和良性应用样本集内android应用进行混淆,获取android应用混淆样本集。混淆方式包含字符串加密、api反射变换、权限修改等,在混淆过程中,原始样本集中各应用的恶意性不发生变化。

安卓应用的操作码特征有类级别粒度、方法级别粒度和词类级别粒度三个粒度种类,步骤120中,对步骤110中的android应用原始样本集和混淆样本集内的应用一一进行反编译,提取android应用的类级别、方法级别和词类级别的操作码特征。另外,关于各种粒度的抗混淆特征集的构建,可以基于原始样本集的操作码特征频数,计算原始样本集操作码特征的tfidf值,加入到操作码特征权重计算公式的分子中,以有利于加强原始样本集检测效果;另外可以基于原始样本集及其各种混淆样本集的操作码特征频数,计算原始样本集中各个样本在混淆前和混淆后各种操作码特征的频数差的绝对值,加入到操作码特征权重计算公式的分母中,以有利用降低混淆前后样本差异性,通过这种方式计算每种粒度下原始样本集以及该种粒度混淆方法集所对应的所有混淆变种样本内各种操作码特征的权重,以从该各种操作码特征中选取对加强原始样本集检测效果和降低混淆前后样本差异性最有利的操作码特征。

步骤130中,根据每种粒度下各种操作码特征的权重,可以选取对加强未混淆样本集检测效果和降低混淆前后样本差异性最有利的该种粒度的一些操作码特征,针对所有样本集内android应用,针对各个样本集内的android应用,提取类级别操作码特征,过滤不在抵抗混淆类级别粒度特征集合中的类级别操作码特征,然后对处理后的类级别操作码特征,进一步对其按方法级别操作码特征进行分割,过滤不在抵抗混淆方法级别粒度特征集合中的方法内操作码特征,然后再过滤不在抵抗混淆词类操作码粒度特征集合中的操作码特征。最后,按操作码特征顺序进行连接,得到操作码特征序列。

将步骤130得到的各样本的操作码特征序列转化为灰度图,并对所有灰度图像采用图像增强技术,进行放射变换、缩放、归一化操作,将所有图像的大小统一到相同的宽度和高度。可构建resnet层和全局平均池化层相结合的图像分类模型,以灰度图作为模型的输入,以图像对应的恶意性作为标签,训练android应用恶意性检测模型。采用图像增强技术,基于resnet和全局池化层构建的模型,有效提升图像分类模型的准确性,可以实现精准android应用恶意性检测。

针对收集的包含良性和恶意android应用的样本集,利用多种android应用代码混淆技术,生成每个android应用的混淆变种,构建android应用混淆变种样本集。基于上述android应用原始样本集和混淆变种样本集,提取android应用多粒度的操作码特征序列特征,预先分析各类混淆技术所对应的粒度的操作码特征序列特征,其中各类混淆技术分别对应到类级操作码特征序列、方法级别操作码特征序列和词级别操作码的混淆粒度上,然后针对选定粒度的操作码特征,可采用保证样本区分度和抵抗混淆特性的操作码特征选择算法,该特征选择算法可结合td-idf算法和自定义的混淆前后操作码特征差异性指标,在保证抵抗混淆的基础上计算操作码特征的权重,进而实现该选定粒度的操作码特征的选择。然后根据各种粒度对应的所选择的操作码特征,对原始样本的操作码特征进行过滤并可视化,将android应用恶意性检测问题转变为图像分类问题,通过图像分类模型的训练,实现对android应用混淆样本恶意行为的准确检测。

本方法在支持android应用恶意性检测的同时,有效抵抗主流android应用混淆技术对检测结果的干扰,防止android恶意应用混淆变种绕过检测系统的检测,现有安卓应用恶意性检测方法对android恶意应用混淆变种检测可靠性差,本方法解决了现有方法无法对android应用代码混淆技术进行有效抵抗的问题。另外,提取android应用内操作码特征序列特征并转化为图像的过程中,操作码特征序列作为一种实际代码语义表示,可以有效代表应用的代码逻辑,采用图像特征无需对操作码特征序列进行裁剪,完整保留操作码语义。此外,该过程无需对应用进行复杂的数据流和控制流分析,资源消耗低且耗时短,且支持在资源有限的移动端设备上实现检测功能的集成,极大提高检测效率。因此,本发明提出的方法可以有效检测android恶意应用的混淆变种,采用图像代表android应用的逻辑代码,以适用于所有类型的android应用,支持对混淆应用的检测,极大提升了检测效率。

优选的,各种粒度混淆方法集的确定方法为:提取每个样本各种粒度的操作码特征,分析所述多种安卓应用混淆方法中各混淆方法对原始样本集混淆前后操作码特征的影响程度,确定各混淆方法的特征混淆粒度,以对所述多种安卓应用混淆方法分类,得到各种粒度混淆方法集;

权限、资源、变量名、方法名、类名等混淆不会影响操作码的分布,故将这些类型的android应用混淆技术加入到词级别粒度的混淆技术集合(即词级别粒度混淆方法集)中;而插入无关方法代码混淆和插入无关类代码分别属于方法级别和类级别的混淆技术,所以可以分别加入到方法级别、类级别混淆技术集合(即方法级别粒度混淆方法集、类级别粒度混淆方法集)中,得到各种粒度混淆方法集。

可以利用步骤130获取的操作码特征序列,根据操作码编码规则,选择编码在0至255的操作码,将操作码转化为一个八位二进制整数,对操作码特征序列按一行256个操作码进行分片,序列末尾行若不足256个操作码,则用0进行补齐,从而将操作码特征序列转化为灰度图。

优选的,上述计算每种粒度下原始样本集以及该种粒度混淆方法集所对应的所有混淆变种样本内各种操作码特征的权重,具体为:

从原始样本集以及每种粒度混淆方法集所对应的所有混淆变种样本中提取该种粒度的操作码特征;计算原始样本集的该种粒度操作码特征频数矩阵、该种粒度混淆方法集对应的各混淆变种样本集的该种粒度操作码特征频数矩阵;基于所有频数矩阵,计算原始样本集内第j个原始样本中该种粒度第k种操作码特征的tfidf值;计算原始样本集内第j个原始样本中该种粒度第k种操作码特征的频数与各混淆方法混淆后对应的频数的差值的第一加和;计算所有原始样本对应的所述tfidf值的加和与原始样本集中所有原始样本对应的第一加和的第二加和的比值,作为该种粒度第k种操作码特征的权重。

优选的,上述该种粒度下第k种操作码特征的权重wk表示为:

其中,tfidfjk表示原始样本集内第j个原始样本中该种粒度第k种操作码特征的tfidf值,ajk(i)为第i号混淆方法对应的混淆变种样本集内第j个样本中该种粒度第k种操作码特征的频数,当i为0时,表示原始样本集。

针对各种粒度混淆方法集合,利用对应粒度的操作码特征,结合tfidf算法和本发明提出的混淆前后操作码特征差异性指标,tfidf是一种表示特征加权算法,可以增强样本区分度,提升文本分类的效果,在tfidf基础上,提出一种结合tfidf算法和自定义的混淆前后特征差异性指标的特征选择算法。选择每种粒度下权重大的操作码特征种类构建该种粒度的抗混淆特征集。

该特征选择算法具体表示为:针对每种粒度的粒度混淆方法集合,假设混淆前android应用样本集(也即前述的原始样本集a)标号为0,对应的操作码特征频数矩阵为(m表示原始样本集中应用样本的个数),经过该种粒度混淆方法集合混淆后,对应分别为(n代表该种粒度混淆方法集合中的混淆方法个数),tfidfjk代表未混淆数据集(即为原始样本集a)内第j个android应用中第k种操作码特征(总共有t种操作码特征)的tfidf值,t种操作码特征的权重依次为w1,w2,…,wt,ajk(i)为第i号(第i个混淆方法对应的)混淆变种样本集内第j个android应用中第k种操作码特征的频数。则wk表示第k操作码特征的权重,混淆前后操作码特征差异性指标代表操作码特征在采用android应用混淆方法前后频数的差异性,其计算方法如下式所示:

式中,加1运算可以避免分子或分母为0。

实施例二

一种安卓应用恶意性检测方法,包括:

反编译待测安卓应用,提取该应用的粗粒度操作码特征并从中按照粗粒度到细粒度顺序过滤不在如上实施例一所述的一种安卓应用恶意性检测模型的构建方法中所述的各抗混淆特征集内的操作码特征,得到该样本的操作码特征序列并将其转化为灰度图;将该灰度图输入如上实施例一所述的一种安卓应用恶意性检测模型的构建方法构建得到的安卓应用恶意性检测模型,得到该待测安卓应用的恶意性。相关技术方案同实施例一,在此不再赘述。

反编译待测android应用,按实施例一的步骤130中所述过程,对操作码特征进行处理,生成待测android应用的操作码特征序列,按实施例一的步骤140中流程转化为操作码灰度图像。将所得图像作为实施例一所得的android应用恶意性检测模型的输入,检测待测应用的恶意性。

反编译提取android应用内操作码特征序列特征并转化为图像的过程中,操作码特征序列作为一种实际代码语义表示,可以有效代表应用的代码逻辑,采用图像特征无需对操作码特征序列进行裁剪,完整保留操作码语义。此外,该过程无需对应用进行复杂的数据流和控制流分析,资源消耗低且耗时短,且支持在资源有限的移动端设备上实现检测功能的集成,极大提高检测效率,同时采用上述实施例一构建得到的检测模型,极大提高安卓应用恶意性的检测可靠性。

实施例三

一种安卓恶意应用恶意家族检测模型的构建方法,基于如上实施例一所述的一种安卓应用恶意性检测模型的构建方法得到的原始样本集中各恶意应用样本的灰度图以及对应的恶意家族标签,训练得到安卓恶意应用恶意家族检测模型。相关技术方案同实施例一,在此不再赘述。

关于用于安卓恶意应用恶意家族检测模型构建的样本采集,在实施例一采集构建原始样本集a的基础上,通过对样本集a中的未标记恶意家族的恶意应用进行恶意家族标记,即可构成用于训练安卓恶意应用恶意家族检测模型的恶意应用标签值。

将按照实施例一步骤130得到的各样本的操作码特征序列转化为灰度图,并对包含恶意家族标签的原始恶意样本集对应的灰度图像采用图像增强技术,进行放射变换、缩放、归一化操作,将所有图像的大小统一到相同的宽度和高度。可构建resnet层和全局平均池化层相结合的图像分类模型,以灰度图作为模型的输入,以图像对应的恶意家族作为标签,构建android恶意应用恶意家族检测模型。采用图像增强技术,基于resnet和全局池化层构建的模型,有效提升图像分类模型的准确性,进一步对恶意应用,准确检测其恶意家族。

反编译提取android应用内操作码特征序列特征并转化为图像的过程中,操作码特征序列作为一种实际代码语义表示,可以有效代表应用的代码逻辑,采用图像特征无需对操作码特征序列进行裁剪,完整保留操作码语义。此外,该过程无需对应用进行复杂的数据流和控制流分析,资源消耗低且耗时短,且支持在资源有限的移动端设备上实现检测功能的集成,极大提高检测效率,同时采用上述实施例二构建得到的检测模型,极大提高安卓恶意应用恶意家族的检测可靠性。

实施例四

一种安卓恶意应用恶意家族检测方法,包括:

反编译待测安卓应用,提取所述待测安卓应用的粗粒度操作码特征并从中按照粗粒度到细粒度顺序过滤不在如上实施例一所述的一种安卓应用恶意性检测模型的构建方法中所述的各抗混淆特征集内的操作码特征,得到所述待测安卓应用的操作码特征序列并将其转化为灰度图;将该灰度图输入如上实施例三所述的一种安卓恶意应用恶意家族检测模型的构建方法构建得到的安卓恶意应用恶意家族检测模型,得到该待测安卓恶意应用的恶意家族。相关技术方案同实施例一和实施例三,在此不再赘述。

本方法可在实施例二检测到待测应用为恶意应用的情况下,则进一步将图像作为实施例三所得的android恶意应用家族检测模型的输入,判别待测应用所属的恶意家族。

实施例五

一种终端设备,包括:待测安卓应用,处理单元,以及如上实施例一所述的一种安卓应用恶意性检测模型的构建方法构建得到的安卓应用恶意性检测模型;处理单元用于反编译待测安卓应用,提取该应用的粗粒度操作码特征并从中按照粗粒度到细粒度顺序过滤不在如上实施例一所述的一种安卓应用恶意性检测模型的构建方法中所述的各抗混淆特征集内的操作码特征,得到该应用的操作码特征序列并将其转化为灰度图;安卓应用恶意性检测模型用于基于该灰度图检测所述待测安卓应用的恶意性。

相关技术方案同实施例一,在此不再赘述。

优选的,还包括:如上实施例三所述的一种安卓恶意应用恶意家族检测模型的构建方法构建得到的安卓恶意应用恶意家族检测模型;当所述待测安卓应用经所述安卓应用恶意性检测模型检测为恶意应用时,则采用所述安卓恶意应用恶意家族检测模型基于所述灰度图检测所述待测安卓应用的恶意家族。相关技术方案同实施例三,在此不再赘述。

该方法支持检测android应用的恶意性,并支持对检测出具有恶意性的android应用进一步分析其恶意家族,在检测时保证检测过程的高效性和检测结果的准确性,支持在资源和计算力有限的移动端设备上进行集成。

将实施例一和实施例三中训练所得的android应用恶意性检测模型和android恶意应用恶意家族检测模型,部署到智能手机终端上。在移动智能终端上,按实施例一步骤130和步骤140的操作,实现对android应用内操作码特征的提取、处理和可视化,实现对android应用的恶意行为的分类,分类结果包含待测应用恶意性和测出的android恶意应用的恶意家族类别。

该设备在一定程度上解决传统android恶意应用检测方法效率低下的问题,在支持android应用恶意性及恶意家族检测的同时,有效抵抗主流android应用混淆技术对检测结果的干扰。,防止android恶意应用混淆变种绕过检测系统的检测,支持检测android应用的恶意性。

为了更系统、清楚的说明本发明方案,现举例如下:

首先就以下出现的技术术语进行解释和说明:

android:由google主导开发的基于linux内核的移动操作系统,以其开放的特性在移动操作系统市场上拥有较高的占有率;

android应用:运行在android系统中的应用程序,主要由java语言开发;

android应用混淆变种:代码混淆是指将计算机程序代码转化为功能等价但难以理解的形式,对android应用的代码进行混淆的方式具体包括字符串加密、api调用转为api反射调用、资源文件加密、权限信息修改等方式,利用多种混淆方式,可以生成不同类型的android应用混淆变种应用。

resnet:全称为残差网络,一种深度卷积神经网络模型,支持对图像的特征的提取,以用于后续的具体任务,如图像分类等。

androguard:一款开源免费的android应用逆向工程工具。

api反射:在程序运行过程中,可以利用类名获取类的所有属性及方法,并可以对任意对象调用其所有方法。

逻辑代码:指android应用的逻辑处理程序相关的代码,主要为java语言代码,以及其编译后的相关代码,编译后的代码文件格式可以为dex、odex、oat等。

avpass:一种android恶意应用混淆变种生成技术,发布于blackhat2017,支持包含字符串加密、api反射混淆、方法名混淆、类名混淆、权限修改混淆、资源文件混淆等多种android应用混淆方式的技术。

virustotal:一个提供免费可疑文件分析服务的网站,支持对用户上传的文件使用几十种不同的杀毒引擎进行恶意性分析。官方网址为www.virustotal.com。

本例基于android应用操作码特征,设计基于tfidf和混淆前后特征差异性指标的权重计算方法,选择抵抗混淆且保证检测准确性的特征,然后利用特征可视化、图像增强技术处理特征,结合resnet和全局平均池化层的图像分类模型,有效检测此类android恶意应用混淆变种,且在抵抗混淆的情况下实现对android恶意应用家族的检测。

图2为本例的一种抗混淆的android应用恶意性及恶意家族检测方法的检测模型构建图。主要分为四大模块:数据集收集、混淆变种生成、特征提取及处理、检测模型构建。并基于构建的检测模型,在移动端设备上实现检测功能的集成。

1)数据集收集

收集良性和恶意应用作为原始样本集,为保证样本集中恶意标签的可信度较高,恶意应用需要从恶意标准样本集中获取,良性应用则利用virustotal进行扫描,选取virustotal中所有杀毒引擎均标记为良性的样本。

2)混淆变种生成

基于构建的原始样本集,利用avpass工具,可以对原始样本集内应用进行混淆,混淆方式包含字符串加密、变量名混淆、api反射变换、资源文件混淆、权限修改等,从而构建混淆变种数据集。

3)特征提取及处理

要实现抗混淆的特性,需要对应用混淆前后的相关特征进行分析。本方法选择操作码作为特征,主要原因在于操作码特征是一种轻量级的特征,同时具有表征android应用行为的能力。操作码作为android应用执行过程中的底层指令,处理android系统内android应用运行内虚拟机的寄存器的数据,android系统中,操作码特征表示着android应用运行的实际逻辑行为,比如,android应用操作码new-instance、invoke-direct、iput-object、iget-object和return-void,分别表示创建实例、调用函数、对象赋值、调用对象和函数返回void。

利用androguard工具反编译原始样本集和变种数据集中android应用,可以先预先分析各类android应用混淆技术的操作码混淆粒度级别,如变量名、字符串、类名混淆仅仅影响代码方法内的部分操作码特征序列,均为词级别操作码特征混淆技术,插入无关方法代码混淆、插入无关类代码混淆分别为方法级别、类级别操作码特征混淆技术。针对不同操作码混淆粒度级别的混淆技术,分别构建不同粒度操作码特征的混淆技术集合,实现对各类混淆技术的分级处理。针对同一集合内所有混淆技术,可以采取相同的操作码特征选择方法,实现抵抗混淆的特征选择。

针对各种粒度混淆技术集合,利用对应粒度的操作码特征,结合tfidf算法和设计的混淆前后操作码特征差异性指标,tfidf是一种表示特征加权算法,可以增强样本区分度,提升文本分类的效果,在tfidf基础上,设计一种结合tfidf算法和自定义的混淆前后特征差异性指标的特征选择算法。该特征选择算法同前所述。

进一步,可以将处理后的操作码特征序列转化为灰度图,并使用图像仿射变换和缩放的图像增强手段对灰度图进行预处理,采用一定的图像增强方法,有效扩充训练集中android应用操作码图像特征的变体。

4)检测模型构建

采用结合resnet和全局平均池化层所构建的模型,其中resnet模型可以有效地自动化提取图像样本的上层特征,利用该上层特征,全局平均池化层可以进行分类且具有降低过拟合风险的效果。基于原始样本数据集所得图像作为模型输入,以图像对应恶意性标签为类别,可以训练android应用恶意性检测模型;基于包含恶意家族标签的原始恶意样本数据集所得图像为输入,以图像的恶意家族标签为类别,能够构建android恶意应用家族检测模型。

5)移动端检测功能集成

现有android恶意应用检测系统往往在云端部署搭建,考虑的更多是在应用市场所在云内android应用的安全,而针对在多个移动端设备间传播的恶意应用混淆变种,在设备离线时,无法与云端进行网络传输,需要移动端设备内部实现有效的应用恶意性检测机制。由于移动端设备资源相对有限,控制流数据流等复杂的静态分析方法会严重影响移动端设备的用户体验,需要一种轻量级的特征提取和分类手段,保证移动端设备上可以高效地进行android恶意应用的检测。

开发一款支持对android设备进行恶意应用检测的android恶意性扫描应用,该应用支持对android应用进行扫描并分析是否存在恶意行为。首先基于tensorflowlite,将云端训练好的检测模型部署到该android恶意性扫描应用内,然后在该应用中,利用dexlib库实现对设备内其他android应用进行操作码特征提取、处理和可视化的程序逻辑,然后采用部署在android恶意性扫描应用内的检测模型分析设备内其他android应用,分析结果包含三部分,是否具有恶意性、恶意性结果的可信的概率大小和检测出的android恶意应用的恶意家族类别。

图3显示了android应用恶意性及恶意家族预测的流程图,具体包含以下步骤:

步骤1.反编译待测android应用,遍历android应用内的smali代码,提取android应用操作码特征序列,利用操作码特征选择算法中选取的抗混淆特征集,提取待测应用操作码特征序列。

步骤2.由于操作码名称与操作码编码有一一映射关系,且操作码编码为2位16进制编码,如move操作码编码为01,return的操作码编码为0f,将处理后的待测应用操作码中编码在0至255的操作码进行序列化,并转化为16进制数序列。以序列中每个操作码对应的编码为灰度图中的一个像素点,以256作为图像的固定宽度,图像最后一行不足256的用0补齐,则将待测应用转化为图像。

步骤3.基于构建的android应用恶意性检测模型,预测待测android应用的恶意性,若待测android应用检测为恶意应用,则基于构建的android恶意应用家族检测模型,给出待测应用所属的恶意行为家族。

实施例六

一种计算机存储介质,所述机器可读存储介质存储有机器可执行指令,所述机器可执行指令在被处理器调用和执行时,所述机器可执行指令促使所述处理器实现如上实施例一所述的一种安卓应用恶意性检测模型的构建方法、如上实施例二所述的一种安卓应用恶意性检测方法、如上实施例三所述的一种安卓恶意应用恶意家族检测模型的构建方法、和/或如上实施例四所述的一种安卓恶意应用恶意家族检测方法。相关技术方案同实施例一-

实施例五,在此不再赘述。

本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

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