一种基于K-means的SQL注入攻击检测方法

文档序号:7777118阅读:244来源:国知局
一种基于K-means的SQL注入攻击检测方法
【专利摘要】一种基于K-means的SQL注入攻击检测方法,主要用以提高SQL注入攻击的检测率和实现对未知的SQL注入攻击的检测。包括如下步骤:数据处理阶段,对含有SQL注入攻击的Web访问数据包进行分析处理,根据SQL注入攻击的特点和特征提取出数据包的关键属性数据;对数据分簇阶段,使用K-means算法对数据进行分簇,并对簇进行攻击标定,且为了使K-means算法在检测中达到更好的效果,分簇时,针对SQL注入攻击的分类和提取数据的特征,对数据进行孤立点删除和对K-means算法中初始中心点选取提出符合当前应用场景的改进;检测阶段,主要对Web的实时访问数据包进行数据提取,并进行按照已有的簇进行分簇,最后按照所属簇的攻击标定来判断是否为SQL注入攻击。
【专利说明】—种基于K-means的SQL注入攻击检测方法
【技术领域】
[0001]本发明涉及一种SQL注入攻击检测方法,属于网络信息安全领域。
【背景技术】
[0002]随着网络技术的飞速发展,特别是信息化程度不断加强,网络越来越成为人们生活中必不可少的一部分,网上交友、网上购物、网上银行等等,而这些都需要有相应的平台支持,大多数都是使用基于B/S模式的动态网站(Web)来完成的,Web的存在就是对这网络时代很好的诠释。但是随着人们对Web的需求越来越多和越来越依赖的现在,Web安全问题尤其突出,保护用户的安全和Web本身的安全是网站管理人员必须考虑的问题。
[0003]当前,针对Web攻击层出不穷,其中最具危害性的就是SQL注入攻击,由于当前Web主要以交互模式,因此,当用户与Web之间进行交互时,从用户获取的数据就有可能带有攻击性,其中主要针对Web数据库的一种攻击就是SQL注入攻击,且其危害性大,可以盗取用户信息、篡改网站数据等。
[0004]应对SQL注入攻击,当前主要是从Web开发者和Web管理者两个方面入手,开发者主要是构建严谨的代码体系,提前对可能存在SQL注入漏洞的代码进行修补,但是这样并不能完全杜绝漏洞的存在,而管理者一般是使用第三方的防御检测系统进行防御。而当前主要SQL注入检测技术,主要是基于特征的匹配过滤,这样可以很好的检测出已知的SQL注入攻击,但是依赖已知攻击库,不能检测出未知攻击,而当前的SQL注入攻击技术,随着攻防的不断展开,也在不停的更新变化,能够很好的绕开检测,而且使用基于异常的检测方法,又会带来很大的误检率而不能很好应用到现实中。

【发明内容】

[0005]本发明的技术解决问题:克服现有技术的不足,提供一种基于K-means的SQL注入攻击检测方法,提高SQL注入攻击的检测率和实现对未知的SQL注入攻击的检测。
[0006]本发明的技术解决方案:基于K-means的SQL注入攻击检测方法,这个方法主要是引入K-means算法实现对未知的变异SQL注入攻击的检测。该方法先在安全测试环境下对一系列的SQL注入攻击进行学习分析,形成多个攻击簇和正常簇,然后在真实环境下,对所有Web访问数据包进行分簇,然后根据所在簇来识别是否为攻击行为
[0007]包括训练阶段和检测阶段。学习阶段是在安全的实验环境下,使用多种SQL注入攻击工具分别从Post注入、Get注入和Cookie注入对Web站点进行攻击,提取攻击数据包的含有攻击特性的属性进行分析,并使用K-means算法进行分簇,并进行攻击标定,同样提取正常数据包的相同属性进行分析分簇,进行正常标定。检测阶段就是在真实环境下,对每个访问Web的数据包都进行特征提取并分簇,并根据簇的标定来判断是攻击行为还是正常行为。
[0008]本发明提供一种基于K-means的SQL注入攻击检测方法,主要包括以下步骤:
[0009]一、训练阶段[0010](I)训练数据获取,训练数据主要分为攻击数据和正常数据,攻击数据由多种攻击工具分别对Web进行Post注入攻击、Get注入攻击和Cookie注入攻击获取,正常数据是正常的Web访问数据。
[0011](2)提取特征,主要提取HTTP数据包的地址(URI)、数据包类型(Method)、数据包长度(Content-Length)、浏览器特征(User-Agent)、数据包Cookie、POST数据以及各属性的长度和字符出现频率。
[0012](3)针对K-means算法进行数据处理,分三步:第一,数据标准化,为了计算方便,对提取出特征属性进行量化,并按照每个特征属性为一组求此属性的量化平均值,用此平均值与每条数据的相应属性量化数值的比值为此条数据该属性标准化数据;第二,删除孤立点,就是排除一些与其所在数据集属性平均值相差比较大的数据;第三,K-means算法初始中心点选择,主要按照数据特性和SQL注入攻击的特点(三种注入攻击方式),选出部分由代表性的数据点为初始中心点数据集,然后按照初始中心点所处位置数据点分布密度大和两两初始中心点间距离尽量大的原则选取K个初始中心点,并使攻击数据集的初始中心点满足包含三种SQL注入攻击方式。
[0013](4)使用K-means算法进行数据分簇,分别对攻击数据集和正常数据集进行分簇,并对分簇结果进行攻击标定。
[0014]二、检测阶段
[0015](I) 一条Web访问数据,即一个HTTP数据包。
[0016](2)提取特征,按照训练阶段提取特征方式进行提取。
[0017](3)数据处理,数据进行量化和标准化。
[0018](4)进行分簇,按照各特征数据求出距离各簇中心点的距离,其中该数据归于距离最小的簇中。
[0019](5)攻击判定,按照簇的标定判定是否为攻击行为。
[0020]本发明与现有技术相比的优点在于:
[0021](I)本发明能够检测未知的SQL注入攻击,传统的匹配检测方法仅能够检测出已知攻击,本发明根据SQL注入攻击特点提取HTTP数据包中重要特征进行分析,并采用K-means算法为核心,最终实现检测未知的SQL注入攻击行为。
[0022]( 2 )本发明降低了检测的误检率,传统检测方法为了实现对未知攻击的检测,会造成误检率的提高,本发明通过下面两个步骤来降低误检率:第一、根据SQL注入攻击行为特征,提取具有代表性的HTTP属性,并对属性进行标准化处理,使每个属性值充分代表HTTP数据包性质。第二、对训练数据进行优化,针对K-means算法的弱点,删除训练数据孤立点和优化初始中心点的选取方法。通过上面两个方面的处理,可以很好的降低检测阶段的误检率。
【专利附图】

【附图说明】
[0023]图1为本发明的整体结构示意图;
[0024]图2为本发明的训练数据获取以及处理流程示意图;
[0025]图3为本发明的K-means算法分簇并进行标定的工作流程图;
[0026]图4为本发明的检测阶段工作流程图。【具体实施方式】
[0027]下面结合附图对本发明的【具体实施方式】做进一步说明。
[0028]如图1所示,本发明的整体结构主要有训练阶段和检测阶段,其中训练阶段包括:训练数据获取,数据特征提取、数据标准化、孤立点删除、选取初始中心点、K-means算法分簇和簇攻击标定;检测阶段包括:待检数据特征提取、数据标准化、划分到簇和行为识别。
[0029]如图2所示,本发明的训练阶段中的训练数据的获取,数据特征提取和数据标准化的处理流程。
[0030](I)数据获取,架设存在注入漏洞的Web站点,选取多个SQL注入工具,分别从Post注入攻击、Get注入攻击和Cookie注入攻击对Web站点进行攻击,使用侦听工具收集SQL注入攻击数据集。选取多个爬虫工具,对网站进行遍历访问,收集正常访问数据集。
[0031](2)数据特征提取,针对收集到的训练数据,主要提取HTTP数据包的地址(URI)、数据包类型(Method)、数据包长度(Content-Length)、浏览器特征(User-Agent)、数据包Cookie、POST数据以及各属性的长度和字符出现频率。
[0032](3)数据标准化,为了计算方便,对提取出特征属性进行量化,并按照每个特征属性为一组求此属性的量化平均值,用此平均值与每条数据的相应属性量化数值的比值为此条数据该属性标准化数据。
[0033]如图3所示,本发明的训练阶段的K-means算法应用分簇及攻击标定流程。
[0034](I)删除孤立点,就是排除部分与其所在数据集属性平均值相差比较大的数据。
[0035](2) K-means算法初始中心点选择,主要按照数据特性和SQL注入攻击的特点(三种注入攻击方式),选出部分由代表性的数据点为初始中心点数据集,然后按照初始中心点所处位置数据点分布密度大和两两初始中心点间距离尽量大的原则选取K个初始中心点,并使攻击数据集的初始中心点满足包含三种SQL注入攻击方式。
[0036](3)使用K-means算法进行数据分簇,分别对攻击数据集和正常数据集进行分簇,并对分簇结果进行攻击标定。
[0037]如图4所示,本发明的检测阶段工作流程图
[0038](I)Web访问数据,即HTTP数据包,并按照训练阶段提取特征方式进行提取。
[0039](2)数据处理,数据进行量化和标准化。
[0040](3)进行分簇,按照各特征数据求出距离各簇中心点的距离,其中该数据归于距离最小的簇中。
[0041](4)攻击判定,按照簇的标定判定是否为攻击行为。
[0042]本发明未详细阐述部分属于本领域公知技术。
[0043]以上所述,仅为本发明部分【具体实施方式】,但本发明的保护范围并不局限于此,任何熟悉本领域的人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。
【权利要求】
1.一种基于K-means的SQL注入攻击检测方法,其特征在于包括: 训练阶段:对训练数据进行特征提取,对提取后的数据进行标准化处理后,删除孤立点和确定初始中心点后使用K-means算法进行分簇,并对分簇结果进行攻击标定; 检测阶段:实际检测,对Web的任意访问数据进行特征提取,经过数据处理后,划分到已经分好的簇中,再根据簇的标定来判断是否为SQL注入攻击行为。
2.根据权利要求1所述的基于K-means的SQL注入攻击检测方法,其特征在于:所述训练阶段的数据特征提取,包括: (1)SQL注入攻击从HTTP数据包的特征属性上分三种攻击方式,分别是Post注入、Get注入和Cookie注入,针对这三种攻击方式进行数据包的处理,需要提取HTTP数据包的地址(URI )、数据包类型(Method)、数据包长度(Content-Length)、浏览器特征(User-Agent )、数据包Cookie、POST数据; (2)URI的长度,内容,字符出现频率;P0ST数据的内容,长度,字符出现频率均进行量化处理。
3.根据权利要求1所述的基于K-means的SQL注入攻击检测方法,其特征在于:所述提取的数据进行标准化处理,是把数据集的相同属性数据全部相加求平均值,然后根据平均值进行标准处理。
4.根据权利要求1所述的基于K-means的SQL注入攻击检测方法,其特征在于:所述删除孤立点是指计算两两数据点之间的距离求和,删除距离之和最大的点,然后迭代删除距离次大的点直到删除M个数据点。
5.根据权利要 求1所述的基于K-means的SQL注入攻击检测方法,其特征在于:所述确定初始中心点具体为:初始中心点选择主要依靠两个条件,一是要中心点处于点分布密度较大的中心,二是两两中心点之间的距离尽量大。
6.根据权利要求1所述的基于K-means的SQL注入攻击检测方法,其特征在于:所述对分簇结果进行攻击标定是:根据中心点是否为SQL注入攻击来标定这个簇是否为攻击行为簇。
7.根据权利要求1所述的基于K-means的SQL注入攻击检测方法,其特征在于:所述的划分到已知簇当中去,再根据簇的标定来判断是否为SQL注入攻击行为具体为:是根据此数据点距离哪一个簇中心最近就归于哪个簇,然后根据簇的标定来判断此数据点代表的访问是否为SQL注入攻击行为。
【文档编号】H04L29/06GK103607391SQ201310585872
【公开日】2014年2月26日 申请日期:2013年11月19日 优先权日:2013年11月19日
【发明者】李晓晴, 陈真勇, 李清广, 李超, 熊璋 申请人:北京航空航天大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1