APP下载

基于类图像处理与向量化的大数据脚本攻击智能检测

2020-03-19张海军陈映辉

计算机工程 2020年3期
关键词:识别率标准差深层

张海军,陈映辉

(嘉应学院 a.计算机学院; b.数学学院,广东 梅州 514015)

0 概述

随着互联网、云计算、物联网、大数据等技术的快速发展以及数以万计网络接入点、移动终端和网络应用的出现,产生了大量蕴含较高价值的大数据,这给网络空间安全带来了前所未有的挑战。从服务器交易系统的数据库数据到各终端业务的系统数据,如各种流水操作、网购记录、网络浏览历史、播放的音视频、微博和微信等基于移动或Web应用的数据等,使得基于Web应用的攻击逐渐成为网络中的主要攻击,如跨站脚本(Cross-Site Scripting,XSS)攻击[1],其表现为:网络钓鱼,盗取用户的账号和密码;盗取用户Cookie数据,获取用户隐私,或者利用用户身份进行进一步操作;劫持浏览器会话,从而冒充用户执行任意操作,如非法转账、强制发表博客;强制弹出页面广告,刷流量;进行恶意操作,如纂改页面信息、删除文章、传播跨站蠕虫脚本、网挂木马;进行基于大量客户端的攻击,如DDOS攻击;联合其他漏洞(如CSRF);进一步渗透网站。

传统的计算机病毒检测方法主要利用病毒特征库中的已有特征,通过提取相应样本的特征,在病毒库中搜索并比较是否存在相匹配的特征,从而确定病毒是否存在。这种方法主要基于已知的病毒进行检测,难以发现新的病毒,特别是对于变形病毒其更加无能为力,而且针对大数据问题时效率较低。当前安全防护措施已经由过去的“80%防护+20%检测及响应”变成了“20%防护+80%检测及响应”。深度学习以其强大的自适应性、自学习能力在语音、图像、自然语言处理等方面取得了比传统机器学习方法更好的效果,特别是在解决大数据问题时,其效果更好。

本文借鉴类图像处理过程,设计一种基于神经网络的词向量化算法,对访问流量语料库大数据进行词向量化处理,通过理论分析和推导实现多种不同深度的深层卷积神经网络算法,从而对大数据跨站脚本攻击进行智能检测。

1 语料大数据处理及向量化

Web入侵检测本质上是基于日志文本的分析[2],即对访问流量语料大数据进行分析。首先,进行自然语言处理,由于当前基于安全防护的语料样本比较缺乏,标注好标签的样本更少,因此需要进行数据处理和建模,具体为:1)语料获取;2)语料预处理,包括清洗、分词、词性标注、去停用词;3)初级数据分析,如URL参数个数、字符分布、访问频率等分析。其次,进行词向量化,将词映射到向量空间,在计算机中,任何信息都是以0和1的二进制序列表示,如所有的字符(包括字母、汉字、英语单词等语言文字)都有一个编码。本文将大数据日志文本转换成数值数据并以矩阵表示,再基于词向量方法进行数据处理和分析,即将攻击报文转换成类似于图像数据(像素)的矩阵,也将字符串序列样本转换成具有一定维度值的向量,再对词向量进行数值化的特征提取和分析,如数据抽样、矩阵相关性维数约减、特征提取、降维、聚类等运算。最后,进行模型训练与数值分析,实现用户行为分析、网络流量分析和欺诈检测等。上述过程原理如图1所示,向量化处理过程详见3.1节实验部分,其实现了语料大数据的获取、处理、建模、分词和词向量化等[3]。

图1 大数据跨站脚本攻击智能检测原理Fig.1 Intelligent detection principle of big data cross-site scripting attack

2 算法设计

2.1 词向量化算法设计

利用CBOW实现词向量,即已知上下文词语来预测当前词语出现的概率。为此,需要最大化对数似然函数:

(1)

其中,w表示语料库C中的词。式(1)可以看作多分类问题,因为多分类是由二分类组合而成,所以可以使用Hierarchical Softmax方法进行求解。先计算w的条件概率,如下:

(2)

(3)

其中,σ(x)为sigmoid函数。由于d只取0和1,因此式(3)可以以指数的形式表示为:

(4)

将式(4)代入式(1)可得:

(5)

式(5)中的每一项可以记为:

(6)

(7)

令σ′(x)=σ(x)[1-σ(x)],代入式(7)可得:

(8)

(9)

(10)

由于Xw是上下文的词向量之和,在处理时将整个更新值应用到上下文每个单词的词向量上。

(11)

基于上述算法建立模型,将原始语料作为输入,即可实现语料数据的词向量化。

2.2 深度卷积神经网络算法设计

在计算机视觉[4]、自然语言处理[5]等领域,相对于传统神经网络或其他ML算法,深度卷积神经网络(Deep Convolutional Neural Networks,DCNNs)具有更高的识别率、更强的鲁棒性以及更好的泛化性能[6]。为此,本文设计多种DCNNs算法,构建基于“输入层+卷积层+卷积层+池化层+卷积层+卷积层+池化层+全连接层+全连接层+Softmax层”10层深度的结构,以实现大数据安全防护检测,并通过模型训练进行大数据智能检测。为减轻梯度消失等问题[7-8],本文选择Relu函数作为激活函数,其定义为:

f(x)=max(0,x)

(12)

通过式(13)可以求得卷积层的相应输出值,如下:

(13)

其中,xi,j表示向量的第i行第j列元素值,wm,n表示卷积核第m行第n列的权值,wb表示卷积核的偏置项,F是卷积核的大小(宽度或高度,两者相同)。卷积运算后得到下一特征层,其宽度和高度分别为:

(14)

其中,W1和H1分别表示卷积前向量的宽度和高度,W2和H2分别表示卷积后Feature Map的宽度和高度,P表示在向量周围补0的圈数值,S表示卷积运算时的步幅值。卷积前向量的深度可以大于1,如表示为D,则相应卷积核的深度也必须为D,可以求得卷积后的相应输出值。

(15)

对于池化层和全连接层,输出运算相对简单。

在DCNNs进行训练时,先利用链式求导计算损失函数对每个权重的梯度,然后根据梯度下降公式更新权重。具体过程如下:

1)对于卷积层误差项的传递,假设步长S、输入深度D和卷积核个数均为1,它们间的关系如下:

(16)

(17)

(18)

(19)

可以将式(19)写成如下的卷积形式:

δl-1=δl*Wl∘f′(Nl-1)

(20)

其中,符号∘表示将矩阵中的每个对应元素相乘。当步长S、输入深度D和卷积核个数均大于1时,同理可得:

(21)

2)对于卷积核权重梯度,由于权值共享,根据全导数公式可得:

(22)

即用sensitive map作卷积核,对输入进行交叉相关cross-correlation运算。

3)基于上述分析计算,得出偏置项的梯度:

(23)

即偏置项的梯度是sensitive map所有误差项之和。获得所有的梯度之后,根据梯度下降法可以更新每个权值,从而实现卷积层训练。

对于池化层,一般有max pooling和mean pooling 2种,它们不用计算梯度,只需将误差项传递到上一层。通过分析可知,对于max pooling池化,下一层的误差项会按原值传递到上一层最大值对应的神经元,其他神经元的误差项为0;对于mean pooling池化,下一层的误差项会平均分配到上一层对应区块的所有神经元,即可以用克罗内克积实现池化:

(24)

其中,n表示池化层核的大小。

由此,利用已实现的卷积层和池化层结合全连接层,可以堆叠形成DCNNs[9],从而完成大数据脚本攻击的智能检测[10]。

3 实验结果与分析

3.1 实验大数据

3.1.1 语料大数据获取

用于本文实验的大数据包括两类[11-12]:正样本大数据(带有攻击行为),利用爬虫工具从网站http://xssed.com/爬取获得,由Payload数据组成;负样本大数据(正常网络请求),为体现特殊性和普遍性,共收集了2份数据,一份来自嘉应学院网络中心2017年5月—12月的访问日志大数据,另一份是从各网络平台通过网络爬虫获得,它们都是未经处理的语料大数据。

3.1.2 语料大数据处理及向量化

本文利用基于神经网络的词向量化工具连续词袋模型(Continous Bag of Words Model,CBOW)[13]实现大数据语料处理,进行文本切割、清洗、分词、词性标注、去停用词、词向量化,将独热编码的词向量映射为分布形式的词向量,从而降低维数和稀疏性,同时通过求向量间的欧氏距离或夹角余弦值得出任意词间的关联度[14]。具体处理过程如下:

1)首先遍历数据集,将数字都用“0”替换,将http/、HTTP/、https/、HTTPS用“http://”替换;其次按照html标签、JavaScript函数体、http://和参数规则进行分词;接着基于日记文档构建词汇表,对单词进行独热编码。

2)构建基于神经网络的词向量化模型,包括输入层、投射层和输出层[15-16],其结构及训练过程如图2所示。然后输入样本,最小化损失函数并改变权值,训练模型并获得分布式词向量。

3)统计正样本词集,用词频最高的3 000个词构成词库,其他标记为“COM”。本文设定分布式特征向量的维数为128,当前词与预测词最大窗口距离为5,含64个噪声词,共进行5次迭代。

图2 词向量化CBOW模型及训练过程Fig.2 Word vectorized CBOW model and training process

因为每条数据所占字符长度不同,所以本文以所占字符长度最大为标准,不足则以-1填充,在为数据集设计标签时,使用独热编码,正样本标签(即属于攻击样本)以1表示,负样本标签(即正常网络请求)以0表示。经过上述处理之后,共获得正样本数据集40 637条,负样本数据集分别为105 912条和200 129条,它们数量大、计算复杂性高,均为大数据[17-19]。为提高训练效果,将正样本集和两类负样本集分别进行合并,随机划分为训练集和测试集,数量比为7∶3,并记为第Ⅰ类大数据集和第Ⅱ类大数据集。

3.2 实验检测与结果

为验证算法的有效性,设计多种DCNNs算法[20],构建基于“输入层+卷积层+卷积层+池化层+卷积层+卷积层+池化层+全连接层+全连接层+Softmax层”10层深度的结构,并设计不同的超参数,包括样本块大小、学习率μ以及卷积层深度等[21-22],然后输入大数据集词向量样本进行训练和测试。为检验系统的稳定性,对每类数据分别进行20次实验,结果及分析如下:

1)基于各深层DCNNs设计不同的超参数,学习率μ为0.001、0.01和0.1,对第 Ⅰ 类大数据集进行20次实验得到的识别率结果如表1所示。

表1各深层DCNNs基于不同学习率对第Ⅰ类大数据集的>识别率结果

Table 1 Recognition rate results of each deep DCNNs for type Ibig dataset based on different learning rates

实验次数识别率μ为0.001μ为0.01μ为0.110.981 40.993 40.831 320.991 20.994 20.830 830.992 00.994 20.831 040.992 80.994 50.830 950.993 50.994 80.830 560.993 60.994 90.830 570.994 00.995 10.830 680.994 00.994 90.830 390.994 30.995 30.830 1100.994 50.992 20.830 1110.994 50.994 90.830 0120.994 70.994 70.830 4130.995 00.994 80.830 7140.994 90.994 80.831 4150.994 70.994 90.829 8160.995 50.994 70.826 9170.995 80.994 80.829 4180.995 80.994 90.830 1190.995 30.995 00.829 7200.995 80.995 00.829 8

从表1可以看出,当学习率为0.001和0.01时,算法都有很高的识别率,其中,最低识别率为0.981 4,最高识别率为0.995 8,且识别率随着训练次数的增加一直保持较高水平并趋于稳定;而当学习率为0.1时,算法识别率稍低,平均为0.830 2左右,原因是学习率设置过大,导致训练时梯度下降过快从而越过了最优值,相比而言,当学习率较小时能得到全局最优或接近最优。识别率的曲线图表示如图3所示。

图3 基于不同学习率对第Ⅰ类大数据集进行20次实验得到的识别率曲线

Fig.3 Recognition rate curve obtained from 20 experimentsfor type I big dataset based on different learning rates

2)基于不同的学习率,对第Ⅱ类大数据集进行20次实验得到的识别率结果如表2所示。从表2可以看出,当学习率为0.001时,算法一直有稳定的高识别率,学习率为0.01时除了中间几次稍低外其他都是高识别率,且识别率随着训练次数的增加总体上都保持增长状态并趋于稳定;同样当学习率为0.1时,识别率相对更低,平均为0.831 0左右。识别率的曲线图表示如图4所示。

表2各深层DCNNs基于不同学习率对第Ⅱ类大数据集的识别率结果

Table 2 Recognition rate results of each deep DCNNs for type IIbig dataset based on different learning rates

实验次数识别率μ为0.001μ为0.01μ为0.110.980 80.983 30.830 820.996 70.994 80.830 930.997 30.993 60.831 440.997 60.985 70.830 950.997 70.975 30.831 060.997 90.988 30.831 070.998 10.989 10.831 180.998 20.989 20.830 990.998 40.989 40.831 1100.998 30.947 00.831 1110.998 50.836 20.830 8120.998 50.824 80.831 1130.998 70.806 80.831 3140.998 80.898 40.831 1150.998 70.924 90.831 2160.998 70.926 60.831 0170.998 80.926 70.830 9180.999 00.926 50.831 2190.998 80.927 30.831 1200.998 60.941 20.831 0

图4 基于不同学习率对第Ⅱ类大数据集进行20次实验得到的识别率曲线

Fig.4 Recognition rate curve obtained from 20 experiments fortype II big dataset based on different learning rates

3)基于各深层DCNNs设计不同的超参数,样本块大小(BatchSize)分别为50、100和500,对第 Ⅰ 类大数据集进行20次实验得到的识别率结果如表3所示。从表3可以看出,BatchSize为100和500时算法都有很高的识别率,其中,最低识别率为0.988 6,最高识别率为0.995 5,且随着训练次数的增加都保持稳定的高识别率;当BatchSize为50时,识别率相对较低,平均为0.734 5。识别率的曲线图表示如图5所示。

表3各深层DCNNs基于不同BatchSize对第Ⅰ类大数据集的识别率结果

Table 3 Recognition rate results of each deep DCNNs for type Ibig dataset based on different BatchSizes

实验次数识别率BatchSize为50BatchSize为100BatchSize为50010.951 10.988 60.993 420.748 90.991 60.994 230.721 70.992 10.994 240.721 70.992 60.994 550.721 70.993 10.994 860.721 70.993 40.994 970.721 70.993 90.995 180.721 70.993 90.994 990.721 70.994 20.995 3100.721 70.994 40.992 2110.721 70.994 60.994 9120.721 80.994 50.994 7130.721 70.994 60.994 8140.721 60.994 90.994 8150.721 70.995 10.994 9160.721 70.995 30.994 7170.721 70.995 00.994 8180.721 70.995 40.994 9190.721 70.995 20.995 0200.721 70.995 50.995 0

图5 基于不同BatchSize对第Ⅰ类大数据集进行20次实验得到的识别率曲线

Fig.5 Recognition rate curve obtained from 20 experiments fortype I big dataset based on different BatchSizes

4)基于不同的BatchSize,对第 Ⅱ 类大数据集进行20次实验得到的识别率结果如表4所示。从表4可以看出,当BatchSize为500时算法有最好的平均识别率,其中,最低识别率为0.806 8,最高识别率为0.994 8;当BatchSize为50时,识别率稍有下降,平均值约为0.832 0;当BatchSize为100时,前6次识别率均接近0.912 1,之后下降幅度较大,仅为0.169 0左右。识别率的曲线图表示如图6所示。

表4各深层DCNNs基于不同BatchSize对第Ⅱ类大数据集的识别率结果

Table 4 Recognition rate results of each deep DCNNs for type IIbig dataset based on different BatchSizes

实验次数识别率BatchSize为50BatchSize为100BatchSize为50010.850 80.908 80.983 320.830 90.917 80.994 830.831 40.912 10.993 640.830 90.909 50.985 750.831 00.909 50.975 360.831 00.899 90.988 370.831 10.168 90.989 180.830 90.169 10.989 290.831 10.168 90.989 4100.831 10.168 90.947 0110.830 80.169 20.836 2120.831 10.168 90.824 8130.831 30.168 70.806 8140.831 10.168 90.898 4150.831 20.168 80.924 9160.831 00.169 00.926 6170.830 90.169 10.926 7180.831 20.168 80.926 6190.831 10.168 90.927 3200.831 00.169 00.941 2

图6 基于不同BatchSize对第Ⅱ类大数据集进行20次实验得到的识别率曲线

Fig.6 Recognition rate curve obtained from 20 experimentsfor type II big dataset based on different BatchSizes

5)为进一步验证系统的相关特性,基于各深层DCNNs设计不同的卷积层深度,对第Ⅰ类大数据集进行20次实验得到的识别率结果如表5所示。从表5可以看出,算法总体都保持高识别状态,其中,最低识别率为0.976 0,最高识别率为0.993 0。识别率的曲线图表示如图7所示。

表5 深层DCNNs对第Ⅰ类大数据集的识别率结果Table 5 Recognition rate results of deep DCNNs on type Ibig dataset

图7 DCNNs对第Ⅰ类大数据集进行20次实验得到的识别率曲线

Fig.7 Recognition rate curve obtained from 20 experimentsof DCNNs for type I big dataset

6)基于不同的卷积层深度,对第 Ⅱ 类大数据集进行20次实验得到的识别率结果如表6所示。从表6可以看出,随着训练的进行,算法识别率不断提高,其中,最低识别率为0.980 8,最高识别率为0.999 0,最后趋于稳定。识别率的曲线图表示如图8所示。

表6 深层DCNNs对第Ⅱ类大数据集的识别率结果Table 6 Recognition rate results of deep DCNNs for type IIbig dataset

图8 DCNNs对第Ⅱ类大数据集进行20次实验得到的识别率曲线

Fig.8 Recognition rate curve obtained from 20 experimentsof DCNNs for type II big dataset

通过实验可以看出,各深层DCNNs基于不同学习率μ对第 Ⅰ 类大数据集的平均识别率为99.366 5%,方差为0.000 001,标准差为0.000 944,如表7所示。各深层DCNNs基于不同学习率μ对第Ⅱ类大数据集的平均识别率为93.875 5%,方差为0.000 015,标准差为0.003 952,如表8所示。通过实验也可以看出,各深层DCNNs基于不同BatchSize对第 Ⅰ 类大数据集的平均识别率为99.389 5%,方差为0.000 003,标准差为0.001 670,如表9所示。各深层DCNNs基于不同BatchSize对第Ⅱ类大数据集的平均识别率为83.204 5%,方差为0.003 258,标准差为0.058 559,如表10所示。另外,通过实验可以得到,各深层DCNNs基于不同卷积层深度对第 Ⅰ 类大数据集的平均识别率为98.274 5%,方差为0.000 016,标准差为0.004 133,如表11所示。各深层DCNNs基于不同卷积层深度对第Ⅱ类大数据集的平均识别率为99.740 5%,方差为0.000 015,标准差为0.003 952,如表12所示。

表7各深层DCNNs基于不同学习率对第Ⅰ类大数据集的平均识别率、方差和标准差

Table 7 Average recognition rate,variance and standarddeviation of each deep DCNNs for type I big datasetbased on different learning rates

学习率平均识别率/%方差标准差0.00199.366 50.000 0090.003 1390.01099.460 00.000 0000.000 6970.10083.021 50.000 0010.000 944

表8各深层DCNNs基于不同学习率对第Ⅱ类大数据集的平均识别率、方差和标准差

Table 8 Average recognition rate,variance and standarddeviation of each deep DCNNs for type II big datasetbased on different learning rates

学习率平均识别率/%方差标准差0.00199.740 50.000 0150.003 9520.01093.875 50.003 2580.058 5600.10083.104 50.000 0000.000 157

表9各深层DCNNs基于不同BatchSize对第Ⅰ类大数据集的平均识别率、方差和标准差

Table 9 Average recognition rate,variance and standarddeviation of each deep DCNNs for type I big datasetbased on different BatchSizes

BatchSize平均识别率/%方差标准差5073.453 00.002 5040.051 33610099.389 50.000 0030.001 67050099.460 00.000 0000.000 697

表10各深层DCNNs基于不同BatchSize对第Ⅱ类大数据集的平均识别率、方差和标准差

Table 10 Average recognition rate,variance and standarddeviation of each deep DCNNs for type II big datasetbased on different BatchSizes

BatchSize平均识别率/%方差标准差5083.204 50.000 0190.004 41710039.113 50.115 2110.348 24550093.876 00.003 2580.058 559

表11深层DCNNs对第Ⅰ类大数据集的平均识别率、方差和标准差

Table 11 Average recognition rate,variance and standarddeviation of deep DCNNs for type I big dataset

卷积深度平均识别率/%方差标准差1098.274 50.000 0160.004 133

表12深层DCNNs对第Ⅱ类大数据集的平均识别率、方差和标准差

Table 12 Average recognition rate,variance and standarddeviation of deep DCNNs for type II big dataset

卷积深度平均识别率/%方差标准差1099.740 50.000 0150.003 952

对于第 Ⅰ 类和第 Ⅱ 类大数据集,基于不同学习率μ的识别率均值如图9所示,标准差均值如图10所示。对于第 Ⅰ 类和第 Ⅱ 类大数据集,基于不同BatchSize的识别率均值如图11所示,标准差均值如图12所示。

图9 基于不同学习率对第Ⅰ类和第Ⅱ类大数据集的识别率均值

Fig.9 Average recognition rate for type I and type II bigdatasets based on different learning rates

图10 基于不同学习率对第Ⅰ类和第Ⅱ类大数据集的标准差均值

Fig.10 Mean standard deviation for type I and type IIbig datasets based on different learning rates

图11 基于不同BatchSize对第Ⅰ类和第Ⅱ类大数据集的识别率均值

Fig.11 Average recognition rate for type I and type II bigdatasets based on different BatchSizes

图12 基于不同BatchSize对第Ⅰ类和第Ⅱ类大数据集的标准差均值

Fig.12 Mean standard deviation for type I and type II big

datasets based on different BatchSizes

系统识别率变化过程曲线图如图13所示,可以看出,识别率随着训练的进行逐渐提高,随后降低然后又不断提高并趋于稳定,总体识别率较高。损失函数误差变化曲线图如图14所示,可以看出,随着训练的进行,损失函数误差先减少后增加然后不断地减小并趋于稳定,其与识别率的变化过程相一致。词向量样本余弦距离变化曲线图如图15所示,可以看出,随着训练的进行,余弦距离先减小后增加然后不断地减小并趋于稳定,这反映了词向量样本的相关性先增强后变小然后越来越强,其同识别率变化过程也一致。平均绝对误差变化过程曲线图如图16所示,可以看出,随着训练的进行,平均绝对误差先减小后增加然后不断地减小并趋于最小的稳定值。

图13 识别率变化曲线Fig.13 Curve of recognition rate change

图14 损失函数误差变化曲线Fig.14 Curve of loss function error change

图15 余弦距离变化曲线Fig.15 Curve of cosine distance change

图16 平均绝对误差变化曲线Fig.16 Curve of average absolute error change

4 结束语

传统的计算机病毒检测方法主要依据病毒特征库中的已有特征,通过特征匹配来确定病毒是否存在,其难以检测新出现的病毒以及变形病毒,而且检测效率较低。为解决该问题,本文通过类图像处理及向量化方法对访问流量语料库大数据进行词向量化处理,从而实现了面向大数据跨站脚本攻击的智能检测。实验结果表明,该方法具有识别率高、稳定性好、总体性能优良等优点。下一步将探讨小样本数据的智能检测问题,以更全面地进行入侵智能检测。

猜你喜欢

识别率标准差深层
考虑各向异性渗流的重力坝深层抗滑稳定分析
基于真耳分析的助听器配戴者言语可懂度指数与言语识别率的关系
听力正常青年人的低通滤波言语测试研究*
浅析标准差及其在工程统计中的运用
提升高速公路MTC二次抓拍车牌识别率方案研究
SAM系统对TDCS数据的优化处理与深层应用
更 正
高速公路机电日常维护中车牌识别率分析系统的应用
对“医患失去信任”的深层忧虑
电视节目低俗化的深层反思