摘要:

Android系统由于其秉承开放特性,导致其比iOS等封闭系统更容易受到攻击,同时巨大的市场份额也让攻击者觉得有利可图,因此恶意软件已在Android系统上泛滥成灾.对Android系统下恶意软件检测是一个值得研究的课题,而现阶段的研究大都是在恶意软件感染前对其进行检测,不能有效检测出已感染的Android设备中的恶意软件.本文致力于研究如何检测已感染的Android设备中的恶意软件.通过对Android设备的内存镜像进行分析,找出其中的恶意软件,包括具有进程隐藏行为的系统级恶意软件和具有恶意行为的Android应用.对于隐藏进程的检测,提出了一种通过对比进程号列表的检测方法.通过分析Android系统的内存镜像,找到多种不同视图下的进程列表,对比其中的不同进而找到其中的隐藏进程.对于可疑应用的检测,提出了通过检测网络链接,私有链接库以及结合Android系统的权限机制的鉴别方法.最后提出了基于API调用的可疑应用分类检测方法:以逆向技术获取Android应用可执行文件中的敏感API调用,并当作应用的行为特征,使用装袋集成概率神经网络(Bagging_PNN)进行可疑应用的分类检测.一些恶意应用会采用加壳,加密等方法防止逆向分析,导致没有办法提取可疑应用中敏感API的调用序列,使得静态行为检测方法失效.针对此问题,本文结合具体的检测环境,提出了一种从进程核心转储中暴力搜索.dex文件的方法.对前面检测出的所有可疑应用,通过暴力搜索.dex文件然后逆向提取敏感API,同时对大量已知分类样本采用Bagging集成的方式训练出不同的PNN,最后使用训练好的Bagging_PNN进行分类,检测出真正的恶意应用.最后进行了实验验证,结果表明:基于进程对比的隐藏进程检测方法能够找到所有不是采用直接修改内核对象方法实现的隐藏进程,以及所有处于就绪状态的隐藏进程;暴力搜索.dex文件的方法能够抽取出所有可疑应用的.dex文件,并成功提取敏感API调用次数;在可疑应用分类检测上,对恶意应用的识别率达到了87.5%.可以看出,本文提出的方法正确的检测出了Android设备中已感染的恶意软件,通过针对性的查杀,可以及时终止感染设备继续遭受恶意软件的攻击.