一种基于敏感行为识别的安卓应用安全性分析方法

文档序号:9579543阅读:758来源:国知局
一种基于敏感行为识别的安卓应用安全性分析方法
【技术领域】
[0001] 本发明属于软件工程领域,采用基于安卓应用敏感行为识别的方法来分析安卓应 用的安全性,从源代码出发,能够自动、高效、准确地识别安卓应用中的敏感行为。
【背景技术】
[0002] 随着使用智能手机的人群日益增大,智能手机所受的安全威胁也越来越突出。其 中,因为安卓平台的开放性以及安卓应用获取渠道更广泛等原因,安卓平台的智能手机所 受的安全威胁尤为严重。因此,针对安卓平台的恶意应用检测工作一直是工业界和学术界 关注的热点。
[0003] 恶意应用可能会私自发送收费短信,或未经用户允许安装其它应用,或盗取用户 账户信息等,造成用户的隐私泄露、经济损失等问题。已有的恶意应用检测方法主要分为静 态分析、动态分析、机器学习三种。
[0004] 静态分析是在不执行程序的情况下对程序行为进行分析。静态分析适用范围比较 广、实现较简单,不受应用运行平台的影响,可以事先得出检测结果,但受制于应用中的动 态加载等技术以及隐藏恶意代码的方式不断变化,静态分析存在很多误报或者漏报现象。
[0005] 动态分析是一种用沙盒或虚拟机模拟程序运行,进而监控、拦截程序运行行为的 分析方法。动态分析的优点是绕过了静态方法遇到的代码动态加载和加密等方面的问题, 但同时有代码覆盖率低、漏报等缺点。
[0006] 机器学习方法只抓住了程序代码片段中最直观的特征,未涉及代码背后所隐藏的 信息。常用的支持向量机(SupportVectorMachine,简称SVM)方法是一种建立在统计学 习理论和结构风险最小原理基础上的机器学习算法。
[0007] 恶意应用的行为表现多种多样,也可通过多种方式危害用户,但本质上都可概括 为违背用户意愿对私密数据进行操作的敏感行为。根据恶意应用的此种特征,融合程序分 析和机器学习的方法应该能够更有效、快速地分析出安卓应用的安全性。本发明拟结合软 件工程领域中的程序静态分析方法和机器学习领域中的支持向量机方法,通过程序分析得 到代码中隐藏的信息,再进行数据挖掘,从而获得最能表征恶意应用的特征及其取值,最终 得到安卓应用的安全性评估数据。

【发明内容】

[0008] 本发明提供了一种基于安卓应用源代码敏感行为识别的安卓应用安全性分析方 法,即:分析应用UI文本所提供的信息、其所触发的敏感行为以及应用的允许请求,将以上 信息作为特征,结合支持向量机的方法,分析应用安全性,提升恶意应用检测的准确率。
[0009] 本发明的技术方案为:事先将安卓应用反编译得到Java代码,根据其Java代码找 出代码中的敏感行为,即UI组件会触发何种敏感API对哪些敏感信息进行操作,然后将是 否包含某种敏感行为以及是否包含某种允许请求作为该决定安卓应用安全性的特征;分析 已知安全性的安卓应用,得到其特征,使用支持向量机算法对数据集进行训练;根据训练结 果,由未知安全性的安卓应用的特征值分析该安卓应用的安全性。为表述清楚,首先给出如 下定义。
[0010] 定义1 :敏感数据是指能对用户隐私、财产甚至人身安全产生威胁的信息,如手机 中的信息、通讯录、账户信息等;
[0011] 定义2 :敏感API是指安卓系统中会对用户敏感信息进行相关操作的API;本 专利中主要关注的敏感API包括与信息发送、打电话、网络链接、应用安装、外设使用 相关的API,例如SendTextMessageO、包含actionandroid,intent,action.CALL的 startActicity()、URL.openConnection()等;
[0012] 定义3:敏感行为是指用户与操作界面UI进行交互后触发了一些敏感API、对某些 敏感数据进行相关操作的行为,表示为一个三元组(UIFun,SenAPI,SenData),其中UIFun 表示与用户交互的UI组件(一般为按钮等),SenAPI表示与UI交互后所触发的敏感API, SenData表示敏感API所操作的敏感信息;
[0013] 本发明技术方案具体包括下列步骤:
[0014] 1)源代码的获取与分析
[0015] 步骤1)_1 :将安卓应用解压,得到dex文件、manifest文件和与布局相关的xml文 件,使用dex2jar工具将dex文件反编译得到jar包,由jar包可获取应用的安卓代码,同 时使用apktool工具反编译manifest,xml文件以及与布局相关的xml文件。
[0016] 步骤1)_2:根据步骤1)_1所得代码,构建CFG控制流图以及函数调用关系图,以 便后续的程序分析,具体内容由Datalog语言(Datalog是一种应用在人工智能及程序分析 等领域、具有符号处理和逻辑推理能力的计算机程序设计语言)表示如下。
[0017]hasSenAPI(F,SenAPI,L):程序L行处存在函数F,F中调用 了敏感API(SenAPI);
[0018]hasSenData(L,SenData):程序L行处对敏感数据SenData进行了操作;
[0019]directInvoke(F*,P,L):在程序L行处函数F*直接调用了函数P;
[0020]indirectlnvoke(F*W):在事件驱动的环境下,函数f是F*的最终目标;
[0021]isIntent(Ll,X):程序L1行处定义的参数X的类型是Intent;
[0022] intentlnitial(L2,X,Y):程序L2行处进行了参数X的初始化,且初始化的第一 个真实参数为Y;
[0023]iccInvoke(F*,L,X):在程序L行处函数F*使用了Intent类型的参数X调用了 其它函数;
[0024]inComponent(F',Y):函数F' 在组件Y内。
[0025] 2)敏感行为的获取
[0026] 根据1)中所得信息,通过以下Datalog语言表示的规则,可获取安卓应用的敏感 行为(UIFun,SenAPI,SenData),其中UIFun代表与UI相关的函数。(符号:-表示由符号 右边可推导得到符号左边。)
[0027] invoke(F*,F',L):_directInvoke(F*,F',L):由于F*在程序L行处直接调用 了F',可以推导出F*在程序L行处调用了F';
[0028]invoke(F*,F',L):_islntent(LI,X) &intentlnitial(L2,X,Y) & iccInvoke(F*,L,X)&inComponent(P,Y):此条规则基于安卓应用中的Intent传递机 制,F*在程序L行处使用了Intent类型的参数X来进行组件内的通讯,X的类型在程序L1 行处定义为Intent,X在程序L2行进行初始化,初始化的第一个真实参数为Y,同时组件Y中包含函数F',由此可推导出F*在程序L行处调用了程序F' ;
[0029] invoke(F*,F',L):_invoke(F*,F,L)&indirectInvoke(F,F'):由于F* 在程序 L行处调用了F且F不直接调用F',可以推导出F*在程序L行处调用了F';
[0030] invoke(F*,F,L):_invoke(F*,F,L)&invoke(F,F',L'):由于F* 在程序L行处 调用了F且F在程序L'行调用了F',可以推导出F*在程序L行处调用了F';
[0031] 以上四条规则为函数之间调用关系的分析。
[0032]hasSenAction(F*,SenAPI,SenData,L):_hasSenAPI(F*,SenAPI,L) & hasSenData(L,SenData):由于F*在程序L行处存在SenAPI以及在程序L行处存在 SenData,可以推导出在程序L行处F*使用SenAPI对SenData进行了相关操作;
[0033]hasSenAction(F*,SenAPI,SenData,L) :_hasSenAction(F',SenAPI,SenData, L' )&invoke(F*,F',L):由于在程序L'行处F'使用SenAPI对SenData进行了相关操 作以及F*在程序L行处调用P,可以推导出在程序L行处F*使用SenAPI对SenData进 行了相关操作;
[0034] 以上两条规则为函数是否会触发敏感行为的分析。
[0035] 3)UI文本的提取
[0036] 根据步骤1)中所得的Java代码和与布局相关的XML文件,可以得到UI组件上的 文本信息、UIText,将步骤2)中所得的敏感行为(UIFun,SenAPI,SenData)中的UIFun替 换为其组件上的文本UIText。如若其组件上没有文本,则记为"NULL" ;如若UIFun本身为 NULL,则不进行任何处理。
[0037] 4)敏感行为数据的处理
[0038] 由步骤3)中的操作,可以得到安卓应用中存在的敏感行为(UIText,SenAPI, SenData)。但由于原始数据所提供的信息过于琐碎,需要进行以下处理。
[0039] 步骤4)_1 :去除UITxet所包含的标点符号,如若UIText所包含的文本字符数大 于L(L为UI按钮上文本的最大字符数),将UIText记为"Long"。
[0040] 步骤4) -2 :根据SenAPI所属的操作种类,将SenAPI替换为所属的SenAct,具体包 括:SendMessage(发信息)、Call(打电话)、Internet(上网)、Install(安装应用)、Use Device(使用诸如摄像头、GPS等外设)。
[0041] 步骤4)-3 :如若
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1