一种Apk安全风险自动化静态审计系统以及方法技术方案

技术编号:15791735 阅读:43 留言:0更新日期:2017-07-09 21:53
本发明专利技术提供一种Apk安全风险自动化静态审计系统以及方法,所述方法包括步骤S101,反编译出Apk的AndroidManifest.xml、classes.dex和资源文件,并根据Dalvik字节码和AndroidManifest.xml文件,生成基本函数调用图;步骤S102,将Android库中异步调用函数、生命周期相关的函数都加入所述基本函数调用图中,得到扩展函数调用图;步骤S103,对所述扩展函数调用图中的代码路径进行过滤,得到包含可能污点数据传播行为的可疑路径集合;步骤S104,污点分析器对可疑路径集合中每条可疑路径函数的字节码指令进行模拟执行,基于内存对象模型进行污点分析,并准确的检测污点数据信息以及污点数据传播行为。本发明专利技术提供的Apk安全风险自动化静态审计系统及方法可以全面、快速、有效地对Apk应用程序进行安全审计分析,具有很强的实用性。

【技术实现步骤摘要】
一种Apk安全风险自动化静态审计系统以及方法
本专利技术涉及移动信息安全
,特别涉及一种Apk安全风险自动化静态审计系统以及方法。
技术介绍
随着移动互联网的发展,移动终端安全也越来越受到关注。特别是Android系统的快速发展,使得Android平台逐渐成为了世界上第一大的移动终端平台,产品覆盖了机顶盒、手机、平板,以及各种智能终端,从各个角度影响着人们的生活。而且这些智能终端的功能越发的强大,包括了语音通话、数据业务、NFC近场通讯等。Android智能终端已经深入的进入到了我们每个人的生活中,支付类服务、生活类服务、地图类服务、娱乐类服务、个人信息类服务等等。在这种情况下,APP应用程序的使用者日益增加,与此同时,APP开发者运营商和Android手机用户所面临的安全问题日益增加。一方面由于Android应用程序开发者水平参差不齐,开发者并没有统一的编码规范要求,开发者本身的安全意识相对薄弱,以及开发者会有意无意滥用权限;另一方面,由于一些不法分子故意利用、制造不安全的APP应用程序,部分恶意代码还会通过利用厂商开发的系统应用的漏洞获取高权限,进一步危害用户的隐私安全,因此对Android源码和APP应用程序等这些应用程序的安全审计行为越来越重要。现有技术中,主要有以下两种方式来对基于Android的应用程序进行审计:一种是通过人工审计,主要基于有经验的开发人员的代码走读和单元测试来发现源代码逻辑安全性、审计违反程序规范的源代码,测试人员人工的渗透测试来发现程序错误,安全漏洞。人工代码审计的方法人工成本高、效率低,而且依赖于开发和测试人员水平的高低,应用程序的质量难以把控。另一种是收集系统日志和APP应用程序的运行日志,或者对反编译日志信息进行还原,得到原始日志信息;将原始日志信息和运行日志信息统一输出,得到最终日志信息;根据审计日志信息白名单对最终日志信息进行过滤,确定待审计的日志信息;利用所述待审计的日志信息进行Android应用的审计。例如,公开号为CN105653943A的专利提供的一种Android应用的日志审计方法。这种审查方式一方面需要依赖操作系统日志模块和APP运行日志,日志信息量大,冗余信息过多,因此还需对日志进行大量且复杂的分析工作,才能正确地分析出APP的恶意行为,该方法也对代码的规范性无法审计。另一方面需要先运行或者模拟运行APP一段相对较长的时间,收集足够多的日志才能更全面的审计APP的行为,在运行阶段才能发现APP的安全问题,存在着审计系统审计粒度不够精细,审计的安全性和灵活性等方面存在不足的问题。
技术实现思路
针对以上问题,本专利技术专利目的在于设计了一种Apk安全风险自动化静态审计系统以及方法,可以快速、有效地对应用程序进行安全审计分析,具有很强的实用性。本专利技术具体的技术方案如下:一种Apk安全风险自动化静态审计方法,包括如下步骤:步骤S101,反编译出Apk的AndroidManifest.xml、classes.dex和资源文件,读取其Dalvik字节码和AndroidManifest.xml文件,以所述AndroidManifest.xml文件作为函数入口解析所有的函数调用指令并生成基本函数调用图;步骤S102,将Apk中使用到的具有异步性质的调用函数、生命周期相关的函数的Android库都加入所述基本函数调用图中,得到扩展函数调用图;步骤S103,对所述扩展函数调用图中的代码路径进行过滤,得到包含可能污点数据传播行为的可疑路径集合;步骤S104,污点分析器对可疑路径集合中每条可疑路径函数的字节码指令进行模拟执行,基于内存对象模型进行污点分析,并准确的检测污点数据信息以及污点数据传播行为。具体的,本专利技术所述基于内存对象模型进行污点分析,进一步包括:当污点分析器遇到包含未知值的未知条件分支时,引入模糊规则来进行控制流的决策,将未知条件分支分为未知值分支、无限循环分支和无限递归分支三种模式并分别进行处理。具体的,本专利技术所述将未知条件分支分为未知值分支、无限循环分支和无限递归分支三种模式并分别进行处理,具体包括:未知值分支重建上下文环境,恢复到已知分支状态;无限循环分支设定循环最大次数阀值p,当计数达到p时,跳出循环,继续执行后续字节码;无限递归设定递归最大深度阀值q,当计数达到最大深度q时,中止递归,恢复后续字节码执行。具体的,本专利技术所述方法还包括:步骤S105,根据检测的污点数据信息以及污点数据传播行为结果,输出检测报告。一种Apk安全风险自动化静态审计系统,包括Web应用服务器、文件服务器和审计服务器;其中:所述Web应用服务器用于用户登录以及将待测应用程序的APK文件发送给审计服务器;所述文件服务器用于存储所述待测应用程序的APK文件;所述审计服务器用于将所述Web应用服务器发送来的APK文件进行解析,反编译出Dalvik字节码和AndroidManifest.xml文件,并以AndroidManifest.xml文件作为函数入口解析所有的函数调用指令生成基本函数调用图;同时,将Apk中使用到的具有异步性质的调用函数、生命周期相关的函数的Android库都加入所述基本函数调用图中,得到扩展函数调用图;对所述扩展函数调用图中的代码路径进行过滤,得到包含可能污点数据传播行为的可疑路径集合;以及对所述可疑路径集合中每条可疑路径函数的字节码指令进行模拟执行,基于内存对象模型进行污点分析,并准确的检测污点数据信息以及污点数据传播行为。具体的,本专利技术所述扩展函数调用图包含Dalvik字节码执行中遇到的所有的显式和隐式的控制流以及所有的代码路径。具体的,本专利技术所述审计服务器包括:解析模块,用于对所述待测应用程序的APK文件进行解析,反编译出Dalvik字节码和AndroidManifest.xml文件;函数调用图生成模块,用于以AndroidManifest.xml文件作为函数入口解析所有函数调用指令生成基本函数调用图;同时,将Apk中使用到的具有异步性质的调用函数、生命周期相关的函数的Android库都加入所述基本函数调用图中,得到扩展函数调用图;过滤模块,用于对所述扩展函数调用图中的代码路径进行过滤,得到包含可能污点数据传播行为的可疑路径集合;污点分析模块,用于对所述可疑路径集合中每条可疑路径函数的字节码指令进行模拟执行,基于内存对象模型进行污点分析,并准确的检测污点数据信息以及污点数据传播行为。具体的,本专利技术所述污点分析模块进一步包括:当遇到包含未知值的未知条件分支时,引入模糊规则来进行控制流的决策,将未知条件分支分为未知值分支、无限循环分支和无限递归分支三种模式并分别进行处理。具体的,本专利技术所述审计服务器还包括:安全风险审计报告模块,用于根据检测的污点数据信息以及污点数据传播行为结果,输出检测报告。本专利技术提供的应用程序自动化静态审计系统及方法与现有技术相比,可以快速、有效地对应用程序进行安全审计分析,一方面能够审计应用程序代码编写规范性、组件暴露漏洞、组件权限滥用、代码执行漏洞、密码算法误用、SSL绕过、弱加密、混淆代码、硬编码的密码、危险API的不当使用、SQL注入、敏感信息/个人信息泄露、不安全的文件存储多方面的安全问题;另一方面,该系统能对应用程本文档来自技高网
...
一种Apk安全风险自动化静态审计系统以及方法

【技术保护点】
一种Apk安全风险自动化静态审计方法,其特征在于,包括如下步骤:步骤S101,反编译出Apk的AndroidManifest.xml、classes.dex和资源文件,读取其Dalvik字节码和AndroidManifest.xml文件,以所述AndroidManifest.xml文件作为函数入口解析所有的函数调用指令并生成基本函数调用图;步骤S102,将Apk中使用到的具有异步性质的调用函数、生命周期相关的函数的Android库都加入所述基本函数调用图中,得到扩展函数调用图;步骤S103,对所述扩展函数调用图中的代码路径进行过滤,得到包含可能污点数据传播行为的可疑路径集合;步骤S104,污点分析器对可疑路径集合中每条可疑路径函数的字节码指令进行模拟执行,基于内存对象模型进行污点分析,并准确的检测污点数据信息以及污点数据传播行为。

【技术特征摘要】
1.一种Apk安全风险自动化静态审计方法,其特征在于,包括如下步骤:步骤S101,反编译出Apk的AndroidManifest.xml、classes.dex和资源文件,读取其Dalvik字节码和AndroidManifest.xml文件,以所述AndroidManifest.xml文件作为函数入口解析所有的函数调用指令并生成基本函数调用图;步骤S102,将Apk中使用到的具有异步性质的调用函数、生命周期相关的函数的Android库都加入所述基本函数调用图中,得到扩展函数调用图;步骤S103,对所述扩展函数调用图中的代码路径进行过滤,得到包含可能污点数据传播行为的可疑路径集合;步骤S104,污点分析器对可疑路径集合中每条可疑路径函数的字节码指令进行模拟执行,基于内存对象模型进行污点分析,并准确的检测污点数据信息以及污点数据传播行为。2.根据权利要求1所述的Apk安全风险自动化静态审计方法,其特征在于,所述基于内存对象模型进行污点分析,进一步包括:当污点分析器遇到包含未知值的未知条件分支时,引入模糊规则来进行控制流的决策,将未知条件分支分为未知值分支、无限循环分支和无限递归分支三种模式并分别进行处理。3.根据权利要求2所述的Apk安全风险自动化静态审计方法,其特征在于,所述将未知条件分支分为未知值分支、无限循环分支和无限递归分支三种模式并分别进行处理,具体包括:未知值分支重建上下文环境,恢复到已知分支状态;无限循环分支设定循环最大次数阀值p,当计数达到p时,跳出循环,继续执行后续字节码;无限递归设定递归最大深度阀值q,当计数达到最大深度q时,中止递归,恢复后续字节码执行。4.根据权利要求1所述的Apk安全风险自动化静态审计方法,其特征在于,所述方法还包括:步骤S105,根据检测的污点数据信息以及污点数据传播行为结果,输出检测报告。5.一种Apk安全风险自动化静态审计系统,其特征在于,包括Web应用服务器、文件服务器和审计服务器;其中:所述Web应用服务器用于用户登录以及将待测应用程序的APK文件发送给审计服务器;所述文件服务器用于存储所述待测应用程序的APK文件;所述审计服务器用于将所述Web应用服务器发送来的APK文件进...

【专利技术属性】
技术研发人员:符利华
申请(专利权)人:深圳市能信安科技股份有限公司
类型:发明
国别省市:广东,44

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

1