CN109858251B - 基于Bagging集成学习算法的恶意代码分类检测方法 - Google Patents
基于Bagging集成学习算法的恶意代码分类检测方法 Download PDFInfo
- Publication number
- CN109858251B CN109858251B CN201910140721.5A CN201910140721A CN109858251B CN 109858251 B CN109858251 B CN 109858251B CN 201910140721 A CN201910140721 A CN 201910140721A CN 109858251 B CN109858251 B CN 109858251B
- Authority
- CN
- China
- Prior art keywords
- malicious codes
- classification
- malicious
- bagging
- adopting
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Image Analysis (AREA)
Abstract
基于Bagging集成学习算法的恶意代码分类检测方法,属于网络信息安全和计算机应用技术领域。本发明首先获得恶意代码并将其转换成汇编形式;然后采用2‑gram特征提取方法,得到恶意代码的特征信息,并通过决策树方法对其进行笼统分类,之后根据得到可能的分类情况,再判断是否适合3‑gram特征提取方法,如果符合则采用3‑gram方法进行特征提取,否则判断是否为同一家族的恶意代码,如果符合则利用特征纹理图提取其特征信息;通过以上方法得到特征信息后,采用Bagging集成学习方法进行分类,对恶意代码进行再分类,得到更好结果。本发明通过引入机器学习的方法,实现对恶意代码的分类,相比利用传统的静态特征提取方法进行的分类检测方法分类效果更好,有较高的准确率。
Description
技术领域
本发明属于网络信息安全和计算机应用技术领域,具体涉及一种基于Bagging集成学习算法的恶意代码分类检测方法。
背景技术
随着计算机网络的不断发展,计算机和网络应用到各行各业。它在给人类带来便利的同时,同样也带来了安全隐患。在网络上传播着各种各样的恶意代码、恶意软件。对于恶意代码的检测和分类是研究人员一直研究的重点。当今现有的恶意代码检测方法主要有静态检测和动态检测。静态检测在不运行程序的情况下,通过对代码的结构、流程等特性分析,来判断待检测的软件是否是恶意软件。动态检测则是在虚拟环境或沙箱等安全的环境下,运行程序,观察程序运行对系统的影响,直观发现待测软件是否为恶意软件。
目前,恶意代码的静态检测方法和动态检测方法都有很广泛的应用,这两种方法有各自的优点但也都存在一些问题。静态检测方法是对恶意代码本身进行分析,不用执行恶意代码,是一种比较方便、快捷、有效的恶意代码检测方法。所以静态检测方法也是目前大多商用的杀毒软件产品采用的主要方法,这种方法存在的问题是它是以提取已知恶意代码的特征来建立恶意代码特征库为基础的,对于一些未知的恶意代码或者已知恶意代码的变形和多态就无能为力。动态检测方法是基于代码运行时的行为来进行检测的,但这种方法需要运行代码来监视代码运行时的行为来做判断,在做判断的时候会有一个时间的消耗,而且像目前常用的动态技术像虚拟机和沙盒方法,都要在虚拟的环境中来进行代码的运行行为监视,而目前有些恶意代码能检测到这些虚拟环境,会隐藏自身的恶意行为来躲避检测。
如今机器学习的飞速发展,机器学习方法被大量的应用到恶意代码检测当中,又因(1)需要准备的数据量不大;(2)时间复杂度相对较低;(3)可使用统计检验来验证模型等优点。决策树被广泛的应用到恶意代码检测当中。但决策树中存在的过拟合现象会影响恶意代码分类的效率,因此Bagging集成学习方法被引入到恶意代码分类检测中。
目前传统的静态特征提取方法多采用N-gram方法提取特征,利用决策树等机器学习方法进行训练模型,但单独依靠一种特征提取方法会产生例如可变性差、准确率低等特点。可变性差是指对于同一家族的恶意代码的分类效果不明显;准确率低及提取的特征不能全面的反映出样本的实际行为,导致分类效果差。本文提出一种基于Bagging的恶意代码分类检测方法,实验结果与传统静态特征提取方法中利用N-gram算法同时采用决策树进行训练相结合的方法进行对比,结果显示,本方法的分类效果优于传统静态特征提取方法。
发明内容
本发明的目的在于提供一种基于Bagging集成学习算法的恶意代码分类检测方法,首先采用传统汇编方法笼统分类,再根据不同的恶意代码类型,采用不同的特征提取方法,得到恶意代码的特征信息;根据不同的特征信息,采用机器学习的Bagging方法对得到的特征信息进行训练和分类,得到更加准确的分类。
本发明的目的是这样实现的:
基于Bagging集成学习算法的恶意代码分类检测方法,包括如下步骤:
步骤1:获取恶意代码并将恶意代码转换成汇编形式;
步骤2:采用2-gram特征提取方法得到恶意代码的特征信息,并通过决策树的机器学习方法对恶意代码进行分类,实现对其的笼统分类;
步骤3:根据步骤2中得到的分类结果,判断是否适合3-gram特征提取方法,若是则执行步骤4,否则判断是否为同一家族的恶意代码,若是则执行步骤5;
步骤4:采用3-gram特征提取方法进行特征提取;
步骤5:采用纹理特征图像提取特征信息;
步骤6:采用基于Bagging的集成学习方法分类。
所述步骤5中纹理特征图像提取特征信息采用恶意代码图像绘制方法,将二进制文件转换成一个矩阵,一个二进制文件的每个字节范围在00~FF之间,其中F为16进制中字符,对应着灰度图0~255;采用GIST特征,将图进行特征提取。
所述步骤6中基于Bagging的集成学习方法首先从样本中重采样选出n个样本,在所有属性上对这n个样本建立分类器,重复上面两步m次,产生m个分类,最后将待预测数据放到m个分类器中,根据m个分类器的投票结果,决定带预测数据属于哪一类。
所述步骤6中Bagging使用多个CART决策树作为弱分类器;
所述CART决策树方法为首先设结点的训练数据集D,计算现有特征对该数据集的Gini系数;对每一个特征A,对其可能取的每个值a,根据样本点对A=a的测试为“是”或“否”;将D分割成D1和D2两部分,计算A=a时的Gini系数,其中pi为第i个类别的概率,
然后在所有可能的特征A以及它们所有可能的切分点a中,选择Gini系数最小的特征及其对应的切分点作为最优特征与最优切分点;依最优特征与最优切分点,从现结点生成两个子结点,将训练数据集依特征分配到两个子结点中去;对两个子结点进行递归地调用直至满足停止条件;最终得到决策树对恶意代码进行分类。
本发明有益效果在于:
(1)本发明根据不同的特征信息,采用机器学习的Bagging方法对得到的特征信息进行训练和分类,得到更加准确的分类;
(2)本发明相比利用传统的静态特征提取方法进行的分类检测方法分类效果更好,有较高的准确率。
附图说明
图1为基于Bagging的恶意代码分类检测流程图;
图2为决策树生成的整体流程图;
图3为N-gram方法流程图;
图4为Bagging集成学习方法原理图;
图5为传统方法和基于Bagging方法的准确率对比折线图;
图6为传统方法和基于Bagging方法的召回率对比柱状图;
图7为传统方法和基于Bagging方法的F1-score对比柱状折线图。
具体实施方式
下面结合附图对本发明做更进一步描述。
一共可以分成5个步骤。
A.将恶意代码转换成汇编形式。
B.根据2-gram和决策树对其进行笼统分类。
C.利用3-gram进行特征提取。
D.利用纹理特征图像采用GIST特征,将图进行特征提取。
E.利用Bagging机器学习方法最终分类。
具体实施方式如下:
1.将获取的恶意代码,利用IDA Pro(交互式反汇编器专业版)进行静态反编译,得到汇编代码,及.asm文件。
2.根据getOpcodeNgram函数中使参数为2得到2-gram的特征信息,利用Python中的scikit-learn库中的DecisionTreeClassifier类对得到的特征信息进行训练,在训练过程中,为防止树的深度过大而导致训练时间过长,将树的最大深度设置为4及DecisionTreeClassifier(max_depth=4)。记录好分类信息。如图2。
3.将得到的.asm文件与特征库中的病毒类型进行匹配,从第一个发生匹配的位置采用滑动窗口的方式向后比较,当发生间断时统计包含的特征数目,当数目超过3时将该字节流计为一个特征码,得到3-gram特征提取。现有分类中蠕虫病毒、后门、Rootkit等恶意代码使用N-gram的特征提取方式效果更佳明显。因此经过二步骤后,发现是以上恶意代码时采用N-gram特征提取方式进行再分类。如图3。
4.将得到的恶意代码利用getMatrixfrom_bin函数转换成图像。首先利用binascii.hexlify将二进制文件转换成十六进制文件,再利用numpy.reshape跟据设定好的宽度生成矩阵,本方法宽度设为512,最后利用Image.fromarray将恶意代码转换成图像。将得到的图像利用GIST特征提取方法提取特征。现有分类中Adware、Trojan等使用图像方法分类效果更佳。因此对应恶意代码采用该分类方式进一步分类。
5.利用Bagging集成分类方法,将病毒库中的数据样本作为训练集,使用BaggingClassifier函数对其进行训练,利用train_test_split函数对其进行交叉验证,使用classification_report函数对分类效果进行预测,根据三、四步骤中得到的特征信息,作为测试集及对其进行最终分类,得到跟精确的分类结果。如图4。
6.选取的评价指标a.分类准确率分数:分类准确率分数是指所有分类正确的百分比。b.召回率召回率=提取出的正确信息条数/样本中的信息条数。c.F1值F1值是精确度和召回率的调和平均值。精确度和召回率都高时,F1值也会高.F1值在1时达到最佳值(完美的精确度和召回率),最差为0.在二元分类中,F1值是测试准确度的量度。与传统方法的比较图见图5、图6、图7。
本发明提出了一种基于Bagging算法的恶意代码分类检测方法,通过引入机器学习的方法,提取和分析代码特征,实现对恶意代码的分类,相比利用传统的静态特征提取方法进行的分类检测方法分类效果更好,有较高的准确率。
所述方法主要包括①数据获取:获得恶意代码并通过IDA Pro工具将其转换成汇编形式的.asm文件。②利用已有静态特征提取方式,如采用2-gram特征提取方法,得到恶意代码的特征信息,并通过决策树的机器学习方法,对恶意代码进行分类,实现对其的笼统分类。根据分类结果得到可能的分类情况,再判断③是否适合3-gram特征提取方法,如果符合则采用3-gram方法进行特征提取,否则判断④是否为同一家族的恶意代码,如果符合则利用特征纹理图提取其特征信息。通过以上方法得到特征信息后,采用⑤Bagging集成学习方法进行分类,对恶意代码进行再分类,得到更好结果。
本发明创新点为③是否适合3-gram特征提取方法和④是否为同一家族的恶意代码以及⑤采用Bagging集成学习方法进行分类3中技术相结合,达到分类效果更好,分类准确率更高的目的。
首先根据已得到的笼统分类,将恶意代码进行再分类,判断其是否适合3-gram特征提取方法,如果其适合则对其采用3-gram方法再进行特征提取,如果不适合,将判断其是否为同一家族的恶意软件,如果是同一家族恶意软件,使用特征图像的特征提取方法进行特征提取。经上述方法后得到对应恶意代码的特征信息,此时采用Bagging集成学习方法,将得到的特征信息进行训练和分类,已得到更好的分类效果。过程见图1。
本发明提供了恶意代码分类检测技术:其中包括:
A.基于N-gram的1次特征提取
采用N-gram方法中N为参数2提取恶意代码特征信息,将出现频数大于500的特征信息例如(mov,push)出现700次的特征保留,利用决策树方法对其进行分类,分类后得到笼统的分类结果。
B.基于N-gram方法2次特征提取
根据不同恶意代码的特点不同,采用不同种的特征提取方法,蠕虫病毒、后门、Rootkit等恶意代码多对PE文件进行修改,利于N-gram方法提取词频。采用N-gram方法中N为参数3进行分类效果跟好,因此使用3-gram方法。
C.基于纹理特征图像提取特征信息
采用恶意代码图像绘制方法,将二进制文件转换成一个矩阵,一个二进制文件的每个字节范围在00~FF(其中F为16进制中字符)之间,对应着灰度图0~255。采用GIST特征,将图进行特征提取。
D.基于CART决策树方法分类
首先设结点的训练数据集为D,计算现有特征对该数据集的Gini系数。对每一个特征A,对其可能取的每个值a,根据样本点对A=a的测试为“是”或“否”将D分割成D1和D2两部分,计算A=a时的Gini系数(其中pi为第i个类别的概率)。
然后在所有可能的特征A以及它们所有可能的切分点a中,选择Gini系数最小的特征及其对应的切分点作为最优特征与最优切分点。依最优特征与最优切分点,从现结点生成两个子结点,将训练数据集依特征分配到两个子结点中去。对两个子结点递归地调用步骤l~2,直至满足停止条件。最终得到决策树对恶意代码进行分类。
E.基于Bagging的集成学习方法分类
Bagging使用多个CART决策树作为弱分类器。首先从样本中重采样(有放回采样)选出n个样本,在所有属性上,对这n个样本建立分类器,重复上面两步m次,产生m个分类,最后将待预测数据放到m个分类器中,根据m个分类器的投票结果,决定带预测数据属于哪一类(即少数服从多数)。
Claims (5)
1.基于Bagging集成学习算法的恶意代码分类检测方法,其特征在于,包括
步骤一:获取恶意代码并将恶意代码转换成汇编形式;
步骤二:采用2-gram特征提取方法得到恶意代码的特征信息,并通过决策树的机器学习方法对恶意代码进行分类,实现对其的笼统分类;
步骤三:根据步骤二中得到的分类结果,判断是否适合3-gram特征提取方法,若是则执行步骤四;否则,判断是否为同一家族的恶意代码,若是则跳过步骤四并执行步骤五;
步骤四:采用3-gram特征提取方法进行特征提取,跳过步骤五并执行步骤六;
步骤五:采用纹理特征图像提取特征信息;
步骤六:采用基于Bagging的集成学习方法分类。
2.根据权利要求1所述的基于Bagging集成学习算法的恶意代码分类检测方法,其特征在于:所述步骤五中纹理特征图像提取特征信息采用恶意代码图像绘制方法,将二进制文件转换成一个矩阵,一个二进制文件的每个字节范围在00~FF之间,其中F为16进制中字符,对应着灰度图0~255;采用GIST特征,将图进行特征提取。
3.根据权利要求1所述的基于Bagging集成学习算法的恶意代码分类检测方法,其特征在于:所述步骤六中基于Bagging的集成学习方法首先从样本中重采样选出n个样本,在所有属性上对这n个样本建立分类器,重复上面两步m次,产生m个分类器,最后将待预测数据放到m个分类器中,根据m个分类器的投票结果,决定待预测数据属于哪一类。
4.根据权利要求1所述的基于Bagging集成学习算法的恶意代码分类检测方法,其特征在于:所述步骤六中Bagging使用多个CART决策树作为弱分类器。
5.根据权利要求4所述的基于Bagging集成学习算法的恶意代码分类检测方法,其特征在于:所述CART决策树方法为首先设结点的训练数据集D,计算现有特征对该数据集的Gini系数;对每一个特征A,对其取的每个值a,根据样本点对A=a的测试为“是”或“否”;将D分割成D1和D2两部分,计算A=a时的Gini系数,其中pi为第i个类别的概率,
然后在所有的特征A以及它们所有的切分点a中,选择Gini系数最小的特征及其对应的切分点作为最优特征与最优切分点;依最优特征与最优切分点,从现结点生成两个子结点,将训练数据集依特征分配到两个子结点中去;对两个子结点进行递归地调用直至满足停止条件;最终得到决策树对恶意代码进行分类。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910140721.5A CN109858251B (zh) | 2019-02-26 | 2019-02-26 | 基于Bagging集成学习算法的恶意代码分类检测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910140721.5A CN109858251B (zh) | 2019-02-26 | 2019-02-26 | 基于Bagging集成学习算法的恶意代码分类检测方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109858251A CN109858251A (zh) | 2019-06-07 |
CN109858251B true CN109858251B (zh) | 2023-02-10 |
Family
ID=66898990
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910140721.5A Active CN109858251B (zh) | 2019-02-26 | 2019-02-26 | 基于Bagging集成学习算法的恶意代码分类检测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109858251B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2182458A1 (en) * | 2008-11-03 | 2010-05-05 | Deutsche Telekom AG | Acquisition of malicious code using active learning |
CN102411687A (zh) * | 2011-11-22 | 2012-04-11 | 华北电力大学 | 未知恶意代码的深度学习检测方法 |
CN105160249A (zh) * | 2015-07-02 | 2015-12-16 | 哈尔滨工程大学 | 一种基于改进的神经网络集成的病毒检测方法 |
CN106096413A (zh) * | 2016-06-21 | 2016-11-09 | 康佳集团股份有限公司 | 一种基于多特征融合的恶意代码检测方法及系统 |
CN106096405A (zh) * | 2016-04-26 | 2016-11-09 | 浙江工业大学 | 一种基于Dalvik指令抽象的Android恶意代码检测方法 |
CN107908963A (zh) * | 2018-01-08 | 2018-04-13 | 北京工业大学 | 一种自动化检测恶意代码核心特征方法 |
CN108416213A (zh) * | 2018-03-14 | 2018-08-17 | 中国人民解放军陆军炮兵防空兵学院郑州校区 | 一种基于图像纹理指纹的恶意代码分类方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10616252B2 (en) * | 2017-06-30 | 2020-04-07 | SparkCognition, Inc. | Automated detection of malware using trained neural network-based file classifiers and machine learning |
-
2019
- 2019-02-26 CN CN201910140721.5A patent/CN109858251B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2182458A1 (en) * | 2008-11-03 | 2010-05-05 | Deutsche Telekom AG | Acquisition of malicious code using active learning |
CN102411687A (zh) * | 2011-11-22 | 2012-04-11 | 华北电力大学 | 未知恶意代码的深度学习检测方法 |
CN105160249A (zh) * | 2015-07-02 | 2015-12-16 | 哈尔滨工程大学 | 一种基于改进的神经网络集成的病毒检测方法 |
CN106096405A (zh) * | 2016-04-26 | 2016-11-09 | 浙江工业大学 | 一种基于Dalvik指令抽象的Android恶意代码检测方法 |
CN106096413A (zh) * | 2016-06-21 | 2016-11-09 | 康佳集团股份有限公司 | 一种基于多特征融合的恶意代码检测方法及系统 |
CN107908963A (zh) * | 2018-01-08 | 2018-04-13 | 北京工业大学 | 一种自动化检测恶意代码核心特征方法 |
CN108416213A (zh) * | 2018-03-14 | 2018-08-17 | 中国人民解放军陆军炮兵防空兵学院郑州校区 | 一种基于图像纹理指纹的恶意代码分类方法 |
Non-Patent Citations (3)
Title |
---|
基于操作码N-Gram的Windows恶意软件检测;李志周等;《中小企业管理与科技(中旬刊)》;20150415(第04期);全文 * |
基于机器学习的自动化恶意代码分类与新恶意代码检测技术(英文);Liu LIU等;《Frontiers of Information Technology & Electronic Engineering》;20170903(第09期);全文 * |
基于随机森林的恶意代码检测;戴逸辉等;《网络空间安全》;20180225(第02期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN109858251A (zh) | 2019-06-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20210241175A1 (en) | Methods and apparatus for management of a machine-learning model to adapt to changes in landscape of potentially malicious artifacts | |
CN110765458B (zh) | 一种基于深度学习的恶意软件图像格式检测方法及其装置 | |
US5675711A (en) | Adaptive statistical regression and classification of data strings, with application to the generic detection of computer viruses | |
US11941491B2 (en) | Methods and apparatus for identifying an impact of a portion of a file on machine learning classification of malicious content | |
CN111382438B (zh) | 基于多尺度卷积神经网络的恶意软件检测方法 | |
KR101432429B1 (ko) | 시각적 데이터 생성을 이용한 악성 코드 분석 시스템과 그 방법 | |
Zhu et al. | Multi-loss siamese neural network with batch normalization layer for malware detection | |
JP2017004123A (ja) | 判定装置、判定方法および判定プログラム | |
CN111753290A (zh) | 软件类型的检测方法及相关设备 | |
JP2016206950A (ja) | マルウェア判定のための精査教師データ出力装置、マルウェア判定システム、マルウェア判定方法およびマルウェア判定のための精査教師データ出力プログラム | |
NL2029433B1 (en) | Method and system for clustering executable files | |
US20240126876A1 (en) | Augmented security recognition tasks | |
Li et al. | MDBA: Detecting malware based on bytes n-gram with association mining | |
CN111737694B (zh) | 一种基于行为树的恶意软件同源性分析方法 | |
Ugarte-Pedrero et al. | On the adoption of anomaly detection for packed executable filtering | |
CN109858251B (zh) | 基于Bagging集成学习算法的恶意代码分类检测方法 | |
CN111797395A (zh) | 恶意代码可视化及变种检测方法、装置、设备及存储介质 | |
Shekhawat et al. | A review of malware classification methods using machine learning | |
CN112163217B (zh) | 恶意软件变种识别方法、装置、设备及计算机存储介质 | |
CN115842645A (zh) | 基于umap-rf的网络攻击流量检测方法、装置及可读存储介质 | |
KR20220009098A (ko) | 정적분석과 스태킹 기법을 활용한 악성코드 탐지 시스템에 관한 연구 | |
Ting et al. | Faster classification using compression analytics | |
CN111581640A (zh) | 一种恶意软件检测方法、装置及设备、存储介质 | |
CN110826063A (zh) | 一种基于api片段的恶意代码检测方法 | |
JP4125951B2 (ja) | テキスト自動分類方法及び装置並びにプログラム及び記録媒体 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |