一种Android恶意应用在线检测方法与流程

文档序号:16882180发布日期:2019-02-15 22:16阅读:210来源:国知局
一种Android恶意应用在线检测方法与流程

本发明涉及一种android恶意应用在线检测方法。



背景技术:

android智能终端已被广泛应用于人们的日常生活中,如网络支付,智能家居等。不断扩展的功能,智能终端的使用近年来经历了指数级增长。但是,由于android开放源代码开发的生态系统和较大的市场份额,android开发人员不仅制作合法的android应用程序而且还会传播恶意应用软件,故意将恶意行为付诸于智能终端用户。由于缺乏可靠的审查方法,开发者可以在谷歌android市场上传他们的android应用程序,其中甚至包含勒索病毒或特洛伊木马。这对智能终端用户构成严重威胁,尤其是移动支付用户,个人的隐私信息都有可能被窃取。通常使用基于签名的方法来识别威胁。然而,攻击者可以使用如代码混淆,重新打包等技术轻易躲避检测。而攻击者日趋增强的反检测意识带来的是日益复杂的android恶意软件,这时就需要新的检测技术保护用户免受新的恶意应用带来的新威胁。传统的基于api的检测方法只是表面上的api字符串构建特征向量,而忽视了api之间的关联这一更高层次的分析。



技术实现要素:

本发明的目的,是要提供一种android恶意应用在线检测方法,在检测android恶意软件的过程中,使用api函数字符串,提取8组特征信息,并映射为特征向量,而特征向量采用稀疏表示的形式;并且进一步分析api之间的不同关系并创建更高层次的关联分析;以图的方式来表示相关api作为结构化程序之间的关系;将api字符特征与关系图构成特征矩阵;采用多核学习方法训练出分类模型;部署在通用的web架构中,实现android恶意应用的在线检测。

本发明是这样实现的,所述一种android恶意应用在线检测方法,包括以下步骤:

1)用于判断恶意应用的特征包含以下几类:

s1:硬件类:app在运行时所需要的硬件信息,camera,touchscreen,gps;

s2:权限请求类:由于权限是android里最重要的安全机制,恶意代码在运行时经常会请求权限,如send_smspermission;

s3:app组件类:每个app都包含4组:activities,services,contentproviders,broadcastreceivers;

s4:intents类:android下的inter-process以及intra-process通信;

2)反汇编字节码提取下列特征信息:

s5:受限api调用类:android权限系统限制访问一系列关键的api调用;搜索这些调用发生时的反汇编代码,没有申请权限就调用关键api,正在使用root以绕过android平台限制恶意行为;

s6:已用权限类:包含了已请求的权限和正在执行的权限,并把api和其申请的权限对应匹配;

s7:可疑api调用类:某些api要用敏感数据和资源,包括getdeviceid()、getsubscriberid()、setwifienabled()、exechttprequest()、sendtextmessage()、runtime.exec()、cipher.getinstance();

s8:网络地址类:ip地址,hostnames和url;

3)以上特征构建出一个特征向量s,s=s1∪s2....∪s8,每一个android应用x都要映射到这s中,其中i(x,s)表示为:

4)连续出现多个具有相同行为意图但是又调用的是不同的api,这一块代码就具有恶意行为的特征;这些特征api共存同一代码块的关系即可表述为高层次的关联分析;这些关联特征可以构造关联特征矩阵:矩陈a,元素aij,描述:appi包含apij,则aij=1,否则aij=0;矩陈b,元素bij,描述:apii和apij共存于同一代码块,则bij=1,否则bij=0;矩陈i,元素iij,描述:apii和apij使用相同的调用方式,则iij=1,否则iij=0;上述各个矩阵的组合,用图论建立模型,即一个包含api之间关系的app模块可以描述为g=(ν,ε),ν表示各个软件代码实体函数或参数,ε表示他们之间的关联;

5)在构建了特征空间后,采用监督学习的方式对已有的androidapp库进行训练学习;在原有的高维特征空间的基础上,进行多核学习进行特征聚合;从而达到更好的分类效果;

6)用户在目标网页上传待检测android应用的apk文件;web服务器把接收到的客户端请求转发给flask程序实例;flask程序首先对用户上传的文件进行文件类型检测,判断是否为有效的apk文件;调用上文所述的特征提取模块,对待检测应用进行静态分析、特征提取、特征分析及向量化;调用上文所述的分类器模型对待检测应用进行分类判别,得到分类结果及高权重特征信息;检测相应结果;flask程序在相应网页上显示该应用的检测结果,包括对该应用是否为恶意应用的判定,检测过程中权值较高的特征以及其他特殊信息。

本发明的有益效果是,在api字符串的基础上,以及他们的调用关系共同构建出特征,并映射到特征空间;再通过android应用数据集进行多核学习,训练出各个权重系数从而确定模型。为了方便使用,利用pythonflaskweb框架搭建android恶意应用检测系统服务器,将训练好的检测模型部署在该服务器上,用户可以通过web页面根据提示上传android应用软件apk,服务器后台对应用进行分析并将分析结果返回至web页面。分析结果包括对该应用是否为恶意应用的判定,检测过程中权值较高的特征以及其他特殊信息。本发明具有良好的分类效果,并且使用方便,快捷。

附图说明

图1是本发明的总体结构图。

图2是本发明的web架构示意图。

具体实施方式

本发明所述一种android恶意应用在线检测方法,如图1、2所示,在android应用软件的dex字节码和androidmanifest.xml中收集特征,这些特征主要是api函数字符串的集合,主要包含以下几类:

s1:硬件类:app在运行时所需要的硬件模块信息,如camera,touchscreen,gps等。由于硬件请求具备一定的安全风险,如接入gps和network,它能够把私人位置信息通过网络发送给攻击者,所以硬件类特征是特征之一;

s2:权限请求类:由于权限是android里最重要的安全机制,恶意代码在运行时经常会请求权限,如send_smspermission;

s3:app组件类:每个app都包含4组:activities,services,contentproviders,broadcastreceivers;每一个app都可以声明若干组件,这些组件的名称也是作为一类特征;

s4:intents类:android下的inter-process以及intra-process通信,都是靠intent;一些恶意代码经常监听某些特定的intent,可作为一类特征;

androidapp用java语言编写,并且编译成优化的字节码,这些字节码可以被反汇编,从而可以从中提取特征信息;

s5:受限api调用类:android权限系统限制访问一系列关键的api调用,搜索这些调用发生时的反汇编代码,可以揭露恶意行为,没有申请权限就调用关键api,这可能表明了恶意软件正在使用root以绕过android平台限制;

s6:已用权限类:包含了已请求的权限和正在执行的权限,并把api和其申请的权限对应匹配;

s7:可疑api调用类:某些api要用敏感数据和资源,这些都是恶意代码经常用的,包括getdeviceid()、getsubscriberid()、setwifienabled()、exechttprequest()、sendtextmessage()、runtime.exec()、cipher.getinstance();

s8:网络地址类:恶意代码通常建立网络连接来接收命令、发送数据,因此,ip地址,hostnames和url这些在反汇编代码里的关键词也是恶意代码里常见的,所以也要包含在特征集当中。

以上特征构建出一个特征向量s,s=s1∪s2....∪s8,每一个android应用x都要映射到这s中,其中i(x,s)表示为:

androidapp字节码除了可以反编译成java源码外,还可以反编译成smali代码,其中可提取若干特征用来描述api之间的关联分析。通常,在某一代码块中,会出现某一种行为的api,但如果连续出现多个具有相同行为意图但是又调用的是不同的api,这一块代码就具有恶意行为的特征。这些特征api共存同一代码块的关系即可表述为高层次的关联分析。这种关联定义为矩阵aij=aij∈{0,1}。

为了描述这样的关系r,每一个api代码块定义成一个矩阵b,对于检测模块和待测模块中出现的相同的api,当出现在相同代码块中时,该api在矩阵b中为1,出现在不同的代码块中,则为0,即bij=bij∈{0,1}。

api之间的调用方式,分为以下几种:1、静态调用:根据参数,参数由其他函数返回;2、直接调用:api中直接调用其他api;3、通过中间接口调用;

这样一种关联可以定义为矩阵iij=iij∈{0,1}。

以上各种特征我们可以归结为如下表所示的特征矩阵:

上述各个矩阵的组合,用图论建立模型,即一个包含api之间关系的app模块可以描述为g=(ν,ε),ν表示各个软件代码实体函数或参数,ε表示他们之间的关联。用图的方式构建包含api代码及其关系的特征空间。

在构建了特征空间后,采用监督学习的方式对已有的androidapp库进行训练学习。在原有的高维特征空间的基础上,进行多核学习进行特征聚合。从而达到更好的分类效果。其框架如下:

其中,对一组训练数据可以表示为xi表示app而yi∈{+1,-1}表示训练数据集的标签。

目前用于分类的特征,这些特征都是高维向量。

准备工作:

1.人工标注app类别正负样本;

2.提取正负训练样本app的各个特征;

3.归一化特征;

4.为每个特征配置对应的核函数,以及参数;

经过训练,输出训练模型文件,以及包含的核函数权重。

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图1、2及实施,对本发明进行进一步详细说明。

本发明的整体思路是采用基于静态分析的方法,提取样本集里各样本的静态特征(包括api调用,权限等)并分析api之间的调用关系,进而构建各应用的特征向量,然后利用机器学习svm分类算法对样本进行训练,获得性能较好的分类模型。用户可以通过web页面根据提示上传待检测的android应用软件apk,服务器后台调用前述的分类器模型对应用进行分析并将分析结果返回至web页面。分析结果包括对该应用是否为恶意应用的判定,检测过程中权值较高的特征以及其他特殊信息。

图1示出了本发明一种android恶意应用在线检测方法的总体结构图。本发明主要包括如下五个步骤:

s1:训练样本数据集获取:利用爬虫技术从各大应用市场、网络论坛及相关研究机构中获取非恶意android应用和恶意android应用的apk安装包文件。

s2:训练样本静态分析:利用apktool、dex2jar等静态分析软件对样本集里的各应用进行静态分析,获得各样本对应的配置文件androidmanifest.xml文件以及反编译后的smali文件和java源码文件。

s3:训练样本特征提取。利用s2步骤获得androidmanifest.xml、smali文件和java源码文件后,可以对相关文件进行特征提取。

本系统提取的特征包括:

1:硬件类:app在运行时所需要的硬件信息,如camera,touchscreen,gps等;由于硬件请求具备一定的安全风险,如接入gps和network,它能够把私人位置信息通过网络发送给攻击者。所以硬件类特征是特征之一;

2:权限请求类:由于权限是android里最重要的安全机制,恶意代码在运行时经常会请求权限,如send_smspermission;

3:app组件类:每个app都包含4组:activities,services,contentproviders,broadcastreceivers。每一个app都可以声明若干组件,这些组件的名称也是作为一类特征;

4:intents类:android下的inter-process以及intra-process通信,都是靠intent。一些恶意代码经常监听某些特定的intent,可作为一类特征;

androidapp用java语言编写,并且编译成优化的字节码,这些字节码可以被反汇编,从而可以从中提取特征信息;

5:受限api调用类:android权限系统限制访问一系列关键的api调用,搜索这些调用发生时的反汇编代码,可以揭露恶意行为,没有申请权限就调用关键api,这可能表明了恶意软件正在使用root以绕过android平台限制;

6:已用权限类:包含了已请求的权限和正在执行的权限,并把api和其申请的权限对应匹配;

7:可疑api调用类:某些api要用敏感数据和资源,这些都是恶意代码经常用的,包括getdeviceid()、getsubscriberid()、setwifienabled()、exechttprequest()、sendtextmessage()、runtime.exec()、cipher.getinstance();

8:网络地址类:恶意代码通常建立网络连接来接收命令,发送数据,因此,ip地址,hostnames和url这些在反汇编代码里的关键词也是恶意代码里常见的,所以也要包含在特征集当中。

s4:训练样本特征分析及向量化;将s3步骤提取的特征构建出一个特征向量s,s=s1∪s2....∪s8,每一个android应用x都要映射到这s中,

其中i(x,s)表示为:

此外,利用图论理论对api之间的调用关系进行分析建模,并用图的方式构建包含api代码及其关系的特征空间;最后,还需标定每个样本的类别信息,表明其属于恶意应用还是正常应用。

s5:分类器模型训练。利用svm机器学习算法训练分类器模型的步骤如下:

1、把所有样本的特征向量和其对应的分类标记交给算法进行训练;

2、如果发现线性可分,就直接找出超平面;

3、如果发现线性不可分,那就映射到n+1维空间,找出超平面;

4、最后得到超平面的表达式,也就是分类器模型的参数。

图2示出了本发明一种android恶意应用在线检测方法的web架构示意图,本发明采用flaskweb应用框架,用户可以在web网页上上传待检测应用的apk文件,web服务器收到用户的请求之后会调用相应的处理函数进行处理及反馈。

本发明的主要工作流程如下:

s1:用户在目标网页上传待检测android应用的apk文件。

s2:web服务器把接收到的客户端请求转发给flask程序实例。

s3:flask程序首先对用户上传的文件进行文件类型检测,判断是否为有效的apk文件。

s4:调用上文所述的特征提取模块,对待检测应用进行静态分析、特征提取、特征分析及向量化。

s5:调用上文所述的分类器模型对待检测应用进行分类判别,得到分类结果及高权重特征信息。

s6:检测结果相应,flask程序在相应网页上显示该应用的检测结果,包括对该应用是否为恶意应用的判定,检测过程中权值较高的特征以及其他特殊信息。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1