面向Android应用的智能模糊测试方法技术

技术编号:18426141 阅读:24 留言:0更新日期:2018-07-12 01:57
本发明专利技术公开了一种面向Android应用的智能模糊测试方法。该方法包括应用程序逆向符号执行和Android应用程序模糊测试。使用Android漏洞特征对Android应用进行建模分析,得到Android应用入口函数、敏感操作点、控制流和函数调用信息;通过将敏感操作点作为入口进行逆向符号执行获取路径约束信息;对路径约束信息进行约束求解得到触发该漏洞的路径测试用例;使用生成的路径测试用例对Android应用程序进行模糊测试,监控程序运行状态;对程序运行信息进行分析生成相关漏洞报告。本发明专利技术能够生成满足触发漏洞的测试用例,同时避免了路径爆炸,也使用该方法指导下的模糊测试更具有针对性。相比传统模糊测试方法,本方法克服了模糊测试盲目性的问题,提高了模糊测试的效率。

An intelligent fuzzy test method for Android application

The invention discloses an intelligent fuzzy testing method for Android applications. This method includes application reverse symbol execution and Android application fuzzy testing. The Android application is modeled and analyzed with the Android vulnerability, and the Android application entry function, the sensitive operation point, the control flow and the function call information are obtained. The path constraint information is obtained by using the sensitive operating point as the entrance to obtain the path constraint information, and the path constraint information is solved to trigger the vulnerability. The path test case; use the generated path test case to make fuzzy test of Android application, monitor the running state of the program, analyze the program running information and generate the related vulnerability report. The invention can generate test cases satisfying the trigger vulnerabilities while avoiding the path explosion, and the fuzzy test guided by the method is more targeted. Compared with the traditional fuzzy testing method, this method overcomes the blindness of fuzzy testing and improves the efficiency of fuzzy testing.

【技术实现步骤摘要】
面向Android应用的智能模糊测试方法
本专利技术涉及一种Android应用软件安全性测试方法,尤其是涉及一种基于逆向符号执行指导模糊测试的方法,结合逆向符号执行和模糊测试两方面的优势分析软件的安全性。
技术介绍
随着移动互联网的大范围普及和Android智能手机的广泛使用,Android手机应用软件产业得到了飞速发展,已经开始影响到人们工作和生活的方方面面,例如:移动办公软件,移动游戏软件,移动社交软件,移动定位软件和移动支付软件等等。大量Android应用程序通过应用商店或第三方市场下载并安装到用户手机上使用。然而,应用程序大都来源于第三方开发者,这些应用程序可以不经检查就投放到市场上,其中就有可能包含带有漏洞的应用程序,对用户的隐私构成严重威胁。因此,为了尽早发现软件存在的漏洞,应该进行软件漏洞分析。模糊测试是目前软件漏洞分析的代表性技术,在软件漏洞分析领域占据重要地位。其基本想是通过构造非预期的输入数据并监视目标软件在运行过程中的异常结果发现软件故障的方法。模糊测试的基本流程为:1)确定目标程序。整个模糊测试过程中的第一步是确定测试目标,有了明确的目标才能决定使用的测试工具和测试方法。2)确定输入数据。绝大部分可利用的安全漏洞都是由于目标软件未对输入数据进行校验或未对不合法的输入做相应的出错处理。3)构建模糊测试用例。在分析目标软件数据规约的基础上,可以针对性地设计测试用例。4)监视执行并过滤异常。执行测试用例的过程往往与测试用例生成一起执行,即将测试用例输入给目标程序以监测程序的运行状态。5)异常分析与漏洞确认。在运行过程中对目标程序的状态进行分析,记录模糊测试中发生的所有异常状态,通过异常分析,来确定漏洞发生的位置和情况。现有的Android应用模糊测试方法是通过自动批量生成多种类型的测试数据和测试用例对Android应用进行模糊测试。通过将这些随机数据输入到Android应用程序并执行,监控程序发生的异常发现潜在的漏洞,这种方法能够有效的发现目标程序存在的漏洞。尽管上述模糊测试方法对应用漏洞检测率比较高,但是有其明显的缺陷:测试数据生成方法过于随机和简单,以及测试的盲目性导致测试效率低,难以进行覆盖率确定,导致无法对模糊测试结果进行评估;不能保证充分的代码覆盖而导致漏报率高;测试数据相互独立导致难以发现复杂漏洞等。
技术实现思路
本专利技术针对上述漏洞检测技术存在的问题,提出了一种面向Android应用软件安全性测试方法。结合逆向符号执行和模糊测试两方面优势,对Android应用软件进行漏洞检测。实现本专利技术目的的技术解决方案为:一种面向Android应用程序的智能模糊测试方法,包含如下步骤:第一步、对Android应用程序进行建模分析,分析反编译后的代码,从而获取到该应用程序所有的入口函数、系统调用关系、方法的控制流信息和函数调用信息。使用Android漏洞特征来标记出所有可能存在漏洞的程序点,即敏感操作点。所述的Android漏洞特征主要通过对已有的Android应用漏洞进行形式化分析方法分析得到,将程序漏洞模式进行形式化描述,总结出漏洞模式的特征,从而建立Android漏洞特征。所述的Android漏洞特征包括:1)使用日志操作泄露用户信息2)使用短信操作泄露用户信息3)使用网络操作泄露用户信息4)将用户隐私信息存储到本地所述的敏感操作点为满足漏洞特征的Android应用操作关键API。第二步、将第一步中获取的敏感操作点作为逆向符号执行入口点。初始化符号执行符号表:取出相关操作变量存放到逆向符号执行符号表中。初始化路径约束:路径约束条件初始值为true。第三步、根据第一步中建模分析中获取的信息进行逆向符号执行,在逆向符号执行的过程中对符号表和路径约束条件进行符号化处理和更新操作。所述的逆向符号执行的过程中的符号表主要是用于进行存储符号值和更新符号值操作,在逆向分析过程中,当指令是输入、输出和赋值语句类型时,更新关心变量符号表。当指令是条件语句类型时,更新并记录路径约束条件。当指令是调用语句类型时,调用API函数。第四步、重复执行第三步进行逆向符号执行,直到到达入口点为止。保存当前的符号表和路径约束条件。所述的路径约束条件中会存储满足执行对应路径的所有分支条件。第五步、使用约束求解器对路径约束条件进行求解,生成满足该路径触发条件的测试用例。所述的约束求解器主要是判断路径是否可执行。将路径约束条件结果形成方程组,求解该方程组,并根据方程组的结果判断路径是否可执行。如无解,则路径不可执行;如有解,则将给出所有满足路径约束条件的真实值。第六步、使用第五步中生成的漏洞触发测试用例作为输入对Android应用进行模糊测试,收集该Android应用的运行状态、异常状态和漏洞信息。第七步、通过对第六步中收集的异常信息对系统影响进行评估,确认每个监控到的真实的漏洞。让安全人员对每个漏洞进行精细分析,生成漏洞相关报告。本专利技术与现有技术相比,其显著优点为:(1)本专利技术的逆向符号执行导向的模糊测试方法针对的是Android应用程序。本专利技术使用逆向符号执行,可以从程序漏洞或者缺点直接相关的操作所在的程序点开始分析,在逆向执行的时候,可以获得代码的语义信息,使得可以精确的分析程序代码属性,分析精度高。(2)智能模糊测试通过对目标应用程序进行分析,获得一定程度该应用程序实现语义,然后使用逆向符号执行分析出程序的内在知识辅助模糊测试的进行,避免盲目地对程序进行全路径覆盖测试,更加有针对性地检测某些安全敏感点行为,可以很好的解决传统模糊测试盲目性的问题,大大增加了漏洞发现的概率,提高检测效率。附图说明图1为根据本专利技术一个面向Android应用程序的智能模糊测试中的系统架构图。图2为根据本专利技术一个面向Android应用程序的智能模糊测试中总体处理流程示意图。具体实施方式为了更好的对应用程序进行更加精确的漏洞分析,并弥补传统模糊测技术盲目性缺点,测试方法逐步从单一的模糊测试方法转变为智能模糊测试方法,即在测试过程中引入符号执行技术分析目标程序的内在知识来辅助模糊测试的进行。基于逆向符号执行导向的模糊测试技术主要结合了逆向符号执行和模糊测试。首先通过静态分析找出Android应用中的函数入口点集、敏感操作点、控制流信息和函数调用信息。使用当前已经获得应用信息对敏感操作点进行逆向符号执行获取执行该敏感操作点的路径约束。将获得的路径约束进行约束求解获得该敏感操作点对应的路径并进行导向模糊测试来确认应用软件是否存在漏洞。这样以尽可能小的代价找出程序中最有可能产生漏洞的执行路径,从而避免盲目进行全路径覆盖测试,提高模糊测试效率。下面参照附图更详细地描述本专利技术的具体实施方式。本专利技术中逆向符号执行导向的模糊测试方法的总体处理流程示意图,如图1所示。实现流程如下:第一步、该方法对Android应用程序进行建模分析,使用反编译工具对Android应用进行反编译,分析反编译后的代码,从而获取到该应用程序所有的入口函数,即程序运行开始点。充分考虑Android应用组件的生命周期丰富系统调用。对每个方法生成相应的控制流信息和函数调用信息。使用Android漏洞特征标记出所有可能存在漏洞的程序点,即敏感操作点,如短信类中sendTextMes本文档来自技高网
...

【技术保护点】
1.一种面向Android应用的智能模糊测试方法,其特征在于包括如下步骤:1)ndroid应用程序进行建模分析;分析反编译后的代码,从而获取到该Android应用程序所有的入口函数、系统调用关系、方法的控制流信息和函数调用信息,使用Android漏洞特征来标记出所有可能存在漏洞的程序点,即敏感操作点;2)步骤1)中获取的敏感操作点作为逆向符号执行入口点,进行逆向符号执行初始化,取出相关操作变量存放到逆向符号执行符号表中,并且初始化路径约束;3)步骤1)中建模分析后获取的信息进行逆向符号执行;逆向分析过程中,当指令是输入、输出和赋值语句类型时,更新逆向符号执行符号表;当指令是条件语句类型时,更新并记录路径约束条件;当指令是调用语句类型时,调用相关API函数;4)执行步骤3)进行逆向符号执行,直到到达入口点为止,保存当前相关路径的符号表和路径约束条件;5)约束求解器对路径约束条件进行求解,生成满足该路径触发条件的测试用例;6)步骤5)中生成的漏洞触发测试用例作为输入对,Android应用进行模糊测试,收集该Android应用的运行状态、异常状态和漏洞信息;7)步骤6)中收集的异常信息进行分析,评估其对系统的影响,确认每个监控到的真实的漏洞,生成漏洞相关报告。...

【技术特征摘要】
1.一种面向Android应用的智能模糊测试方法,其特征在于包括如下步骤:1)ndroid应用程序进行建模分析;分析反编译后的代码,从而获取到该Android应用程序所有的入口函数、系统调用关系、方法的控制流信息和函数调用信息,使用Android漏洞特征来标记出所有可能存在漏洞的程序点,即敏感操作点;2)步骤1)中获取的敏感操作点作为逆向符号执行入口点,进行逆向符号执行初始化,取出相关操作变量存放到逆向符号执行符号表中,并且初始化路径约束;3)步骤1)中建模分析后获取的信息进行逆向符号执行;逆向分析过程中,当指令是输入、输出和赋值语句类型时,更新逆向符号执行符号表;当指令是条件语句类型时,更新并记录路径约束条件;当指令是调用语句类型时,调用相关API函数;4)执行步骤3)进行逆向符号执行,直到到达入口点为止,保存当前相关路径的符号表和路径约束条件;5)约束求解器对路径约束条件进行求解,生成满足该路径触发条件的测试用例;6)步骤5)中生成的漏洞触发测试用例作为输入对,Android应用进行模糊测试,收集该Android应用的运行状态、异常状态和漏洞信息;7)步骤6)中收集的异常信息进行分析,评估其对系统的影响,确认每个监控到的真实的漏洞,生成漏洞相关报告。2.根据权利要求1所述的面向Android应用的智能模糊测试方法,其特征在于:步骤1)中,对已有...

【专利技术属性】
技术研发人员:俞研邱煜吴家顺胡恒伟黄兴远孙贝
申请(专利权)人:南京理工大学
类型:发明
国别省市:江苏,32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1