论文部分内容阅读
随着移动互联网的快速发展,智能手机已经成为人们日常生活中必不可少的组成部分,而Android系统是智能手机市场上最主流的操作系统。在Android系统中,应用程序通过组件间通信(Inter-Component Communication,ICC)来进行数据交换,这种交换可以发生在单个应用程序之内,也可以发生在多个应用程序之间。然而,ICC模型在给应用程序组件间交互带来便利的同时,也带来了安全问题。该通信模型如果被Android恶意程序利用,将会在应用程序之间产生合谋攻击(Collusion Attacks),从而导致用户隐私信息泄露,给用户带来巨大的损失和严重的困扰。所以,Android应用安全已经成为安全研究中非常重要的课题。在Android应用安全的分析方法中,现有的方法大多是针对单个应用程序的,并不适用于分析应用程序间的合谋攻击。因此,针对Android平台上的应用间合谋攻击,本文提出了一种基于静态分析和形式化分析的检测方法。本文首先对Android APK文件进行预处理,包括反编译APK文件得到AndroidManifest.xml文件和解压APK文件得到classes.dex文件;然后基于预处理操作得到的结果,同时结合原始APK文件进行静态分析,解析AndroidManifest.xml文件和classes.dex文件以获取应用组件、意图、意图过滤器以及权限等ICC信息,再对原始APK文件进行静态污点分析以获取敏感路径,将得到的上述五种信息进行整合,以获取应用实体;最后基于静态分析的结果进行形式化分析,利用形式化建模语言Alloy对Android应用程序通过意图进行通信的过程以及提取到的每个应用实体进行建模,并构造一个表示合谋攻击的断言,之后使用Alloy Analyzer分析器对该断言执行检测,判断Android应用程序之间是否存在合谋攻击,同时将检测结果可视化地展示给用户。为了验证该方法的正确性和有效性,本文设计并实施了一系列的实验。实验数据集涵盖了2000个Android应用程序,包括从Google Play、开源应用市场F-Droid、国内第三方应用市场以及MalGenome上随机下载的不同类别的应用程序。实验从自动化、正确性和性能三个方面对本文提出的方法进行了评估,并与分析单个应用和多个应用的方法进行了对比,最终的实验结果表明了本文提出的Android应用间合谋攻击检测方法的正确性和有效性。