一种基于程序切片技术的安卓恶意软件检测方法

xiaoxiao2020-7-22  32

一种基于程序切片技术的安卓恶意软件检测方法【专利摘要】本发明提出一种基于程序切片技术的安卓恶意软件检测方法的设计方案。该方案从安装应用的安装文件APK出发,利用程序切片技术对应用的源代码进行分析,找出影响该应用安全性的关键结点,检测Android恶意软件,以达到减少人工操作的目的。经检验证明本发明技术1.能够可靠地检测Android恶意软件;2.基于程序切片的方法在准确性方面比传统的检测方法更具优势;3.从源代码的角度分析Android恶意软件,对于不断更新的病毒、木马变种,灵活性更强。【专利说明】一种基于程序切片技术的安卓恶意软件检测方法【
技术领域
】[0001]本发明给出了一种基于程序切片技术的安卓恶意软件检测方法的设计方案,主要解决程序切片技术应用于安卓平台所涉及到的关键结点发现问题,属于安卓系统的信息安全领域。【
背景技术
】[0002]随着移动互联网的飞速发展,具有移动操作系统的智能手机已成为目前移动终端发展的主流。智能手机不再是传统的通讯工具,像掌上电脑一样,智能手机已具有独立的操作系统,可以由用户自行安装或卸载如QQ、百度地图、手机安全卫士等第三方开发商提供的应用,不断地对手机的功能进行扩充。其中,基于Linux内核的Android移动终端操作系统发展最为迅速,由于其开源性,任何组织或个人编写的软件都可以上传到系统的应用商店,供用户随意下载并安装使用。因此,恶意软件也把用户的智能终端作为潜在的攻击目标。目iu,恶意扣费、隐私窃取、系统破坏成为恶意软件的主要危害。[0003]目前恶意软件检测方案主要有,基于特征代码的检测方案和基于行为的检测方案。基于特征代码的检测方案,通过检测文件是否拥有已知恶意软件的特征代码(如,一段特殊代码或字符串)来判断其是否为恶意软件。而基于行为的检测方案则依靠监视程序的行为(如,通过动态拦截或静态分析的方法获取程序的系统调用序列),与已知的恶意行为模式(如,恶意软件的系统调用序列)进行匹配,来判断目标文件是否具备恶意趋向。[0004]根据检测时机的不同,基于行为的检测方法可分为动态、静态和混合三种。动态行为检测在程序运行的过程中执行,静态行为检测在程序运行之前执行,混合检测则包括动态检测和静态检测。[0005]由于需要在程序运行时执行检测,动态检测对实时性要求较高,必须确保在恶意程序对系统产生损害前检测出威胁。通常的解决方法是利用沙盒、虚拟机来模拟执行程序,但这也带来更大的能耗。静态行为检测通过逆向工程手段,抽取程序的特征,如二进制序、操作码序列、函数调用序列等,在此基础上构建和还原程序的行为。与动态行为检测相比,静态行为检测能耗更低(无须沙盒、虚拟机),风险更小,对实时性要求更低(在程序执行前进行检测)。[0006]程序切片作为一种分析和理解程序的技术,通过分析程序语句之间的依赖性关系自动分解源程序。程序切片技术在软件工程领域有广泛的应用,例如程序理解、调试、维护、测试以及反向工程等,在信息安全方面也发挥着非常重要的作用。[0007]参考文献:[0008][I]A-DSchmidt,R.Bye,H-GSchmidt,J.Clausen,0.Kiraz,K.A.Yiiksel,S.A.CamtepejS.Albayrak.StaticAnalysisofExecutablesforColIaborativeMalwareDetectiononAndroid[C].The9thIEEEInternationalConferenceonCommunications,Dresden,Germany,2009:1-5.[0009][2]ZhengqiangChenjBaowenXu.SIicing0bject-0rientedJavaPrograms[M].ACMSIGPLANNotice,2001,33-40.[0010][3]ZhengqiangChen,BaowenXu.AnApproachtoAnalyzingDependencyofConcurrentPrograms[C].TheFirstAsia-PacificConferenceonQualitySoftware,APAQS2000HongKong,2000,34-39.【
发明内容】[0011]技术问题:本发明提出一种基于程序切片技术的安卓恶意软件检测方法的设计方案。该方案从安卓应用的APK文件出发,利用程序切片技术对应用的源代码进行分析,找出影响该应用安全性的关键结点,检测安卓恶意软件,以达到减少人工操作的目的。最终目的是设计一种基于程序切片技术的安卓恶意软件检测方法。[0012]技术方案:本发明结合程序切片技术,对Android应用的APK文件进行源代码分析。通过分析程序语句之间的依赖性关系,结合AndroidSDK类和函数字典,查询源代码中是否包含影响该应用安全性的API调用,并判断相应的函数调用参数,定义安全评价指标,寻找影响该应用安全性的关键结点,从而检测该Android应用中是否包含恶意行为,得出是否为恶意软件的结论。[0013]该技术方案主要有如下几个步骤:[0014]该检测方法从安卓应用的安装文件APK出发,利用程序切片技术分析应用的源代码,找出影响该应用安全性的关键结点,检测Android恶意软件,以达到减少人工操作的目的,该方法包含的步骤如下:[0015]I)获取Android应用的APK文件;[0016]2)反编译步骤I中的APK文件,得到.class文件;[0017]3)利用Java程序切片技术,获取步骤2)中生成的class文件的系统依赖图;[0018]4)设计安全评价指标,评估步骤3)中得到的系统依赖图中所有结点的重要性,安全评价指标包括权限控制mpAPI调用m2、插件管理m3,对上述指标进行加权,计算所有结点的安全影响因子m,其中m=αη^+βη^+yη^,系数α、β、y表示安全评价指标对安全因子的影响程度,满足α+β+y=I;[0019]5)设定安全影响因子的域值Μ,从目前的Google官方应用市场和第三方Android应用市场上已知安全性的应用中,随机选择50个安全应用和50个恶意软件,根据步骤4)的方法计算它们的安全影响因子,取其平均值设置为域值M;[0020]6)比较待测安卓应用的安全影响因子m与域值M,对步骤I中的Android应用进行安全分析。如果安全影响因子m大于域值M,则认为该应用存在恶意行为,即为恶意软件。[0021]有益效果:作为Android恶意软件的检测方法,该方案弥补了传统恶意代码检测技术的不足,提出了基于程序切片的源代码分析检测思想,证明了对Android应用程序反编译后的Java源代码经过程序切片、安全评价指标分析、关键结点分析以及安全分析,可以准确检测出耗费、隐私数据窃取等常见恶意行为,解决了对Android应用程序的逆向分析、恶意代码的语义理解,相关敏感数据的数据流追踪,用户提交行为的判别等关键问题。[0022]本发明与已有技术对比具有以下的一些特点和创新之处:[0023]高准确率:本发明的检测方法,通过程序切片的方法得到系统依赖图,进而分析该应用影响安全性的关键结点。系统依赖图是由一个程序依赖图和一组过程依赖图构成的有向、带标记的多重图,描述了程序的结构以及各种依赖关系,图中的结点表示程序的元素,边表示元素之间的关系。因此,由系统依赖图判断结点的安全性,相比于传统的检测方法更为准确。[0024]强灵活性:本发明的检测方法是从Android应用反编译后的源代码出发,由于源代码逻辑结构更为清晰,查找更精确,而引起恶意行为发生是相关的API系统调用导致的,而无论恶意行为如何变种,在源代码中都必须调用关键的底层系统API。对源代码进行检测,只需查找关键的系统API调用进行判断,对于不断更新的病毒、木马变种,并不需要频繁地更新相应的查找规则,灵活性强。【专利附图】【附图说明】[0025]图1是本发明的恶意软件检测方法的整体流程框图。[0026]图2是本发明的程序切片的系统依赖图的结构图。【具体实施方式】[0027]基于程序切片的恶意软件检测方法,从源代码分析开始,利用复杂网络的思想,结合AndroidSDK类和函数字典,具体实现步骤如下:[0028]步骤I获取Android应用的APK文件。APK文件是Android应用的安装文件,可以直接从Google官方应用市场和第三方Android应用市场(如安卓市场、应用汇等)下载。[0029]步骤2反编译步骤I中的APK文件,得到.class文件。利用Eclipse插件JadClipse将APK文件反编译,得到.class文件,即可方便地查看Android应用的源代码。[0030]步骤3利用Java程序切片技术,获取步骤2中生成的.class文件的系统依赖图。系统依赖图是由一个程序依赖图和一组过程依赖图构成的有向、带标记的多重图,描述了程序的结构以及各种依赖关系,包括数据依赖和控制依赖,并能表示参数传递。[0031]步骤4设计安全评价指标,评估步骤3中得到的依赖图中所有结点的重要性。安全评价指标包括权限控制mpAPI调用m2、插件管理m3,对上述指标进行加权,计算所有结点的安全影响因子m,其中m=αη^+βη^+gammaη^,系数α、β、gamma表示安全评价指标对安全因子的影响程度,满足α+β+gamma=1。[0032]步骤5设定安全影响因子的域值Μ。从目前的Google官方应用市场和第三方Android应用市场上已知安全性的应用中,随机选择50个安全应用和50个恶意软件,根据步骤4的方法计算它们的安全影响因子,取其平均值设置为域值M。[0033]步骤6比较待测安卓应用的安全影响因子m与域值M,对步骤I中的Android应用进行安全分析。如果安全影响因子m大于域值M,则认为该应用存在恶意行为,即为恶意软件。【权利要求】1.一种基于程序切片技术的安卓恶意软件检测方法,其特征在于该检测方法从安卓应用的安装文件APK出发,利用程序切片技术分析应用的源代码,找出影响该应用安全性的关键结点,检测Android恶意软件,以达到减少人工操作的目的,该方法包含的步骤如下:1)获取Android应用的APK文件;2)反编译步骤I中的APK文件,得到.class文件;3)利用Java程序切片技术,获取步骤2)中生成的class文件的系统依赖图;4)设计安全评价指标,评估步骤3)中得到的系统依赖图中所有结点的重要性,安全评价指标包括权限控制m1、API调用m2、插件管理m3,对上述指标进行加权,计算所有结点的安全影响因子m,其中m=αη^+βη^+yη^,系数α、β、y表示安全评价指标对安全因子的影响程度,满足α+β+Y=I;5)设定安全影响因子的域值Μ,从目前的Google官方应用市场和第三方Android应用市场上已知安全性的应用中,随机选择50个安全应用和50个恶意软件,根据步骤4)的方法计算它们的安全影响因子,取其平均值设置为域值M;6)比较待测安卓应用的安全影响因子m与域值M,对步骤I中的Android应用进行安全分析。如果安全影响因子m大于域值M,则认为该应用存在恶意行为,即为恶意软件。【文档编号】G06F21/56GK103971055SQ201410176158【公开日】2014年8月6日申请日期:2014年4月28日优先权日:2014年4月28日【发明者】张迎周,孙韦翠,仉雪玲,孙健,高海燕,汪洋,龙昊,丁磊申请人:南京邮电大学

最新回复(0)