一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于N-gram和机器学习的恶意软件检测方法及系统与流程

2021-11-29 13:48:00 来源:中国专利 TAG:
一种基于n‑gram和机器学习的恶意软件检测方法及系统
技术领域
:1.本发明属于网络安全领域,尤其涉及一种基于n‑gram和机器学习的恶意软件检测方法及系统。
背景技术
::2.恶意软件是任意故意破坏计算机或网络正常功能的软件。恶意软件在植入或以某种方式进入目标计算机后会造成损害,并可采取可执行代码,脚本,活动内容和其他软件形式。恶意软件的行为包括有窃取敏感信息、获得对私人系统的未经授权访问或间谍活动等。目前恶意软件的攻击面广,从个人到大型组织的it系统,以及核电站和供水系统这种全国性基础设施。随着恶意软件开发人员不断改进检测逃逸技术,现有的恶意软件变种也在不断进化。最新的sonicwall网络威胁报告指出,sonicwall服务在2019年发现了近44万个恶意软件变种,平均每天有超过1200个恶意软件被发布。此外,pandalab最近的一份安全报告中指出,2019年存在超过200万个新的恶意软件二进制文件。3.恶意软件技术分为两类:基于签名的检测和基于异常的检测。传统的杀毒软件通过将给定软件的特征和包含已知恶意软件签名的数据库进行比较,来检测软件是否是恶意的。基于签名的检测依赖于已知的签名库,因此对未知的恶意软件检测能力有限。基于异常的检测算法可对未知的恶意软件进行检测。有相关研究提出了将数据挖掘应用在恶意软件检测的算法,通过使用数据挖掘技术,学习正常程序建立规则集合,应用规则集合来进行恶意软件检测。此外,还有基于机器学习的异常检测算法,其中payl工具,是一种为系统每个服务(端口)计算预期有效负载的工具,在学习阶段,payl学习正常程序行为为每一个端口建立一个质心模型。然后在检测阶段,将检测程序的有效载荷与质心模型进行比较,检测两者的马氏距离,如果检测程序与质心模型距离太远,则认为有效负载时恶意的。当前基于异常的检测算法种类繁多,但其中大多数的检测算法在精度以及性能方面难以满足实际应用的需求。技术实现要素:4.发明目的:本发明所要解决的技术问题是针对现有技术的不足,提供一种基于n‑gram和机器学习的恶意软件检测方法及系统。5.为了解决上述技术问题,第一方面,公开了一种基于n‑gram和机器学习的恶意软件检测方法,包括如下步骤:6.步骤1,收集恶意软件样本和应用软件样本,动态分析样本,获得动态分析文件;7.步骤2,基于动态分析文件,获得样本关键信息,生成第一n‑gram特征集;8.步骤3,对所述第一n‑gram特征集进行特征规约,获得第二n‑gram特征集;9.步骤4,将所述第二n‑gram特征集转换为二元特征向量集,输入机器学习分类模型进行训练和测试,获得恶意软件分类器;10.步骤5,使用恶意软件分类器进行恶意软件检测,协助网络安全分析人员发现恶意软件。11.结合第一方面,在一种实现方式中,所述步骤1中恶意软件样本包括蠕虫、木马和病毒,所述应用软件样本包括一种以上的应用软件;所述恶意软件样本和应用软件样本为pe(portableexecute,可移植的执行体)文件格式。12.结合第一方面,在一种实现方式中,所述步骤1中动态分析样本,获得动态分析文件,通过人工智能沙箱sndbox获得;人工智能沙箱sndbox利用静态检测算法对样本进行扫描,再利用动态引擎模拟人为操作打开样本,对样本执行过程中的行为进行分析,综合考虑静态检测算法和动态引擎的检测结果生成动态分析文件;所述静态检测算法包括静态扫描和杀毒软件检测引擎。13.相较于基于代码反编译产生的代码片段,基于人工智能沙箱sndbox生成的动态分析文件更加具备实用性,能够有效提高恶意软件检测的精度。因为当前代码混淆技术发展迅速,很多传统的恶意软件家族,在初代恶意软件的代码基础上,通过代码混淆技术会产生新的恶意软件变种。基于代码反编译产生的代码片段训练的机器学习分类器无法应对新的恶意软件变种。相反,基于人工智能沙箱sndbox可以检测,因为同一恶意软件家族的不同恶意软件只是在静态代码层面进行了变更,恶意软件在运行时的行为差异不大。因此,选择具备人工智能检测技术的sndbox生成的动态分析文件作为分类器的起点,起到了决定分类器精度的决定性作用。14.结合第一方面,在一种实现方式中,所述步骤2中获得样本关键信息包括:根据步骤1中得到的动态分析文件,通过分析该动态分析文件的格式,归纳出api调用、函数参数以及参数位置等关键信息的特征,再基于特征编写解析程序从动态分析文件中摘取在分析恶意软件时的样本关键信息。相较于从整个动态分析文件中提取n‑gram,通过提取关键信息的方式可以大大降低n‑gram的基数,有利于提升系统整体性能以及精度。15.结合第一方面,在一种实现方式中,所述步骤2中生成第一n‑gram特征集是基于所述样本关键信息,采用n‑gram算法生成。16.步骤2中在特征提取阶段采用n‑gram算法能够满足获得定长的特征向量来创建机器学习模型,n‑gram是一种基于统计语言模型的算法,它的基本思想是将文本里面的内容按照字节进行大小为n的滑动窗口操作,形成了长度为n的字节片段序列。每一个字节片段称为gram。通过对所有gram的出现频率进行统计,并按照合理的阈值进行过滤,形成关键gram列表,也就是文本的向量特征空间,列表中的每一种gram就是一个特征向量维度。n‑gram算法创建特征向量是后续进行机器学习训练的必要步骤。17.结合第一方面,在一种实现方式中,所述步骤3采用tf‑idf(termfrequency‑inversedocumentfrequency,词频‑逆文本频率指数)算法来评估每一个n‑gram对识别恶意软件的重要性,如果一个n‑gram在恶意软件的n‑gram集合中出现的频率高,而在正常应用软件的n‑gram集合中很少出现,那么该n‑gram就是我们需要选取的关键n‑gram特征集。通过tf‑idf算法筛选的n‑gram特征集记为第二n‑gram特征集。18.由于n‑gram算法产生的特征集数量过大,因此需要进行特征规约,即特征降维,减少特征数量;由于n‑gram特征集合的基本单元是gram,也就是字符串,特征规约采用用于信息检索与文本挖掘的tf‑idf算法,该算法能够过滤掉常见的n‑gram特征,保留重要的n‑gram特征,有利于提升下一阶段机器学习分类模型的训练和测试精度和性能。19.结合第一方面,在一种实现方式中,所述步骤4中机器学习分类模型包括朴素贝叶斯、决策树分类、随机森林以及逻辑回归模型;将所述第二n‑gram特征集转换后的二元特征向量集,按照80%和20%的比例划分为训练样本集和测试样本集,分别分配给训练阶段和测试阶段;为了验证不同机器学习分类模型的精度,采用两次以上重复试验的方式,每次选取的训练样本集和测试样本集均不相交。20.结合第一方面,在一种实现方式中,所述步骤5中使用恶意软件分类器进行恶意软件检测时,支持两种检测模式:21.模式1:每一种机器学习分类模型都能够单独对被检测软件进行检测,判断被检测软件是否是恶意软件;检测时选择任一种机器学习分类模型即可;22.模式2:四种机器学习分类模型分别对被检测软件进行检测,分别计算四种机器学习分类模型的评价指标;将所有评价指标通过取平均数的方式获得综合评价指标,判断被检测软件是否是恶意软件。23.结合第一方面,在一种实现方式中,所述步骤5中四种机器学习分类模型的评价指标包括模型识别度、精度、召回率以及f1分数。24.第二方面,公开了一种基于n‑gram和机器学习的恶意软件检测系统,包括沙箱检测模块、特征生成模块、特征规约模块、机器学习模块。25.所述沙箱检测模块,用于采用人工智能沙箱sndbox对恶意软件样本和应用软件样本进行动态的行为分析,获得动态分析文件;26.所述特征生成模块,用于基于动态分析文件,获得样本关键信息;利用n‑gram算法生成第一n‑gram特征集;所述样本关键信息是包括api调用、函数参数和参数位置信息的语段序列;27.所述特征规约模块,用于采用tf‑idf算法对所述第一n‑gram特征集进行特征规约,获得第二n‑gram特征集;28.所述机器学习模块,用于接收第二n‑gram特征集,将所述第二n‑gram特征集转换为二元特征向量集,输入机器学习分类模型进行训练和测试,获得恶意软件分类器;使用恶意软件分类器进行恶意软件检测。29.有益效果:针对恶意软件破坏性强、迭代速度快、逃避检测能力强等特点,本发明提出了一种基于n‑gram和机器学习的恶意软件检测方法和系统。该方法和系统综合利用了沙箱动态分析技术、n‑gram特征算法、tf‑idf特征规约算法以及机器学习分类模型,进行恶意软件检测。一方面,该方法提出了一种有效的特征提取和表示算法,通过从动态分析过程产生的分析文件中选择一组关键的特征,并进行特征规约,保障了分类器的精度以及训练的性能。另一方面,该方法继承了机器学习领域的能力,提供了一个高度自适应的解决方案,支持多种的机器学习分类模型。训练得到的恶意软件分类器可以自动的进行恶意软件分类,并且支持对更大规模的样本进行训练,能够为恶意软件分析工作提供有效的帮助,极大的降低恶意软件分析的成本。附图说明30.下面结合附图和具体实施方式对本发明做更进一步的具体说明,本发明的上述和/或其他方面的优点将会变得更加清楚。31.图1是本技术实施例提供的检测方法的流程示意图。32.图2是本技术实施例提供的检测方法创建二元特征向量的伪代码示意图。33.图3是本技术实施例提供的检测方法贝叶斯分类过程示意图。具体实施方式34.下面将结合附图,对本发明的实施例进行描述。35.本发明第一实施例公开了一种基于n‑gram和机器学习的恶意软件检测方法,如图1所示,包括如下步骤:36.步骤1,收集恶意软件样本和应用软件样本,动态分析样本,获得动态分析文件;37.步骤2,基于动态分析文件,获得样本关键信息,生成第一n‑gram特征集;38.步骤3,对所述第一n‑gram特征集进行特征规约,获得第二n‑gram特征集;39.步骤4,将所述第二n‑gram特征集转换为二元特征向量集,输入机器学习分类模型进行训练和测试,获得恶意软件分类器;40.步骤5,使用恶意软件分类器进行恶意软件检测。41.第一实施例中,数据语料库选取了60个恶意软件样本和60个应用软件样本。选取的60个恶意样本属于不同类型的恶意软件,包括木马、病毒、蠕虫等,60个正常应用软件也包括了多种类型的应用软件;所述恶意软件样本和应用软件样本为pe文件格式。42.对于包含恶意软件样本和应用软件样本,选择一个软件样本以手动提交的方式输入到人工智能沙箱sndbox中。人工智能沙箱sndbox首先利用静态扫描,杀毒软件检测引擎等静态检测算法对文件进行扫描。再结合动态引擎利用动态引擎模拟人为操作打开文档,对文件执行过程中的行为进行分析。然后综合考虑静态检测算法和动态引擎的检测结果生成动态分析文件,为后续分析提供依据。本实施例中,使用的人工智能沙箱sndbox为开源沙箱cuckoosandbox,该沙箱跨越windows、android、linux和darwin四种操作系统平台,支持二进制的pe文件(exe、dll、com)、pdf文档、office文档、urls(uniformresourcelocator,统一资源定位器)、html(hypertextmarkuplanguage,超文本标记语言)文件、各种脚本如php(hypertextpreprocessor,超文本预处理器)、vb(visualbasic,程序设计语言)和python(计算机编程语言)、jar包(计算机文件格式)、zip文件(压缩文件格式)等等几乎所有的文件格式,能分析恶意文件的静态二进制数据和动态运行后的进程、网络、文件等行为。43.第一实施例中,将原始的、模糊的、广泛的输入转换为不同的特征集的过程称为特征提取。这一过程的主要目标是选择能够帮助建立有效的恶意软件检测系统的特征。目前在恶意软件检测方向,常用的特征提取算法包括有二进制特征提取,频率特征提取、频率权重特征提取、隐马尔可夫模型,n‑gram算法等。考虑到机器学习算法需要定长的特征向量来创建学习模型,本方法在特征提取阶段采用了n‑gram算法。44.根据沙箱检测得出的动态分析文件,首先进行关键信息的提取,分析所述动态分析文件的格式,归纳出api调用、函数参数以及参数位置关键信息的特征;基于特征编写解析程序,从动态分析文件中摘取在分析恶意软件时的样本关键信息。然后用n‑gram算法基于样本关键信息进行特征生成。n‑gram是一种基于统计语言模型的算法,又被称为一阶马尔科夫链。它的基本思想是将文本里面的内容按照字节进行大小为n的滑动窗口操作,形成长度为n的字节片段序列。每一个字节片段称为gram,对所有的gram的出现频度进行统计,并且按照事先设定好的阈值进行过滤,形成关键gram列表,也就是这个文本的向量特征空间,记为第一n‑gram特征集。第一n‑gram特征集中的每一种gram就是一个特征向量维度。本实施例中,n的取值范围包括是1~6,阈值根据不同的样本动态设置,一般保留出现频率最高的前20%的n‑gram。45.第一实施例中,由于n‑gram算法产生的特征集合数量过大,因此需要进行特征规约。由于n‑gram特征集合的基本单元是gram,也就是字符串,因此特征规约采用了用于信息检索与文本挖掘的tf‑idf算法。该算法可以评估一字词对于一个文件对于文件集的重要程度。tf‑idf算法的核心思想是:如果某个单词在一个文件中出现的词频(tf)高,并且在其他文件中很少出现,那么认为该词或者短语具有很好的分类区分能力,适合用来分类。46.tf是词频,表示词条在文本中出现的频率。这个数字通常会被归一化,一般是词频除以文章总词数,以防止它偏向长的文件。词频tf的公式如下:[0047][0048]其中nij是该词在文件dj中出现的次数,分母则是文件dj中所有词汇出现的次数总和。其中j表示的是一组文件中某一文件的索引(j≥0),而i表示的是某一个词语t在一个文件中的索引(i≥0)。tfij表示在文件dj中词语ti出现的频率。[0049]idf是逆向文件频率,某一特定词语的idf,可以由文件总数除以包含该词语的文件的数目,再将得到的商取对数。如果包含词语t的文档越少,idf越大,则说明该词条具有很好的类别区分功能。idf公式如下:[0050][0051]其中d是语料库中的文件总数。{j:ti∈dj}表示包含词语ti的文件数目。[0052]tf‑idf的公式如下:[0053]tf‑idfij=tfij*idfi[0054]tf‑idf是词频和逆向文件的乘积,某一特定文件内的高词语频率,以及该词语在整个文件中的低文件频率,可以产生出高权重的tf‑idf。因此,tf‑idf倾向于过滤掉常见的词语,保留重要的词语。[0055]对于n‑gram特征集合,利用tf‑idf算法进行特征规约,评估每一个n‑gram对识别恶意软件的重要性,如果一个n‑gram在恶意软件的n‑gram集合中出现的频率高,而在正常应用软件的n‑gram集合中很少出现,那么该n‑gram就是我们需要选取的关键n‑gram特征集。通过tf‑idf算法筛选的n‑gram特征集记为第二n‑gram特征集。,用于下一阶段的机器学习分类器的训练和测试。[0056]第一实施例中,将第二n‑gram特征集通过编码转换成二元特征向量,转换为二元特征向量集的伪代码如图2所示。将转换后的二元特征向量传给机器学习分类模型进行训练和测试,机器学习分类模型包括朴素贝叶斯、决策树分类,随机森林以及逻辑回归。[0057]朴素贝叶斯基于贝叶斯定理,它表达了一个事件发生的概率,而确定这一概率的方法是基于与该事件相关的条件先验知识。而利用相应先验知识进行概率推断的过程为贝叶斯推断。实际在机器学习的分类问题的应用中,朴素贝叶斯分类器的训练过程就是基于训练集来估计类先验概率,并为每个属性估计条件概率。[0058]决策树分类包括特征选择,决策树生成以及剪枝三个步骤。特征选择是指从训练数据中众多的特征中选择一个特征作为当前节点的分类标准,如何选择特征有着不同量化评估标准,从而衍生了不同的决策树算法。决策树生成根据选择的特征评估标准,从上至下递归地生成子节点,直到数据集不可分则停止生长。最后通过剪枝来缩小树的规模,缓解过拟合。[0059]随机森林是一种包含多个决策树的分类模型。对于一个样本,每颗树可以产生不同的分类结果。随机森林通过投票的方式选择票数多的作为最终的结果。随机森林能够应用于大规模的数据集,以及处理具有高维特征的输入样本。[0060]逻辑回归在进行分类时,通过建立代价函数,然后通过优化方法迭代求解出最优的模型参数。逻辑回归的本质是:假设数据服从这个分布,然后使用极大似然估计做参数的估计。[0061]在分类过程中,我们使用了有监督的机器学习算法,朴素贝叶斯、决策树、随机森林以及逻辑回归。将所述第二n‑gram特征集转换后的二元特征向量集数据随机混合之后,按照80%和20%的比例划分为训练样本集和测试样本集,分别分配给训练阶段和测试阶段。为了验证不同机器学习算法的精度,本实施例采用10倍交叉验证,将训练样本集和测试样本集分别随机分成10个不相交的集合,目的是训练和测试阶段都要执行10次。在图3中是实验中四个分类器的混淆矩阵,可显示分类系统的精度。混淆矩阵的每一列代表了预测类别,每一列的总数表示预测为该类别的数据的数目;每一行代表了数据的真实归属类别,每一行的数据总数表示该类别的数据实例的数目。每一列中的数值表示真实数据被预测为该类的数目。[0062]第一实施例中,为了对比四种机器学习算法的分类性能,进行精度评价,评价的指标包括有模型识别度、精度(precision)、召回率(recall)以及f1分数(f1‑score)。首先介绍精度评估相关的术语及定义:[0063]真阳性tp:预测为正,实际也为正;[0064]假阳性fp:预测为正,实际为负;[0065]假阴性fn:预测为负,实际为正;[0066]真阴性tn:预测为负,实际为负;[0067]模型识别度:(tp tn)/样本总数;[0068]精度precision:p=tp/(tp fp);[0069]召回率recall:r=tp/(tp fn);[0070]f1分数:f1=2(precision*recall)/(precision recall);[0071]对于四种机器学习算法,结合图3中混淆矩阵统计的实验结果,其精度评估结果如下表所示。实验结果表明,整体的模型识别度,逻辑回归模型优于其他算法。因此f1‑score的比较中,逻辑回归模型的得分也是最高的。精度方面,朴素贝叶斯算法优于其他算法,表明其检测认为是恶意软件的部分,98%的可能性确定是恶意软件。此外,召回率最高的是逻辑回归算法。[0072]分类器模型识别度精度p召回率rf1‑score朴素贝叶斯82.8%0.980.730.84决策树78.6%0.800.870.83随机森林79.3%0.800.890.84逻辑回归84.5%0.810.970.89[0073]此外,我们将本发明的实验结果与其他类似研究成果进行了对比,各研究成果的模型识别度如下表所示。可以看出,相较于相关研究,由于我们特征选取算法选出了高质量的特征,从而有效的提高了机器学习分类模型的分类精度。[0074]分类器本项目研究[1]研究[2‑4]研究[5]研究[6]朴素贝叶斯82.8%81.2%80.6%79.2%决策树78.6%67.3%ꢀꢀ随机森林79.3%77.2%74.3%75.1%70.7%逻辑回归84.5%82.3%ꢀꢀ[0075]上述研究中引用的参考文献如下:[0076][1]sayfullina,l.;eirola,e.;komashinsky,d.;palumbo,p.;miche,y.;lendasse,a.;karhunen,j.efficientdetectionofzero‑dayandroidmalwareusingnormalizedbernoullinaivebayes.inproceedingsoftheieeetrustcom/bigdatase/ispa,helsinki,finland,20‑22august2015;volume1,pp.198‑205.[0077][2]garg,v.;yadav,r.k.malwaredetectionbasedonapicallsfrequency.inproceedingsofthe4thinternationalconferenceoninformationsystemsandcomputernetworks,mathura,india,21‑22november2019;pp.400‑404.[0078][3]salehi,z.;sami,a.;ghiasi,m.usingfeaturegenerationfromapicallsformalwaredetection.comput.fraudsecur.2014,9,9‑18[0079][4]kumar,b.j.;naveen,h.;kumar,b.p.;sharma,s.s;villegas,j.logisticregressionforpolymorphicmalwaredetectionusinganovaf‑test.inproceedingsoftheinternationalconferenceoninnovationsininformation,embeddedandcommunicationsystems,coimbatore,india,17‑18march2017;pp.1‑5.[0080][5]devesa,j.;santos,i.;cantero,x.;penya,y.k.;bringas,p.g.automaticbehaviour‑basedanalysisandclassificationsystemformalwaredetection.iceis2010,2,395‑399[0081][6]salehi,z;ghiasi,m.;sami,a.aminerformalwaredetectionbasedonapifunctioncallsandtheirarguments.inproceedingsofthe16thcsiinternationalsymposiumonartificialintelligenceandsignalprocessing,shiraz,fars,iran,2‑3may2012;pp.563‑568.[0082]第一实施例中,所述步骤5中使用恶意软件分类器进行恶意软件检测时,支持两种检测模式:[0083]模式1:每一种机器学习分类模型都能够单独对被检测软件进行检测,判断被检测软件是否是恶意软件;检测时选择任一种机器学习分类模型即可;[0084]模式2:四种机器学习分类模型分别对被检测软件进行检测,分别计算四种机器学习分类模型的评价指标;所述评价指标包括模型识别度、精度、召回率以及f1分数。将所有评价指标通过取平均数的方式获得综合评价指标,判断被检测软件是否是恶意软件。综合评价指标以概率的形式给出,通过与可信阈值进行比较,大于可信阈值即判定为是恶意软件。可信阈值会根据训练阶段进行调整,通过调整可信阈值,可以获得更高的分类精度。[0085]本发明第二实施例公开一种基于n‑gram和机器学习的恶意软件检测系统,包括沙箱检测模块、特征生成模块、特征规约模块和机器学习模块。[0086]所述沙箱检测模块,用于采用人工智能沙箱sndbox对恶意软件样本和应用软件样本进行动态的行为分析,获得动态分析文件;[0087]所述特征生成模块,用于基于动态分析文件,获得样本关键信息;利用n‑gram算法生成第一n‑gram特征集;所述样本关键信息是包括api调用、函数参数和参数位置信息的语段序列;[0088]所述特征规约模块,用于采用tf‑idf算法对所述第一n‑gram特征集进行特征规约,获得第二n‑gram特征集;[0089]所述机器学习模块,用于接收第二n‑gram特征集,将所述第二n‑gram特征集转换为二元特征向量集,输入机器学习分类模型进行训练和测试,获得恶意软件分类器;使用恶意软件分类器进行恶意软件检测。[0090]本发明提供了一种基于n‑gram和机器学习的恶意软件检测方法及系统,具体实现该技术方案的方法和途径很多,以上所述仅是本发明的具体实施方式,应当指出,对于本
技术领域
:的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。本实施例中未明确的各组成部分均可用现有技术加以实现。当前第1页12当前第1页12
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献