Android平台下应用程序漏洞自动化挖掘系统及方法技术方案

技术编号:17541908 阅读:33 留言:0更新日期:2018-03-24 19:16
本发明专利技术公开了一种Android平台下应用程序漏洞自动化挖掘系统及方法,属于软件分析技术领域,主要分为应用程序静态分析模块、应用程序动态分析模块两个部分,静态分析模块主要是针对应用程序安装包apk文件进行控制流与数据流分析,提取组件权限等属性信息,并针对应用程序中的组件间通信问题进行可达路径分析,动态分析是首先依据静态分析的结果构造Fuzzing测试用例数据,然后对反编译后的Smali文件进行Smali代码插桩,然后运行应用程序,得到输出信息,结合静态分析的结果最终得到应用程序存在的漏洞。本发明专利技术能够自动挖掘应用程序可能存在的漏洞,具有一定的弹性,解决了人工挖掘耗时的问题,同时结合静态与动态分析能够大大提升准确度。

Automated mining system and method for application vulnerability in Android platform

The invention discloses a Android platform application vulnerability mining automation system and method, which belongs to the technical field of software analysis, mainly divided into the application of static analysis dynamic module, application analysis module two parts, static analysis module is mainly aimed at the application installation package APK file to control flow analysis and data flow components permissions attribute information, and can reach the path analysis to solve the problem of communication between the components in the application, the dynamic analysis is based on the results of the static analysis to construct Fuzzing test case data, and then to decompile the Smali file Smali code instrumentation, and then run the application, the output information, combined with the static analysis results of the final get application vulnerabilities. The invention can automatically tap potential vulnerabilities of application programs, has a certain elasticity, solve the problem of time consuming in manual mining, and combine with static and dynamic analysis, it can greatly improve the accuracy.

【技术实现步骤摘要】
Android平台下应用程序漏洞自动化挖掘系统及方法
本专利技术属于软件分析
,尤其涉及一种Android平台下应用程序漏洞自动化挖掘系统及方法,主要包括静态分析与动态分析两个部分。
技术介绍
自2007年Google公司正式对外发布Android系统以来,由于其开源的特性受到了很多手机厂商的青睐,同时随着移动互联网市场的飞速增长,各式各样的基于Android平台的应用程序在大众的视野中,而这些带给大众便利的应用程序却常常存在很大的安全隐患,恶意第三方常常会利用这些安全隐患进行攻击,给用户带来了很大的威胁。众所周知,传统的PC端的安全技术已经相对成熟,但是在移动互联网领域的安全技术却比较落后,传统的主机安全技术已然不能够有效保障移动领域的安全,Android平台下的应用程序也面临严重的安全问题。针对Android应用程序的漏洞挖掘技术方面,主要分为静态挖掘和动态挖掘两种方式,其中:静态分析方法是指不通过运行代码,直接针对高级语言编写的源程序或依据源码进行逆向得到的代码分析以发现漏洞的方法,由于源代码或逆向代码中包含完整的程序语义信息,因此通过源代码静态分析能够较为全面地遍历程序路径,发现更多的安全漏洞。静态分析主要包括污点数据追踪技术,可达路径分析技术,符号执行技术等。污点数据追踪是根据数据以来关系对程序进行分析,通常用于检测数据相关的漏洞,在文献《CHEX:staticallyvettingAndroidappsforcomponenthijackingvulnerabilities》中,Lu等人通过静态分析中的污点追踪技术实现了工具CHEX。可达路径分析关注控制流分析和控制流分析,主要用于检测功能泄露、隐私泄露漏洞等,在文献《Permissionre-delegation:attacksanddefenses》中,Felt等人提出了一个基于可达路径分析来检测Android组件间通信机制中的权限重委派漏洞。符号执行技术是对程序变量进行精确计算的技术,才用抽象符号代替程序变量,并模拟程序执行,能够在复杂的数据依赖关系中发现变量之间本质的约束关系,在文献《SymDroid:SymbolicExecutionforDalvikBytecode》,Jeon等人提出了一个针对Dalvik字节码的符号执行框架SymDroid。静态分析技术具有分析简单、易于理解的优点,但是静态分析技术通常都需要依据关键词的匹配,此外如果对程序没有足够精确的上下文分析及路径的可达性分析,甚至于存在漏洞的路径并没有触发,造成结果就是产生很高的误报率。动态分析是指在程序运行过程中,通过查看程序执行过程涉及到的变量、内存以及寄存器的值,或者通过构造特定的输入数据,根据程序执行的路径追踪输入数据在传播过程中的变化,最终获取程序的执行路径以及挖掘漏洞的目的。动态分析技术主要包括污点数据传播分析技术、Fuzzing测试技术两种。污点数据传播分析时在定制的Android沙箱中动态连续跟踪数据的流向,在文献《TaintDroid:AnInformation-FlowTrackingSystemforRealtimePrivacyMonitoringonSmartphones》中,Enck等人基于Android平台研究了污点数据追踪框架TaintDroid。而Fuzzing测试技术是通过不断生成大量畸形测试数据来测试程序的鲁棒性和安全,主要用于测试组件间通信机制等。相比于静态代码分析,动态分析具有较强的识别能力,代码覆盖率高,但是大多数Android应用程序的代码与界面是紧密交互的,假如动态分析部分只是进行了简单的安装应用程序以及实现自动触发点击事件,很多情况下并不会覆盖应用程序全部功能,因此也就不可能触发某些应用执行路径,无法生成有效数据,最终引起漏报。传统的基于数据流的污点分析首先会获取source(敏感数据的获取点,获取的数据标记为污点),然后对每个entrypoint(包含source点的函数或一段代码)进行分析与追踪,最后检查sink点(数据的传出点,主要是对数据的存储、传输等操作)是否包含污点数据。Android中的敏感数据主要由调用系统敏感数据的API函数获取得到,如getCallState,getLineNumber等,传统的污点数据追踪分析技术仅仅适用于敏感信息获取的情况,在一些场景例如通信的双方使用明文传输,这就造成无法获取source点的问题,对于漏洞的分析会产生一定的误报。此外,传统的污点数据追踪技术在进行数据追踪时标记一个source数据就需要检查一个sink点,如果有多个source数据就需要分析多个sink点,这就造成了效率上的下降。
技术实现思路
本专利技术的目的在于针对上述现有技术中,静态分析误报率高、动态测试中导致的性能开销大问题,提供一种Android平台下的应用程序漏洞自动化挖掘系统,该技术结合静态分析与动态分析的思想,能够有效避免静态挖掘技术导致的误报,且结合静态分析产生的Fuzzing测试用例,能够有效避免动态测试中导致的性能开销大问题,提高漏洞挖掘的准确率。为了达到上述目的,本专利技术采用如下技术方案:一种Android平台下的应用程序漏洞自动化挖掘系统,应用程序漏洞自动化挖掘系统包括静态分析模块和动态分析模块,静态分析模块主要包括应用程序安装包APK反编译模块、Android配置清单文件分析模块、控制流图构建模块、Intent可达路径分析模块、污点数据追踪模块、API提取模块:应用程序安装包APK反编译模块:用于使用第三方工具对APK文件进行反编译得到易于分析的Smali文件;Android配置清单文件分析模块:用于针对AndroidManifest.xml文件进行分析,提取权限、组件名称、组件注册属性信息;控制流图构建模块:用于对Smali文件进行词法和语法分析,构建Smali文件中执行逻辑的控制流图;Intent可达路径分析模块:用于依据Anroid配置清单文件分析模块和控制流图构建模块输出的信息分析组件间通信问题,确定Intent的数据传递路径;污点数据追踪模块:用于依据控制流图构建模块构建的控制流图进行污点数据追踪,确定Smali文件中存在的数据流;API提取模块:用于提取与漏洞相关的API;动态分析模块包括Fuzzing测试用例构造模块、Smali注入模块、运行目标程序监控输出模块、分析模块;Fuzzing测试用例构造模块:用于依据静态分析模块的分析结果得到应用程序可能具有的漏洞特征,并将有效测试用例进行变异得到半有效测试用例,作为漏洞的触发点;Smali注入模块:根据数据流确定Smali代码插入位置,依据类型将Fuzzing测试用例以Smali代码的形式插入到Samli文件中,然后进行回编译,重打包;运行目标程序监控输出模块:通过运行目标程序得到输出信息;分析模块:结合静态分析模块的分析结果、漏洞特征库及目标程序的输出信息得到应用程序的分析报告。所述的一种Android平台下的应用程序漏洞自动化挖掘系统,还包括用户与系统交互界面。一种Android平台下应用程序漏洞自动化挖掘方法,包括以下步骤:S1,获取需要交互的应用程序安装包APK文件,并对获取的APK文件进行反编译,得到Smali本文档来自技高网
...
Android平台下应用程序漏洞自动化挖掘系统及方法

【技术保护点】
一种Android平台下应用程序漏洞自动化挖掘系统,其特征在于,应用程序漏洞自动化挖掘系统包括静态分析模块和动态分析模块,静态分析模块包括:应用程序安装包APK反编译模块:用于使用第三方工具对APK文件进行反编译得到易于分析的Smali文件;Android配置清单文件分析模块:用于针对AndroidManifest.xml文件进行分析,提取权限、组件名称、组件注册属性信息;控制流图构建模块:用于对Smali文件进行词法和语法分析,构建Smali文件中执行逻辑的控制流图;Intent可达路径分析模块:用于依据Anroid配置清单文件分析模块和控制流图构建模块输出的信息分析组件间通信问题,确定Intent的数据传递路径;污点数据追踪模块:用于依据控制流图构建模块构建的控制流图进行污点数据追踪,确定Smali文件中存在的数据流;API提取模块:用于提取与漏洞相关的API;动态分析模块包括:Fuzzing测试用例构造模块:用于依据静态分析模块的分析结果得到应用程序可能具有的漏洞特征,并将有效测试用例进行变异得到半有效测试用例,作为漏洞的触发点;Smali注入模块:根据数据流确定Smali代码插入位置,依据类型将Fuzzing测试用例以Smali代码的形式插入到Samli文件中,然后进行回编译,重打包;运行目标程序监控输出模块:通过运行目标程序得到输出信息;分析模块:结合静态分析模块的分析结果、漏洞特征库及目标程序的输出信息得到应用程序的分析报告。...

【技术特征摘要】
1.一种Android平台下应用程序漏洞自动化挖掘系统,其特征在于,应用程序漏洞自动化挖掘系统包括静态分析模块和动态分析模块,静态分析模块包括:应用程序安装包APK反编译模块:用于使用第三方工具对APK文件进行反编译得到易于分析的Smali文件;Android配置清单文件分析模块:用于针对AndroidManifest.xml文件进行分析,提取权限、组件名称、组件注册属性信息;控制流图构建模块:用于对Smali文件进行词法和语法分析,构建Smali文件中执行逻辑的控制流图;Intent可达路径分析模块:用于依据Anroid配置清单文件分析模块和控制流图构建模块输出的信息分析组件间通信问题,确定Intent的数据传递路径;污点数据追踪模块:用于依据控制流图构建模块构建的控制流图进行污点数据追踪,确定Smali文件中存在的数据流;API提取模块:用于提取与漏洞相关的API;动态分析模块包括:Fuzzing测试用例构造模块:用于依据静态分析模块的分析结果得到应用程序可能具有的漏洞特征,并将有效测试用例进行变异得到半有效测试用例,作为漏洞的触发点;Smali注入模块:根据数据流确定Smali代码插入位置,依据类型将Fuzzing测试用例以Smali代码的形式插入到Samli文件中,然后进行回编译,重打包;运行目标程序监控输出模块:通过运行目标程序得到输出信息;分析模块:结合静态分析模块的分析结果、漏洞特征库及目标程序的输出信息得到应用程序的分析报告。2.根据权利要求1所述的一种Android平台下应用程序漏洞自动化挖掘系统,其特征在于,还包括用户与系统交互界面。3.一种Android平台下应用程序漏洞自动化挖掘系统及方法,其特征在于,包括以下步骤:S1,获取需要交互的应用程序安装包APK文件,并对获取的APK文件进行反编译,得到Smali文件;S2,在步骤S1的基础上,进行操作以下步骤:S21,分析Android应用程序配置文件AndroidManifest.xml,提取组件、权限相关信息;S22,依据Smali语法进行smaili文件中执行逻辑的控制流图构建,得到smaili文件中执行逻辑的控制流图;S23,依据预设的漏洞因子提取关键API;S3...

【专利技术属性】
技术研发人员:张小松牛伟纳张林胡若川
申请(专利权)人:电子科技大学
类型:发明
国别省市:四川,51

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

1