论文部分内容阅读
随着移动设备融入日常生活,移动应用程序可以访问个人数据和网络,从而造成了数据泄露威胁。因此,有必要设计有效的技术来分析和检测这些威胁。目前,针对Android恶意应用程序的污点流分析主要分为静态和动态两种。静态分析基于在不执行代码的情况下提取的特征,而动态分析则基于在代码执行时提取的特征。通常,静态分析更有效,它详尽地检查所有数据流并精确定位有问题的数据流,但是,静态分析会因过度计算而产生误报,或者会因应用程序在非运行时隐藏恶意性而产生漏报。动态分析可以处理在应用程序运行时发生的动态代码加载和系统调用,但是耗时且占用系统资源。在本文中,我们提出了一种动静态污点流的分析方法,它基于开源解决方案,可以帮助安全专业人员更好地理解Android环境下的威胁分析过程。本文提出的方法首先进行静态污点流分析,筛选出有可疑敏感隐私泄露的应用程序,接着自动化上传至沙盒运行应用程序,使用工具进行分析,得到记录文件,确认应用程序中的恶意行为,并将结果通知给用户。静态污点流分析部分基于FlowDroid,它是一种针对Android应用程序新颖且高度精确的静态污点流分析工具。我们在进行控制流和数据流的分析、可达性分析的基础上,提供了过程内和过程间的分析,以及对应的intra-procedural和inter-procedural方法。同时,加入了多种漏洞的分析,包括API误用、权限提升、拒绝服务攻击、FakeID等,还可以将多个.dex文件合并进行分析,并对它的精度及效率作了一定优化。另外,我们在结果部分给出了应用程序恶意性程度的度量标准。在动态污点流分析部分,我们使用了TaintDroid,TaintDroid是一个高效的系统级动态污点追踪和分析系统,能够同时追踪多个敏感隐私数据源,并实时反馈给用户还有安全服务商应用程序在做什么。最后,我们利用ADB将动静态污点流分析部分进行结合达到自动化。本文在实验部分进行了多种不同数据集的测试。对1146个正常样本集和1260个已知恶意样本集在本文框架和FlowDroid以及FlowDroid和TaintDroid的组合上分别进行了实验,结果表明本文所提出的方法明显降低了误报率和漏报率。本文所提出的方法在InsecureBank上也有着良好的表现。另外,在DroidBench上进行了本文框架和一组现下流行工具的对比实验,本文框架的精确率达到了96.49%,比其他工具平均高0.12,同时,召回率达到了95.65%,比其他工具平均高0.45,F1-Measure的值也达到了最优。综合实验结果来看,本文所提出的方法能有效的提高准确率、精确率、召回率、以及F1-Measure的值,证明了基于动静态污点流的分析方法是可行高效的。