CN109829302A - Android恶意应用家族分类方法、装置与电子设备 - Google Patents
Android恶意应用家族分类方法、装置与电子设备 Download PDFInfo
- Publication number
- CN109829302A CN109829302A CN201811621919.7A CN201811621919A CN109829302A CN 109829302 A CN109829302 A CN 109829302A CN 201811621919 A CN201811621919 A CN 201811621919A CN 109829302 A CN109829302 A CN 109829302A
- Authority
- CN
- China
- Prior art keywords
- malicious application
- operation code
- file
- sensitive
- android malicious
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Landscapes
- Debugging And Monitoring (AREA)
- Telephone Function (AREA)
Abstract
本发明实施例提供一种Android恶意应用家族分类方法、装置与电子设备,其中所述方法包括:对Android恶意应用的APK文件进行预处理,获取所述APK文件对应的smali文件;基于所述smali文件,通过统计不同包含敏感元素的方法块,并基于Opcode的语义信息,将Opcode用形式化的操作码统一表示,生成敏感操作码序列;基于所述敏感操作码序列,生成文本特征向量,并基于所述文本特征向量,对所述Android恶意应用进行分类。本发明实施例能够更准确的刻画恶意应用的行为,从而更有效的提高对恶意应用的分类精度。
Description
技术领域
本发明实施例涉及数据信息安全技术领域,更具体地,涉及一种Android恶意应用家族分类方法、装置与电子设备。
背景技术
移动互联网的发展和智能手机的大范围使用,使得恶意代码对智能手机的系统安全及信息安全的威胁日益增加。因此,对恶意代码的检测与识别对保障智能手机的系统安全及信息安全具有重要意义,有利于对恶意应用的有效识别与拦截,保障用户数据安全。
目前,针对恶意代码和恶意应用的检测与识别受到越来越多的重视,其中在一种android恶意代码检测方法中,首先对dex文件格式解析,识别dex文件中的结构体,扫描各结构体中的类和函数,记录函数对应OpCode代码段内容;再对得到的OpCode代码段内容进行反汇编,获取有API调用或数据赋值行为的OpCode代码段的OP段数据及index段对应数据;最后计算OP段数据的特征码,和/或OP段数据及index段对应数据的特征码,将计算得到的特征码与恶意代码段特征库中的特征码匹配,若特征码匹配成功,且特征类型一致,则输出恶意代码名称。
在上述检测方法中,需要获取有API调用或数据赋值行为的OpCode代码段的OP段数据及index段所对应的数据,这种方式很容易通过简单修改这些字段的数值而将检测方法绕过。更重要的是,单单获取有API调用和数据赋值的行为不能准确地刻画恶意应用的行为,在多分类的任务中出现较高的误报,且因为只使用简单的匹配算法作为后续的决策算法,容易因为过拟合导致分类精度的降低。
发明内容
为了克服上述问题或者至少部分地解决上述问题,本发明实施例提供一种Android恶意应用家族分类方法、装置与电子设备,用以更准确的刻画恶意应用的行为,从而更有效的提高对恶意应用的分类精度。
第一方面,本发明实施例提供一种Android恶意应用家族分类方法,包括:
对Android恶意应用的APK文件进行预处理,获取所述APK文件对应的smali文件;
基于所述smali文件,通过统计不同包含敏感元素的方法块,并基于Opcode的语义信息,将Opcode用形式化的操作码统一表示,生成敏感操作码序列;
基于所述敏感操作码序列,生成文本特征向量,并基于所述文本特征向量,对所述Android恶意应用进行分类。
第二方面,本发明实施例提供一种Android恶意应用家族分类装置,包括:
预处理模块,用于对Android恶意应用的APK文件进行预处理,获取所述APK文件对应的smali文件;
分析计算模块,用于基于所述smali文件,通过统计不同包含敏感元素的方法块,并基于Opcode的语义信息,将Opcode用形式化的操作码统一表示,生成敏感操作码序列;
分类输出模块,用于基于所述敏感操作码序列,生成文本特征向量,并基于所述文本特征向量,对所述Android恶意应用进行分类。
第三方面,本发明实施例提供一种电子设备,包括:至少一个存储器、至少一个处理器、通信接口和总线;所述存储器、所述处理器和所述通信接口通过所述总线完成相互间的通信,所述通信接口用于所述电子设备与Android恶意应用服务器设备之间的信息传输;所述存储器中存储有可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时,实现如上第一方面所述的Android恶意应用家族分类方法。
第四方面,本发明实施例提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行如上第一方面所述的Android恶意应用家族分类方法。
本发明实施例提供的Android恶意应用家族分类方法、装置与电子设备,通过将敏感操作码生成语义相关的向量,基于更多的敏感元素构建分类特征,能够更全面准确地刻画Android恶意应用的行为特征。同时,将Android恶意应用家族分类的问题转换成文本语义分析的问题,能够有效提高系统的泛化能力,从而更有效的提高对恶意应用的分类精度。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明一实施例提供的Android恶意应用家族分类方法的流程示意图;
图2为根据本发明实施例提供的Android恶意应用家族分类方法中Opcode与操作码对应关系示意图;
图3为根据本发明实施例提供的Android恶意应用家族分类方法中生成的敏感操作码序列示例图;
图4为本发明另一实施例提供的Android恶意应用家族分类方法的流程示意图;
图5为本发明实施例提供的Android恶意应用家族分类装置的结构示意图;
图6为本发明实施例提供的电子设备的实体结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明实施例的一部分实施例,而不是全部的实施例。基于本发明实施例中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明实施例保护的范围。
本发明实施例针对现有技术对恶意应用行为刻画不准确以及对恶意应用分类精度不高的问题,通过将敏感操作码生成语义相关的向量,基于更多的敏感元素构建分类特征,能够更全面准确地刻画Android恶意应用的行为特征。同时,将Android恶意应用家族分类的问题转换成文本语义分析的问题,能够有效提高系统的泛化能力,从而更有效的提高对恶意应用的分类精度。以下将具体通过多个实施例对本发明实施例进行展开说明和介绍。
图1为本发明一实施例提供的Android恶意应用家族分类方法的流程示意图,如图1所示,该方法包括:
S101,对Android恶意应用的APK文件进行预处理,获取APK文件对应的smali文件。
本发明实施例在对Android恶意应用进行分类时,首先针对该Android恶意应用的APK文件进行分析,以从中提取该Android恶意应用的相关特征信息,再根据这些相关特征信息来对Android恶意应用进行准确分类。具体而言,先会获取待分类的Android恶意应用的APK文件,之后对该APK文件进行给定流程的预处理,生成smali文件的集合。可以理解的是,该预处理过程可以采用现有的处理方法,也可以采用改进的处理算法。
其中可选的,对Android恶意应用的APK文件进行预处理,获取APK文件对应的smali文件的步骤具体包括:将APK文件进行解压缩,提取dex文件,并利用反编译工具,将dex文件反编译成smali文件的集合。
S102,基于smali文件,通过统计不同包含敏感元素的方法块,并基于Opcode的语义信息,将Opcode用形式化的操作码统一表示,生成敏感操作码序列。
在根据上述步骤得到APK文件对应的smali文件的基础上,可以统计这些smali文件中各不同包含敏感元素的方法块,同时可以提取smali文件中的Opcode和敏感元素。其中,操作码(Operation Code)表示,描述机器语言指令中,指定要执行某种操作的机器码。本发明实施例中指的是Android Dalvik虚拟机对应的操作指令。
之后,可以根据各Opcode的语义信息,将各Opcode用对应的操作码进行表示。即,对于给定的不同操作码分类,根据各Opcode的语义信息,将各Opcode分配到语义相关的操作码分类中。最终可以利用提取出来的敏感元素和对各Opcode的操作码表示,生成敏感操作码序列。
S103,基于敏感操作码序列,生成文本特征向量,并基于文本特征向量,对Android恶意应用进行分类。
本发明实施例在上述各步骤处理的基础上,可以得到Android恶意应用的敏感操作码序列。为了方便高效的利用分类模型实现Android恶意应用的分类,首先根据Android恶意应用的敏感操作码序列,进行Android恶意应用的特征向量的提取,得到对应的文本特征向量。之后,将该文本特征向量输入训练好的分类模型,得到对Android恶意应用的家族分类结果。
本发明实施例提供的Android恶意应用家族分类方法,通过将敏感操作码生成语义相关的向量,基于更多的敏感元素构建分类特征,能够更全面准确地刻画Android恶意应用的行为特征。同时,将Android恶意应用家族分类的问题转换成文本语义分析的问题,能够有效提高系统的泛化能力,从而更有效的提高对恶意应用的分类精度。
本发明实施例在实际应用中,在基于文本特征向量,对Android恶意应用进行分类的步骤之前,该方法还可包括:通过对比多种给定算法的分类结果,选取分类效果最好的分类算法,并对一定数量的Android恶意应用样本,执行预处理至生成文本特征向量的处理步骤,获取样本文本特征向量;利用样本文本特征向量,对分类效果最好的分类算法进行训练和测试,获取训练好的分类模型。
可以理解,在利用训练好的分类模型进行待分类的Android恶意应用的家族分类之前,先要利用一定量的训练样本对建立的基础分类模型进行训练,得到分类精度达到设定要求的分类模型,即为训练好的分类模型。
具体而言,为了取得较好的分类结果,首先利用多种不同的分类算法,对同一组Android恶意应用样本分别进行分类计算,得到分类准确率最高,即分类效果最好的一种分类算法。例如,事先分别利用K-Nearest Neighbors、Linear SVM、RBF SVM、Decision Tree、Random Forest、AdaBoost、LogisticRegression、GradientBootstingClassifier和MLPClassifier共9种分类算法,分别对同一组Android恶意应用样本进行分类计算,选取出其中分类效果最好的一种分类算法。
可以理解的是,在实现上述对分类效果最好的分类算法的选取时,以及在利用上述分类算法进行Android恶意应用样本的分类时,需要对这些Android恶意应用样本进行特征向量提取。具体而言,可以采用上述实施例对待分类的Android恶意应用的文本特征向量的提取处理流程。即,首先对Android恶意应用样本的APK文件进行预处理,获取该APK文件对应的smali文件,再基于该smali文件,通过统计其中不同的包含敏感元素的方法块,并基于其中Opcode的语义信息,将Opcode用形式化的操作码统一表示,生成敏感操作码序列,最后基于该敏感操作码序列,生成Android恶意应用样本的文本特征向量。
最后,在获取Android恶意应用样本的文本特征向量以及选取到分类效果最好的一种分类算法的基础上,将该文本特征向量输入到分类效果最好的分类算法模型中,对该模型进行迭代训练和测试,最终得到分类精度达到设定要求的分类模型,作为训练好的分类模型。
其中,根据上述各实施例可选的,基于smali文件,通过统计不同包含敏感元素的方法块,并基于Opcode的语义信息,将Opcode用形式化的操作码统一表示,生成敏感操作码序列的步骤具体包括:统计smali文件中的包含敏感元素的方法块,并提取其中的Opcode和敏感元素;基于Opcode的语义信息,将所有Opcode用形式化的操作码表示;基于敏感元素和操作码表示,生成敏感操作码序列。
根据上述各实施例,在得到Android恶意应用的APK文件对应的smali文件的基础上,根据smali文件中的字节码,首先统计smali文件中的包含敏感元素的方法块,并提取包含敏感元素的方法块中的所有Opcode和敏感元素。之后,通过分析各Opcode的语义信息,将各Opcode用形式化的操作码表示。例如,如图2所示,为根据本发明实施例提供的Android恶意应用家族分类方法中Opcode与操作码对应关系示意图,图中将操作码分为九个类别,分别为MOVE、CAL、GET、PUT、INVOKE、GO、CMP、RETURN和IF。根据Opcode的实际语义,找到图2中对应的语义所属的操作码,即可将该Opcode用对应的操作码表示。最后根据Opcode的操作码表示以及对敏感元素的提取,生成的敏感操作码序列如图3所示,为根据本发明实施例提供的Android恶意应用家族分类方法中生成的敏感操作码序列示例图。图中斜体字符串为敏感元素缩写表示,该表示由两部分组成,前缀为敏感元素类型编号,后缀数字编号,用以表示特定的敏感元素,便于书写。本发明实施例只提取包含敏感元素的方法块,大大简化了文本量,并生成方法对应的敏感操作码序列,用换行符隔开。
其中,根据上述各实施例可选的,统计smali文件中的包含敏感元素的方法块的步骤具体包括:基于敏感API、敏感action和敏感字符串,统计smali文件中的包含敏感元素的方法块。
根据上述各实施例,本发明实施例需要对smali文件中的包含敏感元素的方法块进行统计,具体可以根据不同的敏感元素分别进行统计。首先,选取只调用敏感元素的代码块(一个代码方法),将smali文件中代码中的包含敏感元素的方法块按照先后顺序提取出来,这些包含敏感元素的方法块包括敏感API、敏感action和敏感字符串。如表1所示,为根据本发明实施例的敏感元素示例表,表中分别显示了对smali文件中的敏感API、敏感action和敏感字符串的统计结果。
表1,根据本发明实施例的敏感元素示例表
进一步的,在上述各实施例的基础上,在统计smali文件中的包含敏感元素的方法块的步骤之后,本发明实施例的方法还包括:通过判断敏感action相应的组件是在后端还是在前端,将敏感action分为后端敏感action和前端敏感action。
本发明实施例敏感元素用缩写表示:敏感API->API,敏感action->BA,AA,敏感字符串->STR。需注意的是,敏感action按照相应的组件是在后台还是在前台,将敏感元素分为了2类。如组件Activity往往是与用户界面相关的组件,一般都与前台交互,而组件service和receiver一般都在后台响应,所以本发明将敏感的action分为了2类。
其中,根据上述各实施例可选的,基于敏感操作码序列,生成文本特征向量的步骤具体包括:将同一个APK文件中生成的敏感操作码序列汇总在一个文档中,并基于文档,利用Doc2vec工具,生成APK文件对应的文本特征向量。
在根据上述各实施例生成Android恶意应用对应的文本特征向量的过程中,对于Android恶意应用对应的APK文件,将根据其生成的敏感操作码序列汇总在一个文档中,并利用Doc2vec工具对该文档进行分析,提取其中的特征向量,作为该APK文件对应的文本特征向量。其中Doc2vec对应的参数如表2所示,为根据本发明实施例使用的Doc2vec对应的参数表。
表2,根据本发明实施例使用的Doc2vec对应的参数表
参数 | 值 | 描述 |
size | 50 | 特征向量的维度。 |
window | 8 | 句子中当前词语预测词之间的最大距离。 |
Min_count | 1 | 忽略频率低于此阈值的词。 |
workers | 8 | 使用多个线程来训练模型。 |
表中显示出了所采用的Doc2vec工具的四个参数,分别为size、window、Min_count和workers,分别表示特征向量的维度、句子中当前词语预测词之间的最大距离、忽略频率低于此阈值的词以及使用多个线程来训练模型。
为进一步说明本发明实施例的技术方案,本发明实施例根据上述各实施例提供如下实施例的处理流程,但不对本发明实施例的保护范围进行限制。
图4为本发明另一实施例提供的Android恶意应用家族分类方法的流程示意图,如图4所示,本发明实施例将Android恶意应用家族分类任务转换成一个文本语义分类的任务。首先基于Opcode、敏感API、敏感action和敏感字符串,构建了一种用于Android恶意应用代码语义分析的特征-敏感操作码序列,再利用Doc2vec工具,将敏感操作码序列转换成语义相关的文本特征向量,并从多种分类算法中选出最适合该模型的分类算法KNN,最后利用分类算法KNN,根据提取的文本特征向量,对待分类的Android恶意应用进行分类。
具体而言,首先进行恶意样本的预处理,将APK文件解压缩,提取出dex文件,利用反编译工具apktool将dex反编译成smali文件的集合。
其次,生成敏感操作码序列,基于smali文件的集合,统计包含敏感元素的方法块,并按照语义信息,统一将smali文件中的Opcode用上述各实施例的9类的操作码表示。具体选取只调用敏感元素的代码块(一个代码方法),将代码中的操作码和包含敏感元素的方法块按照先后顺序提取出来。
其中,敏感元素用缩写表示:敏感API->API,敏感action->BA,AA,敏感字符串->STR。需注意的是,敏感action按照相应的组件是在后台还是在前台,将敏感元素分为了2类。如组件Activity往往是与用户界面相关的组件,一般都与前台交互,而组件service和receiver一般都在后台响应,所以本发明将敏感的action分为了2类。
再次,将一个APK文件中生成的敏感操作码序列汇总在一个文档中,使用Doc2vec工具生成APK对应的文本特征向量。
最后,通过对比9中分类算法(K-Nearest Neighbors、Linear SVM、RBF SVM、Decision Tree、Random Forest、AdaBoost、LogisticRegression、GradientBootstingClassifier和MLPClassifier)的分类结果,最终得出最适合本系统的分类算法KNN,使用KNN作为最后的分类算法对数据进行训练,最终生成Android恶意应用家族的分类模型,用来对待分类的Android恶意应用进行家族分类。
为了进一步说明本发明实施例的有益效果,进行试验验证。具体使用数据集drebin进行我们发明的实验验证,选取家族数量前40的样本进行实验,按照数量的多少从1到40进行编号,采用2字交叉验证。
另外,为了选择适合模型最优的算法,选择9种常见的机器学习算法:K-NearestNeighbors、Linear SVM、RBF SVM、Decision Tree、Random Forest、AdaBoost、LogisticRegression、GradientBootstingClassifier和MLPClassifier,其简称分别为KNN、LSVM、RSVM、DT、RF、AB、LR、GB和MLP。结果显示,KNN、DT和GB的分类total accuracy、average AUC都达到了99%以上,但是GB训练耗时远远超过其他算法,KNN和DT耗时相当,因此选择分类精度比DT高一点的KNN算法作为最后的分类算法,建立分类模型。
在采用本发明实施例的方法进行上述Android恶意应用的家族分类时,产生敏感操作码序列的向量比基于所有操作码序列花费更少的时间,两种方法的敏感操作码序列生成时间、训练时间和测试时间几乎相同。此外,当生成特征向量时,基于操作码的方法比采用本发明实施例的方法使用更多的存储空间。并且,与采用drebin相比,本发明实施例具有较高的total accuracy和较低的假阳性。
作为本发明实施例的另一个方面,本发明实施例根据上述各实施例提供一种Android恶意应用家族分类装置,该装置用于在上述各实施例中实现Android恶意应用的家族分类。因此,在上述各实施例的Android恶意应用家族分类方法中的描述和定义,可以用于本发明实施例中各个执行模块的理解,具体可参考上述实施例,此处不在赘述。
根据本发明实施例的一个实施例,Android恶意应用家族分类装置的结构如图5所示,为本发明实施例提供的Android恶意应用家族分类装置的结构示意图,该装置可以用于实现上述各方法实施例中Android恶意应用的家族分类,该装置包括:预处理模块501、分析计算模块502和分类输出模块503。其中:
预处理模块501用于对Android恶意应用的APK文件进行预处理,获取APK文件对应的smali文件;分析计算模块502用于基于smali文件,通过统计不同包含敏感元素的方法块,并基于Opcode的语义信息,将Opcode用形式化的操作码统一表示,生成敏感操作码序列;分类输出模块503用于基于敏感操作码序列,生成文本特征向量,并基于文本特征向量,对Android恶意应用进行分类。
具体而言,预处理模块501首先针对该Android恶意应用的APK文件进行分析,以从中提取该Android恶意应用的相关特征信息,再根据这些相关特征信息来对Android恶意应用进行准确分类。具体而言,预处理模块501先会获取待分类的Android恶意应用的APK文件,之后对该APK文件进行给定流程的预处理,生成smali文件的集合。
之后,分析计算模块502可以统计这些smali文件中各不同包含敏感元素的方法块分别出现的次数,同时可以提取smali文件中的Opcode。之后,分析计算模块502可以根据各Opcode的语义信息,将各Opcode用对应的操作码进行表示。即,对于给定的不同操作码分类,根据各Opcode的语义信息,将各Opcode分配到语义相关的操作码分类中。最终分析计算模块502可以利用统计出来的包含敏感元素的方法块和对各Opcode的操作码表示,生成敏感操作码序列。
最后,为了方便高效的利用分类模型实现Android恶意应用的分类,分类输出模块503首先根据Android恶意应用的敏感操作码序列,进行Android恶意应用的特征向量的提取,得到对应的文本特征向量。之后,分类输出模块503将该文本特征向量输入训练好的分类模型,得到对Android恶意应用的家族分类结果。
本发明实施例提供的Android恶意应用家族分类装置,通过设置相应的执行模块,将敏感操作码生成语义相关的向量,基于更多的敏感元素构建分类特征,能够更全面准确地刻画Android恶意应用的行为特征。同时,将Android恶意应用家族分类的问题转换成文本语义分析的问题,能够有效提高系统的泛化能力,从而更有效的提高对恶意应用的分类精度。
可以理解的是,本发明实施例中可以通过硬件处理器(hardware processor)来实现上述各实施例的装置中的各相关程序模块。并且,本发明实施例的Android恶意应用家族分类装置利用上述各程序模块,能够实现上述各方法实施例的Android恶意应用家族分类流程,在用于实现上述各方法实施例中Android恶意应用的家族分类时,本发明实施例的装置产生的有益效果与对应的上述各方法实施例相同,可以参考上述各方法实施例,此处不再赘述。
作为本发明实施例的又一个方面,本实施例根据上述各实施例提供一种电子设备,参考图6,为本发明实施例提供的电子设备的实体结构示意图,包括:至少一个存储器601、至少一个处理器602、通信接口603和总线604。
其中,存储器601、处理器602和通信接口603通过总线604完成相互间的通信,通信接口603用于该电子设备与Android恶意应用服务器设备之间的信息传输;存储器601中存储有可在处理器602上运行的计算机程序,处理器602执行该计算机程序时,实现如上述各实施例所述的Android恶意应用家族分类方法。
可以理解为,该电子设备中至少包含存储器601、处理器602、通信接口603和总线604,且存储器601、处理器602和通信接口603通过总线604形成相互间的通信连接,并可完成相互间的通信,如处理器602从存储器601中读取Android恶意应用家族分类方法的程序指令等。另外,通信接口603还可以实现该电子设备与Android恶意应用服务器设备之间的通信连接,并可完成相互间信息传输,如通过通信接口603实现Android恶意应用的家族分类等。
电子设备运行时,处理器602调用存储器601中的程序指令,以执行上述各方法实施例所提供的方法,例如包括:对Android恶意应用的APK文件进行预处理,获取APK文件对应的smali文件;基于smali文件,通过统计不同包含敏感元素的方法块,并基于Opcode的语义信息,将Opcode用形式化的操作码统一表示,生成敏感操作码序列;基于敏感操作码序列,生成文本特征向量,并基于文本特征向量,对Android恶意应用进行分类等。
上述的存储器601中的程序指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。或者,实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
本发明实施例还根据上述各实施例提供一种非暂态计算机可读存储介质,该非暂态计算机可读存储介质存储计算机指令,该计算机指令使计算机执行如上述各实施例所述的Android恶意应用家族分类方法,例如包括:对Android恶意应用的APK文件进行预处理,获取APK文件对应的smali文件;基于smali文件,通过统计不同包含敏感元素的方法块,并基于Opcode的语义信息,将Opcode用形式化的操作码统一表示,生成敏感操作码序列;基于敏感操作码序列,生成文本特征向量,并基于文本特征向量,对Android恶意应用进行分类等。
本发明实施例提供的电子设备和非暂态计算机可读存储介质,通过执行上述各实施例所述的Android恶意应用家族分类方法,将敏感操作码生成语义相关的向量,基于更多的敏感元素构建分类特征,能够更全面准确地刻画Android恶意应用的行为特征。同时,将Android恶意应用家族分类的问题转换成文本语义分析的问题,能够有效提高系统的泛化能力,从而更有效的提高对恶意应用的分类精度。
可以理解的是,以上所描述的装置、电子设备及存储介质的实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,既可以位于一个地方,或者也可以分布到不同网络单元上。可以根据实际需要选择其中的部分或全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上实施方式的描述,本领域的技术人员可以清楚地了解,各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如U盘、移动硬盘、ROM、RAM、磁碟或者光盘等,包括若干指令,用以使得一台计算机设备(如个人计算机,服务器,或者网络设备等)执行上述各方法实施例或者方法实施例的某些部分所述的方法。
另外,本领域内的技术人员应当理解的是,在本发明实施例的申请文件中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本发明实施例的说明书中,说明了大量具体细节。然而应当理解的是,本发明实施例的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。类似地,应当理解,为了精简本发明实施例公开并帮助理解各个发明方面中的一个或多个,在上面对本发明实施例的示例性实施例的描述中,本发明实施例的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。
然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明实施例要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明实施例的单独实施例。
最后应说明的是:以上实施例仅用以说明本发明实施例的技术方案,而非对其限制;尽管参照前述实施例对本发明实施例进行了详细的说明,本领域的技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明实施例各实施例技术方案的精神和范围。
Claims (10)
1.一种Android恶意应用家族分类方法,其特征在于,包括:
对Android恶意应用的APK文件进行预处理,获取所述APK文件对应的smali文件;
基于所述smali文件,通过统计不同包含敏感元素的方法块,并基于Opcode的语义信息,将Opcode用形式化的操作码统一表示,生成敏感操作码序列;
基于所述敏感操作码序列,生成文本特征向量,并基于所述文本特征向量,对所述Android恶意应用进行分类。
2.根据权利要求1所述的方法,其特征在于,在所述基于所述文本特征向量,对所述Android恶意应用进行分类的步骤之前,还包括:
通过对比多种给定算法的分类结果,选取分类效果最好的分类算法,并对一定数量的Android恶意应用样本,执行所述预处理至所述生成文本特征向量的处理步骤,获取样本文本特征向量;
利用所述样本文本特征向量,对所述分类效果最好的分类算法进行训练和测试,获取训练好的分类模型。
3.根据权利要求1或2所述的方法,其特征在于,所述对Android恶意应用的APK文件进行预处理,获取所述APK文件对应的smali文件的步骤具体包括:
将所述APK文件进行解压缩,提取dex文件,并利用反编译工具,将所述dex文件反编译成smali文件的集合。
4.根据权利要求1或2所述的方法,其特征在于,所述基于所述smali文件,通过统计不同包含敏感元素的方法块,并基于Opcode的语义信息,将Opcode用形式化的操作码统一表示,生成敏感操作码序列的步骤具体包括:
统计所述smali文件中的所述包含敏感元素的方法块,并提取所述包含敏感元素的方法块中的Opcode和敏感元素;
基于Opcode的语义信息,将所有Opcode用形式化的操作码表示;
基于所述敏感元素和所述操作码表示,生成所述敏感操作码序列。
5.根据权利要求4所述的方法,其特征在于,所述统计所述smali文件中的所述包含敏感元素的方法块的步骤具体包括:
基于敏感API、敏感action和敏感字符串,统计所述smali文件中的所述包含敏感元素的方法块的数量。
6.根据权利要求5所述的方法,其特征在于,在所述统计所述smali文件中的所述包含敏感元素的方法块的步骤之后,还包括:
通过判断所述敏感action相应的组件是在后端还是在前端,将所述敏感action分为后端敏感action和前端敏感action。
7.根据权利要求1或2所述的方法,其特征在于,所述基于所述敏感操作码序列,生成文本特征向量的步骤具体包括:
将同一个APK文件中生成的敏感操作码序列汇总在一个文档中,并基于所述文档,利用Doc2vec工具,生成APK文件对应的所述文本特征向量。
8.一种Android恶意应用家族分类装置,其特征在于,包括:
预处理模块,用于对Android恶意应用的APK文件进行预处理,获取所述APK文件对应的smali文件;
分析计算模块,用于基于所述smali文件,通过统计不同包含敏感元素的方法块,并基于Opcode的语义信息,将Opcode用形式化的操作码统一表示,生成敏感操作码序列;
分类输出模块,用于基于所述敏感操作码序列,生成文本特征向量,并基于所述文本特征向量,对所述Android恶意应用进行分类。
9.一种电子设备,其特征在于,包括:至少一个存储器、至少一个处理器、通信接口和总线;
所述存储器、所述处理器和所述通信接口通过所述总线完成相互间的通信,所述通信接口还用于所述电子设备与Android恶意应用服务器之间的信息传输;
所述存储器中存储有可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时,实现如权利要求1至7中任一所述的方法。
10.一种非暂态计算机可读存储介质,其特征在于,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行如权利要求1至7中任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811621919.7A CN109829302B (zh) | 2018-12-28 | 2018-12-28 | Android恶意应用家族分类方法、装置与电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811621919.7A CN109829302B (zh) | 2018-12-28 | 2018-12-28 | Android恶意应用家族分类方法、装置与电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109829302A true CN109829302A (zh) | 2019-05-31 |
CN109829302B CN109829302B (zh) | 2021-01-22 |
Family
ID=66860532
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811621919.7A Active CN109829302B (zh) | 2018-12-28 | 2018-12-28 | Android恶意应用家族分类方法、装置与电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109829302B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110414234A (zh) * | 2019-06-28 | 2019-11-05 | 奇安信科技集团股份有限公司 | 恶意代码家族识别方法及装置 |
CN110990834A (zh) * | 2019-11-19 | 2020-04-10 | 重庆邮电大学 | 一种android恶意软件的静态检测方法、系统及介质 |
CN111143842A (zh) * | 2019-12-12 | 2020-05-12 | 广州大学 | 一种恶意代码检测方法及系统 |
CN111259985A (zh) * | 2020-02-19 | 2020-06-09 | 腾讯科技(深圳)有限公司 | 基于业务安全的分类模型训练方法、装置和存储介质 |
CN113656801A (zh) * | 2021-08-19 | 2021-11-16 | 建信金融科技有限责任公司 | Android恶意应用家族分类方法、服务器、终端 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103902909A (zh) * | 2013-12-25 | 2014-07-02 | 武汉安天信息技术有限责任公司 | 一种基于Opcode回溯的Android恶意代码检测系统及方法 |
US20150370559A1 (en) * | 2014-02-28 | 2015-12-24 | International Business Machines Corporation | Endian-mode-independent memory access in a bi-endian-mode processor architecture |
CN106096405A (zh) * | 2016-04-26 | 2016-11-09 | 浙江工业大学 | 一种基于Dalvik指令抽象的Android恶意代码检测方法 |
CN106650443A (zh) * | 2016-11-16 | 2017-05-10 | 中国人民解放军国防科学技术大学 | 一种基于增量dbscan算法的恶意代码家族识别方法 |
CN108280348A (zh) * | 2018-01-09 | 2018-07-13 | 上海大学 | 基于rgb图像映射的安卓恶意软件识别方法 |
-
2018
- 2018-12-28 CN CN201811621919.7A patent/CN109829302B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103902909A (zh) * | 2013-12-25 | 2014-07-02 | 武汉安天信息技术有限责任公司 | 一种基于Opcode回溯的Android恶意代码检测系统及方法 |
US20150370559A1 (en) * | 2014-02-28 | 2015-12-24 | International Business Machines Corporation | Endian-mode-independent memory access in a bi-endian-mode processor architecture |
CN106096405A (zh) * | 2016-04-26 | 2016-11-09 | 浙江工业大学 | 一种基于Dalvik指令抽象的Android恶意代码检测方法 |
CN106650443A (zh) * | 2016-11-16 | 2017-05-10 | 中国人民解放军国防科学技术大学 | 一种基于增量dbscan算法的恶意代码家族识别方法 |
CN108280348A (zh) * | 2018-01-09 | 2018-07-13 | 上海大学 | 基于rgb图像映射的安卓恶意软件识别方法 |
Non-Patent Citations (2)
Title |
---|
卢占军: "基于操作码序列的静态恶意代码检测方法的研究", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
陈铁明等: "基于API调用序列的Android恶意代码检测方法研究", 《浙江工业大学学报》 * |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110414234A (zh) * | 2019-06-28 | 2019-11-05 | 奇安信科技集团股份有限公司 | 恶意代码家族识别方法及装置 |
CN110990834A (zh) * | 2019-11-19 | 2020-04-10 | 重庆邮电大学 | 一种android恶意软件的静态检测方法、系统及介质 |
CN111143842A (zh) * | 2019-12-12 | 2020-05-12 | 广州大学 | 一种恶意代码检测方法及系统 |
CN111143842B (zh) * | 2019-12-12 | 2022-07-01 | 广州大学 | 一种恶意代码检测方法及系统 |
CN111259985A (zh) * | 2020-02-19 | 2020-06-09 | 腾讯科技(深圳)有限公司 | 基于业务安全的分类模型训练方法、装置和存储介质 |
CN111259985B (zh) * | 2020-02-19 | 2023-06-30 | 腾讯云计算(长沙)有限责任公司 | 基于业务安全的分类模型训练方法、装置和存储介质 |
CN113656801A (zh) * | 2021-08-19 | 2021-11-16 | 建信金融科技有限责任公司 | Android恶意应用家族分类方法、服务器、终端 |
CN113656801B (zh) * | 2021-08-19 | 2023-06-09 | 建信金融科技有限责任公司 | Android恶意应用家族分类方法、服务器、终端 |
Also Published As
Publication number | Publication date |
---|---|
CN109829302B (zh) | 2021-01-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109829302A (zh) | Android恶意应用家族分类方法、装置与电子设备 | |
US11463476B2 (en) | Character string classification method and system, and character string classification device | |
CN103853979B (zh) | 基于机器学习的程序识别方法及装置 | |
CN111866004B (zh) | 安全评估方法、装置、计算机系统和介质 | |
CN109598124A (zh) | 一种webshell检测方法以及装置 | |
Wang et al. | Representing fine-grained co-occurrences for behavior-based fraud detection in online payment services | |
CN111915437A (zh) | 基于rnn的反洗钱模型的训练方法、装置、设备及介质 | |
CN109391706A (zh) | 基于深度学习的域名检测方法、装置、设备和存储介质 | |
CN109101817A (zh) | 一种识别恶意文件类别的方法及计算设备 | |
CN109711163B (zh) | 基于api调用序列的安卓恶意软件检测方法 | |
CN102567661A (zh) | 基于机器学习的程序识别方法及装置 | |
CN113268768B (zh) | 一种敏感数据的脱敏方法、装置、设备及介质 | |
CN109871686A (zh) | 基于图标表示和软件行为一致性分析的恶意程序识别方法及装置 | |
CN103839006A (zh) | 基于机器学习的程序识别方法及装置 | |
CN111260220B (zh) | 群控设备识别方法、装置、电子设备和存储介质 | |
CN109614795A (zh) | 一种事件感知的安卓恶意软件检测方法 | |
CN103870754A (zh) | 恶意程序识别及训练模型生成方法和装置 | |
Liang et al. | An end-to-end model for android malware detection | |
CN116361801A (zh) | 基于应用程序接口语义信息的恶意软件检测方法及系统 | |
CN111177367A (zh) | 案件分类方法、分类模型训练方法及相关产品 | |
CN114329455B (zh) | 基于异构图嵌入的用户异常行为检测方法及装置 | |
CN114792246B (zh) | 一种基于主题集成聚类的产品典型性特质挖掘方法及系统 | |
CN108717511A (zh) | 一种Android应用威胁度评估模型建立方法、评估方法及系统 | |
CN108985052A (zh) | 一种恶意程序识别方法、装置和存储介质 | |
Kumar | A study: hate speech and offensive language detection in textual data by using RNN, CNN, LSTM and Bert model |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |