首页> 中国专利> 一种基于API对象调用关系图的Android手机平台应用程序恶意行为检测的方法

一种基于API对象调用关系图的Android手机平台应用程序恶意行为检测的方法

摘要

本发明属于应用程序恶意行为检测领域,尤其是涉及一种基于API对象调用关系图的Android应用程序恶意行为检测方法。本发明包括如下步骤:获取API对象调用关系数据;使用得到的API对象调用关系数据进行图模型的建立,采用改进的图匹配算法进行匹配。在实施过程中发现,采用本发明所提供的检测技术方案对Android恶意行为进行检测,当对其中改进的图匹配算法中的精确度参数匹配节点比重参数α和映射子图边属性对比相似度参数β设置适当的取值后,对于程序恶意行为检测的效率最高,发明有益效果十分之明显。

著录项

  • 公开/公告号CN105184160A

    专利类型发明专利

  • 公开/公告日2015-12-23

    原文格式PDF

  • 申请/专利权人 哈尔滨工程大学;

    申请/专利号CN201510442802.2

  • 申请日2015-07-24

  • 分类号G06F21/56(20130101);

  • 代理机构

  • 代理人

  • 地址 150001 黑龙江省哈尔滨市南岗区南通大街145号哈尔滨工程大学科技处知识产权办公室

  • 入库时间 2023-12-18 12:59:36

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2018-05-18

    授权

    授权

  • 2016-01-20

    实质审查的生效 IPC(主分类):G06F21/56 申请日:20150724

    实质审查的生效

  • 2015-12-23

    公开

    公开

说明书

技术领域

本发明属于应用程序恶意行为检测领域,尤其是涉及一种基于API对象调用关系图的Android应用程序恶意行为检测方法。

背景技术

近几年来,随着互联网技术和通信技术的不断发展,智能终端设备越来越受到人们的青睐,尤其是智能手机更是成为了人们生活的必需品。截止2014年4月,我国手机用户达12.52亿户,其中3G用户数量显著增多,占总手机用户的36.2%。而据统计国内智能手机用户数量也达到了5亿之多,全球智能手机用户则达到了17.5亿,预计到2020年智能手机用户数预计达61亿,6岁以上人群中将有90%用户人手一部智能手机。智能手机凭借着功能性强、使用便捷、人性化等特点逐渐取代了电脑PC终端以及非智能手机终端,成为人们日常生活、娱乐、消费、社交、教育等领域互通的一个利器。随着智能手机功能的不断壮大,智能手机平台上的程序种类也渗透到方方面面,除了系统程序之外,还包括社交、购物、视频、音乐、照片、摄影、地图、天气等领域。

Android平台主要作为智能设备的系统平台,是一款基于Linux系统的开放式操作系统。随着Android平台的广泛普及与发展,Android系统平台的安全性俨然成为该平台研究领域不容忽视的问题。由于Android平台的开放式系统特性,使得该平台上恶意程序的攻击愈演愈烈,其数量也在迅猛增长。

于是,对于Android平台应用成恶意行为检测的研究工作成了研究的焦点,并且现有的Android手机平台应用成恶意行为检测方法仍然存在很多不足之处,所以对于高效的恶意行为检测方法的研究引人深思。

发明内容

本发明的目的在于提供一种提高程序恶意行为检测的效率的基于API对象调用关系图的Android手机平台应用程序恶意行为检测的方法。

本发明的目的是这样实现的:

基于API对象调用关系图的Android手机平台应用程序恶意行为检测的方法,包括如下步骤:

(1)获取API对象调用关系数据;

(1.1)获取程序运行时的API调用原始数据;

(1.2)将API调用数据进行分析,生成API对象调用关系数据文件;

(2)使用得到的API对象调用关系数据进行图模型的建立,采用改进的图匹配算法进行匹配:

(2.1)增加匹配节点比重参数α,控制匹配过程中图节点的匹配精确度;

(2.2)增加映射子图边属性对比相似度参数β,用于控制匹配过程中图的边属性的匹配精确度。

所述步骤(1.1)获取程序运行时的API调用原始数据是按照反编译程序、植入API调用监测代码段、重新打包程序以及动态运行生成API调用信息文件的顺序进行的。

所述步骤(1.2)将API调用数据进行分析,使用工具APIjhat实现分析的过程如下:

(1.2.1)创建:通过APIModel模块初始化创建一个数据结构对象APIObej,用于存储API调用数据等相关信息;

(1.2.2)读取:通过TraceReader模块中的TReader方法读取trace文件,获取其中必要的API调用数据;

(1.2.3)API调用数据模型建立:通过上一步获取的数据,将其中的API对象提取出来填充到APIObej中,然后将对象之间的调用信息添加到APIObej类中的各API对象类的关系参数中,构建一个保存了各个API调用对象及其调用关系和次数的数据结构模型;

(1.2.4)生成目标文件:根据构建好的API调用数据模型,按照规定的格式进行转存,写入可读的文本文件中;其中,转存的规则需按照以下两点进行,第一点,用class关键字标识API对象名称,读取数据结构中的第一个API对象名,将其添加到文本文件中,并在对象名前添加class关键字进行标识;第二点,读取该API对象类的API调用关系数据,若该API对象是调用类,则将此调用关系和调用次数添加到文本文件的对应API对象类名称之后,并且用关键字call表示调用关系,用关键字count表示调用次数;若该API对象是被调用类,则需要使用called关键字标识被调用关系;经过转换过程之后,生成API对象调用关系文件。

所述步骤(2.1)包括:将匹配后的子图中的顶点数记作m,将源图中的顶点数记作n,α=m/n;经过算法的匹配计算后,若参数α达到了规定的阈值,那么就可以判定匹配成功;其中,α的阈值范围在(0,1]之间。

所述步骤(2.2)增加映射子图边属性对比相似度参数β包括:定义图中边属性值的赋值规则,若该条边代表的调用关系的调用次数大于等于k次,则将该边属性置为1,否则置为0;参数β即为两个待匹配的图中对应边的属性值相同的数目比上边的总数。

本发明的有益效果在于:在实施过程中发现,采用本发明所提供的检测技术方案对Android恶意行为进行检测,当对其中改进的图匹配算法中的精确度参数匹配节点比重参数α和映射子图边属性对比相似度参数β设置适当的取值后,对于程序恶意行为检测的效率最高,发明有益效果十分之明显。

附图说明

图1为API调用数据提取过程流程图;

图2为APIjhat结构关系图;

图3为特征库建立流程图;

图4为待检程序图模型建立流程图;

图5为特征匹配检测流程图;

图6为模拟样本实验结果;

图7为改进的VF2算法检测结果;

图8为Asroot恶意样本检测误判率与漏判率结果;

图9为Asroot恶意样本检测误判率与漏判率变化图;

图10为YZHC恶意样本检测误判率与漏判率结果;

图11为YZHC恶意样本检测误判率与漏判率变化图。

具体实施方式:

下面结合附图对本发明做进一步描述:

从智能手机终端的兴起和不断更新换代可以看出,针对手机平台的研究得到了非常广泛的关注。其中,Android手机平台作为最为广泛应用的手机平台其安全性研究则更加成为研究的焦点。目前该平台下对恶意程序的检测方法的研究主要分为静态检测和动态检测两个方向。其中,静态检测方法的检测局限性较大,对于日益增长的恶意程序的变种、加壳等行为检测存在较大的漏洞,相较而言动态行为检测则能较好的实现对恶意程序的识别和检测,以此越来越受到研究人员的重视。

一种基于API对象调用关系图的Android手机平台应用程序恶意行为检测方法中API对象关系图以及图匹配算法改进的技术方案,该技术方案的实施主要包括以下内容:

1)获取API对象调用关系数据的步骤如下;

步骤1:获取程序运行时的API调用原始数据;

步骤2:将API调用数据进行分析,生成API对象调用关系数据文件;

2)使用得到的API对象调用关系数据进行图模型的建立,采用改进的图匹配算法进行匹配,该图匹配算法的改进内容如下:

步骤1:增加匹配节点比重参数α,控制匹配过程中图节点的匹配精确度;

步骤2:增加映射子图边属性对比相似度参数β,用于控制匹配过程中图的边属性(即调用次数)的匹配精确度;

所述内容1)中步骤1获取程序运行时的API调用原始数据,按照反编译程序、植入API调用监测代码段、重新打包程序以及动态运行生成API调用信息文件的顺序进行。

所述内容1)中步骤2将API调用数据进行分析,使用工具APIjhat实现分析的过程,如下所述:

(1)创建:首先通过APIModel模块初始化创建一个数据结构对象APIObej,用于存储API调用数据等相关信息。

(2)读取:然后通过TraceReader模块中的TReader方法读取trace文件,获取其中必要的API调用数据。

(3)API调用数据模型建立:通过上一步获取的数据,将其中的API对象提取出来填充到APIObej中,然后将对象之间的调用信息添加到APIObej类中的各API对象类的关系参数中,构建一个保存了各个API调用对象及其调用关系和次数的数据结构模型。

(4)生成目标文件:根据构建好的API调用数据模型,按照规定的格式进行转存,写入可读的文本文件中。其中,转存的规则需按照以下两点进行,第一点,用class关键字标识API对象名称,读取数据结构中的第一个API对象名,将其添加到文本文件中,并在对象名前添加class关键字进行标识。第二点,读取该API对象类的API调用关系数据,若该API对象是调用类,则将此调用关系和调用次数添加到文本文件的对应API对象类名称之后,并且用关键字call表示调用关系,用关键字count表示调用次数。若该API对象是被调用类,则需要使用called关键字标识被调用关系。经过该转换过程之后,便可生成API对象调用关系文件。

所述内容2)中步骤1对VF2算法匹配过程进行分析,发现对于状态空间的转换是通过不断加入新的节点对,直到将所有可行的节点对遍历之后,覆盖了源图中全部的节点才判断匹配成功。根据实际分析后,发现无需达到全部覆盖源图中的全部节点数的条件也可以进行相似匹配,达到识别恶意行为的效果。于是增加了匹配节点比重参数α,将匹配后的子图中的顶点数记作m,将源图中的顶点数记作n,那么α=m/n。在VF2算法参数中加入α参数,经过算法的匹配计算后,若参数α达到了规定的阈值,那么就可以判定匹配成功。其中,α的阈值可以根据实际的检测情况而定,但其范围均在(0,1]之间。

所述内容2)中步骤2增加映射子图边属性对比相似度参数β,并且定义图中边属性值的赋值规则,若该条边代表的调用关系的调用次数大于等于k次,则将该边属性置为1,否则置为0。于是,参数β即为两个待匹配的图中对应边的属性值相同的数目比上边的总数。

本发明针对动态检测方向展开研究,公开了一种基于API对象调用关系图的恶意行为检测技术方案。该技术方案通过对应用程序的API对象调用关系的提取,将其与图结构相结合,建立程序的恶意行为特征,并通过图匹配算法来实现对恶意行为的检测。实验表明,采用本技术方案对其中的图匹配算法进行改进后,其检测性能大大提升。该技术解决方案的工作可以划分为以下三个步骤:

步骤1:获取程序运行时API调用数据,以及各API对象之间的调用关系;

步骤2:根据获取到的API对象关系数据进行特征库和待检测图模型的建立;

步骤3:将建立后的待检测图与特征库中的特征图进行匹配,获得匹配结果。

本实施所基于的测试环境是Android4.1.2虚拟机,使用软件SDK、Eclipse和AVD。

一种基于API对象调用关系图的Android手机平台应用程序恶意行为检测方法中API对象关系图以及图匹配算法改进的技术方案,该技术方案的实施主要包括以下内容:

1)获取API对象调用关系数据的步骤如下;

步骤1:获取程序运行时的API调用原始数据;

步骤2:将API调用数据进行分析,生成API对象调用关系数据文件;

2)使用得到的API对象调用关系数据进行图模型的建立,采用改进的图匹配算法进行匹配,该图匹配算法的改进内容如下:

步骤1:增加匹配节点比重参数α,控制匹配过程中图节点的匹配精确度;

步骤2:增加映射子图边属性对比相似度参数β,用于控制匹配过程中图的边属性(即调用次数)的匹配精确度;

其中,获取程序运行时的API调用原始数据,按照反编译程序、植入API调用监测代码段、重新打包程序以及动态运行生成API调用信息文件的顺序进行。然后,将API调用数据进行分析,使用工具APIjhat实现分析的过程,流程如下:

(1)、通过APIModel模块初始化创建一个数据结构对象APIObej,用于存储API调用数据等相关信息。

(2)、通过TraceReader模块中的TReader方法读取trace文件,获取其中必要的API调用数据。

(3)、通过上一步获取的数据,将其中的API对象提取出来填充到APIObej中,然后将对象之间的调用信息添加到APIObej类中的各API对象类的关系参数中,构建一个保存了各个API调用对象及其调用关系和次数的数据结构模型。根据构建好的API调用数据模型,按照规定的格式进行转存,写入可读的文本文件中。其中,转存的规则需按照以下两点进行:

第一点,用class关键字标识API对象名称,读取数据结构中的第一个API对象名,将其添加到文本文件中,并在对象名前添加class关键字进行标识。

第二点,读取该API对象类的API调用关系数据,若该API对象是调用类,则将此调用关系和调用次数添加到文本文件的对应API对象类名称之后,并且用关键字call表示调用关系,用关键字count表示调用次数。若该API对象是被调用类,则需要使用called关键字标识被调用关系。

经过该转换过程之后,便可生成API对象调用关系文件。接下来对VF2算法匹配过程进行分析,发现对于状态空间的转换是通过不断加入新的节点对,直到将所有可行的节点对遍历之后,覆盖了源图中全部的节点才判断匹配成功。根据实际分析后,发现无需达到全部覆盖源图中的全部节点数的条件也可以进行相似匹配,达到识别恶意行为的效果。于是增加了匹配节点比重参数α,将匹配后的子图中的顶点数记作m,将源图中的顶点数记作n,那么α=m/n。在VF2算法参数中加入α参数,经过算法的匹配计算后,若参数α达到了规定的阈值,那么就可以判定匹配成功。其中,α的阈值可以根据实际的检测情况而定,但其范围均在(0,1]之间。并且,增加映射子图边属性对比相似度参数β,并且定义图中边属性值的赋值规则,若该条边代表的调用关系的调用次数大于等于k次,则将该边属性置为1,否则置为0。于是,参数β即为两个待匹配的图中对应边的属性值相同的数目比上边的总数。

对于API对象调用关系数据的获取和图匹配算法的改进,其具体实施如下:

实施步骤1,如图1所示,将API调用数据的提取过程通过流程图的方式进行说明,该过程按照反编译程序、植入API调用监测代码段、重新打包程序以及动态运行生成API调用信息文件的顺序进行。选定特征程序,反编译特征程序。本实验选取的特征程序名为test.apk,对程序文件进行解压、进行反编译后,生成smali文件等Java源码文件。在Java源码中植入可以根据API调用数据的代码段,这里使用的是Debug类中的Tracing方法,该方法对程序API调用数据的监测可以贯穿整个虚拟机。实施时,如图2所示,往Java源码中植入的具体方法内容,将植入跟踪代码后的程序源码进行重新编译,生成.dex文件,并对文件进行压缩打包成apk文件。通过上述方法生成的trace文件在执行后需要存放在设备的SD卡目录中。

实施步骤2,如图3所示,对API调用数据分析的全过程主要分一下几步进行,流程如下所述:

首先通过APIModel模块初始化创建一个数据结构对象APIObej,用于存储API调用数据等相关信息。

然后通过TraceReader模块中的TReader方法读取trace文件,获取其中必要的API调用数据。

通过上一步获取的数据,将其中的API对象提取出来填充到APIObej中,然后将对象之间的调用信息添加到APIObej类中的各API对象类的关系参数中,构建一个保存了各个API调用对象及其调用关系和次数的数据结构模型。

根据构建好的API调用数据模型,按照规定的格式进行转存,写入可读的文本文件中。其中,转存的规则需按照以下两点进行,第一点,用class关键字标识API对象名称,读取数据结构中的第一个API对象名,将其添加到文本文件中,并在对象名前添加class关键字进行标识。第二点,读取该API对象类的API调用关系数据,若该API对象是调用类,则将此调用关系和调用次数添加到文本文件的对应API对象类名称之后,并且用关键字call表示调用关系,用关键字count表示调用次数。若该API对象是被调用类,则需要使用called关键字标识被调用关系。经过该转换过程之后,便可生成API对象调用关系文件,实施的结果如图4所示。

实施步骤3,如图5所示:

①将表示类的图节点用分析数据中的API类名表示,在读取API对象调用分析数据内容的过程中,遇到class标识符,则读取其后面的类名,如First。

②若索引文件中不包含此类名,则将其加入;否则,继续读取该类名之后的call标识符后的类名,如Second。此时添加一条边索引信息,表示类First调用类Second,并且将紧随其后的count标识符之后的次数信息加入该边属性信息中,表示调用的次数。

③当读取到called标识符时,则添加一条边索引信息,表示被调用关系,同上,也要将被调用次数加入该边的属性中。这样,通过对图的节点、边以及边属性的定义,建立特征图索引文件,所有特征图的索引文件组成了特征库集合。

实施步骤4,如图6所示,其建图过程和上述特征图的建立过程一致,但该模块建立的图模型叫做检测图,并且其中不同之处是不需要比对敏感API类名列表做判断,而是直接将类名插入索引表中并记录该类的id。

实施步骤5,如图7所示,特征检测过程是使用本文提出的改进后的VF2算法对检测图和特征库中的特征图进行对比匹配,并通过匹配结果的输出对恶意行为的检测结果做详细展示。其中,改进的VF2算法中需要用户对参数α和β进行设置,然后通过匹配算法的计算之后,当参数α和β达到了设置的阈值则表示匹配成功,否则代表匹配失败。

本方案在实施过程表现出了较好优化效果,下面是检测方法的检测有效率测试结果展示:

本发明中所采用的测试用例主要用于测试该检测方案的检测有效率以及改进的图匹配算法中参数α和β对检测效果的影响度。

由于本文使用的检测算法是改进的VF2算法,该算法的检测效率会受到所选取的同构匹配模式和参数α以及β的阈值的不同而有所影响。于是,为了分析和验证它们对检测结果的影响度和检测的有效性,本实验选取其中一种类别的模拟程序进行更加细致的分类,将它们的恶意代码部分内容进行差异修改,使其恶意行为特征图覆盖不同类别的同构模式,以此获得的实验结果会更加有分析价值。

实验选取了17个模拟样本,并分别对其中的12个模拟样本中的恶意代码进行了差异性修改。其中,差异性的修改包括对恶意代码中类的增加或减少、类之间的调用关系的增加等,这样的修改可以对程序生成的API调用对象关系图的结构有所影响,于是也就对匹配算法的有效性有了差异。此外,选取5类恶意程序的真实样本若干,用来测试该检测方案对真实样本的有效性。

(1)测试结果

对模拟样本实验结果进行展示,如图8,对表中第一类和第二类模拟样本的检测结果分析,这两类样本在不同算法的匹配下都可以全部被检测出来,原因是第一类样本和特征样本完全一样,没有经过修改,所以在同构匹配过程中达到完全匹配,所以全部被检测出来。而第二类是在原特征样本的基础上增加了类函数,但并没有修改原有的敏感类等内容,所以在Isomorphism子图或Monomorphism两种同构模式下进行匹配时,第二类样本的检测图和原恶意样本的特征图仍然满足子图同构的关系,故而对于检测结果没有影响。这样也说明本文提出的检测方法对于增加噪声类的变种或升级后的恶意程序也可以进行有效的检测。

对于第三类样本增加和删除原特征样本的一些敏感类后,当算法选取Isomorphism子图同构模式进行匹配时,若参数α=1则无法检测出恶意行为,这是因为Isomorphism子图同构模式要求两个图的节点要满足子图同构,而删除一些原有的类后,生成的检测图和特征图可能无法满足子图同构要求,所以没办法成功检测出来。但是,当参数α不等于1时,说明检测图和特殊图满足某种程度的子图匹配即可以判断检测成功。通过表中结果显示,随着参数α的降低,检测成功率有所上升,这说明参数α的降低导致同构匹配的限制下降,也就促使了检测成功率的上升。

第四类样本是在原特征代码中增加一些非敏感的调用关系,这样导致该类样本生成的检测图对比于原有的特征图多了一部分边,那么在使用Isomorphism子图同构模式进行匹配的过程中,没有办法达到边的一一对应,故而没办法检测出该类样本中的恶意行为。但在Monomorphism同构模式下,去掉了边一一对应的限制,所以该算法仍然能成功检测出程序中存在的恶意行为。

最后分析第五类样本的检测结果发现在算法参数β=1的情况下,无论采用Isomorphism子图还是Monomorphism同构模式进行匹配都没办法成功的检测出恶意行为。但是,随着β值的降低,算法检测成功率呈现上升趋势,原因是第五类样本对敏感API调用次数进行了部分修改,这导致生成的检测图中边的属性值和原有特征图中对应的边属性值有所差异,当β值降低时,这种差异度会被消除掉,于是便能成功检测出程序中存在的恶意行为。

对改进的VF2算法检测方案应用在真实样本上的检测结果如图9所示,对上表中的检测结果进行分析,发现该检测方法对真实恶意程序样本的检测成功率明显低于模拟样本的检测成功率,但是这样的检测结果并不意味该检测方法的失败,而是更加实际的展现了在真实环境中恶意程序样本的多样性和不确定性给检测带来的巨大影响。

并且,通过对选取的两类恶意程序的真实样本进行实验,取参数α和β在不同精确度下的值,得到检测结果如图10所示,并且对两次实验结果的误判率和漏判率做曲线分析,其结果如图11所示。

(2)结果分析

对于模拟的恶意程序样本的检测结果分析,该检测方案在采用Monomorphism同构模式以及为改进的VF2算法设置适合的参数α和β的情况下其检测效果最好,能够最大程度的识别多样化的恶意程序以及它们的变种程序等。但该检测方法在实际应用中的检测效果如何则需要进一步通过大量的真实样本进行测试才能够得以验证。

对真实恶意程序样本的检测结果和不同精确度下的改进的算法进行比较分析后可知,通过对上面两组实验的检测结果可知,改进后的VF2算法中控制匹配精确度的参数α和β在不同取值的环境下会对检测效果有很大影响。所以,针对不同类别的恶意程序的检测,用户可以设置不同的匹配精确度参数,以此使得该检测算法在真实环境下达到较好的检查效果。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号