CN110263538B - 一种基于系统行为序列的恶意代码检测方法 - Google Patents

一种基于系统行为序列的恶意代码检测方法 Download PDF

Info

Publication number
CN110263538B
CN110263538B CN201910395810.4A CN201910395810A CN110263538B CN 110263538 B CN110263538 B CN 110263538B CN 201910395810 A CN201910395810 A CN 201910395810A CN 110263538 B CN110263538 B CN 110263538B
Authority
CN
China
Prior art keywords
equal
layer
android
state
sample
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.)
Active
Application number
CN201910395810.4A
Other languages
English (en)
Other versions
CN110263538A (zh
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.)
Chongqing University
Original Assignee
Chongqing University
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 Chongqing University filed Critical Chongqing University
Priority to CN201910395810.4A priority Critical patent/CN110263538B/zh
Publication of CN110263538A publication Critical patent/CN110263538A/zh
Application granted granted Critical
Publication of CN110263538B publication Critical patent/CN110263538B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/566Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
    • 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/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Computer Security & Cryptography (AREA)
  • General Physics & Mathematics (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Mathematical Physics (AREA)
  • Evolutionary Computation (AREA)
  • Artificial Intelligence (AREA)
  • Computer Hardware Design (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Virology (AREA)
  • Debugging And Monitoring (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本申请涉及一种基于系统行为序列的恶意代码检测方法,属于信息安全技术领域,其中,所述基于系统行为序列的恶意代码检测方法包括:提取安卓样本的运行信息;动态运行所述安卓样本,提取动态特征;根据所述动态特征构建特征向量;构造分类器,通过所述分类器检测恶意代码。通过提取的动态特征获得系统行为序列,从而获得系统行为及其相互关系的特征向量,并利用深度学习模型进行学习和训练得到分类器,利用所述分类器对恶意代码进行检测,实现了对恶意代码的有效检测,同时解决了安卓代码混淆、加密的问题,并且提高了检测准确率,更进一步提高了检测的精度、召回率和F1度量。

Description

一种基于系统行为序列的恶意代码检测方法
技术领域
本申请涉及信息安全技术领域,例如涉及一种基于系统行为序列的恶意代码检测方法。
背景技术
随着智能通信技术的不断发展,移动智能终端普及率大大增长,智能手机已经成为人类社会重要的工具之一。根据Gartner的最新数据,在智能手机操作系统市场,谷歌的Android在2018年市场份额持续增长,高达84.1%。而随着Android操作系统的市场份额持续增高,且平台具有开放性等特点,使得越来越多的Android智能终端成为攻击目标。
Android应用程序获取的途径包括Google Play和其他第三方Android市场,攻击者通常会在一些热门的Android应用中插入恶意代码,或者将含有恶意代码的软件伪装成正常的软件,在安全管理较差的应用市场进行发布和传播,因此需要高准确率,低误报率的恶意代码检测方法对Android应用进行检测。
目前恶意代码检测的方法主要有基于特征签名匹配的检测和基于行为特征的检测。基于特征签名匹配的检测是指将待测应用的签名与已知的恶意代码的签名进行匹配,这种方法可以检测出签名库中存在的恶意代码,但缺点是不能有效的检测出未知的恶意代码。而基于行为的检测方法则可细分为静态分析方法和动态分析方法,静态分析方法首先对APK文件进行反编译,然后通过对反编译代码的特征分析来检测恶意代码,而动态分析则在执行代码的过程中通过分析代码的行为特征来检测恶意代码。
在基于行为特征的检测方法中,典型特征主要有权限、API调用以及程序运行时发生的系统调用等信息。但目前这类检测方法在建立检测模型时各行为特征相互独立,没有将各行为特征间的顺序关系作为建模参数,而此顺序关系是反映代码行为的重要因素。
发明内容
为了对披露的实施例的一些方面有基本的理解,下面给出了简单的概括。所述概括不是泛泛评述,也不是要确定关键/重要组成元素或描绘这些实施例的保护范围,而是作为后面的详细说明的序言。
根据本公开实施例的一个方面,提供了一种基于系统行为序列的恶意代码检测方法。
在一些可选实施例中,所述方法包括:提取安卓样本的运行信息;动态运行所述安卓样本,提取动态特征;根据所述动态特征构建特征向量;构造分类器,通过所述分类器检测恶意代码;所述运行信息包括所述安卓样本的可运行组件。
本公开实施例,通过动态运行所述运行信息并提取动态特征,从而构建有效的特征向量,并通过选择有效的特征向量,快速、准确的检测出恶意代码,提高了检测的准确率。
可选地,所述动态运行所述安卓样本,提取动态特征包括:对apk文件需要监控的敏感API插桩并重打包;将所述可运行组件作为所述动态运行的入口点,进行动态运行,并从所述动态运行生成的日志中提取动态特征。。
可选地,所述的动态特征包括:API调用,文件访问,敏感数据泄露,外部程序动态加载,网络连接请求,网络数据传输,SMS信息传输。
可选地,所述敏感API的选取方法包括:
收集所述安卓样本中的API调用;
通过对所述安卓样本进行SVM算法训练,得到各所述API调用的权重ω;
将所述权重ω按照绝对值从大到小进行排序,选择前m个所述API调用作为所述敏感API,m≥1。
可选地,所述特征向量包括状态转移概率矩阵和状态发生频率。
可选地,所述特征向量的构建方法包括:
根据所述动态特征发生的时间戳得到所述安卓样本的系统行为序列;
将所述系统行为序列中的系统行为映射为相对应的状态,得到状态转移序列;
设定
Figure BDA0002057077630000031
为状态发生频率,
计算
Figure BDA0002057077630000032
得到第z个所述安卓样本的状态转移序列中,第pn个状态的发生频率,其中,pn≥1,k≥1,z≥1,i≥1,N≥1;
其中,Tk表示状态k在所述安卓样本的状态转移序列中发生的次数,Ti表示状态i在所述安卓样本的状态转移序列中发生的次数;
设定
Figure BDA0002057077630000033
为状态转移概率,
计算
Figure BDA0002057077630000034
得到第z个安卓样本的状态转移序列中,第i个状态会转移到第j个状态的概率,其中,z≥1,k≥1,i≥1,n≥1,j≥1;
其中,Tij表示状态转移序列中从状态i转移到状态j的次数,Tik表示状态转移序列中从状态i转移到状态k的次数。
可选地,采用深度学习模型SAE对所述特征向量进行学习和训练得到分类器。
可选地,所述深度学习模型SAE进行训练包括:
将所述特征向量作为输入数据输入到第一个自动编码器中;
将第一个自动编码器的输出层作为第二个自动编码器的输入层进行训练;
将第二个自动编码器的输出层作为第三个自动编码器的输入层进行训练;
将第三个自动编码器的输出层作为第四个自动编码器的输入层进行训练;
将第四个自动编码器的输出层输入到softmax层中;
对整个网络进行调整。
本公开实施例中将深度学习应用于恶意代码分析与检测,实现了比传统机器学习算法更好的性能,达到更高的自动化程度和准确率。
可选地,所述对整个网络进行调整包括:
Figure BDA0002057077630000035
表示第l层第u个神经元的值,
Figure BDA0002057077630000036
表示第l层的第u个神经元与第l+1层的第v个神经元的连接权重,nl表示第l层的神经元个数,计算
Figure BDA0002057077630000041
得到第l+1层中第v个神经元的输入值,其中,l≥1,u≥1,v≥1,n≥1;
设定
Figure BDA0002057077630000042
表示第l层第i个神经元的阈值,计算
Figure BDA0002057077630000043
得到第l层第u个神经元的值,其中f为激活函数,其中,l≥1,u≥1;
计算
Figure BDA0002057077630000044
得到第z个安卓样本经过神经网络计算的输出值,其中
Figure BDA0002057077630000045
等于最后一层的值
Figure BDA0002057077630000046
Q表示神经网络的层数,c表示输出层的神经元个数,其中,c≥0,z≥1,Q≥1,v≥1;
将输出层的数据与期待得到的结果进行对比,计算出输出值和期待值之间的均方误差:
Figure BDA0002057077630000047
其中
Figure BDA0002057077630000048
表示第z个安卓样本中第v个神经元的期待值,其中,c≥1,z≥1,v≥1;
判断所述均方误差是否小于设定值,当所述均方误差小于设定值时则完成训练,否则将所述均方误差反向传播回各层,更新各层的权重和阈值,然后继续对整个网络进行调整,反复迭代直到所述均方误差满足小于设定值的要求。
可选地,将安卓样本的特征向量输入到训练好的分类器中,得到所述softmax层的输出结果,根据输出结果判断待测安卓样本是否为恶意代码。
本公开实施例提供的一些技术方案可以实现以下技术效果:通过提取的动态特征获得系统行为序列,从而获得系统行为及其相互关系的特征向量,并利用深度学习模型进行学习和训练得到分类器,利用所述分类器对恶意代码进行检测,实现了对恶意代码的有效检测,同时解决了安卓代码混淆、加密的问题,并且提高了检测准确率,更进一步提高了检测的精度、召回率和F1度量。
以上的总体描述和下文中的描述仅是示例性和解释性的,不用于限制本申请。
附图说明
一个或多个实施例通过与之对应的附图进行示例性说明,这些示例性说明和附图并不构成对实施例的限定,附图中具有相同参考数字标号的元件示为类似的元件,附图不构成比例限制,并且其中:
图1是本公开实施例提供的一种基于系统行为序列的恶意代码检测方法流程示意图;
图2是本公开实施例提供的安卓样本的动态特征提取流程示意图;
图3是本公开实施例提供的状态转移概率矩阵示意图;
图4是本公开实施例提供的特征向量示意图;
图5是本公开实施例提供的只有一层隐层的自动编码器示意图;
图6是本公开实施例提供的一个基于栈式自动编码器的检测模型示意图;
图7是本公开实施例提供的本方案恶意代码检测结果与Android恶意代码检测结果示意图。
具体实施方式
为了能够更加详尽地了解本公开实施例的特点与技术内容,下面结合附图对本公开实施例的实现进行详细阐述,所附附图仅供参考说明之用,并非用来限定本公开实施例。在以下的技术描述中,为方便解释起见,通过多个细节以提供对所披露实施例的充分理解。然而,在没有这些细节的情况下,一个或多个实施例仍然可以实施。在其它情况下,为简化附图,熟知的结构和装置可以简化展示。
本公开实施例提供了一种基于系统行为序列的恶意代码检测方法,如图1所示,包括:
提取安卓样本的运行信息;
动态运行所述安卓样本,提取动态特征;
根据所述动态特征构建特征向量;
构造分类器,通过所述分类器检测恶意代码;
所述运行信息包括所述安卓样本的可运行组件;可选地,所述运行信息还包括所述安卓样本的包名。
可选地,使用静态分析工具apktool反编译APK文件,获取配置文件,从配置文件中提取所有的可运行组件,组成可运行组件清单。
在一些实施例中,如图2所示,所述动态运行所述安卓样本,提取动态特征包括:
对apk文件需要监控的敏感API插桩并重打包;
将所述可运行组件作为所述动态运行的入口点,进行动态运行,并从所述动态运行生成的日志中提取动态特征。
可选地,在APIMonitor配置文件default_api_collection设置需要监控的敏感API;
可选地,使用APIMonitor对apk文件对需要监控的敏感API插桩并重打包;
可选地,对于可运行清单中的每个组件,都用其作为动态运行的入口点,进行动态运行,并从所述动态运行生成的日志中提取系统行为序列作为动态特征,将所述动态特征作为所述安卓APK文件的特征集。
可选地,使用DroidBox运行安卓样本,提取Android应用程序的动态特征。
在一些实施例中,所述的动态特征包括:API调用,文件访问,敏感数据泄露,外部程序动态加载,网络连接请求,网络数据传输,SMS信息传输;根据所述动态特征发生的时间戳得到所述安卓样本的系统行为序列。
在一些实施例中,所述敏感API的选取方法包括:
收集所述安卓样本中的API调用;
通过对所述安卓样本进行SVM算法训练,对恶意软件和正常软件进行分类,得到各所述API调用的权重ω,ω的绝对值越大表示对应的API越重要;
将所述权重ω按照绝对值从大到小进行排序,选择前m个所述API调用作为所述敏感API,m≥1。
在一些实施例中,收集安卓样本中的所有API调用作为特征,用SVM算法对安卓样本特征进行训练和安卓恶意软件的识别。将安卓样本利用核函数映射到另一个高维特征空间中,在新的特征空间中找到超平面(ω,σ),使得超平面关于样本点(α,β)的函数间隔
Figure BDA0002057077630000071
最大,ω为API调用的权重,σ为偏重系数,通过训练将得到权重ω的值,ω是一个向量,其中第e个API调用的权重为ωe,ωe的绝对值越大表示对应的API对于识别样本是否为恶意软件越重要,将所有的ωe按照绝对值大小排序,选择前50个ωe对应的API调用作为需要监控的敏感API。
可选地,所述特征向量包括状态转移概率矩阵和状态发生频率。
在一些实施例中,所述特征向量的构建方法包括:
根据所述动态特征发生的时间戳得到所述安卓样本的系统行为序列,利用系统行为序列构建特征向量;
将所述系统行为序列中的系统行为动作逐一映射为相对应的状态,得到状态转移序列;根据所述状态转移序列获得所述特征向量;
设定
Figure BDA0002057077630000072
为状态发生频率,
计算
Figure BDA0002057077630000073
得到第z个所述安卓样本的状态转移序列中,第pn个状态的发生频率,其中,pn≥1,k≥1,z≥1,i≥1,N≥1;
其中,Tk表示状态k在所述安卓样本的状态转移序列中发生的次数,Ti表示状态i在所述安卓样本的状态转移序列中发生的次数。
设定
Figure BDA0002057077630000074
为状态转移概率,
计算
Figure BDA0002057077630000075
得到第z个安卓样本的状态转移序列中,第i个状态会转移到第j个状态的概率,其中,z≥1,k≥1,i≥1,n≥1,j≥1;
其中,Tij表示状态转移序列中从状态i转移到状态j的次数,Tik表示状态转移序列中从状态i转移到状态k的次数。
可选地,根据获得的状态转移序列,能够从中统计状态发生频率和生成该状态序列对应的状态转移概率矩阵,状态转移概率矩阵记录了从一个状态转移到另一个状态的概率。
可选地,将状态转移序列看着马尔科夫链,即可计算所述状态转移序列对应的状态转移概率矩阵。
在马尔可夫链的每一步中系统根据概率分布,可以从一个状态变到另一个状态,也可以保持当前状态,与不同的状态改变相关的概率称为转移概率,由转移概率组成的矩阵称为状态转移概率矩阵。
在一些实施例中,由于Android应用在t+1发生的行为只与t时刻发生的行为相关,而t时刻以前发生的行为可以看做是通过影响t-1时刻的行为来间接影响t时刻的行为,与t时刻发生的行为不直接相关。因此可以将系统行为变化的随机过程近似地看作一个马尔可夫链(Markov chain),进而可用马尔可夫链来对Android程序的行为进行描述。
将Android程序的系统行为按照以下方法一一映射,得到Android应用的状态转移序列。
针对资源操作类,包括对文件的访问,外部加载程序,启动服务等,activityname[base-path-h],activityname表示系统活动的名字,如文件访问为Fdaccess,h表示被裁剪到的深度,当h=2时,对路径/dev/input/event0的文件访问将被映射到状态fdaccess/dev/。
针对数据传输类,包括敏感数据的泄露,网络数据的传输等,activityname[tags],如数据泄露中,tags表示泄漏数据的信息类型。例如,存储电话IMEI的网络数据的tags为Network TAINT_IMEI。
针对敏感API调用,表示我们进行标记的敏感API的调用情况,直接表示为调用API的名字。
针对其他系统活动,例如包括打开网络连接,发生短信等行为等,直接表示为发生的系统活动的名字,如打开网络连接表示为opennet。
可选地,Android应用发生了如下的状态序列:sendsms→opennet→fdaccess/dev/→opennet→sendsms→opennet。
则它的状态转移概率矩阵为:
Figure BDA0002057077630000091
由此获得的状态转移概率矩阵就可以用来表示行为序列的统计特性,从而进一步的应用到机器学习模型中。
在一些实施例中,生成状态转移概率矩阵的方法:输入为状态转移序列SSeq和状态字典SDict,其中SDict记录了映射得到的所有状态以及状态对应的唯一编号;输出SSeq对应的状态概率转移矩阵SPM,如图3所示,第Z个样本的SPM,由此得到的状态转移概率矩阵的大小为n×n,pznn表示状态转移概率,i属于n,j属于n,n为正整数;如图4所示,将状态转移概率矩阵转换为一维向量,再加上各个状态发生频率组合成特征向量,fpzn表示状态发生频率;即最后的特征向量的长度为n2+n,n为正整数。
在一些实施例中,采用深度学习模型SAE对所述特征向量进行学习和训练得到分类器。
在一些实施例中,所述深度学习模型SAE进行训练包括:
将所述特征向量作为输入数据输入到第一个自动编码器中;
将第一个自动编码器的输出层作为第二个自动编码器的输入层进行训练;
将第二个自动编码器的输出层作为第三个自动编码器的输入层进行训练;
将第三个自动编码器的输出层作为第四个自动编码器的输入层进行训练;
将第四个自动编码器的输出层输入到softmax层中;
对整个网络进行调整,本实施例中使用BP算法对整个网络进行调整。
在一些实施例中,所述对整个网络进行调整包括:从输入层输入数据,并经过多层隐藏层进行逐渐计算,将结果输出到输出层;
Figure BDA0002057077630000101
表示第l层第u个神经元的值,
Figure BDA0002057077630000102
表示第l层的第u个神经元与第l+1层的第v个神经元的连接权重,nl表示第l层的神经元个数,计算
Figure BDA0002057077630000103
得到第l+1层中第v个神经元的输入值,其中,l≥1,u≥1,v≥1,n≥1;
设定
Figure BDA0002057077630000104
表示第l层第u个神经元的阈值,计算
Figure BDA0002057077630000105
得到第l层第u个神经元的值,其中f为激活函数,其中,l≥1,u≥1;
计算
Figure BDA0002057077630000106
得到第z个安卓样本经过神经网络计算的输出值,其中
Figure BDA0002057077630000107
等于最后一层的值
Figure BDA0002057077630000108
Q表示神经网络的层数,c表示输出层的神经元个数,其中,c≥0,z≥1,Q≥1,j≥1;
将输出层的数据与期待得到的结果进行对比,计算出输出值和期待值之间的均方误差:
Figure BDA0002057077630000109
其中
Figure BDA00020570776300001010
表示第z个安卓样本中第v个神经元的期待值,其中,c≥1,z≥1,v≥1。
判断所述均方误差是否小于设定值,当所述均方误差小于设定值时则完成训练,否则将所述均方误差反向传播回各层,更新各层的权重和阈值,然后继续对整个网络进行调整,反复迭代直到所述均方误差满足小于设定值的要求。
在一些实施例中,将安卓样本的特征向量输入到训练好的分类器中,得到所述softmax层的输出结果,根据输出结果判断待测安卓样本是否为恶意代码。
本公开实施例,不再使用传统的检测方法常用的单一的行为特征进行检测,而通过序列特征进行分类检测。可选地,本公开实施例,收集安卓应用的系统行为序列,并从系统行为序列中生成状态转移概率矩阵,并计算状态发生频率,将状态转移概率矩阵和状态发生频率作为特征向量进行分类器的训练,实现了对恶意代码的有效检测。
本公开实施例,将深度学习应用于恶意代码分析与检测,与基于浅层学习结构的分类方法,如支持向量机、人工神经网络、朴素贝叶斯和决策树等相比,深层学习结构是具有层次特征学习模型的结构,可以从大量的特征中学习到更深层的表达,从而实现可比传统机器学习算法更好的性能,达到更高的自动化程度和准确率。
在一些实施例中,恶意软件和正常软件都会上传用户手机号码、IMEI码、IMSI码等固件信息到服务器,请求获取SP号码和指定短信内容,然后发送SP扣费短信,订购收费业务。但是在订购收费业务并接收到回执短信后,恶意程序会立刻删除发送的SP短信运营商的回执短信,而正常的Android应用却不会。对比两个应用的扣费流程会发现恶意应用只比正常应用多了一个删除短信记录的步骤,但仅仅根据是否发生删除短信记录这一行为来区分恶意应用和正常应用是不够准确的。因为正常的应用也可能发生删除短信的行为,只是出现的时机不同。因此对于发生了扣费行为的应用,判断其是否是恶意软件不能仅仅根据该应用是否发生了发送SP扣费短信、删除短信等行为,还要根据收到回执短信之后是否立刻产生了删除短信的行为。
由此可见,仅仅根据某些敏感API调用或者些敏感行为是否发生来判断是否是恶意行为是不够准确的,本公开实施例能够利用Android应用的系统调用序列或API调用序列等系统行为序列来检测Android恶意代码,有效地提高了检测的准确率。
在一些实施例中,选择Android应用程序运行时的系统行为序列作为特征,可选地,系统行为序列中包括敏感API调用和各种系统活动。可选地,系统活动包括传输网络数据、读写文件、泄露敏感数据、发送短信、通话、启动服务以及动态加载等。所述系统行为序列体现了系统行为之间的依赖关系,而这些系统行为之间的依赖关系可以更精确的区分某些恶意行为。如上文的实施例中,每个行为在正常软件和恶意软件中都是有概率出现的,但是在接收收费业务的回执短信后发生删除短信的动作,这样的一组行为关系则是一个明显的恶意行为的标志。
在一些实施例中,SAE模型由多层自动编码器构建而成,其中自动编码器是一种用于学习高效编码的人工神经网络,具有输入层,输出层,以及一个或多个隐层。如图5所示,一个只有一层隐层的自动编码器,当数据通过这样的网络时,首先会被编码成一个较小的向量,然后再将这个向量进行解码。编码器训练的任务就是尽可能的减少输入层和输出层的误差,即为输入数据寻找一个最优的紧凑表示。
计算
Figure BDA0002057077630000121
得到输入层和输出层的误差;
其中,input是输入向量,out是输入空间中重构的多维向量,inputz是第z个安卓样本的的输入值,outz是第z个安卓样本的输出值。
设定θ是映射参数集,通过计算
Figure BDA0002057077630000122
得到。
其中,w是连接权重矩阵,b是偏移向量。
在一些实施例中,通过堆叠多个自动编码器构建深度学习网络,即形成栈式自动编码器,其中当前层的一个自动编码器的输出将作为下一个自动编码器的输入。如图6所示,一个基于栈式自动编码器的检测模型,将训练集的第z个样本的特征向量作为第一层输入,将其训练成一个自动编码器A1,然后将训练好的自动编码器的输出作为下一个自动编码器A2的输入,再对A2进行训练,重复这一过程直到隐层数达到h,即获得了一个具有h层深度的SAEs模型。在SAEs模型上再添加softmax层,计算softmax层的输出与实际标签的误差,使用反向传播的方法进行整体调整,最终组成一个具有深层体系结构的检测模型。
在检测阶段,将提取的特征向量作为训练好的SAEs检测模型的输入,SAEs的输出即为该Android应用的分类结果。
在一些实施例中,为了验证本方案提出检测方法的有效性,将通过实验评估方法的性能,以及与其他典型的Android恶意代码检测方法的对比分析。实验环境为处理器Intel(R)Core(TM)3i5-3470@3.20GHz,内存8GB,使用Python编程实现APK的捕获和动态行为特征的提取,在MATLAB实现分类器的训练及测试。选取了1000个恶意软件和1000个非恶意软件作为数据集,恶意软件来源于使用Drebin数据库中,非恶意软件来源于安卓应用市场。
使用混淆矩阵来分析实验结果,将恶意应用定义为正元组,非恶意应用定义负元组。混淆矩阵如表1所示,其中,TP表示为恶意应用被正确识别为恶意应用的数量,FN表示恶意应用被错误识别为正常应用的数量,FP表示为正常应用被错误识别为恶意应用的数量,TN表示正常应用被正确识别为正常应用的数量,Accuracy表示准确率,Precision表示精度,Recall表示召回率,F-Measure表示F1度量。
表1混淆矩阵
Figure BDA0002057077630000131
根据混淆矩阵可以计算分类器的评估参数,选用的评估参数如下:
Figure BDA0002057077630000132
Figure BDA0002057077630000133
Figure BDA0002057077630000134
Figure BDA0002057077630000135
在这组实验中,评价了SAEs在不同参数下的性能。在构建深度学习模型时,有两个关键参数:隐层的数量和每个隐层中的神经元数量。如表2所示,显示了本文提出的检测模型在不同网络结构下的性能变化,在隐层层数为4层,每层神经元个数为[5000,5000,5000,1000]时性能达到了最佳,其中准确率为93.1%,精度为93.427%,召回率为92.733%,F1度量也达到了93.075%。
表2不同网络结构的性能指标
Figure BDA0002057077630000141
为了验证提出方法的检测效果,从数据集中随机选择了300个恶意样本和300个正常样本,使用相同测试集与典型的Android恶意代码检测工具Androguard进行实验对比分析,实验结果如图7所示,为本方案恶意代码检测结果与Android恶意代码检测结果对比图。
实验结果表明本案提出的方法在准确率、精度、召回率和F1度量等性能指标上均优于Androguard。
在一些实施例中,从Android应用中提取了程序运行时的系统行为序列,可选地,包括Android应用运行时发生的敏感API调用、文件访问、数据传输等系统活动。将系统行为序列转换为状态转移序列,然后生成了状态转移概率矩阵。将状态转移概率矩阵和状态发生频率作为特征集对SAEs模型进行了学习和训练,最后利用训练后的SAEs实现了对Android恶意代码的检测。实验结果证明,本方案提出方法在准确率上优于典型的恶意代码检测方法。
本公开实施例,将状态转移和深度学习相结合,通过使用安卓恶意代码动态运行时产生的系统行为序列作为特征,建立了行为及其相互关系的特征向量,并利用深度学习模型进行学习和训练得到分类器,利用所述分类器对恶意代码进行检测,实现了对恶意代码的有效检测,同时解决了安卓代码混淆、加密的问题,并且提高了检测准确率,更进一步提高了检测的精度、召回率和F1度量。
以上详细描述了本发明的较佳具体实施例。应当理解,本领域的普通技术人员无需创造性劳动就可以根据本发明的构思作出诸多修改和变化。因此,凡本技术领域中技术人员依本发明的构思在现有技术的基础上通过逻辑分析、推理或者有限的实验可以得到的技术方案,皆应在由权利要求书所确定的保护范围内。

Claims (9)

1.一种基于系统行为序列的恶意代码检测方法,其特征在于,包括:
提取安卓样本的运行信息;
动态运行所述安卓样本,提取动态特征;
根据所述动态特征构建特征向量;
构造分类器,通过所述分类器检测恶意代码;
所述运行信息包括所述安卓样本的可运行组件;
所述特征向量的构建方法包括:
根据所述动态特征发生的时间戳得到所述安卓样本的系统行为序列;
将所述系统行为序列中的系统行为映射为相对应的状态,得到状态转移序列;
设定
Figure FDA0002967050180000011
为状态发生频率,
计算
Figure FDA0002967050180000012
得到第z个所述安卓样本的状态转移序列中,第pn个状态的发生频率,其中,pn≥1,k≥1,z≥1,i≥1,N≥1;
其中,Tk表示状态k在所述安卓样本的状态转移序列中发生的次数,Ti表示状态i在所述安卓样本的状态转移序列中发生的次数;
设定
Figure FDA0002967050180000013
为状态转移概率,
计算
Figure FDA0002967050180000014
得到第z个安卓样本的状态转移序列中,第i个状态会转移到第j个状态的概率,其中,z≥1,k≥1,i≥1,n≥1,j≥1;
其中,Tij表示状态转移序列中从状态i转移到状态j的次数,Tik表示状态转移序列中从状态i转移到状态k的次数。
2.根据权利要求1所述的一种基于系统行为序列的恶意代码检测方法,其特征在于,所述动态运行所述安卓样本,提取动态特征包括:
对apk文件需要监控的敏感API插桩并重打包;
将所述可运行组件作为所述动态运行的入口点,进行动态运行,并从所述动态运行生成的日志中提取动态特征。
3.根据权利要求1所述的一种基于系统行为序列的恶意代码检测方法,其特征在于,所述的动态特征包括:API调用,文件访问,敏感数据泄露,外部程序动态加载,网络连接请求,网络数据传输,SMS信息传输。
4.根据权利要求2所述的一种基于系统行为序列的恶意代码检测方法,其特征在于,所述敏感API的选取方法包括:
收集所述安卓样本中的API调用;
通过对所述安卓样本进行SVM算法训练,得到各所述API调用的权重ω;
将所述权重ω按照绝对值从大到小进行排序,选择前m个所述API调用作为所述敏感API,m≥1。
5.根据权利要求1所述的一种基于系统行为序列的恶意代码检测方法,其特征在于,所述特征向量包括状态转移概率矩阵和状态发生频率。
6.根据权利要求1所述的一种基于系统行为序列的恶意代码检测方法,其特征在于,采用深度学习模型SAE对所述特征向量进行学习和训练得到分类器。
7.根据权利要求6所述的一种基于系统行为序列的恶意代码检测方法,其特征在于,所述深度学习模型SAE进行训练包括:
将所述特征向量作为输入数据输入到第一个自动编码器中;
将第一个自动编码器的输出层作为第二个自动编码器的输入层进行训练;
将第二个自动编码器的输出层作为第三个自动编码器的输入层进行训练;
将第三个自动编码器的输出层作为第四个自动编码器的输入层进行训练;
将第四个自动编码器的输出层输入到softmax层中;
对整个网络进行调整。
8.根据权利要求7所述的一种基于系统行为序列的恶意代码检测方法,其特征在于,所述对整个网络进行调整包括:
Figure FDA0002967050180000021
表示第l层第u个神经元的值,
Figure FDA0002967050180000022
表示第l层的第u个神经元与第l+1层的第v个神经元的连接权重,nl表示第l层的神经元个数,计算
Figure FDA0002967050180000031
得到第l+1层中第v个神经元的输入值,其中,l≥1,u≥1,v≥1,n≥1;
设定
Figure FDA0002967050180000032
表示第l层第u个神经元的阈值,计算
Figure FDA0002967050180000033
得到第l层第u个神经元的值,其中f为激活函数,其中,l≥1,u≥1;
计算
Figure FDA0002967050180000034
得到第z个安卓样本经过神经网络计算的输出值,其中
Figure FDA0002967050180000035
等于最后一层的值
Figure FDA0002967050180000036
Q表示神经网络的层数,c表示输出层的神经元个数,其中,c≥1,z≥1,Q≥1,v≥1;
将输出层的数据与期待得到的结果进行对比,计算出输出值和期待值之间的均方误差:
Figure FDA0002967050180000037
其中
Figure FDA0002967050180000038
表示第z个安卓样本中第v个神经元的期待值,其中,c≥1,z≥1,v≥1;
判断所述均方误差是否小于设定值,当所述均方误差小于设定值时则完成训练,否则将所述均方误差反向传播回各层,更新各层的权重和阈值,然后继续对整个网络进行调整,反复迭代直到所述均方误差满足小于设定值的要求。
9.根据权利要求1所述的一种基于系统行为序列的恶意代码检测方法,其特征在于,将所述安卓样本的所述特征向量输入到训练好的分类器中,得到softmax层的输出结果,根据所述输出结果判断待测安卓样本是否为恶意代码。
CN201910395810.4A 2019-05-13 2019-05-13 一种基于系统行为序列的恶意代码检测方法 Active CN110263538B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910395810.4A CN110263538B (zh) 2019-05-13 2019-05-13 一种基于系统行为序列的恶意代码检测方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910395810.4A CN110263538B (zh) 2019-05-13 2019-05-13 一种基于系统行为序列的恶意代码检测方法

Publications (2)

Publication Number Publication Date
CN110263538A CN110263538A (zh) 2019-09-20
CN110263538B true CN110263538B (zh) 2021-07-09

Family

ID=67913158

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910395810.4A Active CN110263538B (zh) 2019-05-13 2019-05-13 一种基于系统行为序列的恶意代码检测方法

Country Status (1)

Country Link
CN (1) CN110263538B (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111027068B (zh) * 2019-11-28 2024-01-05 深圳市凌晨知识产权运营有限公司 基于层级DoI-RNNs模型的安卓恶意软件动态检测方法
CN111079146A (zh) * 2019-12-10 2020-04-28 苏州浪潮智能科技有限公司 一种恶意软件处理方法与装置
CN111259393B (zh) * 2020-01-14 2023-05-23 河南信息安全研究院有限公司 一种基于生成对抗网络的恶意软件检测器抗概念漂移方法
CN111400708B (zh) * 2020-03-11 2023-05-05 重庆大学 用于恶意代码检测的方法及装置
CN111737694B (zh) * 2020-05-19 2023-04-25 华南理工大学 一种基于行为树的恶意软件同源性分析方法
CN111797400B (zh) * 2020-07-08 2023-09-01 国家计算机网络与信息安全管理中心 一种车联网恶意应用动态检测方法及装置
CN112417447B (zh) * 2020-11-11 2021-07-20 北京京航计算通讯研究所 一种恶意代码分类结果的精确度验证方法及装置
CN112417450B (zh) * 2020-11-20 2022-05-20 复旦大学 基于动态行为序列和深度学习的恶意行为实时检测系统
CN112651024A (zh) * 2020-12-29 2021-04-13 重庆大学 用于恶意代码检测的方法及装置、设备
CN114679331B (zh) * 2022-04-11 2024-02-02 北京国联天成信息技术有限公司 一种基于ai技术的恶意代码被动检测方法及系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105205396A (zh) * 2015-10-15 2015-12-30 上海交通大学 一种基于深度学习的安卓恶意代码检测系统及其方法
CN106778266A (zh) * 2016-11-24 2017-05-31 天津大学 一种基于机器学习的安卓恶意软件动态检测方法
CN107169351A (zh) * 2017-05-11 2017-09-15 北京理工大学 结合动态行为特征的Android未知恶意软件检测方法
CN109543410A (zh) * 2018-11-20 2019-03-29 北京理工大学 一种基于语义映射关联的恶意代码检测方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9465857B1 (en) * 2013-09-26 2016-10-11 Groupon, Inc. Dynamic clustering for streaming data

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105205396A (zh) * 2015-10-15 2015-12-30 上海交通大学 一种基于深度学习的安卓恶意代码检测系统及其方法
CN106778266A (zh) * 2016-11-24 2017-05-31 天津大学 一种基于机器学习的安卓恶意软件动态检测方法
CN107169351A (zh) * 2017-05-11 2017-09-15 北京理工大学 结合动态行为特征的Android未知恶意软件检测方法
CN109543410A (zh) * 2018-11-20 2019-03-29 北京理工大学 一种基于语义映射关联的恶意代码检测方法

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
一种恶意代码特征选取和建模方法;李盟等;《计算机应用与软件》;20151010;第32卷(第8期);第266-271页 *
基于交互行为的恶意代码检测研究;孙晓妍等;《计算机应用》;20100811;第30卷(第6期);第1489-1492页 *
基于权限相关性的Android恶意软件检测;张锐等;《计算机应用》;20140510;第34卷(第5期);第1322-1325页 *

Also Published As

Publication number Publication date
CN110263538A (zh) 2019-09-20

Similar Documents

Publication Publication Date Title
CN110263538B (zh) 一种基于系统行为序列的恶意代码检测方法
CN112003870B (zh) 一种基于深度学习的网络加密流量识别方法及装置
Narayanan et al. Context-aware, adaptive, and scalable android malware detection through online learning
CN109359439B (zh) 软件检测方法、装置、设备及存储介质
CN109614795B (zh) 一种事件感知的安卓恶意软件检测方法
CN105431859A (zh) 指示恶意软件的信号标记
Song et al. Permission Sensitivity‐Based Malicious Application Detection for Android
Koucham et al. Host intrusion detection using system call argument-based clustering combined with Bayesian classification
Ibba et al. Evaluating machine-learning techniques for detecting smart ponzi schemes
Ficco Comparing API call sequence algorithms for malware detection
Ban et al. Fam: Featuring android malware for deep learning-based familial analysis
CN114285587B (zh) 域名鉴别方法和装置、域名分类模型的获取方法和装置
CN113282920B (zh) 日志异常检测方法、装置、计算机设备和存储介质
CN113468524B (zh) 基于rasp的机器学习模型安全检测方法
CN113886821A (zh) 基于孪生网络的恶意进程识别方法、装置、电子设备及存储介质
Rashidi et al. Xdroid: An android permission control using hidden markov chain and online learning
CN113378161A (zh) 一种安全检测方法、装置、设备及存储介质
US20230048076A1 (en) Cyber threat information processing apparatus, cyber threat information processing method, and storage medium storing cyber threat information processing program
CN115758388A (zh) 一种基于低维字节码特征的智能合约的漏洞检测方法
CN113312619A (zh) 基于小样本学习的恶意进程检测方法、装置、电子设备及存储介质
CN113094709B (zh) 风险应用的检测方法、装置和服务器
CN116578969B (zh) 基于感知归类的软件检测模型训练方法、检测方法和系统
CN113221110B (zh) 一种基于元学习的远程访问木马智能分析方法
Ardimento et al. Data-aware declarative process mining for malware detection
CN117614681B (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
GR01 Patent grant
GR01 Patent grant