基于机器学习的SQL攻击检测技术研究

2020-07-04 02:27张泽亚翟健宏
智能计算机与应用 2020年3期
关键词:决策树机器学习

张泽亚 翟健宏

摘要:SQL注入是网络上使用非常广泛的攻击手段,也是防御难度极大的网络攻击方式。在信息安全领域中,SQL注入因其适用范围广,操作门槛低 ,可造成的损失大而被视为对网络安全威胁极大的一类攻击方式。本论文的目的在于测试不同的机器学习算法对于SQL注入攻击的区分能力。研究搜集了大量的SQL注入攻击语句,选择4种不同的机器学习模型建立了分类器,并使用上面收集的数据对其进行了训练。最后,对4种算法所建立的分类器进行了测试,得出了最适合检测SQLMAP的机器学习算法是卷积神经网络(CNN)算法。

关键词:  SQL注入攻击; 决策树; 机器学习; 分类器算法; SQLMAP

【Abstract】 In the field of information security, SQL injection is regarded as a kind of attack mode which threatens the network security greatly because of its wide application range, low operation threshold and great loss. The purpose of this paper is to test different machine learning algorithms for distinguishing SQL injection attacks. The paper collects a large number of SQL injection attack statements, selects four different machine learning models to build classifiers, and uses the data collected above to train them. Finally, the paper tests the classifiers built by the four algorithms and concludes that the most suitable machine learning algorithm for detecting SQLMAP is convolutional neural network (CNN) algorithm.

【Key words】  SQL injection attack; decision-making tree; machine learning; classifier algorithm; SQLMAP

0 引 言

SQL注入是一种针对Web中数据库漏洞的注入技术。其工作原理是,把想要执行的命令添加到Web流量、域名或者查询的字符串中来达到恶意欺骗的目的。攻击者可以基于用户发送的信息而得到的回复和反应,把攻击性的代码发送到Web数据库服务器,其结果会导致系统崩溃、数据被破坏以及非公开的信息被偷窃。

在国际上享有高度权威性的非营利性组织开放式Web应用安全项目Open Web Application Security Project(OWASP)發布的十大攻击行为中,SQL注入因其危害高,攻击成本小,入门门槛低,适用范围广而多年来一直排名第一位。在可预见的数年内,SQL注入上升趋势明显,将会是一段时间内互联网安全的重大威胁。

SQL注入的破坏性极大。由于Web语言自身的缺陷,编程开发人员的疏忽和安全意识不足,大多数的Web应用系统都有被SQL注入攻击的可能性。而一旦攻击成功,那么攻击者就可以在被攻击的数据库中随意地修改、窃取、删除数据,甚至可以让系统陷于瘫痪。SQL注入攻击可以对人们财产、公司信誉、国家安全造成不可挽回的损失。

综上所述,SQL注入的防御技术是一个极具研究价值的课题方向。在目前情况下,仍有很多问题亟待解决:检测率不够高,误报率过大,检测效率不高,以及静态防御条件下,数据库更新慢,更新频率快等。

本文研究旨在建立一个SQL注入攻击的分类器。方法是使用机器学习的算法创建针对SQL注入攻击的分类器,再将收集的样本作为训练样本对分类器进行训练,最终得到检测SQL注入的分类器。之后,研究将通过实验验证检测比较不同机器学习算法在检测SQL注入时的有效性。

1 相关工作

1.1 数据集的收集

原始数据的收集,是研究的基础,也是重要的组成部分。本实验选择的数据是带有SQL注入攻击性的语句,但是这种数据在网上很少,根本无法满足实验的需要。而且,网上的数据还可能存在不全面,及未能包含所有种类的SQL注入攻击等缺点。为了使本文的数据集数量充足、种类全面、实用性强、具有说服力,收集数据的方法和使用如图1所示。由图1可见,对此可做阐释分述如下。

(1)利用SQLMAP扫描特定的网站,再利用wireshark进行捕获;研究选择的是http://www.shiyanbar.com实验吧网站。文中扫描使用过的命令详见表1。

此外,仍需考虑一个问题,即攻击的语句是无穷无尽的,每种攻击方式也有许多重复和相似的表达方式。例如,重言式攻击,只要条件中有永真的等式就可以了。但是“1=1”和“999=999”,虽是2个等式,但显而易见的是将这两者都列举出来是没有意义的,研究中只需选取其中之一就可以代表这一类。至此,研究得到的攻击载荷的判断依据见表5。

综上论述可知,测试用例的生成由表达式和分类依据共同决定,表达式决定测试用例由哪些攻击载荷根据何种规则生成,分类依据决定实际使用的攻击载荷。例如,对表达式S(LG) * S(IE) && S(LG) * S(NE)的实例化可具体表述为:S(LG)中任选一个关键字,如“and”,S(IE)中任选一类攻击载荷,如“1=1”,S(NE)中任选一类攻击载荷,如“2<1”,则生成的攻击输入为“and 1=1 and 2<1”,该攻击输入即可作为检测基于布尔盲注的测试用例。以此类推,不断循环S(LG)、S(IE)和S(NE)中的载荷并根据表达式生成测试用例,最终生成全部的用于检测基于布尔盲注的测试用例。

通过上述化简操作过程,研究中实例化生成了共7 000条SQL注入的命令语句。

(3)在网上收集了一些现有的SQL注入语句。主要是在Github上和国外漏洞提交平台exploit-db上收集SQL注入的攻击语句。但是数量有限,大约有2 000条。

1.2 分类器的建立

分类器是本系统的核心部分,并将直接决定最后分类器的效果。本文将分别尝试LSTM、CNN、SVM和KNN四种算法,比较其性能效果。文中将针对这4种模型,研究推得剖析概论如下。

(1)长短时记忆算法(LSTM)模型。这是一种特殊的神经网络模型,最早由Hochreiter 和Schmidhuber 提出的[2],并经多次演变改进而得以完善。已在各研究领域得到了广泛使用。

LSTM的特点是可以将前面的所有单个样本都作为一份“经验”,用于处理下一个样本。但又不会将其完全继承,而是有选择性地“遗忘”掉其中一部分。

(2)卷积神经网络(CNN)模型。这是一种多层的神经网络,由卷积层、池化层、全连接层、输出层四个部分组成。一般情况下,卷积神经网络可以被视作是一种使用重复神经元的许多相同拷贝的运算网络结构。其特点是允许网络拥有大量神经元并表达计算大型模型,同时保持实际参数的数量来描述神经元行为方式的值 ,而且只需要相当小的学习。这种具有相同神经元的多个拷贝技巧大致类似于数学和计算机科学中的函数的抽象。类似地,卷积神经网络学习过一次的神经元会在其它结构中多次重复地得到使用,这也使得模型的准确率和学习效率会更高。

(3) Support Vector Machine(SVM)模型,即支持向量机。这是一种有监督的模式分类方法。SVM的研究论题可以用一个经典的二分类问题加以描述。一个二分类问题示意如图3所示。在图3中,两类的圆点显然是可以被一条直线分开的,是模式识别领域中的线性可分问题。但是也有许多条直线可以将2类数据分开。图3(b)和图3(c)分别给出了2种不同的分類方案,其中黑色实线为分界线,研究将其称为决策面。每个决策面对应了一个线性分类器。虽然2种分类方法的结果相同,但如果考虑潜在的其它数据,则两者性能却是有差别的。

经由SVM算法的评判可知,图3中的分类器(b)在性能上要优于分类器(c),判别依据是图3(b)的分类间隔比图3(c)要大。这里就要用到第一个SVM中的一个概念:分类间隔。在保证决策面方向不变、且分类正确的情况下移动决策面,图中2条虚线之间的实线与两条虚线的距离相等,在决策面不改变的条件下,这条实线就是求解该问题的最优决策面。2条虚线到实线的距离就称为分类间隔。一般来说,分类间隔越大,得到的分类效果越好,故而最大间隔就是SVM的最优解。从图3中可以看到,有一些样本点是正好穿过虚线的,可以说,这些样本点决定了虚线、及实线的位置。这样的样本点就是支持向量。通过前文的例子可以看出,支持向量最后决定了最优决策面的位置。

简单地说,SVM方法就是提升样本的维度,使得原先在低维线性不可分的数据通过升维的方法,在高维变得线性可分,其分类的最优解就是最优超平面。升维就是把样本投向高维的映射。如果在低维度时,由于分类样本过于复杂而无法分类,那么支持向量机的做法就是提高其维度,使不同的样本具有更多的特征提取因素,从而在高维空间进行分类。高维空间中的分类间隔不再是一条线,而是一个超平面。核函数可以提升样本的维度,但同时尽量维持不增加样本的计算难度。SVM方法中核函数的加入还可以避免维数灾难。本文使用的是sigmoid核函数。

(4)邻近算法(KNN)。或者说K最近邻分类算法,这是一种经典的机器学习算法。所谓K最近邻,就是当要对某一样本个体进行归类时,研究判断其属于哪一类的依据是,选择k个与其最接近的若干个样本,再依据这些样本归属的类别,来判断此研究个体属于哪一类。

这里,举出一个K邻近的实例如图4所示。当要判断样本个体Xu属于哪一类时,判断的方法可表述为:先选择5个距离Xu最近的样本(这里的“5”就是研究中的K值),然后观察到这5个样本中,4个属于w1,1个属于w3,因此判定Xu属于w1类。再经分析可知在距离Xu最近的5个样本中,属于w1的最多,故而判断Xu属于w1的概率最大。

通过上面的例子可以看出,KNN算法在判断某一未知分类的样本属于哪一类时,其方法就是选择距离此样本最近的k个已知类别的样本,这里的k由研究者本人决定。k值不同,分类结果也有可能不同。统计这k个已知样本的分类结果,即可判断该未知样本归属为k个样本中个数最多的那一类。

2 实验测试

2.1 评估的标准

研究中,要对测试样本进行标记。样本分为2类。一类标记为0,即普通数据;另一类标记为1,即具有SQL注入攻击性质的数据。如图5所示。

由图6可以发现,使用相同的10 000条数据对4个分类器进行训练,训练时间最短的是CNN。这说明,在同样的条件下,如果使用CNN作为分类器的算法,则分类的效率是最高的。

2.4 模型的测试

在模型训练结束后,接着对其分类效果进行了测试。测试方法是使用wireshark捕获5 000条正常的数据,与原始样本中剩下的SQL注入攻击语句样本混合在一起,使3个分类器分别进行分类,观察其分类效果。研究后得到的4种模型的测试结果如图7所示。4种模型的错报率和误报率的结果数值见表6。4种模型的准确率如图8所示。

由图7、图8、表6分析可知,无论是从漏报率、误报率,还是从准确率上看CNN模型是针对SQL注入检测的最好模型,;SVM的分类效果次之,LSTM相比于传统的机器学习算法(SVM与KNN)并没有明显的优势,KNN的分类效果较差。

研究中,还将各个模型分类错误的SQL语句(包括漏报和错报的)进行了梳理和分类,分类结果如图9所示。

由图9可以看出,4种模型在联合式注入、基于时间盲注和基于布尔的盲注入检测时效果非常好,对于显错式注入的判断效果是最差的。

3 结束语

研究中,设计提出了一个模型来实例化生成SQL注入攻击语句,在收集到足够多的语句后,研究比较了4种不同机器学习算法在SQL注入攻击的检测上的性能。通过实验发现,CNN算法的训练时间最短,分类的效果最好。而LSTM在SQL注入分类的效果上,却并未显现出明显优势。

参考文献

[1]   WANG Jie, PHAN R C W, WHITLEY J N, et al. Augmented attack tree modeling of SQL injection attacks[C]//2010 2nd IEEE International Conference on Information Management and Engineering. Chengdu, China: IEEE,2010, 437: 1009.

[2]HOCHREITER S, SCHMIDHUBER J. Long short-term memory[J]. Neural Computation, 1997, 9(8):1735.

[3]MCWHIRTER P R,KIFAYAT K, SHI Qi, et al. SQL injection attack classification through the feature extraction of SQL query strings using a Gap-Weighted String.Subsequence Kernel[J]. Journal of Information Security and Applications, 2018,40:199.

[4] 張志超,王丹,赵文兵,等. 一种基于神经网络的SQL 注入漏洞的检测模型[J]. 计算机与现代化, 2016(10):67.

[5]张燕. 数据挖掘提取查询树特征的SQL 注入攻击检测[J]. 电子技术应用, 2016,42(3):90.

[6]王苗苗,钱步仁,许莹莹,等. 基于通用规则的SQL 注入攻击检测与防御系统的研究[J]. 电子设计工程, 2017,25(5):24.

[7]韩宸望,林晖, 饶绪黎, 等. 基于代理模式的SQL注入过滤方法[J]. 计算机系统应用,2018,27(1):98.

[8]张慧琳,丁羽,张利华,等. 基于敏感字符的SQL注入攻击防御方法[J]. 计算机研究与发展,2016,53(10):2262.

[9]韩涛. 基于解析树的SQL 注入检测方法研究[J]. 哈尔滨:哈尔滨工业大学,2013.

[10]LIU Pengfei, QIU Xipeng, CHEN Xinchi, et al. Multi-timescale long short-term memory neural network for modelling sentences and documents[C]// Conference on Empirical Methods in Natural Language Processing. Lisbon, Portugal: IEEE,2015:2326.

猜你喜欢
决策树机器学习
简述一种基于C4.5的随机决策树集成分类算法设计
一种改进的MEP决策树剪枝算法
决策树学习的剪枝方法
基于词典与机器学习的中文微博情感分析
基于网络搜索数据的平遥旅游客流量预测分析
前缀字母为特征在维吾尔语文本情感分类中的研究
基于支持向量机的金融数据分析研究
机器学习理论在高中自主学习中的应用
决策树在施工项目管理中的应用