论文部分内容阅读
摘 要:文章对现有的Android程序的行为特征提取技术和恶意软件检测算法进行研究。由于现有Android恶意软件静态检测模型主要是对Android程序的行为特征即敏感api和敏感权限的调用进行数据挖掘,从而产生能够对Android程序进行检测分类的分类器。通过对Android行为特征提取和数据挖掘算法的改进和创新是未来Android恶意软件静态检测的方向。
关键词:Android恶意软件;静态检测;数据挖掘;机器学习
最近几年,随着移动互联网的迅猛发展,以及智能手机的生产成本不断降低,智能手机在人们的日常生活和工作中扮演的角色越来越重要,在移动互联网时代,智能手机将成为访问互联网的主要设备。
智能手机像PC一样拥有自己独立的操作系统,而不再是传统意义上的单纯的语音通讯设备,用户可以根据自己的喜好随意的安装和卸载各种应用程序。浏览网页、娱乐办公、购物支付、社交聊天,可以说智能手机已经渗入到人们生活的方方面面,同时,也给人们带来了实实在在的方便。
最新发布的数据显示,高达97%的移动恶意软件将Android设备列为攻击目标,这也就意味着其他平台遭到恶意软件攻击的几率是相当低的,所以Android的安全性已经到了不得不改善的地步。毫无疑问,安全问题将会是Android未来几年的发展中所要面临的重要问题。
一、Android程序行为特征提取
(一)dex文件逆向分析
现有的Android程序行为特征提取大多都是基于dex文件逆向,由于Android采用Dalvik虚拟机作为平台运行环境,dex文件就是Dalvik虚拟机的可执行文件。通过dex文件可以得到Android程序的内部信息,阅读反汇编形成的Dalvik字节码可以通过IDA PO分析dex文件。或者通过文本编辑器baksmali反编译生成的smali文件。也可以利用反编译生成java源码,可以用dex2jar生成jar文件,然后使用jd-gui阅读jar文件代码。
(二)ARM汇编逆向分析
由于现在恶意软件的不断进化,代码混淆技术的不断发展,使得应用层代码的分析越来越疲软。对于使用ARM处理器的Andorid手机来说,它终将会生成对应的ARM elf可执行文件。对于底层的代码逆向更容易突破各种恶意软件的逃避检测机制,但是分析ARM elf可执行文件的难度较大,要求具有基本的ARM反汇编代码阅读能力,所以目前使用较少,但是这种逆向分析机制可能是Android恶意软件检测的一个突破口。
(三)行为特征提取
有了大量逆向工具的帮助,由于一个Android程序反编译过后的代码量会非常庞大,所以行为特征提取的重点在于获取我们想要的关键代码。关键代码的识别需要对Android应用层代码非常熟悉,可通过程序的反馈信息、特征函数定位关键代码,也可以通过代码注入观察程序运行到指定位置的状态数据,或是跟踪栈信息,观察函数的调用关系。对于数据的抓取,大多需要自己编写如python脚本的爬虫程序,获取关注的特征信息,为后面的检测算法提供支持。
二、Android恶意软件检测算法
对于Android 的行为特征提取方法固定,而将行为特征数据用于数据挖掘是Android恶意软件静态检测的核心。所以算法的选取是训练产生好的检测分类器的关键,下面举几种适合用于Android恶意软件检测的算法进行简单介绍。
(一)关联规则挖掘
关联规则挖掘发现大量数据中项集之间的联系,可以对大量样本(已知其良恶性)Android程序的敏感api和敏感权限进行频繁集的获取。每一个 Android 程序均可以映射为一个包含所有敏感 API 调用的事务, 每个API为一个项, API 项的集合为项集,最小支持度为 min _ suppor。最著名的关联规则发现方法是R.Agrawal提出的Apriori算法,其核心思想是通过对数据样本的多次扫描来计算项集的支持度,发现所有的频繁项集从而生成关联规则。
找出频繁项集的关键是连接和剪枝两步,安卓的行为特征数据适合于使用频繁集关联的规则,但缺点也比较明显,需要多次扫描事物数据库,可能产生庞大的候选集,并且在频发项集长多变大的情况下,运算效率降低。
(二)贝叶斯分类算法
贝叶斯分类器诸多算法中朴素贝叶斯分类模型是最早的,也大量利用于Android恶意软件检测当中。根据贝叶斯公式能够获取训练样本的先验概率,通过选取合适行为特征的Android程序属性来计算样本的后验概率。在Android恶意软件检测中使用贝叶斯分类算法的关键在于关键属性的选取,需尽量保证其独立性。
大量研究表明可以通过各种改进方法来提高朴素贝叶斯分类器的性能,在朴素贝叶斯分类器的基础上构建属性间的相关性,如构建相关性量度公式,增加属性间可能存在的依赖关系,或是构建新的样本集合,在样本集合之间存在较好的类条件独立关系。
在满足以上条件的情况下,贝叶斯算法分类性能较好,贝叶斯分类模型还具有形式简单、可扩展性很强和可理解性好等优点,适合作为安卓恶意软件算法的入门。
(三)支持向量机(SVM)
在统计学习的理论基础上,SVM成为了一种专门研究有限样本预测的学习方法,与传统统计学相比较,SVM算法没有以传统的经验风险最小化原则作为基础,而是建立在结构风险最小化原理的基础之上,在模型的复杂性和学习能力之间寻求最佳折中,即在所有的超平面中,最大间隔分类器要寻找一个最优超平面。
Android恶意软件检测使用SVM的基础是提取关键特征值进行规则的线性可分,对特征属性进行线性回归,建立回归分析方程,即回归分析预测。SVM的优点在于基本不涉及概率测度及大数定律,不同于现有的统计方法,避开了归纳到演绎的传统过程,实现了高效的从训练样本到预报样本的转導推理,大大简化了通常的分类和回归等问题。 Android惡意软件检测使用SVM能够具有较高的检测准确率,但是对大规模训练样本难以实施。对于恶意软件检测可用于一类恶意家族或一种类型的Android程序的模型建立,对于SVM的改进可以通过多个二类SVM的组合或构造多个分类器的组合来解决SVM的固有缺点。
三、Android恶意软件检测基本模型
对于现有的Android程序行为特征提取技术和Android恶意软件检测算法,Android恶意软件检测模型可归纳于图1所示。
首先需要收集大量的恶意软件样本和正常软件样本,正常软件样本容易收集,恶意软件样本可以从VirusShare组织获取,然后对样本提取行为特征属性,根据不同的分类算法制定不同的提取方案,将行为特征抽象化为算法的可用数据类型,然后通过数据挖掘产生分类器,最终通过多次的训练达到能够检测恶意软件的目的。 四、结语
本文给出了Android恶意软件检测的基本模型,描述Android行为特征获取方法,简要说明了各种检测算法如何与Android行为特征相结合。对于静态Android恶意软件检测,基于行为特征提取和机器学习和数据挖掘算法结合是目前的主流方案。检测方法智能化,能够对未知恶意软件进行检测是弥补Android安全机制最有效的措施,也是Android恶意软件检测以及整个安全行业的发展方向。
参考文献:
[1] 闫友彪,陈无琰.机器学习的主要策略综述[J].计算机应用研究,2004, No. 5:4-13.
[2] M. Zhao,T.Zhang,F.Ge,and Z.Yuan, “Robotdroid: A lightweightmalware detection framework on smartphones,”Journal of Networks,vol.7,no.4,pp.715-722,2012.
[3] Dong-Jie Wu,Ching-Hao Mao,Te-En Wei,Hahn-Ming LeeDroidMat: Android Malware Detection throughManifest and API Calls Tracing,2012:13.
[4] 张文,严寒冰,文伟平.一种 Android 恶意程序检测工具的实现[J].信息网络安全,2013(1):27-32.
[5] 张金鑫,杨晓辉.基于权限分析的Android应用程序检测系统[J].信息网络安全,2014,7(1):30-34.
关键词:Android恶意软件;静态检测;数据挖掘;机器学习
最近几年,随着移动互联网的迅猛发展,以及智能手机的生产成本不断降低,智能手机在人们的日常生活和工作中扮演的角色越来越重要,在移动互联网时代,智能手机将成为访问互联网的主要设备。
智能手机像PC一样拥有自己独立的操作系统,而不再是传统意义上的单纯的语音通讯设备,用户可以根据自己的喜好随意的安装和卸载各种应用程序。浏览网页、娱乐办公、购物支付、社交聊天,可以说智能手机已经渗入到人们生活的方方面面,同时,也给人们带来了实实在在的方便。
最新发布的数据显示,高达97%的移动恶意软件将Android设备列为攻击目标,这也就意味着其他平台遭到恶意软件攻击的几率是相当低的,所以Android的安全性已经到了不得不改善的地步。毫无疑问,安全问题将会是Android未来几年的发展中所要面临的重要问题。
一、Android程序行为特征提取
(一)dex文件逆向分析
现有的Android程序行为特征提取大多都是基于dex文件逆向,由于Android采用Dalvik虚拟机作为平台运行环境,dex文件就是Dalvik虚拟机的可执行文件。通过dex文件可以得到Android程序的内部信息,阅读反汇编形成的Dalvik字节码可以通过IDA PO分析dex文件。或者通过文本编辑器baksmali反编译生成的smali文件。也可以利用反编译生成java源码,可以用dex2jar生成jar文件,然后使用jd-gui阅读jar文件代码。
(二)ARM汇编逆向分析
由于现在恶意软件的不断进化,代码混淆技术的不断发展,使得应用层代码的分析越来越疲软。对于使用ARM处理器的Andorid手机来说,它终将会生成对应的ARM elf可执行文件。对于底层的代码逆向更容易突破各种恶意软件的逃避检测机制,但是分析ARM elf可执行文件的难度较大,要求具有基本的ARM反汇编代码阅读能力,所以目前使用较少,但是这种逆向分析机制可能是Android恶意软件检测的一个突破口。
(三)行为特征提取
有了大量逆向工具的帮助,由于一个Android程序反编译过后的代码量会非常庞大,所以行为特征提取的重点在于获取我们想要的关键代码。关键代码的识别需要对Android应用层代码非常熟悉,可通过程序的反馈信息、特征函数定位关键代码,也可以通过代码注入观察程序运行到指定位置的状态数据,或是跟踪栈信息,观察函数的调用关系。对于数据的抓取,大多需要自己编写如python脚本的爬虫程序,获取关注的特征信息,为后面的检测算法提供支持。
二、Android恶意软件检测算法
对于Android 的行为特征提取方法固定,而将行为特征数据用于数据挖掘是Android恶意软件静态检测的核心。所以算法的选取是训练产生好的检测分类器的关键,下面举几种适合用于Android恶意软件检测的算法进行简单介绍。
(一)关联规则挖掘
关联规则挖掘发现大量数据中项集之间的联系,可以对大量样本(已知其良恶性)Android程序的敏感api和敏感权限进行频繁集的获取。每一个 Android 程序均可以映射为一个包含所有敏感 API 调用的事务, 每个API为一个项, API 项的集合为项集,最小支持度为 min _ suppor。最著名的关联规则发现方法是R.Agrawal提出的Apriori算法,其核心思想是通过对数据样本的多次扫描来计算项集的支持度,发现所有的频繁项集从而生成关联规则。
找出频繁项集的关键是连接和剪枝两步,安卓的行为特征数据适合于使用频繁集关联的规则,但缺点也比较明显,需要多次扫描事物数据库,可能产生庞大的候选集,并且在频发项集长多变大的情况下,运算效率降低。
(二)贝叶斯分类算法
贝叶斯分类器诸多算法中朴素贝叶斯分类模型是最早的,也大量利用于Android恶意软件检测当中。根据贝叶斯公式能够获取训练样本的先验概率,通过选取合适行为特征的Android程序属性来计算样本的后验概率。在Android恶意软件检测中使用贝叶斯分类算法的关键在于关键属性的选取,需尽量保证其独立性。
大量研究表明可以通过各种改进方法来提高朴素贝叶斯分类器的性能,在朴素贝叶斯分类器的基础上构建属性间的相关性,如构建相关性量度公式,增加属性间可能存在的依赖关系,或是构建新的样本集合,在样本集合之间存在较好的类条件独立关系。
在满足以上条件的情况下,贝叶斯算法分类性能较好,贝叶斯分类模型还具有形式简单、可扩展性很强和可理解性好等优点,适合作为安卓恶意软件算法的入门。
(三)支持向量机(SVM)
在统计学习的理论基础上,SVM成为了一种专门研究有限样本预测的学习方法,与传统统计学相比较,SVM算法没有以传统的经验风险最小化原则作为基础,而是建立在结构风险最小化原理的基础之上,在模型的复杂性和学习能力之间寻求最佳折中,即在所有的超平面中,最大间隔分类器要寻找一个最优超平面。
Android恶意软件检测使用SVM的基础是提取关键特征值进行规则的线性可分,对特征属性进行线性回归,建立回归分析方程,即回归分析预测。SVM的优点在于基本不涉及概率测度及大数定律,不同于现有的统计方法,避开了归纳到演绎的传统过程,实现了高效的从训练样本到预报样本的转導推理,大大简化了通常的分类和回归等问题。 Android惡意软件检测使用SVM能够具有较高的检测准确率,但是对大规模训练样本难以实施。对于恶意软件检测可用于一类恶意家族或一种类型的Android程序的模型建立,对于SVM的改进可以通过多个二类SVM的组合或构造多个分类器的组合来解决SVM的固有缺点。
三、Android恶意软件检测基本模型
对于现有的Android程序行为特征提取技术和Android恶意软件检测算法,Android恶意软件检测模型可归纳于图1所示。
首先需要收集大量的恶意软件样本和正常软件样本,正常软件样本容易收集,恶意软件样本可以从VirusShare组织获取,然后对样本提取行为特征属性,根据不同的分类算法制定不同的提取方案,将行为特征抽象化为算法的可用数据类型,然后通过数据挖掘产生分类器,最终通过多次的训练达到能够检测恶意软件的目的。 四、结语
本文给出了Android恶意软件检测的基本模型,描述Android行为特征获取方法,简要说明了各种检测算法如何与Android行为特征相结合。对于静态Android恶意软件检测,基于行为特征提取和机器学习和数据挖掘算法结合是目前的主流方案。检测方法智能化,能够对未知恶意软件进行检测是弥补Android安全机制最有效的措施,也是Android恶意软件检测以及整个安全行业的发展方向。
参考文献:
[1] 闫友彪,陈无琰.机器学习的主要策略综述[J].计算机应用研究,2004, No. 5:4-13.
[2] M. Zhao,T.Zhang,F.Ge,and Z.Yuan, “Robotdroid: A lightweightmalware detection framework on smartphones,”Journal of Networks,vol.7,no.4,pp.715-722,2012.
[3] Dong-Jie Wu,Ching-Hao Mao,Te-En Wei,Hahn-Ming LeeDroidMat: Android Malware Detection throughManifest and API Calls Tracing,2012:13.
[4] 张文,严寒冰,文伟平.一种 Android 恶意程序检测工具的实现[J].信息网络安全,2013(1):27-32.
[5] 张金鑫,杨晓辉.基于权限分析的Android应用程序检测系统[J].信息网络安全,2014,7(1):30-34.