论文部分内容阅读
随着目前移动互联网技术的高速发展,智能移动终端在消费市场中迅速崛起,成为人们生活中不可或缺的生产生活工具。安卓(Android)作为一。款面向移动端的智能操作系统,自2011年以来已经成功地取代了其它手机系统,并且常年在全球移动操作系统市场中占据统治地位。截止2020年5月,安卓操作系统的市场占有率超过70%,已然走入千家万户并且悄无声息地改变着人们的生产生活方式。与此同时,由于安卓操作系统在系统安全策略以及应用商店的管理方面均存在较多的缺陷,安卓应用相关的安全事件频繁见诸报端,例如恶意扣费、隐私窃取、资费消耗、系统破坏、广告欺诈等。这对安卓手机用户的隐私和财产安全构成了极大的威胁,也对安卓恶意应用检测技术提出了更高的要求。本文在对安卓恶意应用研究的过程中,发现相当一部分恶意应用采用混淆、加密、加壳以及反调试等技术对抗反病毒检测引擎。在一定程度上,这些技术可以防止恶意应用自身逻辑被逆向分析,从而躲避反病毒检测引擎的筛查。其中,加壳技术通常是目前最为有效的对抗措施之一,加壳技术往往会对应用的原始代码进行加密,并且只在运行时通过动态加载的方式还原代码。常规的恶意应用检测方法并没有考虑加壳技术带来的挑战,这就导致了这些检测方法往往无法取得令人满意的检测结果。本文针对安卓恶意应用检测时出现的恶意应用加壳问题进行系统而又深入地研究,包括安卓壳程序识别、安卓壳程序脱壳以及可对抗加壳技术的安卓恶意应用检测方法。并且本文针对每一个研究问题都提出了对应的解决方法。本文具体工作与贡献如下:(1)针对目前安卓壳程序对大规模安卓应用的自动化静态分析产生干扰,且现有壳识别方法识别率不高等问题,本文提出一种基于加权熵的安卓壳识别方法。该方法使用加权熵技术提高壳识别方法的准确率。此外,由于标识符混淆技术可以显著改变应用程序的信息熵,因此,该方法还额外采用多种独立于信息熵的特征,确保检测结果的稳定性。该方法通过模型选择以及超参数调优这两种模型优化方法,最终确定最佳的分类模型。通过实验,本文证明了加权熵可以显著提高壳程序的识别率。并且通过对比,本文提出的安卓壳识别方法要明显优于其他同类研究方案。(2)针对目前安卓壳程序防御手段多样化,且现有脱壳框架开发复杂、脱壳成功率低的问题,本文提出了一种基于双层架构设计的安卓动态脱壳方法。该方法能够有效破解安卓壳程序的多种防御手段,并且实现快速开发迭代。该方法采用双层架构设计,这种分层式的设计能够降低脱壳器中不同模块之间的耦合度,使得更新脱壳逻辑时不需要重新编译安卓系统的内核,甚至不需要重启系统。此外,这种分层式架构设计使得脱壳器能够兼容不同版本的安卓系统,并且能够通过快速升级以适应最新的加壳技术。为系统性验证脱壳器的性能,本文提出第一个用于评价脱壳器性能的指标IRR(Item Recovery Ratio)。通过实验,本文提出的安卓脱壳方法要明显优于其他同类研究方案,并且能够破解目前市面上主流的安卓加壳技术。通过实践,本文提出的方法可以应用于安卓恶意应用检测、安卓应用漏洞挖掘等相关研究领域。(3)针对目前安卓恶意应用使用加壳技术隐藏其恶意代码逻辑,导致现有基于静态分析技术的恶意应用检测方法代码覆盖率降低的问题,本文提出了一种可对抗加壳技术的自动化安卓恶意应用检测方法。该方法将壳识别技术、动态脱壳技术以及基于静态分析方法的恶意应用检测技术相结合,从而对加壳的安卓恶意应用实现自动化分析。一方面,该方法使用静态代码分析技术保证了在处理大规模应用检测时的效率;另一方面,该方法使用壳识别技术过滤出加壳应用,并且使用动态脱壳技术还原其源代码,从而提升恶意应用检测系统的代码覆盖率。此外,该方法还通过特征选择、模型选择以及超参数优化的方式,最终确定最佳的分类模型。通过实验,本文验证了脱壳技术可以显著提高恶意应用检测的准确率。并且通过对比,本文提出的安卓恶意应用识别方法要优于其他同类研究方案。