一种恶意软件检测模型的构建方法及装置与流程

文档序号:32470032发布日期:2022-12-07 07:01阅读:85来源:国知局
一种恶意软件检测模型的构建方法及装置与流程

1.本发明涉及网络安全领域,更具体的说,是涉及一种恶意软件检测模型的构建方法及装置。


背景技术:

2.随着科技的不断进步,智能终端设备越来越普及,丰富的终端设备功能也给人们日常生活带来了很多便利,成为了每个人不可缺少的工具。在众多操作系统中,android平台凭借其开发性和低成本的特质,成为最受开发者和用户欢迎的操作系统,使得更多终端设备制造商选用android系统作为操作系统,并在其基础上进行定制改造。但也由于它的开放性,越来越多的开发者为了追求经济效益,而将恶意代码放入自身开发的应用程序中投入android市场,严重危害用户的信息安全。因此,有必要提出一种检测结果更加精确和检测效率更高的恶意软件检测方法。


技术实现要素:

3.有鉴于此,本发明提供如下技术方案:
4.一种恶意软件检测模型的构建方法,其特征在于,包括:
5.获得包含恶意软件和安全软件的样本数据;
6.通过软件逆向工程对所述样本数据进行处理,提取出所述样本数据中的api特征;
7.基于apriori算法和fp-growth算法处理得到所述api特征的有用频繁集;
8.对所述有用频繁集进行权重处理;
9.基于权重处理后的有用频繁集构建能够识别恶意软件的第一分类器。
10.可选地,在所述基于权重处理后的有用频繁构建能够识别恶意软件的第一分类器,包括:
11.对所述第一分类器进行参数循环调优,得到检测准确率最高的模型参数。
12.可选地,所述基于apriori算法和fp-growth算法处理得到所述api特征的有用频繁集,包括:
13.基于apriori算法和fp-growth算法处理得到所述api特征的初始频繁集;
14.过滤掉所述初始频繁集中的无用频繁集,得到有用频繁集,其中,所述无用频繁集表征安全软件样本数据的频繁集和恶意软件样本数据的频繁集中相同的频繁集。
15.可选地,所述对所述有用频繁集进行权重处理,包括:
16.基于所述有用频繁集中每一个频繁集出现的次数对所有的有用频繁集进行升序排列,其中,出现的次数越多,对应的有用频繁集的权重越高。
17.可选地,所述基于权重处理后的有用频繁集构建能够识别恶意软件的第一分类器,包括:
18.配置基于设定阈值和计算数值的比较结果输出分类结果的第一分类器,其中,所述计算输出为有用频繁集的权重和支持度相乘的结果,其中的支持度与api特征的的出现
频率有关。
19.可选地,还包括:
20.通过软件逆向工程对所述样本数据进行处理,提取出所述样本数据中的权限特征;
21.基于所述权限特征构建第二分类器,所述第二分类器包括朴素贝叶斯分类器和k最近邻分类器。
22.可选地,所述基于所述权限特征构建第二分类器,包括:
23.采用weka工具对权限信息进行增益排序,去除冗余特征;
24.采用apriori算法获得所述权限信息的频繁集;
25.基于所述频繁集分别构建朴素贝叶斯分类器和k最近邻分类器。
26.可选地于,还包括:
27.获得待测样本;
28.将所述待测样本分别输入所述第一分类器和所述第二分类器,获得对应的第一分类结果和第二分类结果;
29.基于所述第一分类结果和所述第二分类结果确定最终的分类结果。
30.可选地,所述通过软件逆向工程对所述样本数据进行处理,提取出所述样本数据中的api特征,包括:
31.采用反编译工具编写代码实现从所述样本数据中提取出api特征。
32.一种恶意软件检测模型的构建装置,包括:
33.样本获得模块,用于获得包含恶意软件和安全软件的样本数据;
34.特征提取模块,用于通过软件逆向工程对所述样本数据进行处理,提取出所述样本数据中的api特征;
35.频繁集获得模块,用于基于apriori算法和fp-growth算法处理得到所述api特征的有用频繁集;
36.权重处理模块,用于对所述有用频繁集进行权重处理;
37.分类器构建模块,用于基于权重处理后的有用频繁集构建能够识别恶意软件的第一分类器。
38.经由上述的技术方案可知,本发明实施例公开了一种恶意软件检测模型的构建方法及装置,方法包括:获得包含恶意软件和安全软件的样本数据;通过软件逆向工程对所述样本数据进行处理,提取出所述样本数据中的api特征;基于apriori算法和fp-growth算法处理得到所述api特征的有用频繁集;对所述有用频繁集进行权重处理;基于权重处理后的有用频繁集构建能够识别恶意软件的第一分类器。上述内容提出了一种结合了多种算法的恶意软件检测模型的构建方案,其在检测精确度和检测效率上均有优于其他检测模型的特点。
附图说明
39.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据
提供的附图获得其他的附图。
40.图1为本发明实施例公开的一种恶意软件检测模型的构建方法的流程图;
41.图2为本发明实施例公开的api特征提取流程示意图;
42.图3为本发明实施例公开的恶意软件检测模型的构建实现流程示意图;
43.图4为本发明实施例公开的apriori算法实现过程示意图;
44.图5为本发明实施例公开的apriori算法求出的所有频繁集示意图;
45.图6为本发明实施例公开的构建fp树的实现过程示意图;
46.图7为本发明实施例公开的fp树中挖掘频繁集示意图;
47.图8为本发明实施例公开的fpgrowth算法计数过程示意图;
48.图9为本发明实施例公开的过滤后的恶意样本频繁集示意图;
49.图10为本发明实施例公开的权限特征提取流程示意图;
50.图11为本发明实施例公开的正常和恶意样本权限统计柱形图;
51.图12为本发明实施例公开的信息增益处理过程示意图
52.图13为本发明实施例公开的一种恶意软件检测模型的构建装置的结构示意图。
具体实施方式
53.为了引用和清楚起见,下文中使用的技术名词的说明、简写或缩写总结如下:
54.api:应用程序接口,是一些预先定义的接口,或者软件系统不同组成部分衔接的约定。
55.权限:指为了保证职责的有效履行,任职者必须具备的,对某事项进行决策的范围和程度,本文特指android系统的一种安全机制—权限机制。
56.机器学习:是一门多学科交叉专业,涵盖概率论知识,统计学知识,近似理论知识和复杂算法知识,使用计算机作为工具并致力于真实实时的模拟人类学习方式,并将现有内容进行知识结构划分来有效提高学习效率。
57.android:本意指“机器人”,同时也是基于linux平台的开源手机操作系统的名称,该平台由操作系统、中间件、用户界面和应用软件组成。
58.恶意软件:是指在未明确提示用户或未经用户许可的情况下,在用户计算机或其他终端上强行安装运行,侵犯用户合法权益的软件。
59.weka:weka是怀卡托智能分析环境(waikato environment for knowledge analysis)的英文字首缩写。weka作为一个开放性的数据挖掘平台,汇集了大量的机器学习算法和数据预处理工具。本文中,采用了weka系统的数据预处理、关联规则以及分类功能。
60.apriori:apriori算法是第一个关联规则挖掘算法,也是最经典的算法。它利用逐层搜索的迭代方法找出数据库中项集的关系,以形成规则,其过程由连接(类矩阵运算)与剪枝(去掉那些没必要的中间结果)组成。
61.fpgrowth:fp-growth是一种以自底向上方式探索树,通过构造一个树结构来压缩数据记录,使得挖掘频繁项集只需要扫描两次数据记录,而且该算法不需要生成候选集合,所以效率会比较高。
62.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于
本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
63.图1为本发明实施例公开的一种恶意软件检测模型的构建方法的流程图。参见图1所示,恶意软件检测模型的构建方法可以包括:
64.步骤101:获得包含恶意软件和安全软件的样本数据。
65.在构建恶意软件检测模型前,首先需要获得包含恶意软件和安全软件的样本数据,为了保证最终构建模型的准确度,样本数据不能太少。一般的,样本数据至少需要数百个。本技术实施例中所述的恶意软件,可以但不限于android软件。
66.步骤102:通过软件逆向工程对所述样本数据进行处理,提取出所述样本数据中的api特征。
67.在获得样本数据后,需要以样本数据为基础,从中提取出构建检测模型可以参考的特征数据。对于android软件特征提取的过程属于软件逆向工程,而用于逆向工程的工具非常多,本技术对于采用何种逆向工程的工具并不做固定限制。示意性的,所述通过软件逆向工程对所述样本数据进行处理,提取出所述样本数据中的api特征,可以包括:采用反编译工具编写代码实现从所述样本数据中提取出api特征。
68.具体的,采用的是apktool反编译工具来提取api特征。apktool把反编译后的apk以源码结构的形式的文件夹输出,通过工具进行反编译得到的smali文件夹中生成了该程序中所有的java代码对应的smali代码,并且按照应用程序源码的结构顺序进行排列,并且将程序中所用到的资源文件和lib文件输出。图2为本发明实施例公开的api特征提取流程示意图,可结合图2理解前述内容。
69.步骤103:基于apriori算法和fp-growth算法处理得到所述api特征的有用频繁集。
70.本技术方案在应用中,通过提取应用程序的api特征信息来判断未知软件是否为恶意,但对于恶意行为的产生不是单一的api特征能实现的,而是需要通过一定的组合来共同实现,因此本技术方案使用机器学习中的关联规则算法,apriori算法和fp-growth算法,并进行改进,挖掘出api特征的频繁集,从而更好的鉴别恶意软件。
71.一个实现中,所述基于apriori算法和fp-growth算法处理得到所述api特征的有用频繁集,可以包括:基于apriori算法和fp-growth算法处理得到所述api特征的初始频繁集;过滤掉所述初始频繁集中的无用频繁集,得到有用频繁集,其中,所述无用频繁集表征安全软件样本数据的频繁集和恶意软件样本数据的频繁集中相同的频繁集,这些频繁集不具有代表性,对于检测恶意软件没有实际意义,因此需要将其过滤掉;这样不仅减少了后续的处理工作的工作量,也去除掉了不必要的干扰。
72.步骤104:对所述有用频繁集进行权重处理。
73.具体的,可以包括:基于所述有用频繁集中每一个频繁集出现的次数对所有的有用频繁集进行升序排列,其中,出现的次数越多,对应的有用频繁集的权重越高。
74.步骤105:基于权重处理后的有用频繁集构建能够识别恶意软件的第一分类器。
75.具体的,可以配置基于设定阈值和计算数值的比较结果输出分类结果的第一分类器,其中,所述计算输出为有用频繁集的权重和支持度相乘的结果,其中的支持度与api特征的的出现频率有关。所述第一分类器即为恶意软件的检测模型,也可以称为基于api特征
的机器学习检测模型。
76.本实施例提出了一种结合了多种算法的恶意软件检测模型的构建方案,其在检测精确度和检测效率上均有优于其他检测模型的特点,能够满足领域内对于恶意软件进行有效检测的需求,具有很好的实用价值。
77.在其他实现中,恶意软件检测模型的构建方法在构建完第一分类器后,还可以包括:对所述第一分类器进行参数循环调优,得到检测准确率最高的模型参数。
78.下面给出一个示例性的具体应用:可以分别将10000个恶意样本和500个正常样本的api特征进行提取,然后将提取的api序列分别输入到改进的机器学习的apriori算法和fp-growth算法进行api的频繁集挖掘,接着过滤掉无用频繁集,再进行权重处理后,输入到编写的程序中与待测样本的api序列进行匹配,按照设定的阈值进行恶意软件的判定,并不断改变阈值进行循环检测,最终获得检测率最高的模型参数。图3为本发明实施例公开的恶意软件检测模型的构建实现流程示意图,可结合图3理解前述内容。
79.图4为本发明实施例公开的apriori算法实现过程示意图,图5为本发明实施例公开的apriori算法求出的所有频繁集示意图。结合图4和图5所示,将统计好的所有敏感api序列输入apriori算法中,在对数据集进行第一次扫描时,从数据集合d中求出1项集,计算得出在输入的数据集中存在的大于等于最小支持度的1项集。对l
k+1
进行连接,生成候选频繁k项集ck。计算数据集合d,求出ck中所有候选项集的频度总和,去除小于最小支持度的候选集,剩余的候选集为频繁k项集的集合lk。
80.如果ck不能求出时,算法结束。
81.fp-growth算法是关联规则中的另一种算法,它基于apriori算法实现。相对apriori算法,fp-growth算法只需要扫描两次数据集,且不产生候选集,因此在空间和时间上都得到了很大的提升,该算法优于apriori算法。fp-growth算法是将获取的数据集保存在一种名为频繁模式的树结构中。fp-growth算法流程主要为以下两部分:
82.(1)构建fp树,如图6所示,为构建fp树的实现过程示意图。
83.(2)从fp树中挖掘频繁项集,如图7所示,为fp树中挖掘频繁集示意图。
84.第一遍对所有api的出现次数进行计数,如图8所示,为fpgrowth算法计数过程示意图;统计各个api的出现频率,去掉不满足最小支持度的api。
85.参见图6,自底向上,从(4)开始,找到所有含(4)的分支:(1,2,3,4:1),(1,3,4:1),(2,3,4:1)除去后缀(4),可以构造一棵条件fp树,递归,支持度还为60%,当条件树只有一条路径时,即为频繁集,最后得到(4)频繁集为{{4},{3,4}}。
86.重复上面的步骤,直到fp树中只包含一个元素,频繁集求取结束。
87.通过以上两种算法,可以求得10000个恶意样本和500正常样本的api频繁集,每个频繁集所占的重要性不同,有很多无关频繁集,即对判定是恶意和正常软件的影响不大,因此需要对频繁集进行过滤处理,这也正是为什么求得500个正常样本频繁集的原因。接下来可以找出正常样本频繁集和恶意样本频繁集相同的部分,并将这部分去掉,过滤出更有价值的频繁集。
88.为了与前面频繁集做对比,可以把支持度设为0.4,可以看到,经过正常样本频繁集的过滤,恶意样本频繁集从原来的708个减少为83个,最高频繁集也从原来的频繁八项集变为频繁六项集,结果如图9所示,为本发明实施例公开的过滤后的恶意样本频繁集示意
图。
89.完成了上面的工作,接着可以将过滤后的频繁集进行权重处理,即对频繁集出现的次数进行升序排列,出现次数越多,代表它的恶意行为越高,权重就越高,接着将进行权重处理后的频繁集与待测样本的api序列进行匹配,若待测样本发现了频繁集,就对该样本加上对应的分值,该分值即为他的权重大小与其支持度相乘,当该分值的总和大于设定的测试阈值,则判定为恶意软件。
90.这里的测试阈值的设定非常重要,如果过高,则会降低恶意软件的判定数目,从而把恶意软件判定为正常软件,如果过低,则会增加恶意软件的数目,从而把正常软件判定为恶意软件,这样都会导致模型的检测率降低,因次需要将测试阈值自动循环,通过不断的循环,找出检测率最高的阈值。
91.其他实现中,恶意软件检测模型的构建方法还可以包括:通过软件逆向工程对所述样本数据进行处理,提取出所述样本数据中的权限特征;基于所述权限特征构建第二分类器,所述第二分类器包括朴素贝叶斯分类器和k最近邻分类器。
92.其中,所述基于所述权限特征构建第二分类器,可以包括:采用weka工具对权限信息进行增益排序,去除冗余特征;采用apriori算法获得所述权限信息的频繁集;基于所述频繁集分别构建朴素贝叶斯分类器和k最近邻分类器。
93.图10为本发明实施例公开的权限特征提取流程示意图。结合图10所示,具体实现中,可以选取100个恶意软件样本和100个正常软件样本作为实验样本,对于重复的权限信息进行排除,最后将权限信息进行统计,为接下来的分析过程做准备。
94.接着把提取的权限信息进行统计,得到.csv格式的数据统计表。为了便于直观的了解样本中的个权限的数量,将恶意样本和正常样本各权限的数量在execl中制作成柱形图,如图11正常和恶意样本权限统计柱形图所示。
95.由图11可见:acces_network_state、infternet、get_tasks、
96.read_phone_state、write_external_storage等权限在正常样本和恶意样本中占比都很高。
97.在weka系统中导入权限统计表的.csv格式,进行信息增益操作得到结果如图12所示,图12为本发明实施例公开的信息增益处理过程示意图。
98.从显示的增益结果可以看出,camera、record_audio、bluetooth、wake_lock、mount_unmount_filesystems、flashlight、broadcast_sticky、change_network_state、bluetooth_admin、get_tasks、access_coarse_location、read_contacts、access_fine_location、read_logs、vibrate、battery_stats、receive_boot_completed、send_sms、acces_network_state分别达到:0.2911、0.2823、0.1405、0.1178、0.1128、0.1114、0.0981、0.0801、0.0786、0.0698、0.0559、0.0470、0.0464、0.0442、0.0424、0.0386、0.0321、0.0278、0.0233。由此表明,在这三十个权限中,这些是最能影响android正常软件变成恶意软件的权限。
99.构建第二分类器的过程首先将提取的权限特征进行信息增益排序,接着进行频繁集挖掘,最后使用机器学习分类算法进行分类检测,这些过程都是基于weka系统进行实现的。
100.本技术利用反编译工具编写代码实现对提前收集好的大量恶意软件和正常软件
样本进行api和权限特征提取,再将得到的特征信息预处理,对相关性进行量化。然后,分别建立基于api特征的检测模型和基于权限特征的检测模型。基于api特征检测模型,我们首先运用机器学习的apriori算法和fpgrowth算法求出样本api序列的频繁集,接着过滤掉无用频繁集,再进行权重处理,输入到改进的算法中,并培养能够判别恶意软件的分类器。最后将分类器参数循环调优,最终获得检测率最高的模型参数。基于权限特征检测模型,我们先将权限进行统计,再利用weka工具对权限进行信息增益排序,去除冗余特征,接着用apriori算法求频繁集,最后使用weka系统自带的朴素贝叶斯分类器和k最近邻分类器对样本进行分类检测。
101.在第一分类器和第二分类器均构建完成后,还可以包括:获得待测样本;将所述待测样本分别输入所述第一分类器和所述第二分类器,获得对应的第一分类结果和第二分类结果;基于所述第一分类结果和所述第二分类结果确定最终的分类结果。
102.本实现中同时采用第一分类器和第二分类器得到两个分类结果,可基于两个分类结果综合确定待测样本是否为恶意软件,检测结果更加客观准确。
103.对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
104.上述本发明公开的实施例中详细描述了方法,对于本发明的方法可采用多种形式的装置实现,因此本发明还公开了一种装置,下面给出具体的实施例进行详细说明。
105.图13为本发明实施例公开的一种恶意软件检测模型的构建装置的结构示意图。参见图13所示,恶意软件检测模型的构建装置130可以包括:
106.样本获得模块1301,用于获得包含恶意软件和安全软件的样本数据。
107.特征提取模块1302,用于通过软件逆向工程对所述样本数据进行处理,提取出所述样本数据中的api特征。
108.频繁集获得模块1303,用于基于apriori算法和fp-growth算法处理得到所述api特征的有用频繁集。
109.权重处理模块1304,用于对所述有用频繁集进行权重处理。
110.分类器构建模块1305,用于基于权重处理后的有用频繁集构建能够识别恶意软件的第一分类器。
111.本实施例提出了一种结合了多种算法的恶意软件检测模型的构建方案,其在检测精确度和检测效率上均有优于其他检测模型的特点,能够满足领域内对于恶意软件进行有效检测的需求,具有很好的实用价值。
112.上述实施例中的所述的任意一种恶意软件检测模型的构建装置包括处理器和存储器,上述实施例中的样本获得模块、特征提取模块、频繁集获得模块、权重处理模块、分类器构建模块、等均作为程序模块存储在存储器中,由处理器执行存储在所述存储器中的上述程序模块来实现相应的功能。
113.处理器中包含内核,由内核去存储器中调取相应的程序模块。内核可以设置一个或多个,通过调整内核参数来实现回访数据的处理。
114.存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/
或非易失性内存等形式,如只读存储器(rom)或闪存(flash ram),存储器包括至少一个存储芯片。
115.在示例性实施例中,还提供了一种计算机可读存储介质,可直接加载到计算机的内部存储器,其中含有软件代码,该计算机程序经由计算机载入并执行后能够实现上述恶意软件检测模型的构建方法任一实施例所示步骤。
116.在示例性实施例中,还提供一种计算机程序产品,可直接加载到计算机的内部存储器,其中含有软件代码,该计算机程序经由计算机载入并执行后能够实现上述所述的恶意软件检测模型的构建方法任一实施例所示步骤。
117.本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
118.还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
119.结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。
120.对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1