周一至周五
9:00—22:00
    
      联系电话:400-037-0800

Android重包装应用程序静态分析系统的设计

杂志之家论文发表、写作服务和杂志订阅支持对公帐户付款!安全又可靠!


申明:本网站内容仅用于学术交流,如有侵犯您的权益,请及时告知我们,本站将立即删除有关内容。

 

  摘 要:本文以Android重包装应用程序的检测为研究内容,通过对当前主流的静态分析技术进行对比与总结,提出了一种基于众包的Android重包装应用程序静态分析方法。该方法选取能表征Android应用程序唯一性的信息作为特征字符串,利用众包构建Android应用程序注�杂胧�据库服务平台,对比签名鉴别重包装应用程序。最后为验证所提出方法的有效性,构建原型系统进行实验测试。实验结果表明,本方法能够有效进行Android重包装应用程序的静态分析。
中国论文网 /8/view-10711398.htm
  关键词:Android应用程序 重包装 静态分析 众包
  中图分类号:TP399 文献标识码:A 文章编号:1672-3791(2017)10(b)-0119-03
  1 相关技术研究
  现在的Android恶意应用程序分析方法主要是利用动态分析技术或静态分析技术进行恶意应用的检测。Android恶意程序的各种攻击方式中,应用程序重新打包是极为常见的手段。文献[1]研究发现,当攻击者通过反编译手段获得一个良性Android应用程序的源码后,可以实施的恶意操作通常有三类。
  (1)注入广告SDK。向原程序中加入广告SDK,实现广告收入。
  (2)替换应用内广告。替换掉原程序作者在其应用中设置的广告SDK的发布者ID,实现窃取程序开发者的广告收入。
  (3)添加恶意代码。在大体了解代码流程的基础上,加入恶意代码片段,使得用户执行过程中触发恶意操作。
  前两种恶意操作方式主要是对知识产权的侵害,后一种的危害则是十分巨大的。攻击者在实施恶意操作后只需要重新打包签名形成新的安装包APK文件就可以上传至应用商城。用户看到的貌似是正常的一款应用程序安装包,安装后也能使用程序功能,但Android终端实际上已经遭到了恶意程序的入侵。文献[1]研究显示许多流行的Android应用程序包括QQ、AngryBirds等都已经出现了被重包装的情况。
  由于静态分析不需要运行程序,可以实现代码的全覆盖以及没有运行时开销等优势,特别适合进行Android重包装应用程序的分析。文献[2]就设计了一种DroidMOSS检测系统,对官方来源的应用实现反编译获得源码,然后采用模糊哈希技术对程序切片提取Android应用行为模式作为特征形成指纹,构建应用数据库进行分析。该研究发现第三方应用商城中至少有5%至13%的Android应用存在重新包装的情况,多数植入了恶意代码和添加了广告SDK,情况不容乐观。但是该方法对于恶意攻击者可以在代码中加入无效冗余代码以降低形成指纹的相似性来逃避分析和可以进行高度的混淆加密进而导致无法生成指纹的情况没有考虑到。
  文献[3]则综合选取了Android应用程序的签名、权限和可执行文件作为对比的依据,指标具有综合性。但是该方案仍然存在文献[2]中需要在源代码中嵌入代码的缺点,适用性比较受限。
  综上,如何快速、有效地分析Android平台中重包装应用程序仍是亟待解决的问题。主要难点就是如何快速判断两个安装包APK文件是属于同一个程序。事实上,只要能够知道两款软件其实是一个程序,那么比较一下程序的开发者签名,就能够立即得知其中是否存在重包装的情况。
  2 基于众包的Android重包装应用程序静态分析方法
  2.1 众包机制
  众包(crowdsourcing)指的是一个公司或机构把过去由员工执行的工作任务,以自由自愿的形式外包给非特定的大众网络的做法。它本身描述了一种新的商业模式,现在也指从广泛群体,特别是在线社区,获取所需想法、服务或内容贡献的实践。在软件安全性分析领域,众包多用来收集数据,需要社会成员广泛的参与,可以取得很好的效果[4]。但与此同时,众包也会带来很大的隐私争议[5]。
  近年来,文献[5]都提出使用众包(crowdsourcing)机制来参与Android应用程序的分析,希望通过监测大量真实的用户使用程序的数据,来获取充足特征值判断程序的性质。本文即是基于此提出了一种基于众包的Android重包装应用程序静态分析方法,使用众包机制搜集信息来判断程序的一致性,以此来快速分析程序重新打包问题,并设计了一种高效的重包装分析原型系统。
  2.2 特征获取
  分析Android重包装应用程序首要解决的问题就是如何判断两个安装包APK文件是属于同一个程序。判断安装包APK文件是否属于同一个程序,Android本身是提供现有机制的。Android应用程序发布时会生成一个APK文件,即应用程序的安装文件,其本质上是一个zip格式的压缩包。除了源代码及资源文件,它还包含名为AndroidManifest.xml的清单文件,以向Android系统声明必要的信息,见图1。
  Android系统使用包名(Package Name)来唯一标识一个应用程序,包名在开发时由开发者指定,位于清单文件AndroidManifest.xml的“package”属性。包名相同的程序可以升级覆盖原先版本的程序。除了包名,AndroidManifest.xml清单文件Int类型的android:versionCode主要用于版本标识,确定升级信息。String类型的android:versionName用于显示给用户版本号信息。
  另外,Android系统使用签名在用户、程序和进程之间建立信任关系,对应用程序的完整性和发布机构的唯一性进行校验。一般使用JDK自带的Keytool和Jarsigner给程序签名。Keytool是个密钥和证书管理工具。Jarsigner利用密钥仓库中的信息来对APK文件进行签名。如果不同开发者使用了相同的包名,签名不同的程序不会被升级替换,这样可防止已安装的应用被相似的恶意软件通过升级替换掉。开发者持有签名的私钥,APK文件内META-INF\CERT.RSA存放公钥,通过比较公钥可以判断私钥是否一致。因此可以提取以上信息,组拼成字符串来唯一标识一个Android应用程序。

转载请注明来源。原文地址:https://www.xzbu.com/8/view-10711398.htm


 
中国论文网—— 论文代发/ 行业知名品牌 电话:400-675-1600
中国互联网违法和不良信息举报中心| 网络110上海网警在线|关于我们|闽ICP备13016544号-6
【xzbu】郑重声明:本网站资源、信息来源于网络,完全免费共享,仅供学习和研究使用,版权和著作权归原作者所有,如有不愿意被转载的情况,请通知我们删除已转载的信息。
xzbu发布此信息目的在于传播更多信息,与本网站立场无关。xzbu不保证该信息(包括但不限于文字、数据及图表)准确性、真实性、完整性等。