LSTM循环神经网络模型及基于该模型的网络攻击识别方法与流程

文档序号:16812338发布日期:2019-02-10 13:49阅读:233来源:国知局
LSTM循环神经网络模型及基于该模型的网络攻击识别方法与流程
本发明涉及网络安全
技术领域
,尤其涉及lstm循环神经网络模型及基于该模型的网络攻击识别方法。
背景技术
:随着信息化战略的持续推进和互联网、云计算等技术的大力发展,越来越多的企业相关业务完成了数据化转型将业务搬上网络端。但是由于网络应用本身的开放性和不可控性,以及网络应用开发人员的局限性,网络应用极大可能存在可供利用的网络漏洞。黑客利用这些漏洞可以开展诸如sql注入,xss攻击等网络攻击,给网站带来网站瘫痪、信息泄露、网页篡改、挂马等风险,给网站公司主体及其用户带来巨大的损失。目前市面上针对网络应用防护,主流的解决方案是基于正则规则的网站应用级入侵防御系统。这种基于规则的防护方法在面对灵活多变的网络攻击时,往往导致误报或漏报,并且规则的制定和维护需要有专业的安全相关人员负责,尽管如此,还是很难涵盖攻击的种种变形,面对未知攻击和0day攻击则难以有效应对,甚至有可能出现规则之间的冲突,另外规则的制定很难把握误判与漏判问题的平衡问题,太严格的规则容易误杀正常业务流量,造成误判。太松散的规则则容易被绕过,造成漏判。技术实现要素:针对上述问题,本发明旨在提供一种lstm循环神经网络模型及基于该模型的网络攻击识别方法,通过将网络请求数据转化为数字序列型数据,进而使用该数据组成的训练数据集进行训练,构建lstm循环神经网络模型,进而实现网络请求数据的类别的识别。具体方案如下:一种用于网络攻击类别识别的lstm循环神经网络模型,所述lstm循环神经网络模型的建立过程包括以下步骤:s100:采集多个文本格式的网络请求数据作为训练数据集,并根据网络请求数据的内容为每个网络请求数据设定标签类别;s200:对训练数据集中的网络请求数据进行预处理,转化为预设长度的数字序列型数据;所述预处理包括解码、中文字符替换、大小写变换、字典提取、序列编码和序列长度处理;所述解码为:将网络请求数据中包含的编码还原成所述编码对应的编码前的字符;所述中文字符替换为:将非字母、数字和符号的字符统一替换为小写字母’z’;所述大小写变换为:将大写字符转化为小写字符;所述字典提取为:以单字符为单位统计每个字符在数据集中出现的次数,按次数降序排列字典编号形成字典,此外,设定序列补位的字符为“+”,其字典编号为0,未在训练数据集出现过的字符编码为“z”,其字典编号为1;所述序列编码为:根据字典中设置的字符的字典编号将网络请求数据中的字符替换为字典编号,将字典中未记录的字符使用字符“z”代替,并设定其字典编号为1,形成数字序列型数据;所述序列长度处理为:根据设定的预设长度,将上述数字序列型数据进行长度处理,使所有数字序列型数据的长度均为预设长度。s300:根据训练数据集中的数字序列型数据,进行训练,构建lstm循环神经网络模型。进一步的,所述标签类别包括三种,分别为类别1:正常的网络请求数据;类别2:包含sql注入攻击的网络请求数据;类别3:包含xss攻击的网络请求数据。进一步的,所述长度处理包括头部操作和尾部操作中的一种,所述头部操作为:针对长度不足预设长度的数字序列型数据,在其前面使用字典编号0补齐,针对超过预设长度的序列截去前面超过预设长度的部分;所述尾部操作为:针对长度不足预设长度的数字序列型数据,在其后面使用字典编号0补齐,针对超过预设长度的序列截去后面超过预设长度的部分。进一步的,步骤s300包括以下步骤:s301:设置嵌入层;s302:使用dropout层随机断开一定比例的网络连接避免过拟合;s303:连接lstm层并指定一定比例的dropout;s304:连接一个全连接层和一个softmax层,输出结果为对应到每种标签类别的类别概率;s305:设定优化器为adam随机梯度下降,设定损失函数为多分类交叉熵函数,设定衡量指标为准确率,经过若干轮训练直到模型收敛。一种网络攻击识别方法,基于本发明实施例所述的用于网络攻击类别识别的lstm循环神经网络模型,包括:对网络请求数据进行预处理,得到预设长度的数字序列型数据,使用lstm循环神经网络模型对该数字序列型数据的标签类别的概率进行识别,得到每种标签类别的类别概率,将类别概率中概率值最大的维度对应的标签类别作为该网络请求数据的标签类别。一种网络攻击识别系统,基于本发明实施例所述的网络攻击识别方法,包括:数据输入单元、数据转化单元、lstm模型单元和决策单元,所述数据输入单元将接受到的网络请求数据发送至数据转化单元,所述数据转化单元将网络请求数据进行预处理转化后,得到预设长度的数字序列型数据后,将该数字序列型数据发送至lstm模型单元,所述lstm模型单元对该数字序列型数据的标签类别的概率进行识别,输出每种标签类别的类别概率至决策单元,所述决策单元判断该数据为攻击类别的概率是否大于或等于预设的概率阈值,如果是,则进行拦截,否则,则不拦截。本发明采用如上技术方案,在海量标记数据上采取监督学习的方式训练模型,最终模型能够取得99.7%以上的准确率。本发明使用的模型,是基于文本数据的字符级别的编码,且经过预处理,因此具有特征编码少的特点,模型参数个数不多,模型的权重文件小,具有更好的实用性。并且采用lstm是属于深度学习方法,避免了繁琐的特征工程,简单的数据预处理就能将原始数据规整为模型的输入格式,具有实现简单的特点。附图说明图1所示为本发明实施例一的流程示意图。图2所示为本发明实施例一步骤s200中预处理的流程示意图。图3所示为本发明实施例一中lstm循环神经网络模型的示意图。图4所示为本发明实施例一中模型训练过程中的准确率和损失函数变化情况图。图5所示为本发明实施例三中网络攻击识别系统的结构示意图。具体实施方式为进一步说明各实施例,本发明提供有附图。这些附图为本发明揭露内容的一部分,其主要用以说明实施例,并可配合说明书的相关描述来解释实施例的运作原理。配合参考这些内容,本领域普通技术人员应能理解其他可能的实施方式以及本发明的优点。现结合附图和具体实施方式对本发明进一步说明。实施例一:参考图1~3所示,本发明提供了一种用于网络攻击类别识别的lstm循环神经网络模型,所述lstm循环神经网络模型的建立过程包括以下步骤:s100:采集多个文本格式的网络请求数据作为训练数据集,并根据网络请求数据的内容为每个网络请求数据设定标签类别。所述多个在本领域中多指大量或海量的数据,数据的数量越多,最终的模型越准确。所述网络请求数据根据网络攻击的类型可以分别多种类别,主要分为正常的网络请求数据和攻击类别的网络请求数据,该实施例中,主要是区分sql注入攻击和xss攻击,因此,所述标签类别包括三种,分别为类别1:正常的网络请求数据;类别2:包含sql注入攻击的网络请求数据;类别3:包含xss攻击的网络请求数据,即类别2和类别3均属于攻击类别网络请求数据。s200:对训练数据集中的网络请求数据进行预处理,转化为预设长度的数字序列型数据。所述预设长度为根据需求设定的lstm循环神经网络模型的输入样本的长度,本领域技术人员可以自行设定预设长度的大小。所述预处理包括:解码、中文字符替换、大小写变换、字典提取、序列编码和序列长度处理等。所述解码为:将网络请求数据中包含的编码还原成所述编码对应的编码前的字符。所述编码可以为url编码和unicode编码等常见编码。所述中文字符替换为:将中文字符等非字母、数字、符号的字符统一替换为小写字母’z’。所述大小写变换为:将大写字符转化为小写字符。所述字典提取为:以单字符为单位统计每个字符在数据集中出现的次数,按次数降序排列字典编号形成字典,此外,设定序列补位的字符为“+”,其字典编号为0,未在训练数据集中出现过的字符编码为“z”,其字典编号为1。字典可以文件形式长期保存。所述序列编码为:根据字典中设置的字符的字典编号将网络请求数据中的字符替换为字典编号,将字典中未记录的字符使用字符“z”代替,并设定其字典编号为1,形成数字序列型数据。所述序列长度处理为:根据需要的长度,将网络请求数据中的数字序列型数据进行长度处理,使所有数字序列型数据均为预设长度。所述长度处理可以为头部操作,也可以为尾部操作。所述头部操作为:针对长度不足预设长度的字符序列型数据在其前面使用补位符号“+”补齐,同时,其对应的数字序列型数据在其前面使用字典编号0补齐,针对超过长度的序列截去前面超过序列长度的部分。所述尾部操作为:针对长度不足预设长度的字符序列型数据在其后面使用补位符号“+”补齐,同时,其对应的数字序列型数据在其后面使用字典编号0补齐,针对超过长度的序列截去后面超过序列长度的部分。由于文本格式的网络请求数据不能直接作为lstm循环神经网络模型的输入,需将其转化为预设长度的数字序列型数据。该实例中采用的是基于文本数据字符级别编码的方式获得上述数字序列型数据。且原始网络请求数据经过解码中文替换大小写转化等预处理后,有效字符大大减少,因此使得所述字典文件较小,网络请求的特征编码简单,进一步也使得模型的参数数量减少,模型复杂度不至于太高,具有更好的实用性。s300:根据训练数据集中的数字序列型数据,进行训练,构建lstm循环神经网络模型,具体包括一下步骤:s301:设置嵌入层(embedding):该实施例中优选设定所述嵌入层的参数embedding_size为128,假设n为输入的样本量,则嵌入层的输出结构为(n,预设长度,128),每个输入样本的长度均为预设长度,即包含预设长度个字符,每个字符均表示为128维的向量,则每个输入样本为(预设长度,128),n个输入样本为(n,预设长度,128)。所述128为通过实验综合考虑模型的复杂性和准确性设置的,当参数越大时,模型越复杂,计算量越大,当参数越小时,模型越简单,但准确性不够高。通过嵌入层提取字符级别的词向量,将单一字符表示为128维的向量,抽取的词向量输入到lstm层。s302:使用dropout层随机断开一定比例的网络连接避免过拟合。所述dropout是指在深度学习网络的训练过程中,对于神经网络单元,按照一定的概率将其暂时从网络中丢弃。所述一定比例本领域技术人员可以根据经验和实验结果来设定。s303:连接lstm层并指定一定比例的dropout。该实施例中,所述lstm的输出为64维向量,即单一网络请求通过lstm层抽取成64维的文本向量。所述一定比例本领域技术人员可以根据经验和实验结果来设定。s304:连接一个全连接层(dense)和一个softmax层,输出结果为映射到每种标签类别的类别概率。该实施例中,使用全连接层作为分类器,使用softmax层使得模型的输出映射到类别概率。s305:设定优化器为adam随机梯度下降,设定损失函数为多分类交叉熵(categorical_crossentropy),设定衡量指标为准确率(accuracy),模型收敛后进行保存。使用adam梯度下降算法优化器训练模型,将训练数据集以8:2的比例划分开发训练集合开发测试集。adam梯度下降优化器会通过对损失函数优化的方式来更新整个神经网络的参数,其中损失函数通过多分类交叉熵的方式定义如下:其中p是softmax的输出,即每种标签的类别概率,t是每个网络请求数据的真实标签,i是数据位,j是标签位。该实施例中得训练模型在30个迭代次数(epoch)左右达到收敛,保存模型到本地。模型准确性测试:采用步骤s100和s200的方法,建立测试数据集,使用测试数据集中的网络请求数据对步骤s300所述的lstm循环神经网络模型进行测试,根据lstm循环神经网络模型输出的类别概率,将概率值最大的维度对应的标签类别作为该网络请求数据的标签类别,将该标签类别与之前标识的类别进行对比,以计算准确率。实验结果:如图4所示,显示了模型训练过程中的准确率变化情况和损失函数变化情况,可以看见模型最终收敛并具有99.5%以上的准确率。在实验中使用13万条请求数据做训练,14000条样本数据做测试,测试结果的混淆矩阵如下表1所示,准确率达到99.8%。表1真实标签0真实标签1真实标签2预测标签06049110预测标签1771701预测标签220759本发明该实施例一不仅免去了编写正则规则的麻烦,同时相比于其他传统机器学习方法,免去了繁琐的特征工程的过程,通过嵌入层使得数据的特征在模型中自动提取,体现了深度学习的优越性。实施例二:一种网络攻击识别方法,基于实施例一所述的用于网络攻击类别识别的lstm循环神经网络模型,该方法包括:对网络请求数据进行预处理,得到预设长度的数字序列型数据,使用lstm循环神经网络模型对该数字序列型数据的标签类别的概率进行识别,得到每种标签类别的类别概率,将类别概率中概率值最大的维度对应的标签类别作为该网络请求数据的标签类别,根据预测的结果来选择是否进行拦截。所述是否进行拦截的识别具体可以设置概率阈值,当类别2或类别3的概率大于等于该概率阈值时进行拦截,否则,则不拦截。该实施例中,设置概率阈值为0.6,只有类别2或3的概率大于等于0.6是才会进行拦截,小于则不拦截。实施例三:如图5所示,一种网络攻击识别系统,基于实施例二所述的网络攻击识别方法,包括数据输入单元、数据转化单元、lstm模型单元和决策单元,所述数据输入单元将接受到的网络请求数据发送至数据转化单元,所述数据转化单元将网络请求数据进行预处理转化后,得到预设长度的数字序列型数据后,将该数字序列型数据发送至lstm模型单元,所述lstm模型单元对该数字序列型数据的标签类别的概率进行识别,输出每种标签类别的类别概率至决策单元,所述决策单元判断该数据为攻击类别的概率是否大于或等于预设的概率阈值,如果是,则进行拦截,否则,则不拦截。所述攻击类别为出正常网络请求数据之外的数据的类别,该实施例中,所述攻击类别为类别2或类别3。尽管结合优选实施方案具体展示和介绍了本发明,但所属领域的技术人员应该明白,在不脱离所附权利要求书所限定的本发明的精神和范围内,在形式上和细节上可以对本发明做出各种变化,均为本发明的保护范围。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1