一种恶意软件检测装置及方法与流程

文档序号:14266348阅读:160来源:国知局
一种恶意软件检测装置及方法与流程

本发明涉及安全检测技术领域,特别涉及一种恶意软件检测装置及方法。



背景技术:

近年来,移动智能终端发展迅速,极大地改变了人们使用手机的习惯,手机不再仅仅用于接打电话,而是更多地渗透进个人生活的方方面面。与此同时,手机中也存储了越来越多的个人隐私,一旦手机遭到恶意软件的入侵,可能面临着手机信息被窃取、账号、密码被盗用等危害,造成个人财产或利益的损失,或由于后台恶意程序的非法操作,使得手机功能发生异常,影响用户正常使用。

android作为当前流行的智能手机操作系统之一,有极高的市场占有率,但是由于其自身的开放性,使之成为恶意软件攻击的主要对象。奇虎360公司发布的《2015年中国手机安全状况报告》[1]显示截获的android手机恶意软件样本数量仍在不断增加,数量高达1874.0万个,感染人数也较前两年有所增长,高达3.7亿人次。随着技术的发展,android平台的恶意程序制作成本逐渐降低,且可批量生成恶意程序,致使针对移动终端的攻击行为逐渐规模化,不仅威胁用户的个人利益,也置各大安全厂商于巨大的挑战之中。海量出现的恶意软件和日益庞大的恶意特征库大大增加了安全厂商在恶意软件样本截获、处理方面的难度,传统的检测方式已经不能及时有效的处理这种海量数据。

随着人工智能的飞速发展,目前已有诸多研究将数据挖掘的分类算法应用于恶意软件检测中。数据挖掘的方法通过“学习”恶意软件的特征来构建分类模型进行恶意软件的检测,各种数据挖掘的检测方法都是使用不同的特征或特征的组合,结合相关分类算法进行检测。因此,基于数据挖掘的恶意软件检测效果依赖于特征的表达和模型的选取。android的安全机制要求,应用程序在调用一些可能影响到其他应用程序、操作系统或是用户的,如读写用户的隐私数据、使用网络连接、保持手机唤醒状态等的api(applicationprogramminginterface,应用程序编程接口)时,要申请相应的权限,只有获取授权以后才能调用这些api,因此权限在一定程度上能够描述应用行为。相比权限,api更直接反应应用行为,因此,现有的数据挖掘的检测方法主要针对android应用软件的权限和api特征。

基于数据挖掘的检测方法所采用的权限特征虽然易于提取,但由于应用程序声明的权限未必在实际中有使用,并且有研究表明存在大量应用软件滥用权限,因此直接使用权限作为特征来描述应用行为,可靠性欠佳,而使用api特征又面临着api数量庞大的问题,需要依靠人工选取部分api作为特征,无法实现完全自动化检测。此外,现有技术的恶意软件检测方法大多基于单机版实现,无法应对数量庞大的软件样本。



技术实现要素:

本发明提供了一种恶意软件检测装置及方法,旨在至少在一定程度上解决现有技术中的上述技术问题之一。

为了解决上述问题,本发明提供了如下技术方案:

一种恶意软件检测装置,包括:

反编译模块:用于对输入的应用软件安装包进行反编译,获取反编译文件;

特征提取模块:用于从所述反编译文件中提取api特征文件;

特征格式化模块:用于将所提取的api特征文件格式化为设定的文件格式;

模型训练及检测模块:用于通过格式化后的api特征文件训练随机森林分类模型,通过随机森林分类模型进行恶意软件的检测。

本发明实施例采取的技术方案还包括:所述反编译模块采用apktool反编译工具对输入的应用软件安装包进行反编译,所述反编译文件为smali文件。

本发明实施例采取的技术方案还包括:所述特征提取模块提取api特征文件的提取方式为:遍历smali文件,找到与api调用相关的dalvik指令;根据dalvik指令随后的参数获取应用程序所调用的api,并对api进行字符串匹配,如果该api是受权限保护的api,则将该受权限保护的api存储在该应用程序对应的api特征文件中。

本发明实施例采取的技术方案还包括:所述特征格式化模块对api特征文件进行格式化的方法为:为api特征文件中的每个api设置一个编号,如果应用软件中使用了该api特征文件中存储的api,该api对应的编号项值为1,如果应用软件中没有使用该api特征文件中存储的api,则该api对应的编号项值为0。

本发明实施例采取的技术方案还包括:所述模型训练及检测模块训练随机森林分类模型的方式为:将格式化后的api特征文件输入到sparkmllib提供的随机森林分类模型训练接口,训练获取分布式随机森林分类模型。

本发明实施例采取的另一技术方案为:一种恶意软件检测方法,包括:

步骤a:对输入的应用软件安装包进行反编译,获取反编译文件;

步骤b:从所述反编译文件中提取api特征文件;

步骤c:将所提取的api特征文件格式化为设定的文件格式;

步骤d:通过格式化后的api特征文件训练随机森林分类模型,通过随机森林分类模型进行恶意软件的检测。

本发明实施例采取的技术方案还包括:在所述步骤a中,所述对应用软件安装包进行反编译具体为:采用apktool反编译工具对输入的应用软件安装包进行反编译,所述反编译文件为smali文件。

本发明实施例采取的技术方案还包括:在所述步骤b中,所述api特征文件的提取方式为:遍历smali文件,找到与api调用相关的dalvik指令;根据dalvik指令随后的参数获取应用程序所调用的api,并对api进行字符串匹配,如果该api是受权限保护的api,则将该受权限保护的api存储在该应用程序对应的api特征文件中。

本发明实施例采取的技术方案还包括:在所述步骤c中,所述对api特征文件进行格式化的方法为:为api特征文件中的每个api设置一个编号,如果应用软件中使用了该api特征文件中存储的api,该api对应的编号项值为1,如果应用软件中没有使用该api特征文件中存储的api,则该api对应的编号项值为0。

本发明实施例采取的技术方案还包括:在所述步骤d中,所述训练随机森林分类模型的方式为:将格式化后的api特征文件输入到sparkmllib提供的随机森林分类模型训练接口,训练获取分布式随机森林分类模型。

相对于现有技术,本发明实施例产生的有益效果在于:本发明实施例的恶意软件检测装置及方法通过使用受权限保护的api作为恶意软件检测的特征,相比于传统的直接使用权限作为特征,不会受到应用软件滥用权限的干扰,整个训练和检测过程实现了自动化,而不需要人工挑选api;并且引入分布式随机森林,有效应对海量恶意软件作为样本时的模型训练,提高模型训练效率。

附图说明

图1是本发明实施例的恶意软件检测装置的结构示意图;

图2是本发明实施例的恶意软件检测装置的检测框架图;

图3是本发明实施例的恶意软件检测方法的流程图;

图4为两种特征的准确率对比图;

图5为两种特征的精确率对比图;

图6为两种特征的召回率对比图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。

请参阅图1,是本发明实施例的恶意软件检测装置的结构示意图。本发明实施例的恶意软件检测装置包括反编译模块、特征提取模块、特征格式化模块和模型训练及检测模块。反编译模块用于反编译应用软件安装包(apk,androidpackage),获取其中的smali文件;特征提取模块用于从smali文件中提取api特征文件;特征格式化模块用于将每个应用软件安装包中提取的api特征文件格式化成设定的文件格式;模型训练及检测模块用于通过格式化后的api特征文件训练随机森林分类模型,通过随机森林分类模型进行恶意软件的检测(即判定软件为恶意还是正常),并输出检测结果。

请一并参阅图2,是本发明实施例的恶意软件检测装置的检测框架图。反编译模块、特征提取模块、特征格式化模块和模型训练及检测模块分别用圆角矩形表示,每个模块的输入是上一模块的输出,每个模块的输出用直角矩形表示。该框架的输入为android应用软件安装包,输出为对该应用软件的检测结果。

具体地,本发明实施例中,反编译模块采用apktool反编译工具对输入的应用软件安装包进行反编译,获取smali文件,smali文件包含了dalvik指令和api信息;在本发明其他实施例中,也可采用其他反编译工具进行反编译,例如dex2jar等。

特征提取模块提取api特征文件的提取方式为:遍历smali文件,找到与api调用相关的dalvik指令,如下表1所示,再根据dalvik指令随后的参数获取应用程序所调用的api,其中包括了api类名和方法名,对api进行字符串匹配,如果该api是受权限保护的api,则将该受权限保护的api存储在该应用程序对应的api特征文件中。至此,每个应用程序对应一个api特征文件,api特征文件存储了所有该应用程序调用的受权限保护的api。

表1与api调用相关的dalvik指令

在使用api特征文件之前,还需要将api特征文件转换成模型训练及检测模块可接受的格式,特征格式化模块对api特征文件进行格式化的方法为:为每个api特征文件中的每个api设置一个编号,若应用软件中使用了该api特征文件中存储的api,则该api对应的编号项值为1,否则该api对应的编号项值为0。最终,每个应用软件表示为一个特征向量的形式,对应api特征文件中的一行数据。在本发明实施例中,特征格式化模块将api特征文件格式化为libsvm格式文件,具体格式可根据实际应用进行设定。

格式化api特征文件以后,模型训练及检测模块将其输入到sparkmllib提供的随机森林分类模型训练接口,训练获取分布式随机森林分类模型,通过该随机森林分类模型进行智能终端的恶意软件检测。

请参阅图3,是本发明实施例的恶意软件检测方法的流程图。本发明实施例的恶意软件检测方法包括以下步骤:

步骤100:对输入的应用软件安装包进行反编译,获取smali文件;

在步骤100中,本发明实施例采用apktool反编译工具进行反编译,也可采用dex2jar等其他反编译工具进行反编译,获取的smali文件包含了dalvik指令和api信息。

步骤200:从smali文件中提取api特征文件;

在步骤200中,api特征文件的提取方式为:遍历smali文件,找到与api调用相关的dalvik指令,如下表1所示,再根据dalvik指令随后的参数获取应用程序所调用的api,其中包括了api类名和方法名,对api进行字符串匹配,如果该api是受权限保护的api,则将该受权限保护的api存储在该应用程序对应的api特征文件中。至此,每个应用程序对应一个api特征文件,api特征文件存储了所有该应用程序调用的受权限保护的api。

表1与api调用相关的dalvik指令

步骤300:将每个应用软件安装包中提取的api特征文件格式化成设定的文件格式;

在步骤300中,对api特征文件进行格式化的方法为:为每个api特征文件中的每个api设置一个编号,若应用软件中使用了该api特征文件中存储的api,则该api对应的编号项值为1,否则该api对应的编号项值为0。最终,每个应用软件表示为一个特征向量的形式,对应api特征文件中的一行数据。在本发明实施例中,特征格式化模块将api特征文件格式化为libsvm格式文件,具体格式可根据实际应用进行设定。

步骤400:通过格式化后的api特征文件训练随机森林分类模型,通过随机森林分类模型进行恶意软件的检测,并输出检测结果;

在步骤400中,训练随机森林分类模型的方法为:将格式化后的api特征文件输入到sparkmllib提供的随机森林分类模型训练接口,训练获取分布式随机森林分类模型。

经过实验证明,本发明实施例的恶意软件检测装置及方法通过使用受权限保护的api作为android恶意软件检测的特征,相比于传统的直接使用权限作为特征,有更好的检测效果。具体如图4至图6所示,图4为两种特征的准确率对比图,图5为两种特征的精确率对比图,图6为两种特征的召回率对比图。在相同的实验条件下,随着随机森林模型中树的数目增加,分别使用受权限保护的api作为特征和使用权限作为特征时的分类准确率、精确率和召回率也在发生变化。当树的数目到达30时,各指标基本稳定,此时使用受权限保护的api作为特征的检测结果的准确率、精确率和召回率分别比采用权限作为特征的检测结果高出2%、1%和4%。

本发明实施例的恶意软件检测装置及方法通过使用受权限保护的api作为恶意软件检测的特征,相比于传统的直接使用权限作为特征,不会受到应用软件滥用权限的干扰,整个训练和检测过程实现了自动化,而不需要人工挑选api;并且引入分布式随机森林,有效应对海量恶意软件作为样本时的模型训练,提高模型训练效率。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1