论文部分内容阅读
随着智能手机上处理的任务越来越多,存储于手机中的隐私数据也越来越多。这些隐私数据包括银行卡信息、联系人信息、日程安排、浏览历史和电子邮件等。目前,智能手机中Android操作系统的市场占有率最高。开发人员利用Android平台的开放性和扩展性在不同应用市场发布数百万应用软件来满足用户需求。与此同时,存储于手机中的敏感数据也吸引了很多恶意攻击。近年来,Android恶意软件飞速增长并日益演化,导致Android用户权益面临极大挑战。典型的安全威胁包括隐私泄漏、资费消耗、远程控制、重打包、特权提升和组件劫持等。本文在深入调研现有Android安全研究方法的基础上,发现当前针对Android应用软件的信息流安全分析方法和恶意软件检测方法仍存在重要安全问题:首先,现有信息流分析方法无法区分恶意隐私收集与合理敏感数据使用,影响恶意隐私泄漏检测的精确性;其次,现有基于机器学习的恶意软件检测方法从已知良性与恶意软件集训练检测模型,因而无法有效识别与已知恶意软件行为差异较大的新型恶意软件;第三,Android恶意软件日益复杂并广泛采用字节码加密、反射和动态加载等代码混淆技术,使得现有静态分析方法失效,需要研究基于动态行为的恶意软件检测方法。针对以上问题,本文提出了基于敏感数据传播路径的异常信息泄漏行为检测,基于关键数据流的新型恶意软件识别和基于Stacking模型的恶意软件动态检测,主要贡献如下:(1)针对现有信息流分析方法无法区分恶意隐私收集与合理敏感数据使用的问题,本文提出了基于敏感传播路径的异常信息泄漏行为检测方法。该方法采用异常信息泄漏行为检测方法以检测恶意软件中的隐私收集行为。通过分析比对,本文发现并验证了良性与恶意软件之间的敏感数据传播路径的频数存在普遍差异,并且基于频数差异提出了算法RValueCal。该算法可自动为每条敏感数据传播路径计算风险权值,而且这些权值可用于指导恶意软件中异常信息泄漏行为的识别。本文首次发现敏感数据传播路径的频数可影响恶意软件的检测精度。实验结果表明,RValueCal算法增加了恶意与良性软件的差异,并且提高了MudFlow的恶意软件检测精度6.54%。(2)针对现有基于机器学习的恶意软件检测方法从已知良性与恶意软件集训练检测模型,无法有效识别与已知恶意软件行为差异较大的新型恶意软件的问题,本文提出了基于关键数据流的新型恶意软件识别方法。该方法采用异常检测算法只从良性软件的敏感数据流训练检测模型,从而可基于异常数据流标识潜在的新型恶意软件。本文发现敏感数据流在良性与恶意软件中分布不均匀,并且提出基于分布差异的特征选择算法CFlowSel以选择关键数据流。实验结果表明,CFlowSel算法的性能优于已有特征选择算法Mutual Information和Chi-Square,并且提高了MudFlow恶意软件的检测率9.07%。(3)针对Android恶意软件日益复杂并广泛采用字节码加密、反射和动态加载等代码混淆技术,使得现有静态分析方法失效问题,本文提出基于集成学习的恶意软件动态检测方法EnDroid。该方法实现了细粒度的动态分析以准确刻画应用软件行为,并且缓解了代码混淆技术的危害。动态分析涵盖系统级行为追踪以及常见的应用级恶意行为如隐私窃取、系统事件监听、资费消耗、代码加密和动态加载等。EnDroid采用特征选择算法来移除冗余、不相关的特征以提取关键特征,而且这些关键特征有助于实际中应用软件风险行为的识别。EnDroid设计了基于已有集成学习算法的Stacking模型,该模型采用元分类器以基于性能差异来组合不同类型的基分类器,从而提高了现有模型的泛化能力。实验结果表明,EnDroid实现了97.61%的恶意软件检测率与94.50%的恶意软件家族分类准确率,并且提高了现有流行工具Maline的检测精度5.33%。