论文部分内容阅读
随着科技的高速发展,智能手机已成为人们必不可少的生活用品。Android系统由于平台的开放性获得了很多开发者和厂商的支持,Android应用的范围不断扩大。随着应用和用户不断增多,Android应用面临的攻击面越来越多。比如恶意代码拥有某些权限执行读取用户敏感数据,并发送到服务器端;又比如开发者不正确使用ICC通信机制发送敏感数据,攻击者通过伪装接收者窃取敏感信息。如何判断Android应用是否安全,是否进行恶意攻击,是用户和开发者急需解决的问题。1、基于上述App恶意行为问题和ICC机制被恶意利用问题,本文分析了现有的静态分析技术和动态检测技术。针对动态检测比较复杂,可能存在恶意绕过检测机制等原因,本文提出来基于机器学习和基于形式化的两类静态分析技术。2、针对App中泄露用户敏感数据等恶意行为,由于其存在恶意特征,本文选择机器学习技术对其恶意特征进行检测。分析方案首先根据已知善意和恶意样本提取权限特征和API特征,然后利用多种机器学习方法训练分类器,再用分类器判别未知样本是善意程序还是恶意程序,最后选择具有最高准确率的分类器。3、App中除了攻击者恶意编写的代码之外,还可能存在不正确使用各类机制所造成的威胁。为了检测开发者不正确使用ICC机制构成的潜在攻击路径,需要分析其App组件内部和组件间数据流,本文选择形式化技术进行检测。该方案首先在FlowDroid和Soot的基础上做静态分析,获取利用ICC通信的组件、意图、权限等模型信息和敏感流信息;然后根据形式化语言对Android ICC通信机制以及App中提取的实体建立形式化模型;再根据组件间通信常见攻击模型,建立模型检测语句,利用分析器执行模型检测;最后将检测的潜在攻击路径反馈给用户。4、为了找到准确率最高的分类器,本文选择8种不同的机器学习算法以及3种不同的静态特征训练不同的分类器,实验表明随机森林分类器达到了一个较高的准确率(98.08%)。同时,为了验证形式化方案的有效性,本文进行自动化测试、正确性测试、性能测试。测试表明,这个方案可以自动检测出多个应用程序之间利用组件间通信的攻击路径,提供检测报告,方便用户识别这些应用程序的危险性,但在性能方面还需优化。目前,基于Android的安全分析技术的研究仍然存在很多挑战,本文所提出的方法给广大研究者提供了新的思路,为增强安全分析的研发提供理论和技术支持。