重点推荐省级国家级期刊、北大中文核心、CSSCI、EI、SCI发表,稳妥操作,速度快,包发表。有意向联系客服咨询。
论文代写:十年专业服务品质,全部由期刊编辑、硕士、博士撰写;保证原创、版权归您;保证通过、否则全额退款。
论文发表:与百家优秀期刊合作,代理审核组稿,论文发表涵盖所有专业领域,全部正刊,保证出刊,否则全额退款。
业务合作:因业务发展需要,诚招优秀写手合作,要求硕士以上学历,不限专业,另诚征优秀期刊代理合作,具体详谈。QQ:415835425
基于源代码静态分析技术的Android应用恶意行为检测模型
基于源代码静态分析技术的Android 应用
恶意行为检测模型
路程,张淼,徐国爱**
作者简介:路程,(1985-),男,硕士研究生,主要研究方向:软件安全。
通信联系人:张淼,(1980-),男,讲师,主要研究方向:软件安全. E-mail: 高,分析速度快,并且只需分析一次便可以找出所有隐藏在程序中的所有可疑恶意行为。尽
管静态分析方法,可能产生一定的误报和漏报,但仍然是当今最实用、最有效的恶意行为检
45 测方法之一。
1 相关工作
静态分析技术,是检测软件安全漏洞的常用方法。静态分析根据分析对象的不同,主要
分为二进制程序分析和源代码分析。对二进制程序进行分析,通过比较二进制文件中是否包
含恶意行为特征码,判断程序是否具有恶意行为。对二进制文件进行特征码分析,只能针对
50 已经出现的病毒、木马进行查杀,不能检测未知病毒,面对不断出现的新病毒或病毒变种,
必须不断更新病毒库。
源代码分析,是指分析软件的源代码,通过与预先定义的引起恶意行为的API 调用进
行比对,判断程序中是否含有恶意行为。以“恶意扣费”为例,引起扣费行为的发生,往往
是由于恶意应用以发送短消息的方式,注册了相关的SP 服务。分析Android 应用反编译后
55 的源代码,通过查询源代码中是否包含发送短消息相关的API 调用,并判断相应的API 参
数,是否为某些特定SP 服务注册码,从而检测Android 应用中是否包含“恶意扣费”等行
为。分析Android 应用反编译后的源代码,由于源代码逻辑结构更为清晰,查找更精确。引
起恶意行为发生是相关的API 调用导致的,而无论恶意行为如何变种,在源代码中都必须
调用关键的底层系统API。对源代码进行检测,只需查找关键的系统API 调用进行判断,对
60 于不断更新的病毒、木马变种,并不需要频繁地更新相应的检测规则。
目前,大多数的源代码静态分析工具只能针对基于PC 平台或Web 平台上的应用程序
安全漏洞进行排查,找出安全问题;而对于移动终端平台上的应用,使用静态分析技术分析
安全问题,还处于初期研究阶段。国内外利用静态分析技术,分析Android 应用程序恶意行
为的方法,主要是采用基于源代码的软件行为分类法[1],通过抽取应用软件源代码的关键
65 API 函数调用序列,并与具有恶意特征的API 调用序列进行比对分析,进而判别软件是否具
有恶意性[2]。
本文提出了一种基于源代码静态分析的Android 应用恶意行为检测模型,以面向对象语
言的源代码静态分析技术为核心。为了精确查询具有恶意特征的程序关键信息,模型对
Android 应用程序反编译后的Java 源代码进行词法语法解析、控制流、数据流分析,在此基
70 础上查询引起恶意行为的关键API 调用,并对可能使API 调用具有恶意性的参数,进行动
态污染传播模式对应的关键数据传播分析,进而精确判别并定位到程序怀疑出现恶意行为的
关键代码段。
在下一章将简要介绍源代码静态分析模型中主要使用到的静态分析技术,并分析如何利
用静态分析技术在Android 应用反编译后的源代码中检测相关的恶意行为。
75 2 关键技术分析
面向对象语言的源代码静态分析技术,是实现Android 恶意行为检测的基础,主要包括
正则表达式、词法分析、语法分析、数据流分析、控制流分析、安全分析、污染传播分析等。
2.1 正则表达式
正则表达式,是指一个用来描述或者匹配一系列符合某个句法规则的字符串。正则表达
80 式就是定义查找特定字符串的模式,可以通过使用正则表达式匹配指定的字符串查找特定的
安全问题。对于Android 程序中出现的后门,如固定网络域名、IP 地址、电话号码等,导致
的安全隐患都可以通过正则表达式去找到。
2.2 词法语法解析
词法分析是对源程序的字符流进行扫描并根据词法规则识别生成单词。语法分析是在词
85 法分析的基础上,将单词序列根据特定程序语言的语法规则,抽象出需要的程序结构信息,
并将这些信息以树的形式组织成抽象语法树AST(Abstract Syntax Tree)[3]。
2.3 信息流分析
控制流分析,是基于抽象语法树的分析,是数据流分析的基础,主要任务是分析过程内
语句之间的控制依赖关系,形成语句间的控制依赖图,反映了语句间的到达关系。
90 数据流分析,作用于控制流图,采用数据流方程的迭代求解方法,分析语句中对变量的
“到达-定值”。“到达-定值”,是程序在执行了某条语句后,可能改变了程序中变量的值,
在实现上通常用一种数据结构表示。数据流分析的目的,是计算在程序的不同点对变量的不
同赋值信息,需要遍历控制流图中的每个语句节点,迭代计算每个语句中的“到达-定值”
集合[4]。
95 2.4 安全分析
根据安全规则,查找规则中定义的关键API 调用,以及API 调用和某个参数、返回值
或某些资源的关系,从而判别安全问题的存在。安全分析规则,一般规定对程序序中关键信
息元素的约束,如关键类、关键方法等。如果类、方法的相应属性符合规则定义的约束条件,
则报告分析结果[5]。
100 2.5 污染传播分析
某些API 调用成为恶意行为,是由其参数受到污染引起的。在查找出此类关键API 调
用后,只是将其参数作为可疑信息标记出来,还需要确定相关数据的传播路径以及传播到该
参数变量的约束条件。污染分析,一般采用逆向查找算法,首先确定引起关键API 调用成
为恶意行为的关键数据,根据数据流分析结果,逆向跟踪关键数据的传播路径,如果关键数
105 据在之前调用中受到污染,并检查传播路径是否满足相关的约束条件,如果不满足,则标记
此关键API 调用会引起恶意行为,并标记此关键数据为污染数据。
2.6 恶意行为检测
考虑下面获取手机IMEI 标识,并发送到特定网站的恶意代码:
TelephonyManager telephonymanager = (TelephonyManager)getSystemService("phone");
110 String userId = telephonymanager.getDeviceId();
URL url = new URL(“http://www.myweb.com.cn:80?id=”+userId);
url. openConnection();
通过采用查找关键API,并查找定位参数数据流的方法,可以对Android 应用恶意行为
进行检测。对于上述“窃取用户隐私数据并发送到指定网站”行为,检测步骤为:
115 1)查找网络连接行为关键API。
2)定位网络连接请求URL,判断URL 请求参数。
3)查找关键参数的数据依赖关系,发现其与用户隐私数据有关,例如是手机IMEI 标
识。
4)查找数据依赖关系路径,检查是否有用户提示,如果没有,则认为存在窃取用户隐
120 私并发送到指定网站的攻击。
在这个过程中必须要用到的技术有:词法、语法分析得到程序源文件的抽象表示,调用
图分析便于加快API 调用的查找,数据流分析查询API 相关参数的数据来源,污染分析确
定userId = telephonymanager.getDeviceId()是污染数据。
在下一章本文将围绕基于源代码静态分析技术的Android 应用恶意行为检测的模型构
125 建进行展开,并给出利用模型进行恶意行为检测的流程。
3 基于源代码静态分析技术的Android 应用恶意行为检测模型
3.1 模型结构
本文提出了一种基于上述静态分析方法的Android 应用恶意行为检测模型。Android 应
用恶意行为检测模型,是在已深入研究的面向对象语言的静态分析技术基础上设计的,包括:
130 反编译模块、语法解析模块、数据流分析模块、控制流分析模块、安全分析模块和污染分析
模块6 大模块。模型结构如图1 所示。
图1 Android 应用恶意行为检测模型
Fig. 1 Android applications malicious behavior detection model
135
反编译模块:以Android 应用为输入,通过反编译,输出为以Java 语言编写的Android
程序源代码。
语法解析模块:对输入的Android 源代码进行词法和语法检查,生成以树结构组织的
AST(抽象语法树),并构造自定义的中间语言树。
140 控制流分析模块:对中间语言树进行分析,对程序中的每个方法生成一个语句关系依赖
图。
数据流分析模块:构建每个语句的“到达-定值”集合,并执行数据流、别名迭代算法。
安全分析模块:解析规则,查询引起恶意行为的关键API 在程序中的调用,以及API
调用和某个参数、返回值或某些资源的关系。
145 污染分析模块:查询导致关键API 调用具有恶意性的参数来源。根据控制流图,逆向
分析参数的“到达-定值”集合,确定参数是否为污染数据。
3.2 检测流程
图2 是模型检测流程图,表示了从输入Android 应用程序到输出分析结果的整个过程。
150 图2 Android 应用恶意行为检测流程
Fig. 2 Android applications malicious behavior detection model
1)首先,对Android 应用程序进行反编译,得到相应的Java 源代码。通过对apk 文档
进行解压缩处理,得到归并文档中的dex 格式文件。通过将dex 文件反编译为标准的Jar 文
155 档,并对Jar 文档反编译为Java 源文件,也就是Android 源代码。Android 源代码是作为静
态分析的输入[6]。
2)其次,对输入的Android 源代码进行词法和语法检查,输出以树结构组织的AST(抽
象语法树)。
3)以抽象语法书为基础,构造自定义的中间语言树,将生成的AST 中字符串表示的信
160 息映射成中间语言树中的程序元素。中间语言树结构由不同的程序元素构成:如类、方法、
语句等,用于控制流、数据流分析。
4)以中间语言树为分析对象,分别进行程序关键数据和关系识别分析。对程序中的每
个方法生成一个语句关系依赖图。对一个方法中的以中间语言树节点表示的语句,判断语句
类型,将各个语句连边。每个语句节点都有一个控制入边集合和控制出边集合。最终,从方
165 法的起始语句节点的出边集合出发到方法的终止语句节点的入边集合结束,形成了一个控制
流图。
5)对每个语句中的“到达-定值”进行的分析,对控制流图中的每个语句节点,分别产
生以“到达-定值”为元素的GEN 和KILL 集合,执行数据流经典迭代算法,最后形成稳定
的IN 和OUT 集合。
170 6)解析安全规则,查询规则定义的引起恶意行为的关键API 在程序中的调用,以及
学术论文网Tag:代写硕士论文 代写论文 代写毕业论文 代写毕业设计
|
本站郑重声明:
1、我们与数十所知名高校博士强强联手,保持常年稳定合作关系,论文质量更有保证;;
2、写作领域涉及所有专业,实力操作,出稿更快,质量更高,通过率100%;
3、所有代写文章,全部原创,包检测,保证质量,后续免费修改,保证通过;
4、信誉实力服务,专业代写毕业论文,职称论文,硕博士论文,留学生论文,成熟操作;
------分隔线----------------------------