- 文献综述(或调研报告):
近年来,智能手机和移动设备的普及速度令人难以置信,随之而来的是大量功能丰富的智能手机应用程序。这些智能手机应用程序通常由不同的应用程序市场中提供,以供移动用户方便地浏览,只需单击即可安装在各种移动设备上。首先了解什么是安卓应用程序。[1]大多数安卓应用程序通常由Java编程语言开发。Java程序代码由Android SDK工具编译成.dex文件。.dex文件以及相关数据和资源文件最终打包到apk文件中。每个应用程序项目都必须有一个AndroidManifest.xml文件,该文件描述了有关应用程序的基本信息,包括程序包名称,启动活动,应用程序运行时期间请求的权限等[2]。Android应用程序UI被绘制到容器窗口中。窗口通常是全屏的,但也可以浮动在其他窗口上或嵌入另一个窗口内部。在窗口中绘制的UI元素由几种不同类型的视图组成,这些视图是矩形空间,其中一些可以由用户进行交互[3]。并且其视图是树形结构。除了可见视图(两个EditTexts和一个Button)之外,还有另外两个名为LinearLayout的视图。 LinearLayout用于水平或垂直排列其子视图。更具体地说,那些可以包含子节点的视图(例如LinearLayout)被称为视图组。我们使用单字布局来定义UI的视觉结构[4]。
基于这样的情况,事实上,除了来自平台供应商(例如Google和Apple)的官方市场之外,还产生了许多第三方市场托管着数千个应用。尽管为了维护智能手机应用程序系统的安全,每个第三方市场都需要为移动用户提供高质量的应用程序,Zhou Wu等人对六个流行的基于安卓系统的第三方市场进行了系统研究,发现了一种常见的“野外”做法,即重新打包合法应用程序并通过第三方市场发布重新打包的应用程序。他们实现了一个名为DroidMOSS的应用程序相似性度量系统,该系统应用模糊散列技术来进行本地化和检测应用程序重打包行为的变化。结果表明,在这些研究过的市场上托管的应用程序中有5%到13%被重新打包,进一步的人工调查表明,这些重新包装的应用程序主要用于替换现有的应用内广告或嵌入新广告以“窃取”广告收入。他们还确定了一些在重新打包的应用程序中植入了后门或恶意负载的案例。因此需要严格的审查程序,才能更好地监管第三方智能手机应用程序市场。基于这样的情况,有人提出了基于代码分析的重打包检测。但这种方法对高级混淆技术很不敏感,具有较大局限性,且效率不高[5]。因此Charlie Soh等人提出了一种基于对运行时收集的用户界面信息的分析来检测安卓应用程序重打包的新技术。他们通过利用安卓应用程序的多入口点功能,矿业轻松收集UI信息,而无需生成相关输入并执行整个应用程序,同时由于保留混淆技术的语义不会影响运行时行为,该方法具有一定的混淆弹性、较低的误报率和假阴性率。此外,还可有效地检测不同类型的重新包装攻击[6]。与之类似,Luka Malisa等人提出了一种使用动态代码分析从移动应用程序中提取到的用户界面,并分析提取的屏幕截图以检测移动应用假冒攻击的新方法。 由于检测是基于应用程序的视觉外观,其方法对于检测该类攻击十分有效,并且对诸如代码混淆的简单检测避免方法具有一定弹性。他们分析了超过150,000个移动应用程序,并检测到超过40,000个模拟案例。他们的工作表明,通过用户界面提取进行模拟检测在大规模上是有效和实用的[7]。无独有偶,Fangfang Zhang等人提出的ViewDroid,同样是一种基于用户界面的移动应用程序重打包检测方法。他们基于用户和应用程序之间的交互是通过用户界面或视图执行的这一观察,设计了针对安卓应用的新胎记即功能视图。并且其实验结果证明这个胎记可以以更高级别表征安卓应用程序,使其适应代码混淆。证明ViewDroid可以以极低的假阳性和假阴性率有效地检测大规模重打包的应用程序。同时,为了更有效地检测重打包应用程序,已经有人提出了细粒度和粗粒度方法来检测应用程序克隆。然而,采用复杂克隆检测算法的细粒度技术难以扩展到数十万个应用程序,而基于简单特征的粗粒度技术虽然可扩展但不够准确[8],于是Haoyu Wang等人提出了一种两阶段检测方法WuKong,其中包括粗粒度检测阶段,通过比较轻量级静态语义特征来识别可疑应用程序,以及细粒度阶段,比较仅在那些应用程序中找到的应用程序的更详细功能。为了进一步提高检测速度和准确性,他们还引入了一个基于自动聚类的预处理步骤,以便在进行应用程序克隆检测之前过滤第三方库。从五个Android市场收集的超过100,000个Android应用程序的实验证明了其方法的有效性和可扩展性[9]。
- Yue S , Sun Q , Ma J , et al. RegionDroid: A Tool for Detecting Android Application Repackaging Based on Runtime UI Region Features[C]// 2018 IEEE International Conference on Software Maintenance and Evolution (ICSME). IEEE Computer Society, 2018.
- A. Developers. (2018, March) App manifest overview. [Online]. Available: https://developer.android.com/guide/topics/manifest/manifest-intro.html
- A. Delelopers. (2018, Mar) Introduction to activities. [Online]. Available: https://developer.android.google.cn/guide/components/activities/intro-activities.html
- ——. (2016, Sep) Layouts. [Online]. Available: https://developer.android.com/guide/topics/ui/declaring-layout.htm
[5] Soh C, Tan H B K, Arnatovich Y L, et al. Detecting clones in android applications through analyzing user interfaces[C]//Proceedings of the 2015 IEEE 23rd International Conference on Program Comprehension. IEEE Press, 2015: 163-173.
[6] ZHANG F, HUANG H, ZHU S, et al. ViewDroid: towards obfuscation-resilient mobile application repackaging detection[C]//The 2014 ACM Conference on Security and Privacy in Wireless amp; Mobile Networks.2014: 25-36.
[7] Malisa L, Kostiainen K, Och M, et al. Mobile application impersonation detection using dynamic user interface extraction[C]//European Symposium on Research in Computer Security. Springer, Cham, 2016: 217-237.
[8] Zhou W, Zhou Y, Jiang X, et al. Detecting repackaged smartphone applications in third-party android marketplaces[C]//Proceedings of the second ACM conference on Data and Application Security and Privacy. ACM, 2012: 317-326.
[9] Wang H, Guo Y, Ma Z, et al. WuKong: a scalable and accurate two-phase approach to Android app clone detection[C]//Proceedings of the 2015 International Symposium on Software Testing and Analysis. ACM, 2015: 71-82.
资料编号:[193844]
