7.4.3 移动端恶意代码检测技术

7.4.3 移动端恶意代码检测技术

1.移动恶意代码检测技术介绍

面对日益增多的恶意代码及其变种,如何快速有效地检测应用软件中的恶意行为是当前信息安全检测的主要挑战之一。主流的恶意代码检测技术包括基于特征码检测,基于代码分析检测和基于行为监控检测等。

(1)基于特征码检测

这种检测是基于已知恶意应用进行逆向分析后提取特征码进行的检测,其流程如图7.1所示。特征码可以唯一标识恶意代码,并且不会出现在正常软件内。特征码包含偏移地址和该地址的二进制信息,比如字符串、操作码、资源信息等。特征码往往需要手工处理分析得到,需要花费很长的时间和人力成本。由于高准确性和低误报率,特征码检测技术被安全软件广泛使用。但是,特征码检测的最大缺陷是无法检测未知恶意代码。而且,特征码检测对恶意代码的变种检测效果也不好,需要人工提取各种病毒变种的共有特征。随着恶意代码数目的增加,恶意代码特征库越来越大,扫描引擎的速度会降低,同时,恶意代码库会占用更多的空间。

图7.1 基于特征码检测流程

(2)基于代码分析检测

这种检测是在不运行代码的方式下,通过词法/语法分析,语言结构分析和数据流/控制流分析等技术对程序代码进行扫描分析的一种检测技术,通常分析检测流程如图7.2所示。首先,系统以Android应用程序APK文件作为输入,通过代码反编译模块进行反编译,获得Android源代码;其次,源代码分析模块对源代码进行词法/语法解析,语言结构分析和数据流/控制流分析,得到敏感数据以及API调用;最后,安全分析模块根据已制定的安全规则,对敏感数据以及API调用进行分析,确定是否为恶意行为,基于代码分析检测可以对安全规则和安全分析模块进行启发式恶意代码检测扩充,用于检测未知恶意行为。基于代码分析检测自动化程度高,可以完整覆盖较全的检测路径和部分未知恶意行为,但是误报率较高,并需要对检测结果进行核验。

图7.2 基于代码分析检测流程

(3)基于行为监控检测

这种检测是利用程序执行过程中的行为特征作为恶意代码判定的依据,检测流程如图7.3所示。与特征码检测时提取静态的字符串不同,行为特征是携帯动态信息和语义理解的复杂多变的数据结构。使用不同语言编写的程序可能拥有相同的行为特征,所以基于行为特征的恶意代码描述不再是针对一个独立的恶意代码程序,而是针对具有类似行为的一类恶意代码集合。恶意代码的传播、隐藏,系统破坏及信息窃取等功能在程序运行时的行为特征中必将有所体现,这些行为特征往往比较特殊,可以用于区别恶意代码和正常程序。恶意代码主动防御技术,就是基于对进程和行为的全程监控,一旦发现触犯恶意规则的行为,则发出警告。行为监控往往需要借助沙盘和虚拟化等技术,以确保恶意代码执行过程中不会对分析系统造成破坏,并且方便将恶意代码清除或将系统还原到干净的状态。基于行为监控的检测降低了恶意代码检测误报的风险,但是由于针对特定行为特征监控,基于行为监控的检测增加了检测的漏报率。同时,基于行为监控的检测处理速度远低于特征码检测。

图7.3 基于行为监测流程

2.移动恶意代码检测最新研究

随着恶意代码数目的增加,未知恶意行为的出现,以及检测躲避技术的应用,恶意代码检测系统需要完成更多更复杂的任务。上述各种恶意代码检测技术各有优缺点,因此综合使用上述恶意代码检测技术的基于多类特征的Android应用恶意行为检测系统成为当前实际应用主流。与此同时,人工智能系统越来越多地被引入恶意代码检测领域,为恶意代码检测带来了新的思路和方法。目前,主流的应用于恶意代码检测领域的人工智能技术包括教据挖掘和机器学习。

数据挖掘是指从数据库的大量数据中揭示出隐含的、先前未知的并有潜在价值信息的非平凡过程。数据挖掘是一种决策支持过程,它主要基于人工智能、机器学习、模式识别、统计学、数据库技术等,能高度自动化地分析数据,做出归纳性的推理,从中挖掘出潜在的模式,帮助决策者做出正确决策。由于恶意代码隐藏于应用程序当中,应用程序本身代码量就已经很大,当前应用程序总量也很多,因此数据挖掘是最适合恶意代码检测的技术之一。事实上,数据挖掘早已应用于恶意代码检测领域,其主要思想是:首先,提取恶意代码和正常程序的特征,提取的特征可以是文件的静态特征,也可以是文件执行时的动态特征,对特征进行编码,构成恶意代码特征集合和正常文件特征集合;然后,基于数据挖掘算法对分类器进行训练;最后,进行恶意代码检测效果的测试。

机器学习研究计算机怎样模拟或实现人类的学习行为以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。机器学习从研究人类学习行为出发,研究一些基本方法(如归纳、一般化、特殊化、类比等)去认识客观世界,获取各种知识和技能,以便对人类的认识规律进行探索,深入了解人类的各种学习过程,借助于计算机科学和技术原理建立各种学习模型,从而赋予计算机系统学习能力。用于恶意代码检测领域的机器学习主要思想是:首先,提取恶意代码和正常程序的代码做预处理并形成特征;其次,根据特征创建恶意代码检测模型;再次,机器学习算法分析收集到的数据,分配权重、阈值和其他参数达到学习目的,形成最终检测规则库;最后,进行恶意代码检测效果的测试。

基于人工智能的恶意代码检测技术同样遇到许多问题:人工智能系统本身系统复杂,理论算法还不是非常成熟;不像恶意代码库待征,未知恶意代码判定标准不确定,给检测系统带来很大困难;基于人工智能的恶意代码检测系统往往系统庞大,执行效率远低于传统检测系统。因此,真正基于人工智能的恶意代码检测还有很长的路要走。

移动恶意代码检测技术是稳固移动互联网产业的根基,是促进移动互联网产业健康稳定发展的动力。通过移动应用软件安全评测技术及工具的理论研究和产品研发,建立移动应用软件安全检测的技术体系、工具及实验环境,建设第三方权威测试平台,对移动应用软件产业链的形成与发展具有重要的推动作用。同时,应用软件的安全性与用户经济利益紧密关联,只有具备科学、权威的恶意代码检测工具,才能帮助构建一个用户可信任的移动互联网应用软件使用环境,对安全要求高,经济附加值高的移动应用软件才可以推广和应用,才能真正繁荣发展移动互联网。