一种基于条件变分自编码器和SENet的XSS攻击检测方法

文档序号:30697458发布日期:2022-07-09 18:11阅读:196来源:国知局
一种基于条件变分自编码器和SENet的XSS攻击检测方法
一种基于条件变分自编码器和senet的xss攻击检测方法
技术领域
1.本发明涉及网络安全领域,更具体地,涉及一种基于条件变分自编码器和senet的xss攻击检测方法。


背景技术:

2.近年来随着信息技术的不断发展,互联网已经极大地改变了人们的生活方式。如上网购物,扫码点餐,出门骑共享单车,微信上订购酒店,衣食住行,人们已经离不开互联网。因而互联网的安全稳定与每个人都息息相关。一个安全稳定的网络对于我们是必不可少的,网络安全已经成为现代信息社会中最重要的需求之一。而在web领域中,根据国家信息安全漏洞库(cnnvd)机构的统计,xss漏洞的占比一直排在前列。然而,目前检测网络攻击的手段还是比较单一,并且效率低下。伴随着互联网数据总量的大量增长,网络威胁的手段也愈发隐秘,当前形势下传统的网络威胁检测技术已经面临新的挑战。
3.而近几年,深度学习的得到快速发展,如何将深度学习应用到网络安全中,利用深度学习技术来帮助我们检测网络中的威胁是一个值得研究的问题。其中,变分自编码器(variational auto-encoder,vae)是一类重要的生成模型(generative model),与ae(auto-encoder)不同的是,ae中间输出的是隐变量的具体取值,而vae中间要输出的是隐变量z的具体分布情况。为了重构样本,vae的编码器encoder得深度学习数据样本的深层特征才能给解码器decoder提供有用的数据,因此可将训练好的vae编码器encoder作为特征提取器。另外,在卷积神经网络中,通过引入注意力机制se模块可帮助模型提高训练效率,senet(squeeze-and-excitation networks)主要是学习了通道域channel之间的相关性,筛选出了针对通道的注意力,稍微增加了一点计算量,但是能达到更高的检测准确率和更大的检测范围。
4.现有技术公开了一种基于深度学习模型优化的xss漏洞检测方法,该方案利用python爬取web页面源码,并基于xss攻击向量指令表对页面进行xss漏洞检测的方法。该方法的缺陷是,只能根据现有已知的xss攻击类别提取攻击向量并针对web页面攻击来检测是否存在漏洞。
5.现有技术中还公开了一种基于条件变分自编码器的未知网络攻击检测方法,该方案基于条件变分自编码器和深度学习对网络流量进行检测是否存在网络攻击的方法,其结构包括两组编码器和解码器,并以后验编码器作为针对未知攻击的分类器,采用了深度学习的方法,是与本技术最为接近的现有技术。该方案的缺陷是,无法针对检测的数据做更进一步的处理,最终检测xss攻击的成功率不高,可检测的范围也不够广泛。
6.为此,结合以上特点和现有技术缺陷,本技术提出了一种基于条件变分自编码器和senet的xss攻击检测方法。


技术实现要素:

7.本发明为克服上述现有技术所述的检测xss攻击效率低,准确率低,检测范围小和
检测手段单一的缺陷,提供了一种基于条件变分自编码器和senet的xss攻击检测方法。
8.本发明的首要目的是为解决上述技术问题,本发明的技术方案如下:
9.一种基于条件变分自编码器和senet的xss攻击检测方法,包括以下步骤:
10.s1、获取攻击样本数据并进行数据预处理,将预处理后的数据映射至设定的区域;
11.s2、构建条件变分自编码器cvae模型,利用所述步骤s1得到的数字数据训练条件变分自编码器cvae模型,并将训练好的模型的编码器作为特征提取器;
12.s3、构建senet模型,利用所述特征提取器对步骤s1得到的数据进行采样得到设定维度隐变量的特征,利用得到的特征训练senet模型,得到分类器;
13.s4、提取待检测攻击数据的特征,输入至分类器,输出分类结果完成xss攻击检测。
14.进一步的,所述步骤s1的数据预处理过程,包括:
15.s1-1、收集攻击样本中可能出现的所有字符,汇编成一个字符字典;
16.s1-2、根据字典对攻击样本数据进行映射,将字符数据转化为数字数据,对未收集到的数据标记为unk;
17.s1-3、将转化后的数字数据映射到设定区间。
18.进一步的,所述预处理过程会通过设定数字数据的单位长度将字符数据转化为数字数据,对未收集到的数据标记为unk。
19.更进一步的,设定区间的目的是帮助条件变分自编码器cvae模型进行学习重构数据,使重构的损失值在学习的过程中避免发散且过早收敛。
20.进一步的,所述步骤s2,包括:
21.s2-1、构建条件变分自编码器cvae模型,该模型包括编码器encoder和解码器decoder;
22.s2-2、对步骤s1所述预处理后的数据进行采样,训练所述cvae模型,构建损失函数loss计算采样数据和重构数据的误差,定义优化函数rmsprop优化模型直至重构误差小于预设值,得到训练后的cvae模型;
23.s2-3、将训练后的cvae模型中编码器encoder作为数据样本的特征提取器,该特征提取器能够在设定维度数值后,输出设定维度隐变量的特征。
24.进一步的,所述编码器encoder包括一个输入层和一个输出层,所述输入层包括一个全连接层、一个非饱和激活函数relu,所述输出层分为两层,分别为一层学习输出分布平均数mean和一层学习输出分布方差var。
25.进一步的,所述解码器包括一个输入层和一个输出层,输入层包括一个全连接层、一个非饱和激活函数relu,输出层包括一个全连接层、一个激活函数sigmoid。
26.进一步的,所述损失函数loss表达式为:
27.loss=-e
q(z|x)
[logp(x|z)]+kl(q(z|x)p(z))
[0028]
其中,e
q(z|x)
logp(x|z)表示重构误差,所述重构误差用于鼓励解码器学习重建数据;kl(q(z|x)p(z))表示正则化器,所述正则化器用于计算编码器q(z|x)和p(z)分布之间的kl散度;所述优化函数rmsprop用于优化cvae模型直至损失值小于设定值。
[0029]
更进一步的,编码器encoder采用条件概率分布指导模型学习特征,其功能是学习隐变量z的空间分布函数的均值和方差。
[0030]
其中,所述维度数值能够根据需求进行设置。
[0031]
进一步的,所述步骤s3,包括:
[0032]
s3-1、创建senet模型;
[0033]
s3-2、利用步骤s2得到的所述特征提取器对步骤s1得到的数据进行采样,得到一组设定维度隐变量z的特征;
[0034]
s3-3、将所述设定维度隐变量z的特征输入senet模型,定义优化函数rmsprop和损失函数交叉熵对模型进行训练优化,进行数次训练得到分类器。
[0035]
进一步的,所述senet模型由引入了注意力机制se模块的一维卷积神经网络cnn模型和两个全连接层组成;所述senet模型从输入到输出包括的结构依次为:第一卷积层、第一激活函数relu、第一注意力机制模块se、第二卷积层、第二激活函数relu、最大池化层、第三卷积层、第三激活函数relu、第二注意力机制模块se、第一全连接层、第二全连接层;其中注意力机制模块se中,超参数reduction均设置为16。
[0036]
进一步的,将预训练得到的特征提取器对训练数据进行采样,得到设定维度隐变量z的特征,再将获得的特征作为senet模型的输入数据,对模型进行训练,优化网络参数,最终得到分类器。
[0037]
进一步的,所述输出分类结果包括两种,其值为0和1;其中0代表未接收到xss攻击信号,1代表接收并检测到xss攻击信号。
[0038]
与现有技术相比,本发明技术方案的有益效果是:
[0039]
本发明提供了一种基于条件变分自编码器和senet的xss攻击检测方法,通过数据预处理将字符数据转化为数字数据,保留原始的数据信息且不需要通过额外的词向量预训练来学习文本信息,使得可检测范围更加广泛;通过构建变分自编码器cvae模型,进而得到特征提取器,该特征提取器可以学习到从原始数据到数据表征之间的映射关系,最大化从数据样本中获取的有效信息;同时利用senet模型对提取的特征进行进一步分析,可以学习特征图之间的相互依赖关系,同时结合全局损失函数实现以不同权重获取隐变量特征图不同侧重点,提高了攻击检测的准确率和效率。
附图说明
[0040]
图1为本发明一种基于条件变分自编码器和senet的xss攻击检测方法流程图。
[0041]
图2为本发明一种基于条件变分自编码器和senet的xss攻击检测方法的系统框架图。
[0042]
图3为本发明的条件变分自编码器cvae模型结构示意图。
[0043]
图4为senet模型的结构示意图。
具体实施方式
[0044]
为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施方式对本发明进行进一步的详细描述。需要说明的是,在不冲突的情况下,本技术的实施例及实施例中的特征可以相互组合。
[0045]
在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用其他不同于在此描述的其他方式来实施,因此,本发明的保护范围并不受下面公开的具体实施例的限制。
[0046]
本发明提供了一种基于条件变分自编码器和senet的xss攻击检测方法,该方法使用条件变分自编码器进行表征学习,能自动提取数据样本的高维特征,即学习到从原始数据到数据表征之间的映射,最大化从数据样本中获取的有效信息。随后在卷积神经网络中引入注意力学习机制学习特征图feature map之间的相互依赖关系,并通过网络的全局损失函数自适应的重新纠正通道之间的特征相应强度。
[0047]
实施例1:
[0048]
如图1-图2所示,本发明提供了一种基于条件变分自编码器和senet的xss攻击检测方法,首先参考字符级卷积对数据进行预处理,然后利用条件变分自编码器对数据进行预训练,最后利用带注意力的卷积神经网络senet对数据样本进行分类,包括以下步骤:
[0049]
s1、获取攻击样本数据并进行数据预处理,将预处理后的数据映射至设定的区域;
[0050]
s2、构建条件变分自编码器cvae模型,利用所述步骤s1得到的数字数据训练条件变分自编码器cvae模型,并将训练好的模型的编码器作为特征提取器;
[0051]
s3、构建senet模型,利用所述特征提取器对步骤s1得到的数据进行采样得到设定维度隐变量的特征,利用特征训练senet模型,得到分类器;
[0052]
s4、提取待检测攻击数据的特征,输入至分类器,输出分类结果完成xss攻击检测。
[0053]
进一步的,所述步骤s1的数据预处理过程,包括:
[0054]
s1-1、收集攻击样本中可能出现的所有字符,汇编成一个字符字典;
[0055]
s1-2、根据字典对攻击样本数据进行映射,将字符数据转化为数字数据,对未收集到的数据标记为unk;
[0056]
s1-3、将转化后的数字数据映射到设定区间。
[0057]
进一步的,所述预处理过程会通过设定数字数据的单位长度将字符数据转化为数字数据,对未收集到的数据标记为unk。
[0058]
其中,设定数字数据单位长度的目的是,方便后续训练条件变分自编码器cvae模型;单位长度可以自由设定,在本方案中设置为1024。
[0059]
更进一步的,设定区间的目的是帮助条件变分自编码器cvae模型进行学习重构数据,使重构的损失值在学习的过程中避免发散且过早收敛。
[0060]
其中,设定区间可以通过实验测试获得。
[0061]
进一步的,所述步骤s2,包括:
[0062]
s2-1、构建条件变分自编码器cvae模型,该模型包括编码器encoder和解码器decoder;
[0063]
s2-2、对步骤s1所述预处理后的数据进行采样,训练所述cvae模型,构建损失函数loss计算采样数据和重构数据的误差,定义优化函数rmsprop优化模型直至重构误差小于预设值,得到训练后的cvae模型;
[0064]
s2-3、将训练后的cvae模型中编码器encoder作为数据样本的特征提取器,该特征提取器能够在设定维度数值后,输出设定维度隐变量的特征。
[0065]
进一步的,所述编码器encoder包括一个输入层和一个输出层,所述输入层包括一个全连接层、一个非饱和激活函数relu,所述输出层分为两层,分别为一层学习输出分布平均数mean和一层学习输出分布方差var。
[0066]
进一步的,所述解码器包括一个输入层和一个输出层,输入层包括一个全连接层、
一个非饱和激活函数relu,输出层包括一个全连接层、一个激活函数sigmoid。
[0067]
其中,所述编码器encoder是用于学习隐变量(latent variable)z的空间分布函数的均值和方差,再通过对该分布进行采样获得隐变量z,最后再通过解码器decoder根据隐变量z重构出x样本。概率公式如下:
[0068][0069]
具体来说,训练数据的一个输入数据样本x将被编码成一个向量vector,这个向量vector中的每一维度就是一些该样本的属性。
[0070]
所述解码器decoder的作用刚好与编码器encoder相反,它可以通过接收一个隐变量latent vector,并且将其重新变回到原样本空间上去。概率公式如下:
[0071][0072]
另外,cvae在进行编码器数据输入的时候,将数据内容与其自身标签合并一起输入,在获得隐变量(latentvariable)z后,再将隐变量z与自身标签label合并输入解码器decoder,从而获得想生成的指定数据,cvae模型结构图如图2所示。
[0073]
其中,图2中的x为输入值,x’就是重构的x值,x’用于计算重构误差。cvae是自编码器,包含编码和解码的功能,假设编码后的值为z,那么解码后就为x’,因为解码后的x不能保证和原来的一模一样,因此利用损失函数loss和优化函数rmsprop不断对cvae模型进行训练拟合,使x’和x的差别越来越小,达到优化算法的目的。
[0074]
进一步的,所述损失函数loss表达式为:
[0075]
loss=-e
q(z|x)
[logp(x|z)]+kl(q(z|x)p(z))
[0076]
其中,e
q(z|x)
logp(x|z)表示重构误差,所述重构误差用于鼓励解码器学习重建数据;kl(q(z|x)p(z))表示正则化器,所述正则化器用于计算编码器q(z|x)和p(z)分布之间的kl散度;所述优化函数rmsprop用于优化cvae模型直至损失值小于设定值。
[0077]
其中,所述重构误差的作用在于鼓励解码器学习重建数据,如果解码器的输出不能很好的重建数据,从统计学上来讲,可以理解为编码器在真实数据进行参数化的似然分布概率质量不大。例如,如果该模型的目标是为黑白图像建模,然而模型将高概率的黑点放在实际存在的白点上,将产生最差的重建。低质量的重建将在损失函数中产生巨大的成本。其中,所述kl散度主要用于衡量使用q代表p时丢失了多少信息,其是衡量q到p距离的一种标准。
[0078]
更进一步的,编码器encoder采用条件概率分布指导模型学习特征,其功能是学习隐变量z的空间分布函数的均值和方差。
[0079]
其中,所述输出隐变量z的维度能够自由设置,其取值可为2到14等。
[0080]
优选的,本方案所述隐变量z的维度设为10。
[0081]
进一步的,所述步骤s3,包括:
[0082]
s3-1、创建senet模型;
[0083]
s3-2、利用步骤s2得到的所述特征提取器对步骤s1得到的数据进行采样,得到一组设定维度隐变量z的特征;
[0084]
s3-3、将所述设定维度隐变量z的特征输入senet模型,定义优化函数rmsprop和损
失函数交叉熵对模型进行训练优化,进行数次训练得到分类器。
[0085]
其中,所述创建senet模型,首先创建一个一维的卷积神经网络cnn模型,然后对卷积层引入注意力机制模块se,最后通过全连接层进行分类输出。
[0086]
进一步的,所述senet模型由引入了注意力机制模块se的一维卷积神经网络cnn模型和两个全连接层组成;所述senet模型从输入到输出包括的结构依次为:第一卷积层、第一激活函数relu、第一注意力机制模块se、第二卷积层、第二激活函数relu、最大池化层、第三卷积层、第三激活函数relu、第二注意力机制模块se、第一全连接层、第二全连接层;其中在注意力机制模块se中,超参数reduction均设置为16。
[0087]
其中,经过senet模型的具体数据流向如图4所示:首先将特征提取器得到的特征输入到一维的卷积层并采用relu激活函数进行激活,然后通过se注意力机制模块矫正各通道权重,再进行卷积和激活,然后通过最大池化层进行下采样,再进行卷积层和激活,再通过se注意力机制模块重新进行矫正,最后依次通过两个全连接层进行分类输出。
[0088]
其中,所述se模块用于对设定维度隐变量z的特征卷积得到的特征图feature map进行处理,得到一个和通道数一样的一维向量作为每个通道的评价分数,然后将评价分数乘以对应的通道,从而获得了权重不一样的特征图feature map。
[0089]
进一步的,利用预训练得到的特征提取器对训练数据进行采样,得到一组隐变量z的维度为10的特征,再将获得的特征作为senet模型的输入数据,定义损失函数为交叉熵,优化函数为rmsprop对模型进行训练优化,执行50个epoch后,测试得损失值低于0.001,攻击检测准确率达到94%以上。
[0090]
进一步的,所述输出分类结果包括两种,其值为0和1;其中0代表未接收到xss攻击信号,1代表接收并检测到xss攻击信号。
[0091]
实施例2
[0092]
基于上述实施例1,在隐变量z的输出维度设为6的时候,使用特征选取器对训练数据进行采样,得到一组隐变量z的维度为6的特征,再将获得的特征作为senet模型的输入数据,定义损失函数为交叉熵,优化函数为rmsprop对模型进行训练优化,执行50个epoch后,测试得损失值为0.002,攻击检测准确率为90%。
[0093]
实施例3
[0094]
如图1所示,本发明提供了一种基于条件变分自编码器和senet的xss攻击检测方法,该方法能通过条件变分自编码器cvae学习xss攻击的表征数据,随后在卷积神经网络中引入注意力机制学习特征图feature map之间的相互依赖关系,最后通过两个全连接层对数据样本进行分类。
[0095]
本发明具体流程如下步骤:
[0096]ⅰ、数据预处理
[0097]
(1)收集攻击样本可能出现的所有字符,汇编成一个字符字典。例如:
[0098]
"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz0123456789,;.!?:'\"/\\|_@#$%^&*~`+-=《》()[]{}"
[0099]
(2)根据字典对将要进行训练和测试的数据进行映射,将字符数据转化为数字,对未收集到的数据标记为unk;
[0100]
例如攻击样本:
[0101]“city%3d1%26sheriff%3d1%26beg_date%3d01/01/2006%26title%3d1%26phrase%3d%27%22%3e%3c/title%3e%3cscript%3ealert%281337%29%3c/script%3e%3e%3cmarquee%3e%3ch1%3exss%2bby%2bxylitol%3c/h1%3e%3c/marquee%3e%26xsubmit%3dsearch%3a”[0102]
转化为:
[0103]“29,35,46,51,78,56,4,54,78,55,59,45,34,31,44,35,32,32,78,56,4,54,78,55,59,28,31,33,74,30,27,46,31,78,56,4,53,54,71,53,54,71,55,53,53,59,78,55,59,46,35,46,38,31,78,56,4,54,78,55,59,42,34,44,27,45,31,78,56,4,78,55,60,78,55,55,78,56,5,78,56,3,71,46,35,46,38,31,78,56,5,78,56,3,45,29,44,35,42,46,78,56,5,27,38,31,44,46,78,55,61,54,56,56,60,78,55,62,78,56,3,71,45,29,44,35,42,46,78,56,5,78,56,5,78,56,3,39,27,44,43,47,31,31,78,56,5,78,56,3,34,54,78,56,5,24,19,19,78,55,2,28,51,78,55,2,24,51,38,35,46,41,38,78,56,3,71,34,54,78,56,5,78,56,3,71,39,27,44,43,47,31,31,78,56,5,78,55,59,50,45,47,28,39,35,46,78,56,4,19,31,27,44,29,34,78,56,1”[0104]
(3)将转换后的数据映射在某个特定的区间,如在char_dict[char]=(i+1)/50。
[0105]ⅱ、预训练
[0106]
(1)创建条件变分自编码器cvae模型
[0107]
构建条件变分自编码器cvae模型的结构如图2所示,其中编码器encoder和解码器decoder的结构如下:
[0108]
编码器:输入层包含一个全连接层,一个激活函数relu,输出层分为两层,一层学习输出分布均值mean,一层学习输出分布方差var,隐变量z的输出维度能够设为10,经实验测得为本方案优选方案,效果较为不错。
[0109]
解码器:输入层包含一个全连接层,一个激活函数relu,输出层含一个全连接层,一个激活函数sigmoid。
[0110]
(2)训练该条件变分自编码器cvae模型
[0111]
对训练数据进行采样,训练该cvae模型,定义优化函数为rmsprop,优化编码器encoder网络和解码器decoder网络,计算重构误差,执行5~10个epoch直至损失值小于特定的值。
[0112]
(3)选取特征提取器
[0113]
将条件变分自编码器cvae的编码器encoder当成数据样本的特征提取器。
[0114]ⅲ、分类
[0115]
(1)创建senet模型:结构示意图如图4所示,输入层为一个一维的卷积层,一个relu激活层,然后连接一个标准的se注意力机制模块,超参数reduction设置为16,再接入一个一维的卷积层,一个relu激活层,再接入一个最大池化层,然后再接入一个一维的卷积层,一个relu激活层,后面再连接一个标准的se注意力机制模块,超参数reduction同样设置为16,最后通过两个全连接层进行分类输出,具体参数如表1所示。
[0116]
表1 senet模型参数表
[0117][0118]
(2)训练模型:将预训练得到的特征提取器对训练数据进行采样,得到一组隐变量z维度为10的特征,再将获得的特征作为senet模型的输入数据,定义损失函数为交叉熵,优化函数为rmsprop对模型进行训练优化,执行50个epoch后,测得损失值低于0.001,检测攻击准确率达到94%以上,最终得到分类器,通过该分类器可对xss攻击进行检测,当分类器接收到数据时会进行分类,输出0代表正常数据,输出1则代表xss攻击数据。
[0119]
附图中描述位置关系的用语仅用于示例性说明,不能理解为对本专利的限制;
[0120]
显然,本发明的上述实施例仅仅是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明权利要求的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1