结合动态行为特征的Android未知恶意软件检测方法与流程

文档序号:11251269阅读:782来源:国知局
本发明涉及一种结合动态行为特征的android未知恶意软件检测方法,属于计算机与信息科学
技术领域
:。
背景技术
::自1999年3月symbian5.0系统诞生以来,十几年间,智能手机操作系统得到了蓬勃的发展。近年来,诸如android、windowsphone、ios等新一代操作系统逐渐占据了智能手机操作系统的大部分市场。其中,android系统作为一款开源操作系统,发展最为迅速。android系统的快速发展不仅为广大智能手机用户带来了便利,其巨大的市场及商业价值更是吸引了全球黑客的目光。据腾讯移动安全实验室《2016年上半年手机安全报告》显示2016年上半年新增android病毒包918.25万个,同比增长53.90%,是2014年全年新增病毒包(100.33万个)的9.15倍。其中新增支付病毒包32.33万个,同比增长986.14%,支付病毒形式严峻。2016年上半年手机病毒感染用户数超2亿,是英国总人口数的3.12倍,同比增长42.35%。其中支付病毒感染用户数1670.33万,同比增长45.82%。综观现有恶意软件检测方法,通常使用的方法有:1.特征库匹配方法该方法通常先对恶意软件进行特征提取,然后与已经建立好的恶意软件特征数据库进行匹配,从而检测出软件是否为恶意软件。这种方法需要与已知的恶意软件特征库进行比较,从而无法检测出未知的恶意软件。2.机器学习方法由于机器学习的方法在pc平台未知恶意软件检测中取得了良好的效果,越来越多的研究将这类方法应用到android系统。传统的特征库匹配方法无法检测未知恶意软件,现有的基于机器学习的android恶意软件检测方法,较特征库匹配法有所改进,能检测未知恶意软件,但仅采用单一的静态特征或动态特征较难全面表达恶意软件的关键属性,容易造成误识或漏识,导致检测效果下降,如果提取的特征维数过高同样会对检测效率造成影响。同时,在测试数据方面,如果具有更多种类和数量的负样本,正负样本尽量保持数量上的平衡,可进一步提升检测准确率。综上所述,现有的检测方法无法高效、准确、全面地检测恶意软件,所以本发明提出一种结合动态行为特征的android未知恶意软件检测方法。技术实现要素:本发明的目的是为提高检测android未知恶意软件的准确率并降低特征提取维度,提出一种结合动态行为特征的android未知恶意软件检测方法。本发明的设计原理为:本发明可以对待检测的android软件进行动态行为特征提取与静态文件特征提取,并用分类算法进行分类,判断出该软件是否为恶意软件。首先,将被检测软件输入到系统中。然后,系统会对软件包进行解压缩与反编译,并提取结果文件中的静态特征;同时,系统会在android模拟器中运行该软件包,使用基于lkm(linux可加载内核模块)的应用软件行为监控方法监控软件的动态行为,并记录日志,在日志中提取软件的动态行为特征。最后,将提取出的动静态特征进行归一化处理,输入到训练好分类算法分类检测模块中,该模块可根据输入的动静态特征数据自动判断出被检测软件是否为恶意软件。本发明的技术方案是通过如下步骤实现的:步骤1,将android软件的apk包作为输入,提取其静态文件特征。步骤2,使用基于lkm(linux可加载内核模块)的应用软件行为监控方法监控软件的动态行为,提取软件的动态行为特征,其具体实现方法为:步骤2.1,当被监控软件试图产生恶意行为时,系统首先会劫持并替换被监控软件产生的行为对应的linux系统调用。步骤2.2,在替换后的系统调用处理例程里,对系统调用的参数进行解析,判断出监控到的是何种行为。步骤2.3,记录被监控软件的恶意行为日志,分析日志,提取软件的动态行为特征。步骤3,将步骤1和步骤2二者结果的并集作为初始特征集。步骤4,采用特征选择算法从初始特征集里选择出对分类最有价值的特征,降低特征的维度,筛选出关键特征集。步骤5,将选择出关键特征集作为输入,采用分类算法进行分类器训练,最终生成恶意软件检测模型,并对待检测样本进行检测。有益效果相比于传统的特征库匹配方法,本发明可以检测未知恶意软件。相比于现有的基于机器学习的android恶意软件检测方法,本发明使用基于lkm的应用软件行为监控方法监控软件的动态行为,分析监控日志,提取动态行为特征,具有较高的软件行为监控准确率,结合恶意代码的动态行为特征更好地表征了样本的本质,提升检测的准确率。同时,降低特征维度,提升检测效率。附图说明图1为本发明提出的结合动态行为特征的android未知恶意软件检测方法原理图;图2为本发明提出的结合动态行为特征的android未知恶意软件检测方法中静态特征提取原理图;图3为本发明提出的结合动态行为特征的android未知恶意软件检测方法中动态特征提取原理图;图4为本发明提出的结合动态行为特征的android未知恶意软件检测方法中动态行为监控原理图。具体实施方式为了更好的说明本发明的目的和优点,下面结合实施例对本发明方法的实施方式做进一步详细说明。在此,本发明的示意性实施用例及其中说明用于解释本发明,但并不作为对本发明的限定。具体流程为:步骤1,软件静态特征提取。步骤1.1,静态特征提取模块对被检测软件同时进行解压缩与反编译。步骤1.2,对解压缩得到的dex、so文件分别进行特征提取。其中,对dex文件主要提取以下特征:dex文件头信息、字符串偏移值及个数、类型偏移值及个数、方法原型偏移值及个数、字段偏移值及个数和类定义偏移值及个数;对so文件主要提取以下特征:elf文件头信息、系统调用信息、段头信息、符号表、全局偏移表、程序段、动态段、动态符号段和重定位段。步骤1.3,对反编译得到的samli、xml文件分别进行特征提取。其中,对smali文件提取以下特征:类名、父类名、资源名、方法信息(名称、参数、返回值)和函数调用信息;对xml文件提取的特征为:软件版本信息、软件包信息、软件权限申请信息和程序组件信息(包含receiver、activity、service和provider)。步骤1.4,将提取出的特征归一化为分类算法的输入形式,共提取了69维静态特征。步骤2,基于lkm的应用软件行为监控方法的软件动态特征提取。步骤2.1,在android模拟器环境中运行被检测的软件,同时,用monkey工具输入伪随机事件流,触发软件的行为。步骤2.2,当被监控软件产生恶意行为时,系统调用是通过软中断swi指令来实现。swi指令的地址位于异常向量表的0x08偏移处,android使用的armv7系列处理器采用的是高地址模式,所以swi的地址是0xffff0008。而swi对应的中断服务例程的入口地址是swi的地址偏移2个字节的位置处。之后,查看内核源码/arch/arm/kernel/目录下的entry-common.s文件,在entry(vector_swi)代码块中找到zero_fp指令后,继续向下查找,直到找到“adrtbl,sys_call_table”语句对应的特征码,之后便可计算出sys_call_table的地址,获取到系统调用表的入口地址后,便可以替换相应的系统调用。步骤2.3,通过系统调用的参数可以判断出监控到的是软件的哪种行为,方法主要监控获取系统服务(包括发送短信、拨打电话、获取电话号码等)、网络连接和权限提升三类行为。步骤2.4,将监控到的行为记录日志。步骤2.5,对监控日志进行分析,提取出进出的网络数据、文件读写操作、后台启动/关闭服务、信息泄露(包括网络与短信)和发出的短信与拨打的电话5类动态行为特征,构建动态特征集,共提取32维动态特征。步骤3,将提取出的69维静态特征和32维动态特征的并集作为初始特征集。步骤4,特征降维。步骤4.1,使用过滤法选取χ2值、信息增益、信息增益率均大于0的特征共68维。步骤4.2,使用包装法对子集进行评价,实验结果为:meritofbestsubsetfound:0.963,选出来的特征共37维。步骤4.3,取两种方法的交集构建关键特征集:共33维特征,其中静态特征21维,动态特征12维。步骤5,使用随机森林算法检测。步骤5.1,将选择出的33维关键特征集作为随机森林算法的输入。步骤5.2,采用随机森林算法进行分类器训练,用十折交叉验证的方法训练出检测模型,并对参数进行调整,其中,树的个数值通常取特征数的平方,随机挑选的特征数为15时,检测准确率最高。步骤5.3,对待检测样本进行检测。测试结果实验对美国北卡罗来纳州立大学yanjinzhou团队恶意软件样本库中的恶意软件进行检测,样本库中共有1260个恶意软件样本,分为49个家族,本发明可以有效检测未知恶意软件样本,准确率达到97.5%。以上所述的具体描述,对发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1