CN106548073B - 基于卷积神经网络的恶意apk的筛查方法 - Google Patents
基于卷积神经网络的恶意apk的筛查方法 Download PDFInfo
- Publication number
- CN106548073B CN106548073B CN201610934889.XA CN201610934889A CN106548073B CN 106548073 B CN106548073 B CN 106548073B CN 201610934889 A CN201610934889 A CN 201610934889A CN 106548073 B CN106548073 B CN 106548073B
- Authority
- CN
- China
- Prior art keywords
- function
- apk
- convolution
- model
- node
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/562—Static detection
- G06F21/563—Static detection by source code analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/084—Backpropagation, e.g. using gradient descent
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/24—Classification techniques
- G06F18/241—Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches
- G06F18/2411—Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches based on the proximity to a decision surface, e.g. support vector machines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/03—Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
- G06F2221/033—Test or assess software
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)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Telephonic Communication Services (AREA)
Abstract
本发明公布了一种基于卷积神经网络的恶意安卓安装包APK的筛查方法,应用深度卷积神经网络对APK建模,使用APK原始数据作为输入,采用APK的Call Graph,根据安全敏感函数或者高频率调用(出现)函数的调用,设计相应的深度卷积神经网络进行特征自动抽取,由此检测APK是否恶意;包括模型训练过程和用训练好的模型进行APK检测过程。本发明方法可减少人为提取特征的环节,从而减少分析时间,提高普适性,增加准确率。
Description
技术领域
本发明属于软件信息安全技术领域,涉及安卓软件筛查和保护,尤其涉及一种基于卷积神经网络的恶意APK(安卓安装包)的筛查方法。
背景技术
APK是使用安卓手机安装软件时候下载的安装包。随着移动设备的流行,来自安卓软件的攻击也越来越多,恶意APK的筛查日趋重要。当前的恶意APK筛查方法通常依赖于大量人工特征的提取,具有消耗大量分析提取时间、耗费较高的人力代价等缺点。运用深度神经网络对恶意APK进行自动筛查能够有效解决上述问题。
APP Context属于APK的静态特征分析,基本思想是,一个APP是不是恶意的,在很大程度上可以通过他调用安全敏感函数时的依赖路经上的Context信息(即上下文信息,主要为调用到这个SSM的条件信息)看出来。下面分别解释一下安全敏感函数和依赖路经上Context信息的具体含义。
当用SOOT等工具反编译APK时,可以得到整个APK的Call Graph。如图3中的partof call graph,Call Graph上表示有每个函数的名字和它们的调用关系。
安全敏感函数(Security Sensitive Methods,简称SSM)是人为定义的一系列有可能实现恶意目的或者影响用户手机安全的函数。这些函数包括需要申请权限的函数,Java的映射函数,从数据源读取数据的函数,写入数据的函数等。
关于安全敏感函数,有三点需要特别说明一下。第一点是安全敏感函数只是人为定义的,可能会威胁到安全,或者说可以作为判断一个APP是不是恶意APP的参考信息的怀疑对象,并不是拥有很多安全敏感函数,就意味着这个APP是恶意的。第二点是:如图4,安全敏感函数相当于在Call Graph上标出了一些点,并且这些点是叶子节点,即没有边连出。第三点是Call Graph的点是非常多的,规模从几百到上万不等,这样的规模非常难以处理。图4是Call Graph上的安全敏感函数示例图。
以下说明依赖路径上的Context信息的获取过程。AppContext文献(Yang W,XiaoX,Andow B,et al.Appcontext:Differentiating malicious and benign mobile appbehaviors using context[C]//Software Engineering(ICSE),2015IEEE/ACM 37th IEEEInternational Conference on.IEEE,2015,1:303-313.)记载的算法主要分为五步:
第一步,标出一些安全敏感函数。
第二步,定位调用这些安全敏感函数的路径和引发事件。比如安全敏感函数是SendMessage(),那么向上追踪,沿着函数的调用路径向上找,找到引发的事件。引发的事件可以是用户的操作,系统硬件的信号等等。然后记录下这个引发的事件和安全敏感函数的对应,即<Activation Events,Security Sensitive Methods>。
第三步,得到reduced inter-procedure control-flow graph(RICFG)。首先,对于第二步得到的每一个<Activation Events,Security Sensitive Methods>,也就是一个安全敏感函数的调用路径,都求出它的reduced inter-procedure control-flow graph(RICFG)。如图5所示,RICFG是包括了所有从这个引发事件到安全敏感函数所有路径的inter-procedure control-flow graph(ICFG)的子图。
接下来,人为地抽取出了特征向量,再送入SVM分类。而人为抽取特征这个缺点是现有检测恶意APK方法的通病。
第四步,通过RICFG和data flow得到路径上的Context信息。注意到,RICFG上面是有If条件判断语句的,这些语句影响了程序的调用路径。比如图中是在时间是晚上23点之后或者早上5点之前才调用下一个函数,然后最后调用到sendTextMessage,那么这个条件判断语句中,变量的值是哪里来的,就很关键。因为这个值的大小影响了程序会不会调用到待分析的安全敏感函数。所以要找出RICF的所有条件控制语句中影响程序执行的变量,然后通过dataflow找到他们的数据来源。如图6所示提取context信息,有一个条件控制语句是If(current–last>43200000),那么通过dataflow向上寻找,发现是调用System.currentTimeMillis()和db.query(“LastConnectTime”)得到的,那么对应的环境因素就是SystemTime和DataBase。需要说的是,这一步是非常消耗时间的。APP Context论文中将每个APP的分析时间上限定成了80分钟,而且只分析了835个APK。
这样就得到了每个RICFG上对应的环境因素,再加上这个RICFG对应的安全敏感函数,权限信息,引发事件等,就得到了表1中的一行信息。注意一个APP是有很多安全敏感函数的,而安全敏感函数也可能有多条引发事件,所以一个APP对应的最后的路径信息行数可以有很多的。表1是APP Context特征向量表。
表1. APP Context特征向量表
*F3=Calendar,F4=System Time,F5=Database
第五步,用SVM分类器进行分类。经过前四个步骤,得到了如表1的APP Context特征向量表。接下来用SVM分类器来进行分类。但是SVM分类器需要每行信息都有自己的label,而实际上原始数据只有每个APK的label,所以需要人工通过标注得到的每一个调用路径上的信息是恶意的还是良好的,即给每一行加一个label,再用SVM进行分类。人工标注的方法是,理解这个调用路径的目的是什么,程序时为何调用到这个安全敏感函数的,然后结合大家公认的恶意APK的标准(比如会在用户不知情的情况下扣费等),来自己判断,这个路径上对安全敏感函数的调用是不是恶意的。APP Context文献中,人工标注的工作量是非常巨大而繁琐的,是一个非常费时间,费人力的工作。
综上所述,现有方法的缺点主要有:
第一,需要人工标记大量的数据。这样不仅消耗时间,消耗人力,还使它无法处理大的数据集,这也是他们只分析了835个APK的原因之一。并且消耗人力的同时,还有可能出现标错的情况,非常影响模型的准确率。
第二,解析APK的时间过长。尤其是提取RICFG和dataflow时间。
第三,没有使用APK的原始数据,有过度的人为特征提取,这必然损失掉一些信息。比如虽然APP Context充分考虑了每条路径的信息,但是路径间的关系被忽略了。如果一个函数先调用了一个安全敏感函数,又调用了另一个,他们不在对方路径的调用条件里,那么APPContext是无法找出这两者的关系并加以分析的。此外,人工特征抽取会导致分析时间长,降低准确率,模型不具有普适性等问题。
发明内容
为了克服上述现有技术的不足,本发明提供一种基于卷积神经网络的恶意APK的筛查方法,能够解决现有检测恶意APK方法的依赖人工特征抽取而导致分析时间长、降低准确率、模型不具有普适性等问题。
为方便说明,本发明约定以下缩略语和关键术语定义:
函数调用关系图(call graph):APK反编译后得到的表示函数间调用关系的有向图。图上的每一个节点是一个函数。有向边表示函数间的调用。
安全敏感函数(Security Sensitive Methods,简称SSM):人为定义的一系列有可能实现恶意目的或者影响用户手机安全的函数。这些函数包括需要申请权限的函数,Java的映射函数,从数据源读取数据的函数,写入数据的函数等。
SVM(Support Vector Machine,支持向量机):机器学习的算法,用于分类。
Pooling(池化算法):一个简单粗暴的算法,在深度神经网络里面非常常见。如图2,Pooling可以将同样维数的一系列向量,提取成一个这个维数的向量。提取时是在这一系列向量中,取对应维数的最大值(Max Pooling),最小值(Min Pooling),平均值(AveragePooling),求和(Sum Pooling)等。Pooling常用于卷积层之后,在最后的隐藏层和输出层之前。
本发明的原理是:为了提取出call graph上的信息,我们希望在call graph上进行卷积。但是整个call graph过于庞大,目前的计算资源无法处理。为了解决这个问题,我们提出了针对安全敏感函数进行卷积和基于高频率函数进行卷积的解决方案。其中,在建立深度卷积神经网络模型过程中,考虑到安全敏感函数相当于在Call Graph上标出了一些点,并且这些点是叶子节点,即没有边连出。这对于模型设计很重要,因为这意味着不需要考虑安全敏感函数内部的信息与接下来的调用信息,也就是说可以把安全敏感函数当做“词”来求取“词向量”。由于Call Graph的点是非常多的,规模从几百到上万不等,这样的规模非常难以处理。所以选取出来一些重要的安全敏感函数是非常有必要的。本发明在小数据集上统计了安全敏感函数占所有函数的比例,普遍在3%到4%之间。这非常好地缩小了数据规模,使得深度神经网络完全能够处理。深度卷积神经网络模型的基本思想是:局部提取一个函数调用的若干安全敏感函数的信息,调用可以分为直接调用和间接调用。直接调用就是这个网络直接调用了安全敏感函数,间接调用就是这个函数调用了其他函数,然后其他函数又调用了安全敏感函数,或者其他函数调用的函数调用了安全敏感函数,依次类推。考虑到网络的复杂性和先验知识,我们只考虑这个函数直接调用的安全敏感函数,以及这个函数调用的函数调用的安全敏感函数。即我们以这个函数为中心,向下深搜两层,然后卷积这个范围里的安全敏感函数。基于APK Call Graph的深度卷积神经网络模型,利用卷积提取局部信息的特点,将一个函数调用的若干安全敏感函数结合起来,提取出这个函数的综合调用信息,进而判断这个函数是不是恶意的。
安全敏感函数可以高效地缩小数据的输入规模,但是仍然用了一些先验知识,即安全敏感函数列表是由经验而来的,人为规定的。为了彻底抛弃一切先验知识,达到让程序完全自动地发掘APK信息的目的,我们又提出了针对高频率函数的卷积模型。针对高频率函数的卷积模型和针对安全敏感函数的卷积模型的结构是一样的,不同的是在卷积时针对高频率出现函数。
本发明提供的技术方案是:
一种基于卷积神经网络的恶意安卓安装包APK的筛查方法,应用深度卷积神经网络对APK建模,使用APK原始数据作为输入,采用APK的Call Graph,根据安全敏感函数或者高频率调用(出现)函数的调用,设计相应的深度卷积神经网络进行特征自动抽取,由此检测APK是否恶意;本发明方法可减少人为提取特征的环节,从而减少分析时间,提高普适性,增加准确率;包括模型训练过程和用训练好的模型进行APK检测过程;具体包括如下步骤:
(一)模型训练过程,具体包括如下步骤:
1)针对APK训练数据集,反编译APK,解析出call graph;
解析出APK的call graph上的每个节点对应一个函数;
2)根据安全敏感函数或高频率函数进行卷积;
针对APK的call graph上的部分节点进行卷积;针对部分节点为安全敏感函数或高频率函数;基于一个函数和它调用的函数进行卷积,得到卷积结果为一个向量;具体包括如下步骤:
21)选取APK的call graph上的节点,所述节点对应的函数为安全敏感函数或高频率函数;
22)针对选取的函数节点进行卷积,采用的卷积公式如式1:
其中,p代表此时卷积的节点,为正在卷积的函数;X1,i为节点p直接调用的第i个函数节点,Wconv1为对其卷积的参数。X2,i为节点p间接调用的第i个函数节点,Wconv2为对其卷积的参数;n1为p直接调用的函数节点的个数;n2为节点p间接调用的函数个数;
23)通过卷积提取得到卷积结果为一个向量,该向量为节点p调用的多个函数的信息;
3)将结果传入pooling层
将卷积结果传入深度卷积神经网络模型的pooling层,将相同维数的一系列向量,提取成和该维数相同的一个向量;
4)接入卷积神经网络模型的隐藏层和输出层;
5)根据输出结果和应该得到的正确结果,计算误差,并反向传播,更新网络参数;
本发明在具体实施中,在训练的过程中不断用交叉验证集测试,注意用交叉验证集测试的时候,只预测结果,不更新参数。不断训练以及调整模型参数设定,使得模型在交叉验证集上达到最高准确率。此时最后用测试集来测试模型,得到的准确率才为模型准确率。
(二)用训练好的模型进行APK检测过程,具体包括如下步骤:
1)对待检测APK数据,反编译APK,解析出call graph
2)利用训练好的模型,根据安全敏感函数或高频率函数进行卷积
3)将结果传入训练好的模型的pooling层
4)接入训练好的模型的隐藏层和输出层;
5)得到结果,即是不是恶意APK。
与现有技术相比,本发明的有益效果是:
本发明技术方案首次应用深度神经网络来对APK建模,检测恶意APK的工作。本发明所建立模型的特点在于使用APK原始数据作为输入,在call graph图上进行卷积,自动提取特征。具体地,模型使用APK原始数据作为输入,以APK的Call Graph为基础,根据安全敏感函数或高频率函数的调用设计相应的卷积神经网络进行特征自动抽取,减少了人为提取特征的环节。根据高频率函数卷积的方法在减少人为特征提取上更彻底,因为不需要任何先验知识,不需要人为定义的安全敏感函数。由于减少了人为提取特征的环节,所以本发明方法具有减少分析时间、提高普适性、增加准确率等优点。
附图说明
图1是本发明提供的筛查方法的流程框图。
图2是池化算法Pooling过程的示意图;
其中,箭头左面是pooling前的很多个向量;箭头右面是pooling后的一个向量。
图3是AppContext文献中部分Call Graph图(part of a Call Graph)结构的示意图。
图4是apk解析后的Call Graph图及其上的安全敏感函数示例图;
其中,Call Graph图中每个点都是一个函数;其上的节点S表示安全敏感函数。
图5是AppContext文献中得到RICFG的示例图。
图6是AppContext文献中提取context信息的示例图。
图7是本发明实施例对一个函数节点进行卷积的示意图;
其中,中间的节点1表示现在要卷积的函数节点;节点2表示节点1直接调用的安全敏感函数的节点;节点3表示节点1函数调用的函数调用(间接调用)的安全敏感函数;节点1和节点3卷积之后的节点用节点4表示;节点5表示普通的函数节点,普通的函数节点的名字是不固定的,无法求取向量表示。
图8是本发明方法采用的改进的深度卷积神经网络模型的示意图。
具体实施方式
下面结合附图,通过实施例进一步描述本发明,但不以任何方式限制本发明的范围。
本发明提供一种基于卷积神经网络的恶意安卓安装包APK的筛查方法,应用深度神经网络来对APK建模,实现对APK检测。具体地,本发明所建立模型使用APK原始数据作为输入,以APK的Call Graph为基础,根据安全敏感函数的调用设计相应的卷积神经网络进行特征自动抽取,减少了人为提取特征的环节,从而减少分析时间,提高普适性,增加准确率。
本发明所建立模型是基于APK Call Graph的深度卷积神经网络模型,利用卷积提取局部信息的特点,将一个函数调用的若干安全敏感函数结合起来,提取出这个函数的综合调用信息,进而判断这个函数是不是恶意的。
Call Graph上的点非常多,可以几百到上万,如果在上万个节点的图上来做卷积,如论从时间消耗还是模型效果来说都是很不理想的。但是,安全敏感函数基本只占总函数个数的3%到4%,因此我们基于一个函数和它调用的安全敏感函数做卷积,相对可行得多。把这些安全敏感函数当做自然语言中的词汇,训练得到相应的向量表示。针对深度卷积神经网络模型进行改进包括如下过程:
本发明中,深度卷积神经网络模型的基本思想是局部提取一个函数调用的若干安全敏感函数(或高频率函数)的信息,调用可以分为直接调用和间接调用。直接调用就是这个网络直接调用了安全敏感函数或高频率函数,间接调用就是这个函数调用了其他函数,然后其他函数又调用了函数,或者其他函数调用的函数调用了函数,依次类推。考虑到网络的复杂性和先验知识,我们只考虑这个函数直接调用的安全敏感函数或高频率函数,以及这个函数调用的函数调用的安全敏感函数或高频率函数。即我们以这个函数为中心,向下深搜两层,然后卷积这个范围里的安全敏感函数或高频率函数。
本发明实施例采用的数据集是Drebin的部分数据集(Arp D,Spreitzenbarth M,Hubner M,et al.DREBIN:Effective and Explainable Detection of Android Malwarein Your Pocket[C]//NDSS.2014)。我们在Drebin的部分数据集上,把整个APK的callgraph整体的安全敏感函数信息,输入简单神经网络(输入层-隐藏层-输出层);再采用本发明提出的卷积神经网络模型。实验证明我们的卷积神经网络模型准确率更高。具体做法是:
良性数据集采用从Googleplay上爬取的APK,恶意数据集采用部分Drebin数据集。
整个数据集(包括良性和恶意)分成训练集、交叉验证集、测试集。首先用训练集训练网络,更新参数,网络训练方法具体包括如下步骤:
1)反编译APK,解析出call graph
解析出APK的call graph上的每个节点对应一个函数;
2)根据安全敏感函数或高频率函数进行卷积;
针对APK的call graph上的部分节点进行卷积;针对部分节点为安全敏感函数或高频率函数;基于一个函数和它调用的函数进行卷积,得到卷积结果为一个向量;具体包括如下步骤:
21)选取APK的call graph上的节点,所述节点对应的函数为安全敏感函数或高频率函数;
22)针对选取的函数节点进行卷积;
23)通过卷积提取得到卷积结果为一个向量,该向量为节点p调用的多个函数的信息;
3)将结果传入pooling层
将卷积结果传入深度卷积神经网络模型的pooling层,将相同维数的一系列向量,提取成和该维数相同的一个向量;
4)接入卷积神经网络模型的隐藏层和输出层;
5)根据输出结果和应该得到的正确结果,计算误差,并反向传播,更新网络参数;
之后在训练的过程中不断用交叉验证集测试,注意用交叉验证集测试的时候,只预测结果,不更新参数。不断训练以及调整模型参数设定,使得模型在交叉验证集上达到最高准确率。此时最后用测试集来测试模型,得到的准确率才为模型准确率。
采用训练好的模型进行APK检测,对待检测APK,按照上述步骤1)~步骤4)检测过程进行检测,得到检测结果,即是不是恶意APK。
图7是对一个函数节点进行卷积的示意图。如图7所示,中间的节点1就是我们现在要卷积的函数节点。节点2表示此节点直接调用的函数。节点3表示此函数调用的函数调用的函数。他们卷积之后的节点用节点4表示。另外,节点5表示普通的函数节点,他们的名字是不固定的,我们无法求取他们的向量表示进行分析,因此在这里我们不考虑这些普通的函数节点。这里的函数指的是安全敏感函数或高频率函数。
卷积过程中,此函数直接调用的函数采用同样的卷积参数,间接调用的函数采用另一组卷积参数。采用的卷积公式如式1:
其中,p代表此时卷积的节点,即图7中的节点1。X1,i为节点p直接调用的第i个安全敏感函数节点,Wconv1为对其卷积的参数。X2,i为节点p间接调用的第i个安全敏感函数节点,Wconv2为对其卷积的参数。n1为p直接调用的安全敏感函数节点的个数,在图7中为1,n2为节点p间接调用的安全敏感函数个数,在图7中为2。
通过这个卷积窗口,我们提取出节点p调用的若干安全敏感函数的信息,将这些信息结合起来,来判断APK的恶意性。
整个模型的示意图如图8。从APK分析到Call Graph的时间代价很小,平均一个APK要32秒左右,在Call Graph上滑动卷积窗口的时间代价比较大,可以通过相应的算法改进。在APK的Call Graph上对相应的安全敏感函数节点进行卷积之后,连入Pooling层,之后连入隐藏层,最后连入输出层,这就是整个模型的网络连接结构。
卷积是一个滑动窗口在call graph上滑动一遍。当滑到每一个节点的时候对它进行卷积。而滑动的顺序可以直接滑动也可以根据安全敏感函数或者高频率函数深搜,时间代价会不同。本方法选择了深搜加上调用soot函数的方法,soot是一个解析APK的工具,本发明用来反编译APK,解析出call graph。这个方法相比于于直接深搜或者遍历节点的方法,时间上更快。
上述深度神经网络对APK的分析采用的是安全敏感函数,但深度神经网络对APK的分析并不局限于安全敏感函数或高频率函数。目前我们忽略了除了安全敏感函数或高频率函数以外的其他函数的信息,因为他们的名字是不固定的,无法求取向量表示。实际上,我们可以进一步地考虑所有函数的名称、参数、调用关系等信息,使用自动编码机等其他手段来处理,为函数进行编码,得到函数的表示向量。因此,可以采用不同方法获取函数向量表示。
本实施例采用了Sum pooling和Max pooling方式。两种pooling方式中,Sumpooling将很多个向量变成一个向量按维加和;Max pooling则按维取最大。其中,SumPooling效果更好,说明应该将APK的各个部分的局部敏感信息联合起来,考虑他们的关系,将他们合在一起,作为整个APK的安全敏感特征,用sum pooling替代max pooling,这样处理后,本发明方法的效果更佳。
需要注意的是,公布实施例的目的在于帮助进一步理解本发明,但是本领域的技术人员可以理解:在不脱离本发明及所附权利要求的精神和范围内,各种替换和修改都是可能的。因此,本发明不应局限于实施例所公开的内容,本发明要求保护的范围以权利要求书界定的范围为准。
Claims (4)
1.一种基于卷积神经网络的恶意安卓安装包APK的筛查方法,应用深度卷积神经网络对APK数据集建模,使用APK原始数据作为输入,采用APK的函数调用关系图,根据函数调用设计相应的深度卷积神经网络进行特征自动抽取,由此检测APK是否恶意;分为模型训练过程和用训练好的模型进行APK检测过程;具体包括如下步骤:
(一)模型训练过程具体包括如下步骤:
1)针对APK训练数据集,反编译APK,解析出函数调用关系图;所述函数调用关系图上的每个节点对应一个函数;
2)根据安全敏感函数或高频率函数,针对所述函数调用关系图上的部分节点进行卷积,通过卷积提取得到卷积结果为一个向量,该向量为函数调用关系图上的节点调用的多个函数的信息;
3)将结果传入深度卷积神经网络模型的池化算法层,将相同维数的一系列向量提取成与该维数相同的一个向量;
4)再接入卷积神经网络模型的隐藏层和输出层;
5)根据输出结果和应该得到的正确结果,计算误差,并反向传播,更新深度卷积神经网络模型参数;
(二)用训练好的深度卷积神经网络模型进行APK检测,具体包括如下步骤:
1)对待筛查的APK数据,反编译APK,解析出函数调用关系图;
2)利用训练好的模型,根据安全敏感函数或高频率函数进行卷积;
3)将卷积结果传入训练好的模型的池化算法层;
4)接入训练好的模型的隐藏层和输出层;
5)得到检测结果,即得出待筛查的APK是不是恶意APK。
2.如权利要求1所述筛查方法,其特征是,模型训练过程中的步骤2)根据安全敏感函数或高频率函数进行卷积具体包括如下步骤:
21)选取APK的函数调用关系图上的节点,所述节点对应的函数为安全敏感函数或高频率函数;
22)针对选取的函数节点进行卷积,采用的卷积公式如式1:
其中,p代表此时卷积的节点,为正在卷积的函数;X1,i为节点p直接调用的第i个函数节点,Wconv1为对其卷积的参数,X2,i为节点p间接调用的第i个函数节点,Wconv2为对其卷积的参数;n1为p直接调用的函数节点的个数;n2为节点p间接调用的函数个数;
23)通过卷积提取得到卷积结果为一个向量,该向量为节点p调用的多个函数的信息。
3.如权利要求1所述筛查方法,其特征是,在模型训练过程中,在采用训练数据集进行模型训练之后,还不断用交叉验证集进行测试;在用交叉验证集测试时,只预测结果,不更新参数;通过不断训练并调整模型参数设定,使得模型在交叉验证集上达到最高准确率;最后用测试集来测试模型,得到的准确率为模型准确率。
4.如权利要求1所述筛查方法,其特征是,所述池化算法采用求和或最大值方式。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610934889.XA CN106548073B (zh) | 2016-11-01 | 2016-11-01 | 基于卷积神经网络的恶意apk的筛查方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610934889.XA CN106548073B (zh) | 2016-11-01 | 2016-11-01 | 基于卷积神经网络的恶意apk的筛查方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106548073A CN106548073A (zh) | 2017-03-29 |
CN106548073B true CN106548073B (zh) | 2020-01-03 |
Family
ID=58392536
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610934889.XA Active CN106548073B (zh) | 2016-11-01 | 2016-11-01 | 基于卷积神经网络的恶意apk的筛查方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106548073B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3474175B1 (en) * | 2017-10-18 | 2020-10-14 | AO Kaspersky Lab | System and method of managing computing resources for detection of malicious files based on machine learning model |
CN107798243A (zh) * | 2017-11-25 | 2018-03-13 | 国网河南省电力公司电力科学研究院 | 终端应用的检测方法和装置 |
CN108694329B (zh) * | 2018-05-15 | 2021-04-06 | 中国科学院信息工程研究所 | 一种基于软硬件结合的移动智能终端安全事件可信记录系统及方法 |
CN109002715B (zh) * | 2018-07-05 | 2020-09-15 | 东北大学秦皇岛分校 | 一种基于卷积神经网络的恶意软件识别方法及系统 |
CN110276198B (zh) * | 2019-06-14 | 2021-04-20 | 中国科学院信息工程研究所 | 一种基于概率预测的嵌入式可变粒度控制流验证方法及系统 |
US11321066B2 (en) * | 2019-08-12 | 2022-05-03 | Nec Corporation | Securing software installation through deep graph learning |
CN112003272B (zh) * | 2020-08-11 | 2021-12-14 | 东北电力大学 | 一种基于卷积神经网络的电力系统频率安全控制方法 |
CN113420294A (zh) * | 2021-06-25 | 2021-09-21 | 杭州电子科技大学 | 基于多尺度卷积神经网络的恶意代码检测方法 |
CN115018078B (zh) * | 2022-05-13 | 2024-07-12 | 北京百度网讯科技有限公司 | 量子电路操作方法及装置、电子设备和介质 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6055524A (en) * | 1997-10-06 | 2000-04-25 | General Cybernation Group, Inc. | Model-free adaptive process control |
DE102008027605B4 (de) * | 2008-06-10 | 2010-04-08 | Optiming Gmbh | System und Verfahren zur rechnerbasierten Analyse großer Datenmengen |
CN101359352B (zh) * | 2008-09-25 | 2010-08-25 | 中国人民解放军信息工程大学 | 分层协同的混淆后api调用行为发现及其恶意性判定方法 |
CN104866763B (zh) * | 2015-05-28 | 2019-02-26 | 天津大学 | 基于权限的Android恶意软件混合检测方法 |
-
2016
- 2016-11-01 CN CN201610934889.XA patent/CN106548073B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN106548073A (zh) | 2017-03-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106548073B (zh) | 基于卷积神经网络的恶意apk的筛查方法 | |
US11003773B1 (en) | System and method for automatically generating malware detection rule recommendations | |
CN110912890B (zh) | 一种面向内网的漏洞攻击检测系统 | |
CN108449342B (zh) | 恶意请求检测方法及装置 | |
CN108268777B (zh) | 一种利用补丁信息进行未知漏洞发现的相似性检测方法 | |
Crussell et al. | Andarwin: Scalable detection of android application clones based on semantics | |
CN114077741B (zh) | 软件供应链安全检测方法和装置、电子设备及存储介质 | |
CN111639337B (zh) | 一种面向海量Windows软件的未知恶意代码检测方法及系统 | |
CN109871688B (zh) | 漏洞威胁程度评估方法 | |
US11544384B2 (en) | Applying machine learning techniques to discover security impacts of application programming interfaces | |
Kim et al. | Andro-simnet: Android malware family classification using social network analysis | |
CN111163065A (zh) | 异常用户检测方法及装置 | |
CN113935033A (zh) | 特征融合的恶意代码家族分类方法、装置和存储介质 | |
CN111931179A (zh) | 基于深度学习的云端恶意程序检测系统及方法 | |
CN109657461B (zh) | 基于梯度提升算法的rtl硬件木马检测方法 | |
CN103607381A (zh) | 白名单生成及恶意程序检测方法、客户端和服务器 | |
Meng et al. | Androvault: Constructing knowledge graph from millions of android apps for automated analysis | |
Bernardi et al. | A fuzzy-based process mining approach for dynamic malware detection | |
CN109508545B (zh) | 一种基于稀疏表示和模型融合的Android Malware分类方法 | |
He et al. | Firmware vulnerabilities homology detection based on clonal selection algorithm for IoT devices | |
Landauer et al. | A framework for automatic labeling of log datasets from model-driven testbeds for HIDS evaluation | |
Swain et al. | Test case design using slicing of UML interaction diagram | |
Bernardi et al. | Process mining meets malware evolution: a study of the behavior of malicious code | |
Hassan et al. | Android malware variant detection by comparing traditional antivirus | |
Almazrouei et al. | The Internet of Things Network Penetration Testing Model Using Attack Graph Analysis |
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 |