本发明属于网络安全领域,涉及web安全中攻击url检测方法,具体的说是一种基于动态特征提取的攻击url检测方法。
背景技术:
在网络安全中,web安全往往是研究的重点。由于url为用户与服务器最常用的交互途径,因此大量攻击以url为载体。具有攻击行为的url被称为攻击url,否则称之为正常url。采用深度学习进行攻击url检测已经有了广泛的应用。传统对攻击url进行检测的方式通常是使用各种规则例如正则表达式进行匹配。这些方法有两个缺点。首先,使用规则的匹配方式需要针对每一种攻击方式,使用专家经验进行规则编写。针对一种攻击方式编写的规则不能应用于另一种攻击的检测。第二,规则只能检测处于规则库中的攻击。当新的攻击方式出现后,需要编写新的规则。因此无法做到实时的拦截最新的规则。因此针对以上的缺点,本发明使用深度学习中的循环神经网络对攻击url进行特征提取,能够有效的学习攻击url中共有的特征。
技术实现要素:
针对上述问题,本发明提出一种基于动态特征提取的攻击url检测方法。
本发明的技术方案为:
一种基于动态特征提取的攻击url检测方法,其特征在于,包括以下步骤:
s1、采集url数据,并将其标记;
s2、将采集到的url数据进行预处理,转换为可计算的数值矩阵;
s3、使用采集到的url对循环神经网络进行训练,并保存模型;
s4、利用s3中保存的模型对未知的url进行检测以判定是否为攻击url。
进一步的,所诉步骤s1中的url数据仅包含url中的参数以后的部分。且需将其标记为攻击url或正常url。
进一步的,所诉步骤2的具体过程如下:
(1)将步骤s1中所采集的url按字符分割为字符集合;
(2)统计每一种字符总数。若某一字符数量小于预设值,则将其替换为字符0。否则不做任何处理。
(3)若某条url分割形成后的字符集合大小小于预设值,则在字符集合中补充0字符直到字符集合大小等于预设值。若某条url分割形成后的字符集合大小大于预设值,则丢弃其末尾字符,直到字符集合大小等于预设值。
(4)对分割后所得字符集中每一个字符进行向量化,并将一条向量化后的所有向量按行拼接为一个矩阵。
进一步的,所诉步骤3具体过程如下:
(1)将s2中获取到的矩阵数据分为两部分。其中一部分为训练数据,另一部分为测试数据。其中,应尽量保证训练数据中的攻击url数据与正常url数据数量相同;
(2)利用训练数据使用梯度下降算法训练循环神经网络;
(3)使用测试数据测试模型误差,若误差小于预设值则停止训练并保存模型。否则继续训练过程。
本发明的有益效果是:
本发明采用深度学习模型中的循环神经网络模型,能够自动提取攻击url中的隐藏特征。无需人工手动编写规则进行匹配,对未知的攻击也可以进行检测。
附图说明
图1为本发明流程示意图
具体实施方式
下面结合附图和具体实例对本发明做进一步说明。
如图1所示,一种基于循环神经网络的攻击url识别方法,包括以下步骤:
步骤1:采集url数据,并将其标记;(数据采集)
提取url数据,仅保留其参数及锚点部分。如http://www.test.com/p1/p2?parameters#fragment。采集时仅保留其路径、参数部分。即仅采集/p1/p2?parameters。采集后,按url类型将其标记为正常或攻击。
步骤2:将采集到的url数据进行预处理,转换为可计算的数值矩阵(数据预处理)。
包括以下步骤:
s1:将采集的url进行按字符进行分割为字符集合,如/p1/p2?key=value将被分割为:[/,p,1,p,2,?,k,e,y,=,v,a,l,u,e]
s2:若字符集合中某字符出现的次数小于预设值,则替换为字符0。例如若字符=出现的次数小于预设值,则有:
[/,p,1,p,2,?,k,e,y,=,v,a,l,u,e]替换为[/,p,1,p,2,?,k,e,y,0,v,a,l,u,e]
s3:若某url分割后的字符集合中字符数量小于预设值,则在字符集合中补充0字符直到字符集合中字符数量等于预设值。若某url分割后的字符集合中字符数量大于预设值,则丢弃其末尾字符,直到字符集合数量等于预设值。例如预设值为10,则[/,p,1,p,2,?,k,e,y,=,v,a,l,u,e]将转化为[/,p,1,p,2,?,k,e,y,=]。若预设值为20,则[/,p,1,p,2,?,k,e,y,=,v,a,l,u,e]转换为[/,p,1,p,2,?,k,e,y,=,v,a,l,u,e,0,0,0,0,0]。
s4:对分割后所得字符集中每一个字符进行向量化,并将一条向量化后的所有向量按行拼接为一个矩阵。
使用独热向量表示每一个字符。独热向量为向量中仅有一个元素为1,其余元素为0的向量。若字符a,b,c分别使用向量表示如下:
a[1,0,0]
b[0,1,0]
c[0,0,1]
则字符集合[a,b,c]将三个独热向量按行连接,并形成矩阵:
[
1,0,0
0,1,0
0,1,0
]
步骤3:使用采集到的url对循环神经网络进行训练,并保存模型(训练循环神经网络模型)。其具体步骤如下:
s11:将步骤2中获取的数据分为两个部分。一部分为训练集,另一部分为测试集。
在训练的过程中,模型需要学习正常url以及攻击url的特征。因此为了保证模型的学习效果,需要保证训练模型中正常url的数量与攻击url数量尽可能相等。
s12:使用训练样本训练循环神经网络模型。
训练的过程为从训练样本中随机选取一批数据使用梯度下降算法不断循环调整模型中的参数以达到训练模型的目的。
s13:使用测试集合中的数据对模型进行测试,若误差(正确率,精确率等)小于预设值。则将模型保存。保存的内容包括模型中参数以及模型网络结构。
步骤4:利用s3中保存的模型对未知的url进行检测以判定是否为攻击url(识别)。
可以利用训练好的模型对实时请求的url进行检测,也可以对日志中已存在的url进行检测。
1.一种基于动态特征提取的攻击url检测方法,其特征在于,包括以下步骤:
s1、采集url数据,并将其标记;
s2、将采集到的url数据进行预处理,转换为可计算的数值矩阵;
s3、使用采集到的url对循环神经网络进行训练,获得训练好的神经网络;
s4、利用s3中训练好的神经网络对未知的url进行检测以判定是否为攻击url。
2.根据权利要求1所述的一种基于动态特征提取的攻击url检测方法,其特征在于,步骤s1中进行url采集时仅保留其访问路径、参数以及锚部分,并将所采集的url标记为正常类型或攻击类型。
3.根据权利要求2所述的一种基于动态特征提取的攻击url检测方法,其特征在于,步骤s2的具体方法为:
(1)将步骤s1中所采集的url按字符分割为字符集合;
(2)统计每一种字符总数,若某一字符数量小于预设值,则将其替换为字符0,否则不做任何处理;
(3)若某条url分割形成后的字符集合大小小于预设值,则在字符集合中补充0字符直到字符集合大小等于预设值;若某条url分割形成后的字符集合大小大于预设值,则丢弃其末尾字符,直到字符集合大小等于预设值;
(4)对分割后所得字符集中每一个字符进行向量化,并将一条向量化后的所有向量按行拼接为一个矩阵。
4.根据权利要求3所述的一种基于动态特征提取的攻击url检测方法,其特征在于,步骤s3的具体方法为:
(1)将s2中获取到的矩阵数据分为两部分,其中一部分为训练数据,另一部分为测试数据,并保证训练数据中的攻击url数据与正常url数据数量相同;
(2)利用训练数据使用梯度下降算法训练循环神经网络;
(3)使用测试数据测试模型误差,若误差小于预设值则停止训练并保存模型,否则继续训练过程。
技术总结