《電子技術應用》
您所在的位置:首頁 > 通信與網絡 > 設計應用 > 數據挖掘提取查詢樹特征的SQL注入攻擊檢測
數據挖掘提取查詢樹特征的SQL注入攻擊檢測
2016年電子技術應用第3期
張 燕
寧夏工商職業技術學院,寧夏 銀川750021
摘要: 針對Web 應用中數據庫信息容易遭受SQL注入攻擊的問題,提出一種基于數據挖掘技術的SQL注入攻擊檢測方法,其核心在于查詢樹特征的提取和轉換。首先,在SQL數據庫日志中收集內部查詢樹;然后,提取查詢樹中的語義和語法特征,并通過利用多維序列作為中間表示將查詢樹特征轉換為一個n維字符特征向量;再后,根據查詢樹類型,利用不同的統計模型將字符特征向量轉換成n維數值特征向量;最后,根據這些特征,利用多項式核函數SVM對其進行分類,從而實現SQL攻擊檢測。實驗結果表明,相比其他幾種較新的方案,提出的方案有效提高了SQL攻擊的正確檢測率。
中圖分類號: TP393
文獻標識碼: A
DOI:10.16157/j.issn.0258-7998.2016.03.026
中文引用格式: 張燕. 數據挖掘提取查詢樹特征的SQL注入攻擊檢測[J].電子技術應用,2016,42(3):90-94.
英文引用格式: Zhang Yan. Query tree feature extraction based on data mining for detecting SQL injection attack[J].Application of Electronic Technique,2016,42(3):90-94.
Query tree feature extraction based on data mining for detecting SQL injection attack
Zhang Yan
Ningxia Vocational Technical College of Industry and Commerce,Yinchuan 750021,China
Abstract: For the issues that the database information in Web application is vulnerable to SQL injection attack, a method of defense SQL injection attack based on data mining is proposed, and its core lies in the query tree feature extraction and conversion. First, the internal query tree is collected in the SQL database log. Then, the query tree feature is converted into an n-dimensional character feature vector by using the multidimensional sequences as the intermediate representation. Then, according to the query tree type, it uses different statistical models to convert character feature vector into the n-dimensional numerical characteristics vector. Finally, the SQL attack detection is detected by using the polynomial kernel function SVM according to these features. Experimental results show that the proposed scheme can effectively improve the correct detection rate of SQL attacks.
Key words : data mining;SQL injection attack;query tree;feature conversion;polynomial kernel SVM

0 引言

    目前,越來越多的Web 應用都采取了應用程序+數據庫的交互式結構,應用程序根據輸入動態構建結構化查詢語言(Structured Query Language,SQL)語句,在數據庫中進行相應的操作,并將結果返回給用戶。數據庫中存儲著用戶的很多敏感信息,正是由于數據庫中信息的重要性,導致了這種交互式應用頻繁地遭到攻擊[1]。其中,SQL注入攻擊(SQL-Injection Attacks,SQLIA)會從數據庫中盜取敏感信息或擅自添加數據庫中的賬戶,以獲取操作數據庫的權限[2]。因此,對SQL注入漏洞檢測方法的研究已成為提高網站安全防護能力的熱點問題。

    目前,有學者通過數據挖掘(Data Mining,DM)的方法從SQL數據庫日志中提取一些特征作為攻擊檢測的依據。但是,數據庫日志中的查詢采用復雜的樹結構表示,如何將其轉換成可作為分類器的輸入特征是一個難題[3]。文獻[4]將樹結構轉化為樹向量,以每個子樹發生的次數作為樹向量中的特征表示。然而,這些算法十分復雜,隨著子樹的變化,需要對其進行修改。為此,文獻[5]提出了一種基于多維度序列的方法,可以對樹結構進行調整。但是,由于輸入樹結構不同,多維度序列中的連續維度并不相同,這需要利用特殊方式對多維度序列進行相似度測量。對于特征的提取,文獻[6]從查詢樹中僅提取SQL語法特征作為分類依據,但這會增加假陽性概率。文獻[7]分析了SQL語句中的隱含意義,提取了語法和語義特征,并采用字符串長度模型來檢查有限可替代集合中是否存在常數,從而形成數值特征。文獻[8]則采用字符串分布模型來轉換查詢樹特征。但這些方法僅利用一種統計模型,在查詢樹結構多樣性的情況下,所提取的特征表征能力有限。

    本文基于數據挖掘技術,提出一種用于SQL注入攻擊檢測的查詢樹特征提取和轉換技術。利用Web數據庫日志中記錄的查詢樹(查詢樹是SQL語句的一種內部表示)在數據庫級別上正確檢測出SQLIA。為了將惡意查詢樹與正常查詢樹區分開來,本文從查詢樹中提取出語義和語法特征,并利用多維序列和統計模型將其轉換成n維數值特征向量,最終利用多項式核函數支持向量機(Support Vector Machine,SVM)進行分類。以ROC曲線下的面積(AUC)為性能指標進行實驗,結果表明本文提出的特征提取和轉換方法獲得了較高的AUC值,具有優異的SQLIA檢測性能。

1 提出的SQLIA檢測方法

    本文利用基于數據挖掘的二值分類方法來檢測SQL語句是否正常。其中,提取SQL數據庫日志中的語義和語法特征,并轉換成多維特征向量,然后利用多項式核函數支持向量機(SVM)構建一個SQLIA檢測框架,來求解二值分類問題。

    提出的SQLIA檢測框架分為四個階段:數據收集階段、數據預處理階段、SVM訓練階段和檢測階段。本文SQLIA檢測框架如圖1所示。

tx1-t1.gif

    數據收集階段中,從數據庫系統中收集正常和惡意SQL語句信息,并將每個SQL用查詢樹表示。然后,將每個查詢樹寫入到數據庫日志中,創建一個樹形數據結構。

    數據預處理階段中,將查詢樹轉化為n維特征向量。特征提取器模塊從查詢樹中提取語法和語義特征,并與特征轉換器相結合生成多維度序列。向量生成器模塊與每個多維度序列的數值元素相連接生成了n維特征向量,即將每個查詢樹轉換為向量表示的特征,用于后續的相似性測量和模式識別。

    訓練階段中,利用基于向量表示的特征來對SVM進行訓練,用于后續檢測階段。在訓練階段中,通過向量表示的查詢樹特征作為訓練數據來構建一個SVM分類模型。

    檢測階段中,利用訓練好的SVM分類模型對新查詢樹的向量表示特征進行處理,以確定這些新查詢樹為正常或惡意查詢,從而檢測SQLIA。

    但是,由于原始查詢樹結構十分復雜,因此轉換后的向量也不是線性可分的。對于非線性可分問題,本文采用非線性核函數來代替數據間的點乘積,在原始維度空間上可以完成所有相似性的計算。本文在SVM中采用的核函數為多項式核函數,其表達式為[9]:K(χu,χv)=(χu·χv+1)h

2 查詢樹特征提取及轉換

    為了利用SVM對查詢樹的特征進行學習和檢測,需要將復雜的查詢樹結構轉化為n維數值特征向量。查詢樹的樹結構中含有SQL語句的語法和語義信息。語法信息是對SQL語句進行解析的輸出信息,其表示了樹的骨架。通過查詢系統目錄可以獲得語句信息,語句信息中含有SQL語句引用的目標。本文首先利用提取的語法和語義特征生成一個多維序列作為中間表示,然后將多維序列轉化為n維特征向量。

2.1 定義

    設定查詢樹Γ由一個節點集合和一個邊集合構成。設定根(Γ)表示樹根節點,路徑(n1,nd)表示節點n1到節點nd的路徑,節點n的父節點定義為父母(n),節點n的子節點集合定義為子(n)。將沒有子節點的節點稱為葉子節點,內部節點是指具有子節點的節點,將根節點和一個內部節點間的路徑稱為內部路徑。需要注意,根節點和任何節點之間存在唯一的路徑。在一個有標簽的樹中,標簽值與樹中的每個節點相關聯。

    序列S是目標的有序列表,用S={φ1,φ2,…,φk}表示。有序目標的個數稱為序列的長度,用|S|表示。具有有限長度n的序列稱為n元組。多維序列是一個有序序列的集合,用R={S1,S2,…,Sw}表示,其中Si表示一個序列。多維度序列含有兩種類型的維度:連續維度和空間維度。連續維度的長度為序列的個數,空間維度的長度為|Si|中的最大長度m,1≤i≤w。換句話說,可將R稱為w×m多維度序列。

2.2 特征提取

    本文在數據庫系統中處理日志文件中記錄的查詢樹,樹Γ的特征提取結果為一個多維度序列R。首先,確定生成多維度序列中每個序列的基。為此,利用深度優先遍歷算法(DFS)對整個查詢樹的內部路徑進行遍歷,生成了標準序列P={p1,p2,…,pk},其中pi為路徑(根(Γ),ni),即從根(Γ)到第i個內部節點ni的內部路徑。在多維度序列中序列維度的長度設置為標準序列的長度,即|P|=k。

    為了生成多維度序列,本文提取葉子節點的值,這些葉子節點與查詢樹的每個pi相關聯。對于路徑的截止節點n,若子(n)是葉子節點,則提取這個子(n)的值。此外,若提取的特征值類型為字符串,那么將字符串值轉化為數值。

    特征提取過程為每個內部路徑pi生成了一個序列Si={φi1,φi2,…,φil},其中l表示子(ni)的個數,φij表示數值大小,1≤i≤k且1≤j≤l。多維度序列是一個連續的序列,即R={S1,S2,…,Sk}。

    由于一般所采用的SQL語句僅由全部SQL語法的一小部分構成,如圖2所示,因此多維度序列R可能是稀疏序列。但是,本文提出的方法使得R具有語法特征和語義特征,因此減少了R中的目標個數。通過本文提出的方法,根據內部路徑可以生成R的序列,序列的階和每個序列的長度隱含了查詢樹的語法特征。因此,R的目標僅明確表示了查詢樹的語義特征。圖3描述了圖2中部分查詢樹的多維度序列Rb的例子,其中序列維度的長度為4。

tx1-t2-3.gif

2.3 特征轉換

    本文根據查詢樹的不同類型,采用3種統計方法將從查詢樹中提取字符串特征轉換成數值特征:

    (1)在恒定列大小的情況下,轉換方法將字符串長度模型和直方圖模型相結合。直方圖模型能夠確定是否字符串的值位于直方圖邊界內,并且計算出指示器,指示器利用布爾值B表示,其中B∈{true=1,false=-1}。利用字符串長度和指示器值乘積的值替換字符串的值。

    (2)在函數參數恒定的情況下,轉換方法將字符串長度模型和字符分布模型相結合。字符分布模型可以確定字符串的每個字符是否為先前觀察的字符集合中的元素,并計算出指示器,指示器用布爾值B表示。利用字符串長度和指示器值的乘積替換字符串的值。

    (3)在節點類型確定的情況下,將字符串的值作為名義上的特征。利用枚舉法的離散數值替代字符串的值。

    在圖2中,利用tx1-t4-s1.giftx1-t4-s2.gif表示列的恒定值,利用fc表示恒定的函數參數值,用ot表示操作的類型名。對于tx1-t4-s1.gif,本文假設常量大小為8,使其包含在相應的直方圖列的邊界中。然后,將tx1-t4-s1.gif轉換成數值大小8。對于tx1-t4-s2.gif,本文假設常量的大小為23,這個常量的值不在直方圖的邊界內部。然后,將tx1-t4-s2.gif轉化為數值-23。對于fc,如果常量的大小為4,并且所有的4個字符都是觀察字符集合中的元素,那么將fc轉化為數值大小4。如果ot=′AND′并且ot∈{′AND′,′OR′,′NOT′},那么將ot轉化為枚舉數1。tx1-t4.gif

    經過特征轉化過程之后,圖4給出了圖3中多維度序列轉換的結果。對于tx1-t4-s1.giftx1-t4-s2.gif和fc,將一個字符串的值映射為一個數值的值。通過采用聯合模型,一個數值對應于字符串值的多個特性,因此減少了多維度序列中的目標個數。

2.4 構建n維特征向量

    在生成所有查詢樹日志的多維度序列之后,本文將每個多維度序列轉換為n維數值特征向量。利用RR={R1,R2,…,Rz}表示多維度序列的集合,其中Rx={Sx1,Sx2,…,Sxk};z表示查詢樹的個數,k表示內部路徑的個數,并且1≤x≤z。利用VX={vx1,vx2,…,vxn}表示特征向量,其中n表示分量的個數,vxw表示向量的分量,其中1≤w≤n。

tx1-t5-s1.gif

tx1-t5.gif

    最后,根據填充后的多維序列RX生成特征向量,即將RX轉化為tx1-3-s1.giftx1-3-s2.gif其中向量的長度為tx1-3-s3.gif|VX|保持了序列的階,RX中有意義目標的位置并不用填充值′NaN′進行表示。因此,VX也表示了相應查詢樹的語法特征和分量順序。VX的分量明確表明了查詢樹的語義特征。對于圖5中的例子,最后構建的n維特征向量為VX=(1,8,-23,0,0,0,4,7)。

3 實驗及分析

3.1 實驗環境及數據

    構建一個實驗環境對本文提方法進行驗證。實驗平臺為一臺具備2.4 GHz的Intel Core i5、4 GB內存和Windows7系統的PC。利用Java庫和WEKA 3.7.9庫執行本文SQLIA檢測方法。

    為了進行綜合型實驗,本文利用一個簡單的電影推薦系統。網絡應用使用PHP語言開發,其能夠與PostgreSQL數據庫進行存取操作。利用MovieLens數據構建一個包含大量用戶信息的電影推薦系統的數據庫。本文生成了兩種類型的數據庫:正常查詢數據庫和惡意查詢數據庫。利用Java庫和Apache HTTPC客戶端庫構建正常查詢生成器。采用了SQLMAP構建惡意查詢生成器,包含6種SQLIA:內聯查詢攻擊、聯合查詢攻擊、堆疊查詢攻擊、基于錯誤、基于時間和基于布爾類型的盲注攻擊。

    tx1-b1.gif實驗中,模擬了SQL存儲過程中的注入攻擊,根據SQL存儲語句的前綴信息將收集到的查詢分成3個組,組1中包含“SELECT”語句,組2中包含“INSERT”語句,組3中包含“UPDATE”語句。表1中顯示了每個組中正常和惡意查詢操作的數量。

3.2 性能指標

    為了評估分類器的性能,通常會采用受試者工作特征(ROC)曲線,其是以假陽性率(FPR)為橫軸、以真陽性率(TPR)為縱軸形成的二維空間。然而,ROC曲線間常存在交叉, 單純的“優于”或“支配”關系通常并不存在,自然無法相互比較,因此代之以用標量型的ROC曲線下的面積(Area Under ROC Curve,AUC)[10]來實現分類算法間的性能比較。本文以AUC值來評估SQLIA的檢測性能,其中,0.5對應隨機猜測性能,1對應最優性能。AUC值越高,表明分類器對該類樣本的識別準確率越高。

3.3 性能比較

    為了驗證本文方法中特征提取和特征轉換技術的優異性能,將其與其他幾個文獻中的特征提取方法進行比較:(1)文獻[6]中只使用語法特征的方法,(2)文獻[7]中基于字符串長度模型來轉換特征的方法,(3)文獻[8]基于字符串分布模型轉換特征的方法。實驗中,為了公平性,分類器都采用多項式核函數的SVM,其中SVM核函數中的階數值設置為從1~10變化。

    圖6給出了組1中SELECT語句的SQLIA檢測精度實驗結果。對于SELECT語句,采用語法特征的方法在階數為7~8的情況下,AUC為0.963。由于語法結果根據用戶輸入數據的變化而變化,因此該方法禁用SELECT語句的常量值來獲得較好的性能。基于字符串長度模型的方法獲取了優異的性能,其中在階數為6~9的情況下,AUC為0.992。基于字符串分布模型的方法也獲取了比較優異的性能,在階數為3~7的情況下,其AUC達到了0.99。但是,這些方法的性能都低于本文方法,本文方法在階數為3~8時,獲取的AUC都達到了0.994以上。這是因為,本文采用了語義特征和語法特征,提高了對于各種SQL語句的SQLIA檢測的正確率。

tx1-t6.gif

    圖7給出了組2中INSERT語句的SQLIA檢測精度實驗結果,采用語法特征的方法獲得了較差的實驗性能,在階數為1的最優情況下,其AUC為0.744。基于字符串長度模型的方法在階數為9時,獲取的AUC最高為0.986。基于字符串分布模型的方法獲取了比較優異的性能,其在階數為1和7的情況下,獲取的AUC都達到了0.98。但是,這個性能也略微低于本文方法,本文方法在階數為6~9的情況下獲取的AUC都達到了0.99。

tx1-t7.gif

    圖8給出了組3中UPDATE語句的SQLIA檢測精度實驗結果,基于語法特征的方法獲得了較差的性能,在階數為1的情況下,其AUC為0.97。基于字符串長度模型的方法也獲取了較差的性能,即使在階數為1的最優情況下,其獲取的AUC為0.804。基于字符串分布模型的方法在階數為5~9時,獲得的AUC達到了0.97。這個性能也低于本文方法,本文方法在階數為8~10的情況下獲取的AUC達到了0.99。

tx1-t8.gif

    表2統計了各種方法在3組數據集上的平均AUC值。可以看出,本文方法獲得了0.963的AUC值,比語法特征、字符串長度模型和字符串分布模型分別提高了 36.6%、18.1%和1.4%。

tx1-b2.gif

4 結語

    本文提出了一種基于數據挖掘的SQLIA檢測方案,從SQL查詢樹中提取語義和語法特征,將其轉換成n維數值特征向量,并將其作為多核SVM分類器的輸入,從而對SQLIA進行檢測。構建仿真實驗,以AUC值作為性能指標。結果表明,與現有方法相比,對于UPDATE語句、SELECT語句以及INSERT語句,本文方案都有效提高了SQLIA的正確檢測率。

    在本文的研究中,由于查詢樹具有可變性,所以找到標準的內部路徑是本文的難點。在以后研究中,將會研究一種搜尋方法,使其能夠輕易找到各種數據庫系統中查詢樹的內部路徑。

參考文獻

[1] 孫義,胡雨霽,黃皓.基于序列比對的SQL注入攻擊檢測方法[J].計算機應用研究,2010,27(9):3525-3528.

[2] 劉毅,劉益和.基于jQuery的SQL注入攻擊防范實現[J].計算機技術與發展,2011,21(2):177-180.

[3] SADEGHIAN A,ZAMANI M,MANAF A A.A taxonomy of SQL injection detection and prevention techniques[C].2013 International Conference on Informatics and Creative Multimedia.IEEE Computer Society,2013:53-56.

[4] WANG Y,LI Z.SQL injection detection via program tracing and machine learning[J].Lecture Notes in Computer Science,2012,76(4):264-274.

[5] LIN Z,WANG H,MCCLEAN S.A multidimensional sequence approach to measuring tree similarity[J].IEEE Transactions on Knowledge & Data Engineering,2010,24(2):197-208.

[6] NATARAJAN K,SUBRAMANI S.Generation of sql-injection free secure algorithm to detect and prevent sql-injection attacks[J].Procedia Technology,2012,4(4):790-796.

[7] SONODA M,MATSUDA T,KOIZUMI D,et al.On automatic detection of SQL injection attacks by the feature extraction of the single character[C].Proceedings of the 4th International Conference on Security of Information and Networks.ACM,2011:81-86.

[8] ELSHAZLY K,FOUAD Y,SALEH M,et al.A survey of SQL injection attack detection and prevention[J].Journal of Computer & Communications,2014:36(7):150-162.

[9] 張瑞,楊曉,譚秀林.基于蓋根鮑爾多項式的SVM核函數[J].山西大學學報:自然科學版,2013,36(1):30-33.

[10] 吳少華,程書寶,胡勇.基于SVM的Web攻擊檢測技術[J].計算機科學,2015,42(6):362-364.

此內容為AET網站原創,未經授權禁止轉載。
主站蜘蛛池模板: 黄色视屏免费观看 | 99久久精品久久久久久婷婷 | 日本羞羞动漫 | 成人欧美一区二区三区视频不卡 | 精品一区二区视频 | 亚洲国产精品成人综合色在线婷婷 | 国产成人在线视频 | 激情爱爱网 | 99精品在线观看视频 | 婷婷在线网 | 成人亚洲性情网站www在线观看 | 五月天最新网站 | 国产网站免费观看 | 久青草免费视频 | 99精品久久99久久久久久 | 热久久中文字幕 | 99视频在线免费观看 | 男人天堂社区 | 国产精品视_精品国产免费 国产精品深夜福利免费观看 | 一级一级一级毛片免费毛片 | 四虎影视免费永久在线观看 | 精品国精品国产自在久国产应用 | 久久亚洲国产视频 | 久久99综合| 深爱五月激情网 | 久久久婷婷亚洲5月97色 | 四虎在线永久精品高清 | 全亚洲最大的免费电视网 | 国产成人涩涩涩视频在线观看免费 | 国产欧美日韩综合一区二区三区 | 国产精品一区二区国产 | 欧美性视频在线 | 四虎影院一区二区 | 色的视频在线观看免费播放 | 欧美精品一二三 | 日韩欧美国产精品第一页不卡 | 国产福利在线永久视频 | 奇米网777 | 日本久久中文字幕 | 国产亚洲欧美在线 | 免费在线观看a级毛片 |