文献综述(或调研报告):
本文主要以安卓应用重打包的检测方法为本体对象,探究重打包检测方法的发展历史,重打包检测的实际意义与现实可行性。通过将各专家学者所研究出的检测方法进行展示与对比,以了解重打包检测技术的发展现状,为进一步研究作一简单的回顾性综述。
随着智能移动设备的流行和普及,移动应用得到了飞速发展,这些移动应用让人们的生活变得丰富多彩,但同时也带来了许多安全隐私问题。由于安卓应用市场的开放性和安卓系统底层技术平台的开放性,导致很多的不法分子为了获取不法利益,将恶意应用发布到应用市场,对用户的隐私和财产安全带来巨大的威胁。在众多的恶意应用中很多是以重打包应用的形式存在的。
Zhou等[14]发现86%的恶意软件样本是合法应用程序的重打包版本,并且在市场上架的应用程序中有5%到13%被重打包。Gibler等人的研究表明,重打包应用会给原始应用的开发者造成平均14%的广告收入的减少。而更加严重的是,一些恶意的攻击者可以将恶意的代码植入到合法的应用中并将其发布,造成更多的用户被感染。根据2013年3月发布的移动安全报告,重打包应用已经成为恶意软件的主要传播途径之一。这种行为不仅侵犯了开发者的合法权益,也威胁到了用户的安全和隐私。
所以,通过检测技术手段的提高来加强应用市场对应用的检测,在重打包应用上架之前就其扼杀来摇篮中,防止重打包应用的传播是一种限制重打包应用广泛传播的的强有力手段。
针对应用重打包的检测,已经有学者研究出了多种检测手段。
Hussain等[7]提出了基于指标的重打包恶意软件检测,并从信息论中引出了一种流行的度量,称为Kullback-Leibler Divergence (KLD)。与应用的原始版本相比,重打包应用的可用功能集可能有所不同,Hussain等通过提出一组操作码(Smali)来计算所需的集(作为KLD的一部分)来捕获差异,KLD用来计算两个给定概率组P与Q之间的分布差异或距离。该方法从已知的合法应用中提取一组操作码元素以构建P组,从待检测应用中提取一组操作码以构建Q组,通过两组操作码出现概率分布来计算差异。原始应用和重打包应用之间的KLD差异应该较高,两个合法应用之间的KLD应该较低。
Zhou等[14]人提出了DroidMOSS,一个用于检测第三方应用市场的恶意软件系统。该系统分别提取官方市场和第三方应用市场应用中的作者信息和代码指令,计算他们的hash值,并比较两者的相似度。DroidMOSS的缺点是需要官方应用来比较,一旦无法区分官方或第三方应用,该方法将失效。
而Chen等[8]提出了一种基于多用户写作的在线检测重打包应用的系统。用户通过系统的上传模块将应用程序的功能数据上传到服务器,而请求模块负责向远程服务器请求进行重打包检测。在客户端发出实际请求之前,该模块会记录其最近一次数据上传的时间,若此可无端从不上传数据或上传时间间隔大于设置的时间T,它将会触发上传模块进行上传数据。检测模块则在远程服务器中实现。检测的基本理论是认为安装重打包的应用的用户占少数。改模块使用请求模块发布的IMEIHashCode,检测模块在数据库中搜索以查找此手机中安装的应用程序及其功能数据。然后对于每个应用程序(A),它在同一个数据库中搜索以找到具有相同程序名称的功能数据集(Set1)。设置大小大于或等于阈值P2(P2ge;0.7)则应用A与大多数用户具有相同的开发者指纹,并且应用A被确定为原始应用。如果百分比小于或等于阈值P1(P1=1-P2-theta;1,theta;1是较小的校正值),那么应用A与大多数用户的开发者指纹不同,并且应用A被确定为重打包的应用。该方法无需额外的人工,系统就可以及时检测到新包装的应用,并且众多用户的协作和数据的不断更新使系统的抗攻击能力非常强。
Zheng[9]则提出了一个新的重打包检测方案:MysteryChecker,该方案使用不可预测的证明算法。应用程序提供方(可以使管理使用用户私人信息的应用程序的任何组织)提供的验证程序,将生成包括随机选择的加密功能的证明模块。然后,目标应用程序即包含检查原因程序本身完整性的模块或功能的应用程序,将接受证明模块而不是质询。验证程序将构建一个新的证明模块,该模块每次使用不同的证明算法和不同的哈希函数,而现有方法具有固定的内置证明算法。尽管攻击者可以分析目标应用中的证明模块,但目标应用每次用一个新的替换现有的证明模块,因此攻击者的分析变得无效。该方案的证明模块验证目标应用程序,证明模块通过使用目标应用的唯一信息来随机生成。目标应用或安卓密钥库的APK文件和哈希值都可以成为唯一信息。生成器随机选择信息并为证明模块构建转换函数链。转换函数链是转换函数的堆栈或序列。函数链的顺序和执行回合的大小也是随机的。生成且将转换函数链转换为证明模块。之后,当用户安装或启动实现MysteryChecker的应用时,它将检测到重打包的应用,此时目标应用会将应用程序信息发送到验证程序,验证者将证明模块发送到目标应用程序。目标应用执行证明模块,并向用户显示密钥,用户将相应值输入到网站进行双向身份验证后,可以根据从验证者受到的结果获得其完整性。每当用户尝试访问需要私人信息的服务器时,MysteryChecker都会检查应用的完整性。而目标应用访问验证程序时,验证程序都会向目标应用发送不同的证明模块。然后目标应用执行证明模块,并将相应的响应返回给验证者。如果响应正确,则验证者将回复Pass。如果不是,则验证者回复失败。该方案可以迅速检测到重打包的恶意软件的所有已知和位置变体,而现有的反恶意软件应用程序仅能检测到很少的变体。
以上是毕业论文开题文献,课题毕业论文、任务书、外文翻译、程序设计、图纸设计等资料可联系客服协助查找。