基于深度学习和半监督学习的webshell检测方法及装置与流程

文档序号:15979958发布日期:2018-11-17 00:12阅读:193来源:国知局

本发明涉及webshell检测技术领域,具体涉及一种基于深度学习和半监督学习的webshell检测方法及装置。

背景技术

随着互联网的发展,基于b/s架构的web应用迅速普及,包括应用在政府、银行、运营商、电商,以及各大门户网站。由于不同的web系统研发人员水平差异,在设计过程中难免对安全问题欠缺考虑,造成web安全问题频发。常见的安全威胁有:sql注入漏洞、上传文件漏洞、提交表单漏洞、跨站脚本攻击等。入侵者在获得web系统漏洞后,会通过上传webshell来获得web服务器的操作权限。对于入侵者来说,webshell就是一个后门程序,通常是asp、php、jsp等网页脚本,入侵实施后,首先在网页服务器的web目录下面放置脚本文件,然后可以通过web页面对网站服务器进行控制。由于webshell操作不会在系统安全日志中留下记录,并且与正常网页文件混在一起,一般管理员很难看出入侵痕迹。

在web安全检测领域,由于缺少样本,很难建立精准的监督学习模型,而无监督学习会造成误报率高的问题,需要大量的安全工程师分析过滤机器学习的警告,分析结果存在人工误差。由于web攻击方式多变,传统的预测方式难以应对复杂的真实环境。在机器学习领域,学者公认“数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已”。

公知的,卡方检验是一种常见的特征选择方法,是用途非常广的一种假设检验方法,它在分类资料统计推断中的应用包括:两个率或两个构成比比较的卡方检验;多个率或多个构成比比较的卡方检验以及分类资料的相关分析等。卡方检验就是统计样本的实际观测值与理论推断值之间的偏离程度,实际观测值与理论推断值之间的偏离程度就决定卡方值的大小,卡方值越大,偏差越大;卡方值越小,偏差越小;当两个值完全相等时,卡方值就为0,表明理论值完全符合实际值。其基本思想是根据样本数据推断总体的分布与期望分布是否有显著差异,或者推断两个分类变量是否相互独立。

公知的,深度学习是机器学习的重要分支,目前深度学习在图像、语音、自然语言等取得巨大突破。在文本分析领域,word2vec和doc2vec是深度学习的重要研究成果,doc2vec与word2vec相似,只是在word2vec基于词的语义分析基础上,添加基于上下文的语义分析能力。doc2vec是将词表征为实数值向量的一种高效的算法模型,利用深度学习的思想,构建两层神经网络,即输入层-隐藏层-输出层,通过训练,把对文本内容的处理简化为k维向量空间中的向量运算。

公知的,传统的机器学习通常分为有监督学习和无监督学习。有监督学习是通过训练有标记的样本,尽可能正确的对训练集之外的未标记样本进行预测;无监督学习是通过训练无标记的样本,以发现未标记样本之间的内部特征。半监督学习是介于有监督学习和无监督学习之间的机器学习方式,同时运用标记样本和无标记样本,训练机器学习模型。在实际应用中,有标记的webshell样本数量极少,人为手动标记代价大,少量有标记的webshell样本极其珍贵,而webshell样本中未标记的样本大量存在。

公知的,svdd(supportvectordomaindescription)即支持向量数据描述,是由tax和david提出并发展起来的一种单值分类算法,标准的svdd模型属于无监督学习,把要描述的对象作为一个整体,建立一个封闭而紧凑的超球体,使得描述对象全部或尽可能多的包在这个球体内。



技术实现要素:

本发明的目的在于提供一种基于深度学习和半监督学习的webshell检测方法及装置,先使用卡方检验和深度学习方法获取样本的文本向量,然后分别使用单分类和增量学习方式进行训练,提高分类性能。使用公开数据集进行训练和测试,实验结果证实该方法能够有效改善webshell检测的漏报率和误报率。

为实现上述目的,本发明的技术方案为:基于深度学习和半监督学习的webshell检测方法,所述检测方法包括以下步骤:

步骤一:获取包含有标记和无标记的样本,选取有标记样本进行分词处理,并通过卡方检验分析特征词与标签之间的相关性,选择相关性最大的前k个特征词作为筛选特征词;

步骤二:采用筛选特征词对未标记样本进行特征词筛选,作为未标记样本特征;

步骤三:对获取的未标记样本特征使用神经网络算法doc2vec训练,获得各个未标记样本的文本向量;

步骤四:对未标记样本的文本向量使用无监督学习方法训练单分类svdd模型,优化超球面半径最小化,最大情况包含未标记样本;

步骤五:对于新的标记样本,运用在线学习方式增量训练svdd模型,修正单分类svdd模型;

步骤六:使用经过修正的单分类svdd模型,对新样本进行预测。

如上所述的基于深度学习和半监督学习的webshell检测方法,所述步骤一中,收集webshell样本和正常样本,使用卡方检验剔除与区分是不是webshell攻击相关性较小的词。

如上所述的基于深度学习和半监督学习的webshell检测方法,所述步骤一中,选取有标记样本作为卡方检验样本,卡方检验样本包括有标记的正常数据和webshell数据。

如上所述的基于深度学习和半监督学习的webshell检测方法,所述步骤二中,未标记样本作为初始训练集,包含大量的正常样本,可能存在少量webshell样本,所述筛选特征词是通过卡方检验选择的与标签相关性高的特征词,再次使用卡方检验获取的筛选特征词过滤初始训练集,所述步骤三中,使用神经网络算法doc2vec训练过滤后的样本,获取训练样本的文本向量。

如上所述的基于深度学习和半监督学习的webshell检测方法,所述步骤四中,在无监督学习阶段,使用初始训练集w0的文本向量,训练单分类svdd模型m0;在有监督学习阶段,首先在单分类svdd模型m0的基础上,使用增量训练集w1增量训练svdd模型m1;然后在增量svdd模型m1的基础上,使用增量训练集w2增量训练得到svdd模型m2,使用漏报率和误报率验证模型分类效果。

本发明还提供一种基于深度学习和半监督学习的webshell检测装置,所述检测装置包括:

训练样本获取模块,用于获取原始的训练样本;

相关性检测模块,用于通过卡方检验分析特征词与标签之间的相关性;

特征词筛选模块,用于选择若干个相关性高的特征词作为筛选特征词;

样本筛选模块,用于采用筛选特征词对样本进行特征词筛选,获得样本特征;

训练模块,用于对获取的未标记样本特征使用神经网络算法训练,获得各个未标记样本的文本向量;

svdd模块,用于训练单分类svdd模型,优化超球面半径最小化,最大情况包含未标记样本;

增量学习模块,用于对于新的标记样本,运用在线学习方式增量训练svdd模型。

预测模块,用于对新样本的预测,判断是否是webshell。

如上所述的基于深度学习和半监督学习的webshell检测装置,所述训练样本获取模块在github上下载webshell脚本文件和正常脚本文件获取原始的训练样本。

如上所述的基于深度学习和半监督学习的webshell检测装置,特征词筛选模块通过卡方检验获取与标签相关性高的特征词,使用卡方检验获取的筛选特征词过滤初始训练集。

如上所述的基于深度学习和半监督学习的webshell检测装置,使用初始训练集w0的文本向量,训练单分类svdd模型m0;在有监督学习阶段,首先在单分类svdd模型m0的基础上,使用增量训练集w1增量训练svdd模型m1;然后在增量svdd模型m1的基础上,使用增量训练集w2增量训练svdd模型m2。

本发明具有如下优点:本发明提出的基于深度学习和半监督学习webshell检测技术方案,在webshell检测中,改善了系统的性能,有效降低了漏报率和误报率,并在增量学习框架下,通过不断学习新增有标记样本,能够持续优化系统。本发明使用文本向量的方式获得样本特征,能够更好地表示样本,降低漏报率和误报率。

附图说明

图1为基于深度学习和半监督学习的webshell检测方法示意图;

图2为基于深度学习和半监督学习的webshell检测模型训练流程图;

图3为实施例中基于深度学习和半监督学习的webshell检测方法数据分布表;

图4为实施例中基于深度学习和半监督学习的webshell检测方法中卡方检验特征表;

图5为实施例中基于深度学习和半监督学习的webshell检测方法结果验证表;

图6为基于深度学习和半监督学习的webshell检测装置示意图。

具体实施方式

以下实施例用于说明本发明,但不用来限制本发明的范围。

参见图1和图2,基于深度学习和半监督学习的webshell检测方法,所述检测方法包括以下步骤:

s1:获取包含有标记和无标记的样本,选取有标记样本进行分词处理,并通过卡方检验分析特征词与标签之间的相关性,选择相关性最大的前k个特征词作为筛选特征词;

s2:采用筛选特征词对未标记样本进行特征词筛选,作为未标记样本特征;

s3:对获取的未标记样本特征使用神经网络算法doc2vec训练,获得各个未标记样本的文本向量;

s4:对未标记样本的文本向量使用无监督学习方法训练单分类svdd模型,优化超球面半径最小化,最大情况包含未标记样本;

s5:对于新的标记样本,运用在线学习方式增量训练svdd模型,修正单分类svdd模型;

s6:使用经过修正的单分类svdd模型,对新样本进行预测。

基于深度学习和半监督学习的webshell检测方法一个实施例中,所述s1中,收集webshell样本和正常样本,使用卡方检验剔除与区分是不是webshell攻击相关性较小的词。所述s1中,选取有标记样本作为卡方检验样本,卡方检验样本包括有标记的正常数据和webshell数据。

基于深度学习和半监督学习的webshell检测方法一个实施例,所述s2中,未标记样本中包含大量的正常样本,可能存在少量webshell样本,所述筛选特征词是通过卡方检验选择的与标签相关性高的特征词,再次使用卡方检验获取的筛选特征词过滤初始训练集,所述步骤三中,使用神经网络算法doc2vec训练过滤后的样本,获取训练样本的文本向量。

基于深度学习和半监督学习的webshell检测方法一个实施例,所述s4中,所述步骤四中,在无监督学习阶段,使用初始训练集w0的文本向量,训练单分类svdd模型m0;在有监督学习阶段,首先在单分类svdd模型m0的基础上,使用增量训练集w1增量训练svdd模型m1;然后在增量svdd模型m1的基础上,使用增量训练集w2增量训练得到svdd模型m2,使用漏报率和误报率验证模型分类效果。

假设训练数据集为svdd优化目标是在t中,找到最小半径r,最优超球体的求解可以转化为优化问题:

s.t.||φ(xi)-a||2≤r2+ξi

其中,r为待求的超球体的半径,c为自定义常数,ξi为惩罚项,a为超球体的球心。

训练结束后,需要判断新的数据点z是否属于这个类,即:

(z-a)t(z-a)≤r2

本实施例中运用深度学习和半监督学习相关算法,对于有标签样本集{(x1,y1),(x2,y2),…,(xn,yn)},其中为对应样本的标记向量,无标记样本(z1,z2,z3...zm),进行webshell建模分析。为了验证基于深度学习和半监督学习的webshell算法检测性能,使用github中数据进行实验,数据样本分布情况如图3所示,为了获得高质量的特征集,在所有的数据集合中,选取有标记样本进行卡方检验,其中选取增量训练集w1中50份样本,增量训练集w2中50份样本,正常测试集w3中50份样本,webshell样本集w4中50份样本,组合成200份有标记卡方检验样本。经过卡方检验之后,选取前500个特征作为样本的重要特征,其中前8个特征结果如图4所示。

通过卡方检验选择的特征是与标签相关性较高的特征词。一般可以设原假设为h0:观察频数与期望频数没有差异,或者两个变量相互独立不相关。实际应用中,我们先假设h0成立,计算出χ2值。根据χ2分布,χ2统计量以及自由度,可以确定在h0成立的情况下获得当前统计量以及更极端情况的概率p。如果p很小,说明观察值与理论值的偏离程度大,应该拒绝原假设。否则不能拒绝原假设。

χ2的计算公式为:

其中,a为实际值,t为理论值。

为简化样本复杂程度,需要进一步使用卡方检验获取的前500个特征值,过滤初始训练集w0。然后使用神经网络,训练过滤后的样本,获取训练样本的文本向量,即doc2vec。其中最终获得文本向量示例如下:

x1=[-2.08397750e-02,-4.90234122e-02,-2.03357283e-02,-7.65093416e-02,…]

x2=[0.340425997972,-0.0160844456404,-0.757030189037,0.497053474188,…]

x3=[0.256792724133,0.113478787243,-0.708586812019,0.289009481668,…]

在有少量有标记样本和大量无标记样本情况下,半监督学习既能够充分利用两种类型的样本,又能够提高训练结果。在无监督学习阶段,本发明使用初始训练集w0获得的文本向量,训练单分类svdd模型m0。在有监督学习阶段,首先在单分类svdd模型m0的基础上,使用增量训练集w1增量训练svdd模型m1;然后在增量svdd模型m1的基础上,使用增量训练集w2增量训练svdd模型m2。对于每个模型,均使用正常测试集w3和webshell样本集w4样本混合测试。对于本发明的webshell检测方法,使用漏报率和误报率来验证模型分类效果,测试结果如图5所示。

从实验结果可以看出,对于相同的w3+w4测试样本,使用增量训练的svdd模型在漏报率和误报率上的表现均优于单分类svdd模型,并且使用增量样本修正的次数越多,模型的效果越好。说明基于深度学习和半监督学习方法在webshell检测中的优越性,充分利用少量有标记样本,使用在线学习方法,增量训练svdd模型,不断优化最终模型,降低检测的漏报率和误报率。

参见图6,本发明还提供一种基于深度学习和半监督学习的webshell检测装置,所述检测装置包括:

训练样本获取模块1,用于获取原始的训练样本;

相关性检测模块2,用于通过卡方检验分析特征词与标签之间的相关性;

特征词筛选模块3,用于选择若干个相关性高的特征词作为筛选特征词;

样本筛选模块4,用于采用筛选特征词对样本进行特征词筛选,获得样本特征;

训练模块5,用于对获取的未标记样本特征使用神经网络算法训练,获得各个未标记样本的文本向量;

svdd模块6,用于训练单分类svdd模型,优化超球面半径最小化,最大情况包含未标记样本;

增量学习模块7,用于对于新的标记样本,运用在线学习方式增量训练svdd模型;

预测模块8,用于对新样本的预测,判断是否是webshell。

基于深度学习和半监督学习的webshell检测装置的一个实施例中,所述训练样本获取模块1从公开数据集获取训练样本。

基于深度学习和半监督学习的webshell检测装置的一个实施例中,特征词筛选模块3通过卡方检验获取与标签相关性高的特征词,使用卡方检验获取的筛选特征词过滤初始训练集。

基于深度学习和半监督学习的webshell检测装置的一个实施例中,训练模块在无监督学习阶段,使用初始训练集w0获得的文本向量,训练单分类svdd模型m0;在有监督学习阶段,首先在单分类svdd模型m0的基础上,使用增量训练集w1增量训练svdd模型m1;然后在增量svdd模型m1的基础上,使用增量训练集w2增量训练svdd模型m2。

本发明提出的基于深度学习和半监督学习webshell检测技术方案,先使用卡方检验和深度学习方法获取样本的文本向量,然后分别使用单分类和增量学习方式训练,提高分类性能。使用公开数据集进行训练和测试,实验结果验证该方法能够有效改善webshell检测的漏报率和误报率。在webshell检测中,改善了系统的性能,有效降低了漏报率和误报率,并在增量学习框架下,通过不断学习新增标记样本,能够持续优化系统。本发明使用文本向量的方式获得样本特征,能够更好地表示文本,提高漏报率和误报率。

虽然,上文中已经用一般性说明及具体实施例对本发明作了详尽的描述,但在本发明基础上,可以对之作一些修改或改进,这对本领域技术人员而言是显而易见的。因此,在不偏离本发明精神的基础上所做的这些修改或改进,均属于本发明要求保护的范围。

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