CN112434296A - 一种安卓恶意应用的检测方法及装置 - Google Patents

一种安卓恶意应用的检测方法及装置 Download PDF

Info

Publication number
CN112434296A
CN112434296A CN202011427433.7A CN202011427433A CN112434296A CN 112434296 A CN112434296 A CN 112434296A CN 202011427433 A CN202011427433 A CN 202011427433A CN 112434296 A CN112434296 A CN 112434296A
Authority
CN
China
Prior art keywords
characteristic
neural network
convolutional neural
network model
android
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.)
Pending
Application number
CN202011427433.7A
Other languages
English (en)
Inventor
黄剑锋
林华智
苏庆
刘添添
李小妹
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Guangdong University of Technology
Original Assignee
Guangdong University of Technology
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Guangdong University of Technology filed Critical Guangdong University of Technology
Priority to CN202011427433.7A priority Critical patent/CN112434296A/zh
Publication of CN112434296A publication Critical patent/CN112434296A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/562Static detection
    • G06F21/563Static detection by source code analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/24Classification techniques
    • G06F18/241Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/048Activation functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Computing Systems (AREA)
  • Molecular Biology (AREA)
  • Computational Linguistics (AREA)
  • Mathematical Physics (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Evolutionary Biology (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Virology (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本申请公开了一种安卓恶意应用的检测方法及装置,方法包括:首先通过提取全面的安卓应用行为特征,从而最大程度地表示良性应用与恶意应用的行为,并通过提取OpCode特征最大程度的减小混淆技术、变种技术对检测准确率的影响;接着采用元学习方法更新卷积神经网络模型的参数,构建小样本下恶意应用检测模型,实现基于少量样本就可以快速准确地检测安卓应用;同时还利用卷积神经网络的良好分类能力和元学习算法依据先前经验的学习能力,依据少量样本快速识别新出现的未知恶意应用,从而解决了现有技术检测成本非常大以及需要耗费大量的时间,而且无法对新出现的安卓恶意应用进行检测的技术问题。

Description

一种安卓恶意应用的检测方法及装置
技术领域
本申请涉及检测技术领域,尤其涉及一种安卓恶意应用的检测方法及装置。
背景技术
Android系统是现在最主要的移动设备操作系统,然而因为其开源特征,用户数量多,开发应用门槛不高等原因,使得难以被监管,这也导致了安卓恶意应用越来越多,给用户带来了严重的损失。基于目前的网络安全态势,如何有效地检测出安卓恶意应用成为目前研究的热点。
目前,对大部分的安卓恶意应用检测方法都是通过收集大量的带标签的安卓应用,然后通过机器学习或深度学习的方式,对大量的样本进行训练;然后由于需要获取大量标签数据并且需要对大量的标签数据进行训练,使得检测成本非常大、并且需要耗费大量的时间,而且无法对新出现的安卓恶意应用进行检测。
发明内容
本申请实施例提供了一种安卓恶意应用的检测方法及装置,用于解决现有技术检测成本非常大以及需要耗费大量的时间,而且无法对新出现的安卓恶意应用进行检测的技术问题。
有鉴于此,本申请第一方面提供了一种安卓恶意应用的检测方法,所述方法包括:
S1、采集包括恶意应用和良性应用的安卓应用数据集,所述数据集由元训练集和元测试集组成,并将所述元训练集和所述元测试集均划分为多个任务,所述任务包括支撑集和查询集;
S2、对所述安卓应用进行反编译得到反编译文件,提取所述反编译文件的API包特征、权限特征、组件特征、硬件特征、intent特征和OpCode特征,得到所述安卓应用的总体特征;
S3、分别获取所述API包特征、所述权限特征、所述组件特征、所述硬件特征、所述intent特征和所述OpCode特征的特征值后并依次进行前后拼接,得到所述总体特征的特征向量;
S4、建立包括由多个卷积层和多个池化层交替排列以及全连接层构成的卷积神经网络模型,并对所述卷积神经网络模型的参数进行初始化;
S5、从所述多个任务中提取若干个任务得到批任务,通过所述批任务中的每个任务的支撑集分别对所述卷积神经网络模型进行训练,得到所述卷积神经网络模型的更新参数集,基于reptile算法,根据所述更新参数集计算得到所述批任务的平均损失梯度,通过所述平均损失梯度对所述卷积神经网络模型的参数进行更新;
S6、判断所述卷积神经网络模型是否达到预置训练次数,若否,返回步骤S5,若是,通过所述元训练集对所述卷积神经网络模型进行元训练,得到所述安卓应用的检测模型,将所述元测试集的特征向量输入到所述检测模型进行计算,得到所述安卓应用的分类结果。
可选地,所述通过所述批任务中的每个任务的支撑集分别对所述卷积神经网络模型进行训练,得到所述卷积神经网络模型的更新参数,之后还包括:
基于reptile算法,根据所述更新参数集分别计算所述批任务中的每个任务的损失梯度,分别根据所述损失梯度对所述卷积神经网络模型的参数进行更新后,通过每个任务对应的所述查询集对所述卷积神经网络模型进行分类准确率测试。
可选地,步骤S2,具体包括:
通过androguard反编译工具对所述安卓应用进行反编译得到反编译文件,对所述API包特征、所述权限特征、所述组件特征、所述硬件特征、所述intent特征的使用情况进行提取;并通过apktool反编译apk文件得到Dalivk指令集,对所述Dalivk指令集中反应程序语义的指令集进行提取,得到所述安卓应用的总体特征。
可选地,步骤S3,具体包括:
获取所述API包特征被所述安卓应用调用的次数,得到所述API包特征的特征值;
获取所述权限特征的独立状态,得到所述权限特征的特征值;
获取所述组件在所述安卓应用的数量值,得到所述组件特征的特征值;
获取所述硬件特征被所述安卓应用调用的次数,得到所述硬件特征的特征值;
获取所述intent特征在所述安卓应用出现的次数,得到所述intent特征的特征值;
根据所述OpCode特征建立N-Gram模型,对所述反编译文件提取N-gram特征,得到所述OpCode特征的特征值;
将所述API包特征的特征值、所述权限特征的特征值、所述组件特征的特征值、所述硬件特征的特征值、所述intent特征的特征值依次进行前后拼接,得到所述总体特征的特征向量。
可选地,步骤S4,具体包括:
建立包括由多个卷积层和多个池化层交替排列以及全连接层构成的卷积神经网络模型,所述全连接层设置有dropout方法以及SoftMax层,并将激活函数设置为ReLu函数或者Leaky ReLu函数;通过正态分布随机数方式对所述卷积神经网络模型的参数进行初始化。
可选地,所述通过所述批任务中的每个任务的支撑集分别对所述卷积神经网络模型进行训练,得到所述卷积神经网络模型的更新参数集,具体包括:
将每个所述支撑集分别划分为多个样本,通过所述样本对所述卷积神经网络模型进行前行传播,当各所述支撑集的每个样本完成前行传播时,得到所述卷积神经网络模型的更新参数集。
本申请第二方面提供一种安卓恶意应用的检测装置,所述装置包括:
采集单元,用于采集包括恶意应用和良性应用的安卓应用数据集,所述数据集由元训练集和元测试集组成,并将所述元训练集和所述元测试集均划分为多个任务,所述任务包括支撑集和查询集;
提取单元,用于对所述安卓应用进行反编译得到反编译文件,提取所述反编译文件的API包特征、权限特征、组件特征、硬件特征、intent特征和OpCode特征,得到所述安卓应用的总体特征;
预处理单元,用于分别获取所述API包特征、所述权限特征、所述组件特征、所述硬件特征、所述intent特征和所述OpCode特征的特征值后并依次进行前后拼接,得到所述总体特征的特征向量;
建模单元,用于建立包括由多个卷积层和多个池化层交替排列以及全连接层构成的卷积神经网络模型,并对所述卷积神经网络模型的参数进行初始化;
训练单元,用于从所述多个任务中提取若干个任务得到批任务,通过所述批任务中的每个任务的支撑集分别对所述卷积神经网络模型进行训练,得到所述卷积神经网络模型的更新参数集,基于reptile算法,根据所述更新参数集计算得到所述批任务的平均损失梯度,通过所述平均损失梯度对所述卷积神经网络模型的参数进行更新;
分析单元,用于判断所述卷积神经网络模型是否达到预置训练次数,若否,触发所述训练单元,若是,通过所述元训练集对所述卷积神经网络模型进行元训练,得到所述安卓应用的检测模型,将所述元测试集的特征向量输入到所述检测模型进行计算,得到所述安卓应用的分类结果。
可选地,还包括:
测试单元,用于基于reptile算法,根据所述更新参数集分别计算所述批任务中的每个任务的损失梯度,分别根据所述损失梯度对所述卷积神经网络模型的参数进行更新后,通过每个任务对应的所述查询集对所述卷积神经网络模型进行分类准确率测试。
可选地,所述提取单元,具体用于:
通过androguard反编译工具对所述安卓应用进行反编译得到反编译文件,对所述API包特征、所述权限特征、所述组件特征、所述硬件特征、所述intent特征的使用情况进行提取;并通过apktool反编译apk文件得到Dalivk指令集,对所述Dalivk指令集中反应程序语义的指令集进行提取,得到所述安卓应用的总体特征。
可选地,所述预处理单元,具体用于:
获取所述API包特征被所述安卓应用调用的次数,得到所述API包特征的特征值;
获取所述权限特征的独立状态,得到所述权限特征的特征值;
获取所述组件在所述安卓应用的数量值,得到所述组件特征的特征值;
获取所述硬件特征被所述安卓应用调用的次数,得到所述硬件特征的特征值;
获取所述intent特征在所述安卓应用出现的次数,得到所述intent特征的特征值;
根据所述OpCode特征建立N-Gram模型,对所述反编译文件提取N-gram特征,得到所述OpCode特征的特征值;
将所述API包特征的特征值、所述权限特征的特征值、所述组件特征的特征值、所述硬件特征的特征值、所述intent特征的特征值依次进行前后拼接,得到所述总体特征的特征向量。
从以上技术方案可以看出,本申请具有以下优点:
本申请的安卓恶意应用的检测方法,首先通过提取全面的安卓应用行为特征,来尽可能全面地表示良性应用与恶意应用的行为,减少误判,并通过提取OpCode特征最大程度的减小混淆技术、变种技术对检测准确率的影响;接着采用元学习方法更新卷积神经网络模型的参数,构建小样本下恶意应用检测模型,实现基于少量样本就可以快速准确地检测安卓应用,大大减少了收集大量样本和对样本进行反编译提取特征所消耗的时间和资源,提高检测效率;同时还利用卷积神经网络良好分类能力和元学习算法依据先前经验的学习能力,依据少量样本快速识别新出现的未知恶意应用,而不需要再重新训练或设计模型,从而解决了现有技术检测成本非常大以及需要耗费大量的时间,而且无法对新出现的安卓恶意应用进行检测的技术问题。
附图说明
图1为本申请实施例中提供的一种安卓恶意应用的检测方法的实施例一的流程示意图;
图2为本申请实施例中提供的一种安卓恶意应用的检测方法的实施例二的流程示意图;
图3为本申请实施例中提供的一种安卓恶意应用的检测装置的实施例的结构图;
图4为本申请实施例对Dalivk指令集提取的几类核心的指令集合示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
请参阅图1,本申请的一种安卓恶意应用的检测方法的实施例一,包括:
步骤101、采集包括恶意应用和良性应用的安卓应用数据集,数据集由元训练集和元测试集组成,并将元训练集和元测试集均划分为多个任务,任务包括支撑集和查询集。
需要说明的是,恶性应用比如有:勒索软件、僵尸网络软件、恐吓软件等,良性应用比如有:数据集包括杀毒软件、游戏软件、社交软件及金融类软件等,可以是国内外等应用市场;通过再上述这些应用采集安卓应用的数据集。
可以理解的是,在元学习中包括元训练集和元测试集,元训练集和元测试集由一个个的任务组成,而每个任务由支撑集和查询集组成。构建N-Way K-Shot分类任务时,从数据集里抽取N类的数据,每一类数据由K+1个样本构成,这样就形成了一个小型分类任务,然后在每个任务中,每类样本随机抽取K个样本组成支撑集,每一类剩下的1个样本构成查询集。本实施例将元训练集和元测试集均划分为多个任务,任务包括支撑集和查询集。
步骤102、对安卓应用进行反编译得到反编译文件,提取反编译文件的API包特征、权限特征、组件特征、硬件特征、intent特征和OpCode特征,得到安卓应用的总体特征。
为了尽可能全面地表示良性应用与恶意应用的行为,减少误判,本实施例首先对对安卓应用进行反编译得到反编译文件,然后分别提取反编译文件的API包特征、权限特征、组件特征、硬件特征、intent特征,以及通过提取OpCode特征最大程度的减小混淆技术、变种技术对检测准确率的影响,从而得到安卓应用的总体特征。需要说明的是,本实施例提取的特征包括;API函数类包特征:安卓API文档的149个类包;权限特征:35个正常权限和25个敏感权限;四大组件特征:Android系统为应用开发者提供的4种实用组件主要有Activity、Service、BroadcastReceiver和ContentProvider;硬件特征:用户常使用的24个硬件特征。intent特征:恶意应用常用的10个intent动作;以及代码层面的OpCode特征。本领域技术人员可以根据实际需要对安卓应用的特征进行提取,在此不做限定。
步骤103、分别获取API包特征、权限特征、组件特征、硬件特征、intent特征和OpCode特征的特征值后并依次进行前后拼接,得到总体特征的特征向量。
对上述步骤提取的特征进行预处理,本实施例通过获取API包特征、权限特征、组件特征、硬件特征、intent特征和OpCode特征的特征值,并将特征值一次进行拼接成一个一维的特征向量,以此作为训练好的卷积神经网络模型的输入。
步骤104、建立包括由多个卷积层和多个池化层交替排列以及全连接层构成的卷积神经网络模型,并对卷积神经网络模型的参数进行初始化。
需要说明的是,本实施例建立的卷积神经网络模型使用卷积层和池化层的交替排列设计,多级卷积运算,接着是全连接层以及输出层。进一步,卷积层由多个卷积核组成,卷积层使用一维卷积,池化层采用一维最大池化,其中步长大小不超过池化窗口大小,卷积层和池化层交替排列,使用两层全连接层用来变换输入维度到类别的大小,对于卷积神经网络模型的层数、步长、卷积核大小等的设计本领域技术人员可以根据实际情况进行设计,在此不做限定。
可以理解的是,卷积层的特征提取和局部感知功能可以有效整合特征向量的局部信息,从而得到全局信息;池化层的下采样操作可以对特征进行降维和压缩数据,去除冗余信息,减小过拟合,同时提高模型的容错性;全连接层在整个卷积神经网络中起到“分类器”的作用。
步骤105、从多个任务中提取若干个任务得到批任务,通过批任务中的每个任务的支撑集分别对卷积神经网络模型进行训练,得到卷积神经网络模型的更新参数集,基于reptile算法,根据更新参数集计算得到批任务的平均损失梯度,通过平均损失梯度对卷积神经网络模型的参数进行更新。
对卷积神经网络模型的参数进行初始化之后,本实施例通过采用元学习方法来更新卷积神经网络模型的参数,构建了小样本下恶意应用检测模型;具体的通过采集的元训练集的任务对模型进行训练,得到更新参数集并求出平均损失梯度对模型的参数进行更新。
步骤106、判断卷积神经网络模型是否达到预置训练次数,若否,返回步骤105,若是,通过元训练集对卷积神经网络模型进行元训练,得到安卓应用的检测模型,将元测试集的特征向量输入到检测模型进行计算,得到安卓应用的分类结果。
可以理解的是,从多个任务中不断抽出若干任务对卷积神经网络模型进行训练,并更新模型参数,直至达到预置训练次数;再通过元训练集对卷积神经网络模型进行元训练后,得到安卓应用的检测模型;最后将元测试集的特征向量输入到检测模型进行计算,得到安卓应用的分类结果,此时的分类结果也就是对安卓恶意应用的检查结果,
本申请实施例的安卓恶意应用的检测方法,首先通过提取全面的安卓应用行为特征,从而尽可能全面地表示良性应用与恶意应用的行为,减少误判,并通过提取OpCode特征最大程度的减小混淆技术、变种技术对检测准确率的影响;接着采用元学习方法更新卷积神经网络模型的参数,构建小样本下恶意应用检测模型,实现基于少量样本就可以快速准确地检测安卓应用,大大减少了收集大量样本和对样本进行反编译提取特征所消耗的时间和资源,提高检测效率;同时还利用卷积神经网络良好分类能力和元学习算法依据先前经验的学习能力,依据少量样本快速识别新出现的未知恶意应用,而不需要再重新训练或设计模型,从而解决了现有技术检测成本非常大以及需要耗费大量的时间,而且无法对新出现的安卓恶意应用进行检测的技术问题。
以上为本申请提供的一种安卓恶意应用的检测方法的实施例一,以下为本申请提供的一种安卓恶意应用的检测方法的实施例二。
请参阅图2,本申请提供的一种安卓恶意应用的检测方法的实施例二,包括:
步骤201、采集包括恶意应用和良性应用的安卓应用数据集,数据集由元训练集和元测试集组成,并将元训练集和元测试集均划分为多个任务,任务包括支撑集和查询集。
步骤201与实施例一步骤101描述相同,请参考步骤101描述,在此不再赘述。
步骤202、通过androguard反编译工具对安卓应用进行反编译得到反编译文件,对API包特征、权限特征、组件特征、硬件特征、intent特征的使用情况进行提取;并通过apktool反编译apk文件得到Dalivk指令集,对Dalivk指令集中反应程序语义的指令集进行提取,得到安卓应用的总体特征。
本实施例通过androguard反编译工具对安卓应用进行反编译,以及对API包特征、权限特征、组件特征、硬件特征、intent特征的使用情况进行提取;同时通过apktool反编译apk文件得到Dalivk指令集,对Dalivk指令集中反应程序语义的指令集进行提取,具体的,使用apktool反编译apk文件后,获得大量smali文件,每个smali文件由一定格式的语句组成,里面包含Dalivk指令,从Dalivk指令集中精简出反映程序语义的指令,去除无关指令;请参阅图4,图4为本申请提取的几类核心的指令集合,提取出的指令作为OpCode特征;将上述两部分提取的特征作为安卓应用的总体特征。本领域技术人员可以根据实际情况选取不同的工具对特征进行提取,在此不做限定。
步骤203、获取API包特征被安卓应用调用的次数,得到API包特征的特征值;获取权限特征的独立状态,得到权限特征的特征值;获取组件在安卓应用的数量值,得到组件特征的特征值;获取硬件特征被安卓应用调用的次数,得到硬件特征的特征值;获取intent特征在安卓应用出现的次数,得到intent特征的特征值;根据OpCode特征建立N-Gram模型,对反编译文件提取N-gram特征,得到OpCode特征的特征值。
需要说明的是,在对API包特征进行预处理时,通过分析可以知道,安卓恶意应用的恶意行为所调用的API函数主要是集中location和content等10个类包。根据安卓API文档中的API包排列顺序,将除去10个敏感API包的139个API包依次排列,然后再排列10个敏感类包在后面,形成关于API类包的向量,向量中元素的取值为API类包被调用的次数,从而通过获取API包特征被安卓应用调用的次数,得到API包特征的特征值;对于权限特征、硬件特征、intent特征以及组件的特征值预处理步骤类似,在此不再赘述。
对于OpCode特征的特征值进行提取时,本实施例将提取的多个Dalivk指令进行2-Gram建模,构成多个子集,统计每个子集的个数,将多个子集依次排列形成OpCode特征向量,向量中每个元素的取值为其个数。
步骤204、将API包特征的特征值、权限特征的特征值、组件特征的特征值、硬件特征的特征值、intent特征的特征值依次进行前后拼接,得到总体特征的特征向量。
步骤204与实施例一步骤103类似,请参见步骤103描述,在此不做赘述。
步骤205、建立包括由多个卷积层和多个池化层交替排列以及全连接层构成的卷积神经网络模型,全连接层设置有dropout方法以及SoftMax层,并将激活函数设置为ReLu函数或者Leaky ReLu函数;通过正态分布随机数方式对卷积神经网络模型的参数进行初始化。
需要说明的时,本实施例除了采用多个卷积层和多个池化层交替排列以及全连接层构,同时在全连接层上使用dropout方法,使用多分类场景的SoftMax层进行多分类。对于激活函数,选择ReLu或者Leaky ReLu函数,其相对于sigmoid和tanh函数可以有效避免训练时候梯度消失问题。
步骤206、从多个任务中提取若干个任务得到批任务,通过批任务中的每个任务的支撑集分别对卷积神经网络模型进行训练,得到卷积神经网络模型的更新参数集。
步骤206与实施例一步骤105中的描述类似,请参见步骤105,在此不再赘述。
步骤207、基于reptile算法,根据更新参数集分别计算批任务中的每个任务的损失梯度,分别根据损失梯度对卷积神经网络模型的参数进行更新后,通过每个任务对应的查询集对卷积神经网络模型进行分类准确率测试。
需要说明的时,本实施例在每一次求出每个任务的损失梯度并更新卷积神经网络模型的参数后,都通过该任务对应的查询集对卷积神经网络模型进行分类准确率测试,用于方便技术人员对卷积神经网络模型的情况进行了解。
步骤208、基于reptile算法,根据更新参数集计算得到批任务的平均损失梯度,通过平均损失梯度对卷积神经网络模型的参数进行更新。
步骤208与实施例一步骤105中的描述类似,请参见步骤105,在此不再赘述。
需要说明的是,对于平均损失梯度的求解,具体为:将每个任务更新后的参数与初始参数进行相减然后取相减后的平均值。
步骤209、判断卷积神经网络模型是否达到预置训练次数,若否,返回步骤206,若是,通过元训练集对卷积神经网络模型进行元训练,得到安卓应用的检测模型,将元测试集的特征向量输入到检测模型进行计算,得到安卓应用的分类结果。
步骤209与实施例一步骤106描述相同,请参考步骤106描述,在此不做赘述。
本申请的安卓恶意应用的检测方法,通过提取全面的安卓应用行为特征,从而尽可能全面地表示良性应用与恶意应用的行为,减少误判,并通过提取OpCode特征最大程度的减小混淆技术、变种技术对检测准确率的影响;接着采用元学习方法来新卷积神经网络模型的参数,并且在训练的过层中通过查询集对卷积神经网络模型进行分类准确率测试,实时地了解模型的训练状态,从而构建小样本下恶意应用检测模型,实现基于少量样本就可以快速准确地检测安卓应用;同时还利用卷积神经网络良好分类能力和元学习算法依据先前经验的学习能力,依据少量样本快速识别新出现的未知恶意应用,而不需要再重新训练或设计模型,从而解决了现有技术检测成本非常大以及需要耗费大量的时间,而且无法对新出现的安卓恶意应用进行检测的技术问题。
以上为本申请一种安卓恶意应用的检测方法的实施例二,以下为本申请一种安卓恶意应用的检测装置的实施例。
采集单元301,用于采集包括恶意应用和良性应用的安卓应用数据集,数据集由元训练集和元测试集组成,并将元训练集和元测试集均划分为多个任务,任务包括支撑集和查询集;
提取单元302,用于对安卓应用进行反编译得到反编译文件,提取反编译文件的API包特征、权限特征、组件特征、硬件特征、intent特征和OpCode特征,得到安卓应用的总体特征;
预处理单元303,用于分别获取API包特征、权限特征、组件特征、硬件特征、intent特征和OpCode特征的特征值后并依次进行前后拼接,得到总体特征的特征向量;
建模单元304,用于建立包括由多个卷积层和多个池化层交替排列以及全连接层构成的卷积神经网络模型,并对卷积神经网络模型的参数进行初始化;
训练单元305,用于从多个任务中提取若干个任务得到批任务,通过批任务中的每个任务的支撑集分别对卷积神经网络模型进行训练,得到卷积神经网络模型的更新参数集,基于reptile算法,根据更新参数集计算得到批任务的平均损失梯度,通过平均损失梯度对卷积神经网络模型的参数进行更新;
分析单元306,用于判断卷积神经网络模型是否达到预置训练次数,若否,触发训练单元,若是,通过元训练集对卷积神经网络模型进行元训练,得到安卓应用的检测模型,将元测试集的特征向量输入到检测模型进行计算,得到安卓应用的分类结果。
本申请的安卓恶意应用的检测装置,首先通过提取全面的安卓应用行为特征,从而尽可能全面地表示良性应用与恶意应用的行为,减少误判,并通过提取OpCode特征最大程度的减小混淆技术、变种技术对检测准确率的影响;接着采用元学习方法更新卷积神经网络模型的参数,构建小样本下恶意应用检测模型,实现了基于少量样本就可以快速准确地检测安卓应用,大大减少了收集大量样本和对样本进行反编译提取特征所消耗的时间和资源,提高检测效率;同时还利用卷积神经网络良好分类能力和元学习算法依据先前经验的学习能力,依据少量样本快速识别新出现的未知恶意应用,而不需要再重新训练或设计模型,从而解决了现有技术检测成本非常大以及需要耗费大量的时间,而且无法对新出现的安卓恶意应用进行检测的技术问题。
以下为本申请实施例一种安卓恶意应用的检测方法的实验分析:
在实验中将数据集构建5-ways 5-shot任务,即一个任务中的支撑集包含5类不同类型的安卓应用,每类应用包含5个样本,查询集中也是包含5类不同类型的应用,每类应用包含1个样本。采用正态分布随机数方式初始化卷积神经网络参数W_conv1,b_conv1,W_conv2,b_conv2,W_fc1,b_fc1,将训练次数设置为100,每批任务中任务个数为5个,对于每个任务,将支撑集分为5个minibatch,依次使用每个minibatch进行前向传播,每个任务进行5次迭代优化后,更新模型的参数。new_w1,new_b1,new_w2,new_b2,new_w3,new_b3,然后使用查询集去测试模型的分类准确率,将每个任务的更新参数保存起来,待批任务结束后按照上述公式更新参数,然后到下一批任务训练,不断使用reptile算法更新参数,一共进行了100批任务训练。待元训练集训练结束后,通过元测试集对模型进行测试得到检测模型,最后将元测试集的特征向量输入到检测模型,输出分类结果。
将CNN-reptile模型与MLP+reptile、RNN+reptile等模型进行实验对比,以准确率(Accuracy)、精确率(Precision)、召回率(Recall)、F1值(F1score)和训练时间(Time)等为评估指标,结果如表1所示。
Model Accuracy Precision Recall F1score Time
CNN+reptile 0.90 0.83 1.0 0.91 230s
MLP+reptile 0.87 1.0 0.9 0.94 110s
RNN+reptile 0.85 0.90 0.88 0.89 315s
表1
从实验结果可以看出本发明模型在面对未知任务时,只需要利用较少量的样本即可达到较高的识别正确率,而且模型训练时间较短,并且可以依据少量的样本快速识别新出现的未知恶意应用,而不需要再重新训练或设计模型。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
本申请的说明书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
应当理解,在本申请中,“至少一个(项)”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,用于描述关联对象的关联关系,表示可以存在三种关系,例如,“A和/或B”可以表示:只存在A,只存在B以及同时存在A和B三种情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b或c中的至少一项(个),可以表示:a,b,c,“a和b”,“a和c”,“b和c”,或“a和b和c”,其中a,b,c可以是单个,也可以是多个。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(英文全称:Read-OnlyMemory,英文缩写:ROM)、随机存取存储器(英文全称:Random Access Memory,英文缩写:RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。

Claims (10)

1.一种安卓恶意应用的检测方法,其特征在于,包括:
S1、采集包括恶意应用和良性应用的安卓应用数据集,所述数据集由元训练集和元测试集组成,并将所述元训练集和所述元测试集均划分为多个任务,所述任务包括支撑集和查询集;
S2、对所述安卓应用进行反编译得到反编译文件,提取所述反编译文件的API包特征、权限特征、组件特征、硬件特征、intent特征和OpCode特征,得到所述安卓应用的总体特征;
S3、分别获取所述API包特征、所述权限特征、所述组件特征、所述硬件特征、所述intent特征和所述OpCode特征的特征值后并依次进行前后拼接,得到所述总体特征的特征向量;
S4、建立包括由多个卷积层和多个池化层交替排列以及全连接层构成的卷积神经网络模型,并对所述卷积神经网络模型的参数进行初始化;
S5、从所述多个任务中提取若干个任务得到批任务,通过所述批任务中的每个任务的支撑集分别对所述卷积神经网络模型进行训练,得到所述卷积神经网络模型的更新参数集,基于reptile算法,根据所述更新参数集计算得到所述批任务的平均损失梯度,通过所述平均损失梯度对所述卷积神经网络模型的参数进行更新;
S6、判断所述卷积神经网络模型是否达到预置训练次数,若否,返回步骤S5,若是,通过所述元训练集对所述卷积神经网络模型进行元训练,得到所述安卓应用的检测模型,将所述元测试集的特征向量输入到所述检测模型进行计算,得到所述安卓应用的分类结果。
2.根据权利要求1所述的安卓恶意应用的检测方法,其特征在于,所述通过所述批任务中的每个任务的支撑集分别对所述卷积神经网络模型进行训练,得到所述卷积神经网络模型的更新参数,之后还包括:
基于reptile算法,根据所述更新参数集分别计算所述批任务中的每个任务的损失梯度,分别根据所述损失梯度对所述卷积神经网络模型的参数进行更新后,通过每个任务对应的所述查询集对所述卷积神经网络模型进行分类准确率测试。
3.根据权利要求1所述的安卓恶意应用的检测方法,其特征在于,步骤S2,具体包括:
通过androguard反编译工具对所述安卓应用进行反编译得到反编译文件,对所述API包特征、所述权限特征、所述组件特征、所述硬件特征、所述intent特征的使用情况进行提取;并通过apktool反编译apk文件得到Dalivk指令集,对所述Dalivk指令集中反应程序语义的指令集进行提取,得到所述安卓应用的总体特征。
4.根据权利要求1所述的安卓恶意应用的检测方法,其特征在于,步骤S3,具体包括:
获取所述API包特征被所述安卓应用调用的次数,得到所述API包特征的特征值;
获取所述权限特征的独立状态,得到所述权限特征的特征值;
获取所述组件在所述安卓应用的数量值,得到所述组件特征的特征值;
获取所述硬件特征被所述安卓应用调用的次数,得到所述硬件特征的特征值;
获取所述intent特征在所述安卓应用出现的次数,得到所述intent特征的特征值;
根据所述OpCode特征建立N-Gram模型,对所述反编译文件提取N-gram特征,得到所述OpCode特征的特征值;
将所述API包特征的特征值、所述权限特征的特征值、所述组件特征的特征值、所述硬件特征的特征值、所述intent特征的特征值依次进行前后拼接,得到所述总体特征的特征向量。
5.根据权利要求1所述的安卓恶意应用的检测方法,其特征在于,步骤S4,具体包括:
建立包括由多个卷积层和多个池化层交替排列以及全连接层构成的卷积神经网络模型,所述全连接层设置有dropout方法以及SoftMax层,并将激活函数设置为ReLu函数或者Leaky ReLu函数;通过正态分布随机数方式对所述卷积神经网络模型的参数进行初始化。
6.根据权利要求1所述的安卓恶意应用的检测方法,其特征在于,所述通过所述批任务中的每个任务的支撑集分别对所述卷积神经网络模型进行训练,得到所述卷积神经网络模型的更新参数集,具体包括:
将每个所述支撑集分别划分为多个样本,通过所述样本对所述卷积神经网络模型进行前行传播,当各所述支撑集的每个样本完成前行传播时,得到所述卷积神经网络模型的更新参数集。
7.一种安卓恶意应用的检测装置,其特征在于,包括:
采集单元,用于采集包括恶意应用和良性应用的安卓应用数据集,所述数据集由元训练集和元测试集组成,并将所述元训练集和所述元测试集均划分为多个任务,所述任务包括支撑集和查询集;
提取单元,用于对所述安卓应用进行反编译得到反编译文件,提取所述反编译文件的API包特征、权限特征、组件特征、硬件特征、intent特征和OpCode特征,得到所述安卓应用的总体特征;
预处理单元,用于分别获取所述API包特征、所述权限特征、所述组件特征、所述硬件特征、所述intent特征和所述OpCode特征的特征值后并依次进行前后拼接,得到所述总体特征的特征向量;
建模单元,用于建立包括由多个卷积层和多个池化层交替排列以及全连接层构成的卷积神经网络模型,并对所述卷积神经网络模型的参数进行初始化;
训练单元,用于从所述多个任务中提取若干个任务得到批任务,通过所述批任务中的每个任务的支撑集分别对所述卷积神经网络模型进行训练,得到所述卷积神经网络模型的更新参数集,基于reptile算法,根据所述更新参数集计算得到所述批任务的平均损失梯度,通过所述平均损失梯度对所述卷积神经网络模型的参数进行更新;
分析单元,用于判断所述卷积神经网络模型是否达到预置训练次数,若否,触发所述训练单元,若是,通过所述元训练集对所述卷积神经网络模型进行元训练,得到所述安卓应用的检测模型,将所述元测试集的特征向量输入到所述检测模型进行计算,得到所述安卓应用的分类结果。
8.根据权利要求7所述的安卓恶意应用的检测装置,其特征在于,还包括:
测试单元,用于基于reptile算法,根据所述更新参数集分别计算所述批任务中的每个任务的损失梯度,分别根据所述损失梯度对所述卷积神经网络模型的参数进行更新后,通过每个任务对应的所述查询集对所述卷积神经网络模型进行分类准确率测试。
9.根据权利要求7所述的安卓恶意应用的检测装置,其特征在于,所述提取单元,具体用于:
通过androguard反编译工具对所述安卓应用进行反编译得到反编译文件,对所述API包特征、所述权限特征、所述组件特征、所述硬件特征、所述intent特征的使用情况进行提取;并通过apktool反编译apk文件得到Dalivk指令集,对所述Dalivk指令集中反应程序语义的指令集进行提取,得到所述安卓应用的总体特征。
10.根据权利要求7所述的安卓恶意应用的检测装置,其特征在于,所述预处理单元,具体用于:
获取所述API包特征被所述安卓应用调用的次数,得到所述API包特征的特征值;
获取所述权限特征的独立状态,得到所述权限特征的特征值;
获取所述组件在所述安卓应用的数量值,得到所述组件特征的特征值;
获取所述硬件特征被所述安卓应用调用的次数,得到所述硬件特征的特征值;
获取所述intent特征在所述安卓应用出现的次数,得到所述intent特征的特征值;
根据所述OpCode特征建立N-Gram模型,对所述反编译文件提取N-gram特征,得到所述OpCode特征的特征值;
将所述API包特征的特征值、所述权限特征的特征值、所述组件特征的特征值、所述硬件特征的特征值、所述intent特征的特征值依次进行前后拼接,得到所述总体特征的特征向量。
CN202011427433.7A 2020-12-09 2020-12-09 一种安卓恶意应用的检测方法及装置 Pending CN112434296A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011427433.7A CN112434296A (zh) 2020-12-09 2020-12-09 一种安卓恶意应用的检测方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011427433.7A CN112434296A (zh) 2020-12-09 2020-12-09 一种安卓恶意应用的检测方法及装置

Publications (1)

Publication Number Publication Date
CN112434296A true CN112434296A (zh) 2021-03-02

Family

ID=74692067

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011427433.7A Pending CN112434296A (zh) 2020-12-09 2020-12-09 一种安卓恶意应用的检测方法及装置

Country Status (1)

Country Link
CN (1) CN112434296A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113312619A (zh) * 2021-04-23 2021-08-27 浙江大学 基于小样本学习的恶意进程检测方法、装置、电子设备及存储介质
CN116401667A (zh) * 2023-04-13 2023-07-07 湖南工商大学 基于cnn-gru的安卓恶意软件检测方法及装置
CN117574364A (zh) * 2023-07-27 2024-02-20 广东工业大学 一种基于PSEAM-MobileNet神经网络的安卓恶意软件检测方法及系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109165688A (zh) * 2018-08-28 2019-01-08 暨南大学 一种安卓恶意软件家族分类器构建方法及其分类方法
CN110490249A (zh) * 2019-08-16 2019-11-22 哈尔滨工业大学 基于属性类别关系和少样本元学习的结构损伤识别方法
CN110704841A (zh) * 2019-09-24 2020-01-17 北京电子科技学院 一种基于卷积神经网络的大规模安卓恶意应用检测系统及方法
CN111881954A (zh) * 2020-07-15 2020-11-03 中国科学院自动化研究所 基于渐进式簇净化网络的转导推理小样本分类方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109165688A (zh) * 2018-08-28 2019-01-08 暨南大学 一种安卓恶意软件家族分类器构建方法及其分类方法
CN110490249A (zh) * 2019-08-16 2019-11-22 哈尔滨工业大学 基于属性类别关系和少样本元学习的结构损伤识别方法
CN110704841A (zh) * 2019-09-24 2020-01-17 北京电子科技学院 一种基于卷积神经网络的大规模安卓恶意应用检测系统及方法
CN111881954A (zh) * 2020-07-15 2020-11-03 中国科学院自动化研究所 基于渐进式簇净化网络的转导推理小样本分类方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
王璐 等: "基于元学习的语音识别探究", 《云南民族大学学报( 自然科学版)》 *
苏庆 等: "结合CNN 和catboost 算法的恶意安卓应用检测模型", 《计算机工程与应用》 *

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113312619A (zh) * 2021-04-23 2021-08-27 浙江大学 基于小样本学习的恶意进程检测方法、装置、电子设备及存储介质
CN113312619B (zh) * 2021-04-23 2023-09-05 浙江大学 基于小样本学习的恶意进程检测方法、装置、电子设备及存储介质
CN116401667A (zh) * 2023-04-13 2023-07-07 湖南工商大学 基于cnn-gru的安卓恶意软件检测方法及装置
CN116401667B (zh) * 2023-04-13 2024-04-19 湖南工商大学 基于cnn-gru的安卓恶意软件检测方法及装置
CN117574364A (zh) * 2023-07-27 2024-02-20 广东工业大学 一种基于PSEAM-MobileNet神经网络的安卓恶意软件检测方法及系统
CN117574364B (zh) * 2023-07-27 2024-05-10 广东工业大学 一种基于PSEAM-MobileNet神经网络的安卓恶意软件检测方法及系统

Similar Documents

Publication Publication Date Title
US11496495B2 (en) System and a method for detecting anomalous patterns in a network
CN112434296A (zh) 一种安卓恶意应用的检测方法及装置
CN112528284B (zh) 恶意程序的检测方法及装置、存储介质、电子设备
CN111915437A (zh) 基于rnn的反洗钱模型的训练方法、装置、设备及介质
CN106485146B (zh) 一种信息处理方法及服务器
Kan et al. Towards light-weight deep learning based malware detection
CN109829302B (zh) Android恶意应用家族分类方法、装置与电子设备
CN112837069A (zh) 基于区块链与大数据的安全支付方法及云平台系统
CN108596759A (zh) 贷款申请信息检测方法及服务器
CN112651024B (zh) 用于恶意代码检测的方法及装置、设备
CN113268768A (zh) 一种敏感数据的脱敏方法、装置、设备及介质
Liang et al. An end-to-end model for android malware detection
CN116361788A (zh) 一种基于机器学习的二进制软件漏洞预测方法
Nicheporuk et al. An Android Malware Detection Method Based on CNN Mixed-Data Model.
CN111400708B (zh) 用于恶意代码检测的方法及装置
CN113569162A (zh) 数据处理方法、装置、设备及存储介质
CN110990834A (zh) 一种android恶意软件的静态检测方法、系统及介质
CN111488574A (zh) 恶意软件分类方法、系统、计算机设备和存储介质
CN109753794A (zh) 一种恶意应用的识别方法、系统、训练方法、设备及介质
CN109800797A (zh) 基于ai的文件黑白判断方法、装置及设备
CN110210215B (zh) 一种病毒检测的方法以及相关装置
Sang et al. An effective ensemble deep learning framework for malware detection
CN117134958A (zh) 用于网络技术服务的信息处理方法及系统
CN110781410A (zh) 一种社群检测方法及装置
CN114036514A (zh) 恶意代码同源分析方法、设备及计算机可读存储介质

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
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20210302