本发明属于网络安全,具体涉及一种web应用防火墙sql注入防御正则规则提取方法和装置。
背景技术:
1、随着网络技术的不断发展,各种web应用也越来越多。同样的,针对各种web应用的攻击也越来越多,例如sql注入、跨站脚本攻击、远程代码执行等。web应用防火墙是一种针对应用层攻击的检测系统,它为各种web应用提供http/https请求检测,保证web应用程序的安全性。传统的web应用防火墙作为保障web应用的重要防线,能够在一定程度上保护web应用。传统的web应用防火墙通过正则规则或者指纹库匹配方法,对用户的输入进行分类过滤,从而防御黑客攻击。但是,随着攻击种类及攻击方式的不断变化,攻击者往往都需要在一定程度上探测被攻击web应用防火墙内部的规则,如sql注入规则。同时,随着深度学习技术的应用,深度学习技术也被应用于web应用防火墙。
2、攻击者在对web应用发起攻击,如sql注入攻击时,通常需要探测防火墙的sql防御规则,从而绕过防火墙。但是现在仍没有一种可以自动探测并提取web应用防火墙中sql注入防御规则的方法。从而更好的帮助攻击者构建攻击代码,增加攻击者的攻击成功率。同时,这种方法也可以用于检测web应用防火墙sql注入防御规则本身的安全性,保证web应用防火墙的安全性。此外,由于深度学习模型的难以解释性,而web应用防火墙有时需要具有一定的可解释性,也需要一种能够从黑盒web应用防火墙提取sql防御规则的方法,解释web应用防火墙的检测逻辑。而且,深度学习模型对于输入的处理过程需要进行大量计算,整体处理速率相比于正则规则较低。因此,web应用防火墙的拥有者也有将基于深度学习的web应用防火墙的内部逻辑替代为正则规则的需求,从而增加web应用防火墙的速度。
3、因此,本发明设计了一种web应用防火墙sql注入防御正则规则提取方法。与传统的针对web应用防火墙的绕过攻击不同,针对web应用防火墙中sql注入防御规则的提取方法,主要针对其内部对sql注入的分类逻辑进行提取,并转化为正则规则。并使提取到的正则规则与被攻击web应用防火墙正则规则对数据的分类相似。
技术实现思路
1、本发明的目的在于针对现有技术的不足,提供了一种web应用防火墙sql注入防御正则规则提取方法和装置。
2、本发明的目的是通过以下技术方案来实现的:一种web应用防火墙sql注入防御正则规则提取方法,包括以下步骤:
3、(1)对用户输入的sql注入数据进行随机排序,形成一个查询数据集d1;对被提取的web应用防火墙发起查询,简化被提取的web应用防火墙的返回,得到数据集d2;
4、(2)对数据集d2进行分词处理得到数据集d3,统计数据集d3中出现次数最多的n个决策词,并统计每个决策词的出现频率,得到数据集d4;利用数据集d2、数据集d4及cart算法构造决策树t;
5、(3)将决策树t转化为一组正则规则。
6、进一步地,所述步骤(1)包括以下子步骤:
7、(1.1)收集用户输入的sql注入数据,包括p个sql注入样本和p个正常的sql查询样本,利用随机序列生成算法,为每个样本分配序列号,进行随机排序,形成一个查询数据集d1:d1={x1,x2,…,xh,…,x2p},其中,xh为任意一个样本,h=1,2,…,h,…,2p;
8、(1.2)利用查询数据集d1中任意一个样本xh,对被提取的web应用防火墙发起查询,简化被提取的web应用防火墙的返回为lh,当lh=0表示允许通过,当lh=1表示禁止通过;
9、对查询数据集d1中每一个样本重复上述步骤,得到每一个样本对应的返回,并得到数据集d2:d2={l1,l2,…,lh,…,l2p}。
10、进一步地,所述步骤(2)包括以下子步骤:
11、(2.1)利用空格以及除了下划线外的单字符英文标点作为分词符,对查询数据集d1中任意一个样本xh进行分词处理,得到词列表yh;分词时,保留除空格外的分词符,并将每个分词符作为一个单独的词保留;分词后,将每一个样本当作一个由词组成的列表保存,列表中每个元素是分词后得到的词,顺序与其在原样本中出现顺序相同;
12、对查询数据集d1中每一个样本重复上述步骤,得到数据集d3:d3={y1,y2,…,yh,…,y2p};
13、(2.2)统计数据集d3中出现次数最多的n个决策词,并按照出现次数由高到低排序,记为:token1、token2、…、tokeni、…、tokenn;
14、(2.3)统计数据集d3中任意一个词列表yh中token1、token2、…、tokeni、…、tokenn出现的数量,分别记作:numtoken1,h、numtoken2,h、…、numtokeni,h、…、numtokenn,h,得到数组zh={numtoken1,h,numtoken2,h,…,numtokeni,h,…,numtokenn,h},其中,numtokeni,h表示第i个决策词在词列表yh中出现的数量;对数据集d3中每一个词列表重复上述步骤,得到数据集d4:d4={z1,z2,…,zh,…,z2p};
15、(2.4)利用数据集d2、数据集d4及cart算法构造决策树t。
16、进一步地,所述步骤(3)包括以下子步骤:
17、(3.1)利用回溯算法提取决策树t中,得到k个从根节点到叶节点的决策路径:决策路径dec1、决策路径dec2、…、决策路径deck;
18、(3.2)对决策路径dec1进行处理,得到新的决策路径dec1′;
19、(3.3)将新的决策路径dec1′转化为正则规则regex;
20、(3.4)重复步骤(3.2)-步骤(3.3),将决策树t中决策路径dec1、决策路径dec2、…、决策路径deck分别转化为对应的正则规则,得到一组正则规则。
21、进一步地,所述步骤(3.2)包括以下子步骤:
22、(3.2.1)对决策路径dec1进行处理:所述决策路径dec1由m个决策和叶节点e1组成,所述叶节点e1表示决策路径dec1的输出;其中,任意一个决策的形式为:minj≤numj或numj<maxj,numj为随机一个numtokeni,h,minj为决策路径dec1中第j个的决策的阈值最小值,maxj为决策路径dec1中第j个的决策的阈值最大值,j=1,2,…,j,…,m;
23、(3.2.2)对于决策路径dec1中的m个决策,筛选出所有包含决策词tokeni的决策,若决策路径dec1中不包含决策词tokeni的决策,对下一个决策词重复上述步骤;若决策路径dec1中包含决策词tokeni的决策,则构建新的决策:
24、当所有包含决策词tokeni的决策的形式均为minj≤numj时,选取最大的minj记为mini,并对mini进行向上取整得到(mini)′,得到一个新的决策qi:(mini)′≤numtokeni并加入到决策路径dec1中,同时删去其他包含决策词tokeni的决策;
25、当所有包含决策词tokeni的决策的形式均为numj<maxj时,选取最小的maxj记为maxi;若maxi为整数,得到(maxi)′=maxi-1;若maxi为非整数,对进行向下取整得到(maxi)′;从而得到一个新的决策qi:numtokeni≤(maxi)′并加入到决策路径dec1中,同时删去其他包含决策词tokeni的决策;
26、当所有包含决策词tokeni的决策的形式为minj≤numj或numj<maxj时,选取最大的minj记为mini并选取最小的maxj记为maxi,对mini进行向上取整得到(mini)′;若maxi为整数,得到(maxi)′=maxi-1;若maxi为非整数,对进行向下取整得到(maxi)′;从而得到一个新的决策qi:(mini)′≤numtokeni≤(maxi)′并加入到决策路径dec1中,同时删去其他包含决策词tokeni的决策。
27、进一步地,所述步骤(3.3)包括以下子步骤:
28、(3.3.1)对于决策路径dec1′中任意一个决策qi,当决策qi的形式为(mini)′≤numtokeni≤(maxi)′时,将决策qi转化为正则表达式:^((((?!(\btokeni\b)).)*)(\btokeni\b)){(mini)′,(maxi)′}(((?!(\btokeni\b)).)*)$;
29、当决策qi的形式为numtokeni≤(maxi)′并且(maxi)′=0时,将决策qi转化为正则表达式:^(((?!(\btokeni\b)).)*)$;
30、当决策qi的形式为numtokeni≤(maxi)′并且(maxi)′>0时,将决策qi转化为正则表达式:^((((?!(\btokeni\b)).)*)(\btokeni\b)){0,(maxi)′}(((?!(\btokeni\b)).)*)$;
31、当决策qi的形式为(mini)′≤numtokeni时,将决策qi转化为正则表达式:^((((?!(\btokeni\b)).)*)(\btokeni\b)){(mini)′,}(((?!(\btokeni\b)).)*)$;
32、(3.3.2)对决策路径dec1′中m2个决策重复步骤(c3.1),将决策路径dec1′中m2个决策均转化为对应的正则表达式,得到正则规则regex,所述正则规则regex包含m2个正则表达式;并将叶节点e1作为正则规则regex的输出。
33、本发明还提供一种web应用防火墙sql注入防御正则规则提取装置,包括:web应用防火墙查询模块、web应用防火墙逻辑提取模块和正则规则生成模块;
34、所述web应用防火墙查询模块,用于对用户输入的sql注入数据进行随机排序,形成一个查询数据集d1;对被提取的web应用防火墙发起查询,简化被提取的web应用防火墙的返回,得到数据集d2;
35、所述web应用防火墙逻辑提取模块,用于对数据集d2进行分词处理得到数据集d3,统计数据集d3中出现次数最多的n个决策词,并统计每个决策词的出现频率,得到数据集d4;利用数据集d2、数据集d4及cart算法构造决策树t;
36、所述正则规则生成模块,用于将决策树t转化为一组正则规则。
37、本发明还提供一种web应用防火墙sql注入防御正则规则提取装置,包括一个或多个处理器,用于实现上述web应用防火墙sql注入防御正则规则提取方法。
38、本发明还提供一种计算机可读存储介质,其上存储有程序,该程序被处理器执行时,用于实现上述web应用防火墙sql注入防御正则规则提取方法。
39、本发明的有益效果是:
40、(1)本发明深入分析web应用防火墙sql注入防御功能的内部原理,采用数据查询方法分析提取web应用防火墙sql注入防御功能的内部逻辑,并将其转化为正则规则,满足其可解释性,并且使提取到的规则与被提取的web应用防火墙的sql注入防御功能,在优选地sql注入数据集中,对正常样本及sql注入样本的分类结果高度相似;
41、(2)本发明采用决策树提取web应用防火墙中sql注入防御规则,并将其转化为正则规则,保障了正则规则生成过程中的可解释性和与被提取的web应用防火墙sql注入防御功能的相似性;
42、(3)本发明能够从基于深度学习模型的web应用防火墙中,提取到用于防御sql注入的正则规则;深度学习模型中包含数以万计的参数,对输入需要进行数以万计的计算;而正则规则是一种字符匹配算法,计算量相比于深度学习模型较少;因此本发明能够在一定程度上提高基于深度学习模型的web应用防火墙对输入的分类处理速度,减少基于深度学习模型的web应用防火墙对web应用的性能的影响。