一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于异质网络的Android恶意软件检测方法与流程

2022-02-20 04:18:29 来源:中国专利 TAG:

一种基于异质网络的android恶意软件检测方法
技术领域
1.本发明属于网络安全技术领域,涉及一种基于异质网络的android恶意软件检测方法。


背景技术:

2.android是世界上使用最广的移动设备智能平台,它是一种基于linux开发的开放性平台。自从2007年google推出第一代android操作系统至今,已有将近十几年时间,移动设备的市场份额在急剧增长,随着智能设备的普及率的提高,随之上线的各类应用(application,app)也越来越多,广泛的功能各异的app可以满足人们日常的各种需要,但随之而来的安全隐患也逐渐升高。
3.2020年android恶意软件的活跃度高于2019年末的预期,一些已知类型恶意软件的检测记录显著增长,其中就包括特洛伊木马病毒、虚假广告信息、银行类虚假软件等。这些软件首先会要求在其他应用程序上显示权限,还会要求允许从未知来源安装未知应用程序。一旦这些权限被用户接受,这些恶意软件就可以在其他应用程序上显示广告,并安装来自第三方应用商店的恶意软件。在获得许可的几分钟内,广告会以各种形式出现:打开默认的网络浏览器进入广告网站;在通知中弹出广告;甚至会伪造消息通知栏,用户在不知情的情况下点击时就会打开广告。
4.由于大多数工作将信息网络建模成同质信息网络(简称同质网络),即网络中仅包含相同类型的对象和链接,例如社交网络和朋友圈等。同质网络建模方法往往只抽取了实际交互系统中的部分信息,而且没有区分对象及其之间关系的异质性,从而造成不可逆的信息损失。传统android行为建模方法中,仅关注到api调用之间的互联关系,而忽视了api调用之间的丰富语义,比如说,api的包名和api出现的代码块等。
5.近年来,更多的研究者将多类型且互连的网络化数据建模为异质信息网络(简称异质网络),实现对现实世界更完整自然的抽象;如果将这些信息与api调用序列相结合,使用异质图的方法建模的程序,语义也会更加丰富因此,使用异质图建模的android恶意软件检测方法也成为了一个研究热点。ye等人提出了hindroid,首先提出构造一个异质图建模api和android应用程序之间的复杂关系,该方法通过将apk与api设为节点,apk与api的多种关系设为边,利用异质网络建模方法,梳理了api调用间的结构信息,构建了三种关系,分别是包含关系(a),代码块关系(b)和包关系(p),存在四个apk节点与四个api节点,apk中使用到的api以椭圆表示,且api与api之间存在代码块关系和包关系,将apk与api定义为节点;将包含、代码块、包三种形式定义为边,即构建了关于android软件的异质图。
6.基于所构建的android异质图,使用skip-gram模型最大化每个应用节点的条件概率,通过在每个应用ai的多条游走序列构成的邻域n
t
(ai)上最大化网络似然条件概率,来学习android异质网络中关于应用节点ai的表征。最后,使用svm方法对skip-gram模型生成的嵌入值进行分类,通过有监督的方法实现了不同类型恶意软件的检测与分类;但是由于没有区分混淆,带来了极大的开销。


技术实现要素:

7.本发明解决的技术问题在于提供一种基于异质网络的android恶意软件检测方法,降低检测的开销,并提高监测的准确率。
8.本发明是通过以下技术方案来实现:
9.一种基于异质网络的android恶意软件检测方法,包括以下操作:
10.1)通过编译模块对待测试样本进行解码和反编译,以抽取所有测试样本的samli代码;
11.2)通过特征构建模块识别并整理samli代码中的特征,基于异质网络中节点与边关系的特点,从测试样本中提取多种api调用信息;
12.然后通过bm25方法对提取的api调用信息进行降维,对混淆语义进行过滤,并筛选出具有影响力的api调用信息,然后以其作为元素,生成特征矩阵;
13.3)由检测分类模块应用已定义好的能表达语义特征的元路径,对特征矩阵进行随机游走,并将随机游走得到的游走序列作为skip-gram模型的特征进行嵌入表征,然后使用svm方法检测出其中的恶意软件。
14.所述编译模块是通过apktool工具解码和反编译所有测试样本,仅保留所有后缀名为.smali的文件,删除其余文件。
15.所述特征构建模块对samli代码中的特征提取是从smali代码提取api,以及apk与api之间存在的包含关系、代码块关系或包关系,并用元路径表征其在异质网络中的连接路径;
16.所述包含关系为:单个apk反编译后的smali代码中以invoke起始的api调用;
17.所述代码块关系为:smali代码中一对“.method”和“.end method”之间出现的一对api调用;
18.所述包关系为:smali代码中以相同包名出现的一对api调用;
19.若将包含关系、代码块关系、包关系分别简记为a关系、b关系、p关系,则元路径p=(aba)的具体路径为p=(apk1apiiapijapk2);其表示apk1中存在apii调用,apk2中存在apij调用,且apii与apij之间存在p关系。
20.所述bm25方法对提取的api调用信息进行降维,筛选去除特征中的加密或混淆调用,是去除含有特殊字符或不完整字符的api调用信息;
21.所述筛选出具有影响力的api调用信息,包括以下操作:
22.101)提取所有apk反编译后的汇总api文档作为文档集d,将d中每一个apk提取出的api作为单独文档d,并将d中的单条api视作语素q;
23.102)针对语素进行切分,获得单词t,通过d与t计算逆文档频率,获得语素q权重;
24.103)计算语素q与文档d相关性得分,直到当前语素中的单词计算完毕;
25.104)重复102)、103),直到每个文档d中每条语素相关性的得分计算完毕,对所有单词进行加权求和;将求和结果较高的若干api作为该单独文档d中具有影响力的api调用信息。
26.所述特征矩阵的生成为:
27.针对特征中的contain信息,生成了contain矩阵,记做ma矩阵,其中每个元素:
[0028][0029]
值为1时表示apk中存在api调用,反之为0;
[0030]
针对特征中codeblock信息,生成codeblock矩阵,记做mb矩阵,其中每个元素:
[0031]mbij
=b
ij
∈{0,1}
[0032]
值为1时表示这对api调用属于同一个代码块;
[0033]
针对特征中package信息,生成package矩阵,记做m
p
矩阵,其中每个元素:
[0034][0035]
值为1时表示这对api调用属于同一个包。
[0036]
所述随机游走是采用matrix2vec随机游走采样方法进行的,通过输入应用程序序列与游走规则序列,完成针对应用序列中所有应用的按规则随机游走,最终输出每个应用程序的随机游走采样序列;
[0037]
将最终生成的随机游走采样序列使用skip-gram模型最大化每个应用节点的条件概率:通过在每个应用ai的多条游走序列构成的邻域n
t
(ai)上最大化条件概率,学习android异质网络中关于应用节点ai的表征。
[0038]
所述的matrix2vec随机游走采样方法,包括以下操作:
[0039]
1)将应用序列a1,a2…ai
…at
…an
作为输入,并对每个应用设置游走次数m;
[0040]
2)输入游走规则序列针对特征矩阵ma中的应用ai随机游走一个对应行列值m
ij
;其中m
ij
的值代表应用ai在矩阵m中是否存在对应关系,值为1时代表存在,值为0代表没有;
[0041]
3)当且仅当应用序列和游走规则序列皆为空时,输出了m
·
n条随机游走采样序列。
[0042]
所述的最大化条件概率是在给定样本θ下,定义softmax函数的回归预测属于类别c的条件概率为p(c
t
|v;θ),其中c
t
表示θ有c个类别,v表示当前顶点,即游走序列的起点;
[0043]
则最大化条件概率计算公式如下:
[0044][0045]
使用svm方法对恶意软件进行分类和检测为:
[0046]
将skip-gram模型表征的嵌入值投射到二维平面上,使用svm方法对skip-gram模型生成的嵌入值进行分类,基于软件特征区分出良性软件与恶意软件。
[0047]
与现有技术相比,本发明具有以下有益的技术效果:
[0048]
针对字符串形式的特征易被混淆技术所篡改的问题,为了提高特征的鲁棒性,本发明在基于异质网络中节点与边关系的特点提取特征之后;进一步通过分析特征中正常语义与混淆语义的出现频次,提出使用bm25的方法对混淆语义进行过滤,筛选出了准确率更高的一组特征;而针对高维特征的存储存在的开销大、耗时耗内存的问题,则根据不同矩阵的特点提出了不同的存储方法,并采用了新的矩阵的存储,使得模型效果有一定的提升。
[0049]
针对游走模型存在无法识别语义,构建的语料库加重模型负担等问题;本发明采用了基于元路径的随机游走改进方法matrix2vec,通过预定义的元路径对矩阵进行随机游走,构建了包含丰富语义的节点序列;并使用skip-gram方法针对不同应用节点的多条游走
序列生成了嵌入值,实现了对恶意软件进行检测和分类。
附图说明
[0050]
图1为基于apk与api的异质网络建模示意图;
[0051]
图2为本发明的检测流程示意图;
[0052]
图3为本发明的随机游走采样方法流程图;
[0053]
图4为本发明的检测准确率;
[0054]
图5为本发明与hindroid方法的模型效率对比示意图。
具体实施方式
[0055]
下面结合实施例对本发明做进一步详细描述,所述是对本发明的解释而不是限定。
[0056]
参见图1、图2,一种基于异质网络的android恶意软件检测方法,包括以下操作:
[0057]
1)通过编译模块对待测试样本进行解码和反编译,以抽取所有测试样本的samli代码;
[0058]
2)通过特征构建模块识别并整理samli代码中的特征,基于异质网络中节点与边关系的特点,从测试样本中提取多种api调用信息;
[0059]
然后通过bm25方法对提取的api调用信息进行降维,对混淆语义进行过滤,并筛选出具有影响力的api调用信息,然后以其作为元素,生成特征矩阵;
[0060]
3)由检测分类模块应用已定义好的能表达语义特征的元路径,对特征矩阵进行随机游走,并将随机游走得到的游走序列作为skip-gram模型的特征进行嵌入表征,然后使用svm方法检测出其中的恶意软件。
[0061]
下面对各步骤具体说明。
[0062]
1、解码和反编译
[0063]
android应用程序使用api调用来访问操作系统功能和系统资源,因此,它们可以作为android应用程序行为的表示。为了提取api调用,android应用程序被重新解压缩以提供dex文件,然后使用逆向工程工具apktool将dex文件进一步反编译成smali代码。
[0064]
所述编译模块使用apktool反编译所有测试样本为:
[0065]
通过工具apktool反编译所有测试样本,仅保留所有后缀名为.smali的文件,删除其他多余文件。
[0066]
2、特征提取
[0067]
以图1形式化的异质网络为例,存在四个apk节点与四个api节点(均以圆表示),apk中使用到的api以椭圆表示(包含关系),且api与api之间存在代码块关系和包关系,将apk与api定义为节点,即:将包含、代码块、包三种形式定义为关系,也可称作边。
[0068][0069]
异质网络中两个对象可以通过不同的元路径连接,元路径本质上抽取了异质网络的子结构,并且体现了路径所包含的丰富语义信息,因而成为异质网络分析中的基本语义捕捉方法。
[0070]
所以,特征构建模块对samli代码中的特征提取是从smali代码提取api,以及apk与api之间存在的包含关系、代码块关系或包关系,并用元路径表征其在异质网络中的连接路径;
[0071]
若将包含、代码块、包三种关系简记为a关系、b关系、p关系,元路径p=(aba)的具体路径p=(apk1apiiapijapk2)表示apk1中存在apii调用,apk2中存在apij调用,且apii与apij之间存在p关系。
[0072]
3、特征筛选
[0073]
转换的smali代码可以被解析为api调用提取,由于是直接提取出现的api调用,不对api是否加密或混淆做判断,根据对提取表的观测:仅在10个经过反编译的apk上的smali代码文件中就存在8万个api调用(存在重复),出现了形如“la/j;-》i”这样的加密或混淆调用,对于后续矩阵构造、时间开销来说都不合理。
[0074]
为了解决上述问题,采用bm25方法对特征进行降维,筛选去除去除特征中的加密或混淆调用:比如筛选去除形如la/j$a;-》《init》、la/j;-》i,有特殊字符或不完整字符的api调用。
[0075]
基于bm25算法,筛选步骤如下:
[0076]
1)提取所有apk反编译后的汇总api文档作为文档集d,将d中每一个apk提取出的api作为单独文档d,并将d中的单条api视作语素q。
[0077]
2)针对语素进行切分,获得单词t,通过d与t计算逆文档频率,获得语素q权重。
[0078]
3)计算语素q与文档d相关性得分,直到当前语素中的单词计算完毕。
[0079]
4)重复步骤2、3,直到每个文档d中每条语素相关性的得分计算完毕,对所有单词进行加权求和;将求和结果较高的若干api作为该单独文档d中具有影响力的api调用信息。
[0080]
4、矩阵生成
[0081]
经过特征改进后,大幅降低了特征的维度,因此为了存储特征,给出了使用矩阵存储的相关定义。
[0082]
针对contain信息,生成了contain矩阵,记做ma矩阵,其中每个元素:
[0083][0084]
值为1时表示apk中存在api调用,反之为0。
[0085]
针对codeblock信息,生成codeblock矩阵,记做mb矩阵,其中每个元素:
[0086][0087]
值为1时表示这对api调用属于同一个代码块。
[0088]
针对package信息,生成package矩阵,记做m
p
矩阵,其中每个元素:
[0089][0090]
值为1时表示这对api调用属于同一个包。
[0091]
通过构建这些矩阵,构建了包含丰富信息的特征表示。
[0092]
5、随机游走
[0093]
随机游走是采用matrix2vec随机游走采样方法进行的,通过输入应用程序序列与游走规则序列,完成针对应用序列中所有应用的按规则随机游走,最终输出每个应用程序的随机游走采样序列;
[0094]
matrix2vec随机游走采样方法,通过输入应用程序序列与游走规则序列,可以完成针对应用序列中所有应用的按规则随机游走,最终输出每个应用程序的游走序列。这样的随机游走采样方法将随机游走算法的游走值从一个随机值变为了一个可确定的范围,进而增强了随机游走算法的稳定性,同时还扩展了原方法的适用范围。方法流程图如图3所示,下面简述步骤如下:
[0095]
1)将应用序列a1,a2…ai
…at
…an
作为输入,并对每个应用设置游走次数m。
[0096]
2)输入游走规则序列针对矩阵ma中的应用ai随机游走一个对应行列值m
ij
。其中m
ij
的值代表应用ai在矩阵m中是否存在对应关系,即值为1时代表存在,值为0代表没有。
[0097]
3)当且仅当应用序列和游走规则序列皆为空时,输出了m
·
n条随机游走采样序列。
[0098]
将最终生成的m
·
n条随机游走采样序列使用skip-gram模型最大化每个应用节点的条件概率,通过在每个应用ai的多条游走序列构成的邻域n
t
(ai)上最大化网络似然条件概率,来学习android异质网络中关于应用节点ai的表征。
[0099]
softmax也可以称为多类的logistic回归,相当于logistic回归在多分类问题上的推广。
[0100]
利用上述softmax函数,对于多分类模型,在给定样本θ下,定义softmax回归预测属于类别c的条件概率为:p(c
t
|v;θ),其中c
t
表示θ有c个类别。
[0101]
最大化条件概率公式如下:
[0102][0103]
6、检测与分类
[0104]
使用svm方法对skip-gram模型生成的嵌入值进行分类,通过有监督的方法实现了不同类型恶意软件的检测与分类。
[0105]
使用svm方法对skip-gram模型生成的嵌入值进行分类,通过svm训练算法建立了一个模型,分配新的实例为一类或其他类,使其成为非概率二元线性分类,其泛化错误率低,计算开销不大,结果易解释。
[0106]
svm可以分析数据,识别模式,用于分类和回归分析。给定一组训练样本,每个标记为属于两类,由于使用方法skip-gram后获得了嵌入值,将嵌入值投射到二维平面上时,由于不同软件特征不同,使用svm方法能很好的区分出良性与恶意软件的区别。
[0107]
下面给出具体的实施例。
[0108]
实验运行在intel core i5-4210 u cpu@1.70ghz,8.00gb内存,操作系统为windows 10家庭版。通过apktool反编译模块提取样本中api调用序列信息。并通过pandas库、numpy库与sklearn库相关函数实现相关特征提取、存储、嵌入与分类。
[0109]
本实验使用的恶意应用软件集是cicmaldroid2020,其中收集了超过17,341个android软件样本;并且它的样本涵盖五个不同的类别:广告软件(adware)、银行恶意软件(banking)、短信恶意软件(sms)、风险软件(riskware)和良性软件(benign)。下面简要介绍不同类别恶意应用特点:
[0110]
adware是指通常隐藏在已被恶意软件感染(在第三方市场上)的合法应用程序内部的广告内容。由于恶意软件使用的广告库会重复执行一系列步骤以保持广告投放,即使受害者试图强行关闭应用程序,adware也会不断弹出广告。广告软件可以感染设备并对其进行感染,从而迫使其下载特定的广告软件类型,并允许攻击者窃取个人信息。
[0111]
banking恶意软件是一种旨在模仿原始银行应用程序或银行web界面来访问用户的在线银行账户。大多数移动银行恶意软件都是基于trojan的,旨在渗透设备,窃取敏感详细信息(例如,银行登录名和密码)并将所窃取的信息发送到命令和控制(c&c)服务器。
[0112]
sms恶意软件利用sms服务作为其操作媒介来拦截sms有效载荷以进行攻击。攻击者首先将恶意软件上传到其托管站点,以与sms链接。他们使用c&c服务器控制攻击指令,即发送恶意sms,拦截sms和窃取数据。
[0113]
riskware指的是合法程序,如果恶意用户利用它们,可能会造成破坏。因此,它可以变成任何其他形式的恶意软件,例如adware或勒索病毒软件,它们可以通过安装新感染的应用程序来扩展功能。值得注意的是,此类别只有一个变体,通常由virustotal标记为“riskware”。
[0114]
不在上面类别中的所有其他应用程序都被认为是benign,并且使用virustotal扫描了所有良性样本验证了安全性。与其他公开可用的数据集相比,它包含最完整的捕获的静态和动态特征。下表说明整合了数据集样本类型,类型总量以及选取的数量。
[0115]
样本类型类型总量(个)选取数量(个)benign3,638500adware1,515500banking2,506500sms4,822500riskware2,5460
[0116]
为了充分验证基于随机游走嵌入的有效性以及实用性,本发明在每个测试单位上对提出的方法matrix2vec进行了100次随机游走采样(无重复采样),相当于为每个测试数据提供了100维的特征,因为每个测试数据也均为数据集内随机抽取,无特定关联,经过测试,100次采样是可以较好体现软件功能的特征数量。
[0117]
为了测试本发明分类的准确率,为此首先进行了5组分类实验。分别测试了不同元
路径"aa","aba","apa","apbpa","abpba"下,banking类恶意软件、adware类恶意软件以及sms类恶意软件在matrix2vec游走模型下的准确率,如图4所示。基于所有元路径整体来说,banking类的恶意软件的检测准确率最高,而sms类恶意软件的检测准确率效果最低;基于单条元路径来说,准确率最高可达92.7%;而且测试的准确率均随着元路径复杂度的提升而提高,由此可见越复杂的元路径越能刻画恶意软件的特征。图5所示为本发明与hindroid方法的模型效率对比示意图,可以看出在测试相同软件数量时,本发明所使用的api数量、运行内存消耗、时间消耗均显著的降低。
[0118]
以上给出的实施例是实现本发明较优的例子,本发明不限于上述实施例。本领域的技术人员根据本发明技术方案的技术特征所做出的任何非本质的添加、替换,均属于本发明的保护范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献