朱靜雯 許 靜 陳 亮 李 潔
1(南開大學軟件學院 天津 300350) 2(南開大學人工智能學院 天津 300350) 3(國網(wǎng)天津市電力公司電力科學研究院 天津 300384)
如今軟件發(fā)展迅速,迭代頻率高,由于網(wǎng)絡安全意識不夠,導致很大一部分開發(fā)者在編寫程序過程中未考慮對SQL注入攻擊(Structure Query Language Injection Attack,SQLIA)的防范。據(jù)OWASP[1](Open Web Application Security Project)統(tǒng)計,近幾年SQL注入漏洞的威脅穩(wěn)居第一,如果惡意用戶針對Web系統(tǒng)進行SQL注入攻擊,若是攻擊成功一定程度上會造成很大危害。另外,對于攻擊進行及時的檢測分析,可以在Web系統(tǒng)中有效定位和挖掘到漏洞位置,從而為后期的修復和防御打下基礎。惡意攻擊者在Web系統(tǒng)中留下的網(wǎng)絡日志可被用來識別其攻擊行為。
檢測SQL注入攻擊的一種有效方法是研究用戶的行為意圖,而基于日志研究用戶的點擊行為模型的難點主要體現(xiàn)在:(1) 對于一個復雜的或者動態(tài)網(wǎng)頁,請求中可能嵌套了多個廣告或者信息組合模塊,導致日志冗余量大,難于處理;(2) 瀏覽器的多線程并發(fā)可以導致同一用戶的日志記錄被交織和混亂,基于單條記錄的行為模式匹配將受到影響;(3) 防火墻過濾和代理模式影響了日志采集的完整性,使得用戶連續(xù)點擊行為意圖的還原受到阻礙。
當前國內外對于SQL注入攻擊的檢測方法中,靜態(tài)模式匹配的做法[2-4]較為常見。其他檢測方法如污點跟蹤,原理是對用戶的輸入進行判斷、標記和轉換,然后監(jiān)督這段字符串結構是否改變或者是否被當作額外的查詢語句執(zhí)行。對于動態(tài)規(guī)則檢測方法[5-6],趙宇飛等[5]從網(wǎng)絡流量檢測的角度,提出了針對SQL注入的LFF檢測方法。LEF檢測方法利用流量趨勢可以匹配到未知類型的產生數(shù)據(jù)流的SQL注入攻擊。但也因此受到了流量特征限制,不太適用于經驗豐富的攻擊者和數(shù)據(jù)規(guī)格較小的情況,尤其是在進行了流量控制的信息系統(tǒng)中更為明顯。也有很多研究思路是圍繞攻擊者的行為展開的。將馬爾可夫模型用于用戶行為模式分析[7-8]、入侵者的建模[9]和行為預測[10],從而發(fā)現(xiàn)Web攻擊行為。馬蘭等[11]提出了一種基于隱半馬爾可夫模型(Hidden simi-Markov Model,HSMM)的SWIM應用層DDoS攻擊的檢測方法,利用HSMM建立動態(tài)異常檢測模型動態(tài)地追蹤正常SWIM用戶的瀏覽行為,以訪問包的大小和請求時間間隔為特征進行建模,并訓練模型進行異常檢測,結果表明所提方法可有效地檢測DDoS攻擊。朱驪安[12]用隱馬爾可夫模型建立Web參數(shù)模型,檢測注入類的Web攻擊,并用于實際案例分析,取得了較高的準確率。韋煒等[13]提出一種新的多階馬爾可夫預測推薦算法,該算法通過學習用戶歷史行為數(shù)據(jù),以及分析用戶瀏覽行為特征,達到預測用戶瀏覽行為的目的。
在Web應用攻擊場景中,尤其是對于SQL注入等需要注入代碼至攻擊入口的攻擊類型中,攻擊者需要遍歷網(wǎng)站及參數(shù),會多次連接服務器,并在單位時間內會產生大量連接和頁面跳轉,并且需要發(fā)送大量的探測攻擊載荷及漏洞利用腳本,而常規(guī)用戶往往更加關注網(wǎng)站內容及功能,因而兩者對于登陸或輸入框等攻擊入口的訪問頻率、停留時間和跳轉行為與普通用戶存在著較大差異[1,5,12-13]。在系統(tǒng)用戶訪問操作日志中,記錄了大量用戶行為數(shù)據(jù),因此可以從日志中發(fā)現(xiàn)用戶瀏覽行為的異常,對頻發(fā)的入口頁面的訪問進行判斷。本文通過行為分析方法,基于自定義日志,提出一種利用隱馬爾可夫模型HMM進行SQL注入攻擊自動檢測的方法。該方法與其他攻擊檢測方法不同,不僅對SQL注入關鍵詞進行檢測和分析,同時進一步通過隱馬爾可夫模型深入分析系統(tǒng)用戶行為的異常,從而在發(fā)生異常初期及時判斷訪問路徑的偏離程度。該方法可利用隱馬爾可夫模型對隱狀態(tài)的還原能力,完整地還原用戶的瀏覽軌跡,從而識別攻擊用戶并發(fā)現(xiàn)潛在的SQL注入攻擊威脅。
典型的Web系統(tǒng)網(wǎng)站的結構不僅包括頁面之間的關聯(lián),也包括頁面內容的布局和各種鏈接的類型。用戶的每次點擊行為都會發(fā)出HTTP請求,這些細節(jié)會被詳細記錄在日志中。
本文以Web系統(tǒng)Iwebshop為目標網(wǎng)站進行示例分析和檢測實驗。圖1是Iwebshop首頁的整體結構框架,包括下拉菜單、搜索欄、輪播圖和類別導航等模塊,其中a、b、c分別表示該網(wǎng)頁中的三類主要的鏈接類型。同一個列表區(qū)域中的超鏈接項視作同一類型,若多個列表屬于相同功能的并列關系,則也看作是同一鏈接類型。
圖1 Iwebshop結構圖
在示例網(wǎng)站中,針對攻擊需求增加了相應的漏洞入口,以自定義日志的格式記錄下用戶的訪問瀏覽行為,其中部分用戶的訪問行為包含攻擊操作。日志源格式主要包括兩部分:來源于Apache服務器生成的日志和使用JavaScript捕捉的用戶點擊超鏈接生成的自定義txt日志。
通過對用戶訪問行為進行記錄并從時間軸角度分析日志,發(fā)現(xiàn)每條日志都是針對一個對象(Object)的HTTP請求。對象請求序列如圖2所示,標記為O={O1,O2,…,Ot}。如果連續(xù)的請求對象屬于同一頁面,則定義這一段連續(xù)的HTTP請求為某個頁面P的一次請求。在HMM模型中,這樣的一組請求對應一個特定的狀態(tài)S。在實際操作中,用戶的一次具體的點擊操作便會引發(fā)一組目標頁面的網(wǎng)絡請求。該點擊操作所在的頁面可能包含著循環(huán)展示等多個功能模塊,所以該請求會引起一系列被動和嵌套的網(wǎng)絡請求。這一組請求在時間和內容上發(fā)生聚集。因此用戶在瀏覽器端的點擊過程即可對應到HMM模型的狀態(tài)轉換過程。此處用aij來表示狀態(tài)Si到狀態(tài)Sj的一次遷移。
圖2 用戶點擊行為模型
用戶的有效點擊對象往往是超鏈接。有效點擊會導致頁面之間的跳轉或頁面內狀態(tài)的改變。對于一個特定的頁面,根據(jù)功能和位置的不同將有效超鏈接劃分為幾種類型,而每種類型的超鏈接點擊事件對應該頁面(也就是該狀態(tài))的一次有效輸出。因此用戶的點擊過程就可以被定義為HMM的輸出過程,如圖3所示。在客戶端進行檢測和分析時,只需要捕捉定義后的輸出值即可。對于一個給定的輸出,可以經過模型推導,找出對應的隱含狀態(tài),即該鏈接類型所在的頁面。至此,將用戶瀏覽系統(tǒng)的過程通過建模對應到了HMM模型的狀態(tài)轉換和值輸出的過程中。
圖3 用戶點擊輸出模型
隱馬爾可夫模型是一個雙重馬爾可夫過程,由可見的輸出層和隱藏的狀態(tài)層組成。實際觀察到的輸出序列被用于識別分析,在某個狀態(tài)的輸出值具有隨機性;隱藏的狀態(tài)序列是一條受到狀態(tài)轉移概率影響的馬爾可夫鏈。
在本文中通過三元組λ=(A,B,π)來表示一個隱馬爾可夫模型:其中:A表示隱含狀態(tài)轉移概率矩陣,B表示觀測狀態(tài)轉移概率矩陣,π表示初始狀態(tài)概率矩陣。關鍵數(shù)據(jù)源可能包括頁面間的跳轉概率矩陣A、在各個頁面點擊不同類型超鏈接的狀態(tài)轉移概率矩陣B和初始概率矩陣π。其中,初始概率矩陣π體現(xiàn)的特征是網(wǎng)站初始狀態(tài)為首頁,是必經入口,而兩種狀態(tài)轉移矩陣A和B的值是統(tǒng)計大量用戶訪問行為得出。
馬爾可夫模型方法的缺點是當系統(tǒng)復雜度和規(guī)模變大時,狀態(tài)數(shù)量的驟增造成對結果圖表的計算會相當復雜和困難[14]。因此選擇頁面建立狀態(tài)時,頁面數(shù)量應在相對合適的范圍內。
HMM模型通過設置初始狀態(tài)轉換概率矩陣和狀態(tài)的不同輸出值的概率矩陣,可從給定的輸出值序列推斷出可能的狀態(tài)轉換序列。利用HMM模型對隱狀態(tài)的描述能力,分析日志記錄中的鏈接類型并反向推測這些記錄對應的頁面類型。在捕捉完整的用戶點擊鏈的前提下,HMM模型的這種逆向還原能力彌補了部分缺失日志記錄的不足。
針對HMM模型特點,本文將所有的獨立頁面定義為狀態(tài),組成的集合映射為HMM模型中的狀態(tài)集。頁面之間共用了一些重要組件,但是頁面地址URL中的controller值是根據(jù)所實現(xiàn)的功能定義的。頁面內不同鏈接類型定義為在某個頁面或狀態(tài)的輸出值,即用戶點擊一個鏈接,就完成了在某個狀態(tài)的一次值的輸出。
根據(jù)Web系統(tǒng)的結構,按照一定順序定義網(wǎng)頁名稱和ID,然后為頁面指定狀態(tài)ID,如表1所示?!皃age_ID”字段對應日志記錄中的controller值。此處定義狀態(tài)集S={s1,s2,…,sn},n=17。
表1 狀態(tài)-頁面關聯(lián)表
基于上文所建立的用戶行為隱馬爾可夫模型,本文通過自定義日志和行為分析技術,提出了一種SQL注入攻擊行為檢測方法,其整體的實現(xiàn)流程如圖4所示。首先,獲取Web系統(tǒng)用戶瀏覽日志并判斷是否為正常的訓練數(shù)據(jù)。如果是正常訓練數(shù)據(jù),則根據(jù)可達性概率矩陣和鏈接類型表進行網(wǎng)站建模,并進行隱馬爾可夫模型的訓練;接下來進行用戶行為軌跡的逆向還原,如果不是訓練數(shù)據(jù),則表明已經是訓練好的數(shù)據(jù),那么則直接進行行為逆向還原。最終基于行為概率分析進行行為單元的分析,并最終判斷用戶行為是否包含SQL注入攻擊。
圖4 本文所述方法整體流程
該方法通過隱馬爾可夫模型對隱含狀態(tài)的分析還原能力,深入分析和還原系統(tǒng)用戶的瀏覽軌跡,并識別用戶行為中的異常,從而可以在發(fā)生異常初期及時判斷訪問路徑的偏離程度。同時,該方法不受代理服務器和防火墻干擾,是一種提高分類效率和準確度的方法,可以一定程度上保證系統(tǒng)用戶行為意圖的完整性,并減小上層算法的規(guī)模和復雜度。
建立可達性概率矩陣是本文所述方法的一個重要環(huán)節(jié)。首先,對Iwebshop進行遍歷,得到所有頁面集合并詳細統(tǒng)計各頁面內的鏈接類型。在遍歷過程中同時記錄頁面間跳轉的順序關系。頁面Pi到頁面Pj的可達性定義為在頁面Pi的所有鏈接類型中存在至少一個鏈接使得用戶可以通過點擊操作來完成到頁面Pj的跳轉意圖。頁面之間的跳轉關系可以用圖5所示的頁面可達性圖表表示。其中Rij(第i行,第j列)的值為“○”表示頁面Pi到頁面Pj的可達性成立,沒有值則表示不可達。
圖5 頁面可達性統(tǒng)計圖
在大量的正常用戶訪問日志數(shù)據(jù)集中,抽取約2 000條來自多個主機的瀏覽記錄組成正常用戶的瀏覽行為模型;由帶有攻擊屬性的用戶日志組成異常瀏覽數(shù)據(jù)集。此外,根據(jù)數(shù)據(jù)交互入口的數(shù)量,將登錄、幫助及列表、商品搜索和商城資訊頁面歸為SQL注入攻擊相對容易實施;首頁、用戶中心和團購商品頁面攻擊難度較大;其余頁面攻擊難度歸為中等。
為了能夠將用戶點擊行為抽象成構建HMM模型的格式,還需要對采集到的自定義日志數(shù)據(jù)進行處理和分析。首先,本文對超鏈接進行了代碼上的監(jiān)控,一次有效點擊會產生一條自定義文本記錄。用戶真正點擊的節(jié)點會帶有特殊標記,根據(jù)標記對日志進行初步篩選和清理,形成如表2所示的采樣日志范例。每一條記錄中依次包含的關鍵屬性包括:日期與時間、IP地址、用戶名、客戶端操作環(huán)境與協(xié)議、HTTP操作方法和URL值。其中URL地址中關注controller和用戶追加字段。controller值反映了當前頁面位置和用戶瀏覽過程中點擊的鏈接類型值,而用戶追加字段往往是提交內容和危險關鍵字的拼接。范例中①、②、③屬于正常訪問記錄,④、⑤、⑥屬于SQL注入的前期嘗試,不在正常用戶操作范圍。從日志中提取頁面標識和鏈接類型標識構成用戶瀏覽鏈,分別對應HMM模型的狀態(tài)標識和狀態(tài)輸出值標識,從而構造出狀態(tài)遷移和特征值輸出過程。
表2 采樣日志范例
本文在建立可達性矩陣并進行采集數(shù)據(jù)處理的基礎上,進一步構建用戶瀏覽日志的隱馬爾可夫HMM模型。本文基于MATLAB的HMM工具箱函數(shù)進行計算,其主要包括:
(1) hmmgenerate:給定一個隱馬爾可夫模型,可以從模型中計算產生一個指定長度的狀態(tài)序列和對應的輸出序列,而且序列符合隨機性特征。
(2) hmmviterbi:在已知混淆矩陣和轉移矩陣的情況下,使用Viterbi算法來計算某個輸出序列對應的最優(yōu)的隱藏狀態(tài)序列。
(3) hmmestimate:給定一個輸出序列和對應的狀態(tài)序列,來計算輸出概率、轉移概率的最大似然估計。
(4) hmmtrain:已知輸出的序列,狀態(tài)轉移序列不確定。通過猜測來初始化轉移矩陣和混淆矩陣。通過迭代的過程來估計出轉移狀態(tài)和混淆矩陣。此處可以設定迭代次數(shù)和精度。
(5) hmmdecode:主要用來計算給定觀測序列的概率,指在確定的狀態(tài)下產生序列中某符號的條件概率。
基于上述函數(shù)可進行HMM模型計算及構建。首先從正常瀏覽日志的數(shù)據(jù)集中提取全部頁面跳轉鏈,統(tǒng)計得到頁面跳轉的概率矩陣A和頁面訪問的概率分布B。據(jù)此初始化得到的馬爾可夫模型為用戶的合理請求,偏離該模型的行為劃分為異常。
初始概率矩陣π的生成過程:采用正則表達式匹配的方法將日志中參數(shù)controller的值提取出來,例如login→ucenter→cart→home→ucenter。根據(jù)狀態(tài)-頁面關聯(lián)表,可以轉化為含有時序的狀態(tài)轉換鏈:s2→s5→s4→s1→s5。然后使用狀態(tài)轉換對表示為:S=[(s2,s5),(s5,s4),(s4,s1),(s1,s5)]。對于每一個狀態(tài)對(sa,sb),sa為源狀態(tài)(頁面),sb為目的狀態(tài)(頁面)。si的取值共有17種。根據(jù)源狀態(tài)的17種取值建立17個集合U1,U2,…,U17。每個集合Ui包含所有以si作為源狀態(tài)的狀態(tài)對。對于U1,計算頁面P1轉移到其他頁面Pe的概率,公式如下:
probability=count(se)/count(U1)
(1)
probability為某跳轉頁面在所有以頁面P1為源頁面的跳轉頁面集合中的比例,對于Ui的計算以此類推,得出如表3所示的頁面跳轉概率矩陣??梢钥闯觯琍ij表示頁面Pi轉移到頁面Pj的概率,概率為0表示頁面可達關系不成立。概率是根據(jù)普通用戶的瀏覽記錄統(tǒng)計得到。因此在用戶瀏覽過程中,明顯偏離預設瀏覽習慣的訪問行為需要針對性分析來排查異常。同樣的,在訪問模型中同時加入普通用戶和攻擊者的訪問數(shù)據(jù)來調整參數(shù),得到新的狀態(tài)轉移概率矩陣和值輸出矩陣,從而使得該模型具有更好的狀態(tài)轉移過程的還原能力。
表3 頁面跳轉概率矩陣
續(xù)表3
為了對本文所述方法的有效性進行實驗驗證,基于“PHP 5+ MySQL 5”搭建了用于實驗的示例目標系統(tǒng)Iwebshop。在該目標系統(tǒng)中,針對實驗需求增加了相應的漏洞入口,并以自定義日志的格式記錄下用戶的訪問瀏覽行為,其中部分用戶的訪問行為包含SQL注入攻擊操作。日志源格式主要包括兩部分:來源于Apache服務器生成的日志和使用JavaScript捕捉的用戶點擊超鏈接生成的自定義txt日志。實驗采用平臺為64位Windows 7系統(tǒng)計算機,并使用版本為R2013a的MATLAB集成的HMM工具箱進行模型計算,對本文所述方法進行了應用實現(xiàn)。
通過本文模型計算出的狀態(tài)轉移概率矩陣和值輸出矩陣進行訪問狀態(tài)還原,并還原計算出最終的用戶訪問狀態(tài)和頻率分布,如圖6和圖7所示。其中,狀態(tài)分布頻率即該用戶在指定時間段內對各個頁面的訪問頻率分布。橫軸表示狀態(tài)序號,縱軸表示累計數(shù)量。本次實驗選取2 000條記錄長度的雙方瀏覽歷史進行對比,得到400個行為單元。GState為符合HMM的正常用戶訪問情況,AState是SQL注入攻擊后的狀態(tài)分布情況。在正常瀏覽過程中,該示例數(shù)據(jù)中35%用于首頁和賬戶驗證,28%用于瀏覽幫助及幫助列表,25%用于商品詳情和商品搜索,7%用于購物車和用戶中心,約有5%用于商城資訊;在模擬攻擊瀏覽過程中,27%用于商城資訊頁面瀏覽,25%用于首頁和賬戶驗證,17%用于商品分類,15%用于商品搜索和詳情頁,幫助頁面占13%,個人中心和購物車約3%。最明顯的不同是普通的用戶將過半的訪問頁面選擇了首頁和商城的瀏覽,還有近1/4用于獲取幫助。而攻擊者將大部分操作用于賬戶驗證過程和資訊,還有近1/5訪問停留在商品分類列表。后者的訪問分布屬于明顯異常情況,增加了該類用戶作為攻擊者的可疑程度。
圖6 普通用戶訪問頻率分布(GState)
圖7 攻擊者訪問頻率分布(AState)
圖8是截取一名普通用戶和一名惡意攻擊者的訪問數(shù)據(jù)各400條繪制得到的瀏覽軌跡對比曲線圖。橫軸表示日志記錄編號,縱軸是頁面ID。通過重復試驗,統(tǒng)計并觀察訪問軌跡曲線的波動粒度,將每5條清洗結果的記錄視為一個行為單元。這樣,在不影響觀察用戶瀏覽意圖的前提下,達到了賦予一小段時間內連續(xù)請求合理的意義的目的。
圖8 普通用戶與攻擊者的瀏覽軌跡對比曲線
對圖像中兩條曲線的規(guī)律性波動片段進行采樣,然后根據(jù)狀態(tài)-頁面關聯(lián)表進行反向還原,盡可能地重現(xiàn)用戶瀏覽過程和訪問意圖。按照規(guī)律波動片段的長度研究,首先分析序號104到218之間的長片段C1:虛線曲線在幫助列表和幫助詳情跳轉,大致意圖是在尋找某類目詳細幫助。實線曲線80%在資訊詳情頁面,有規(guī)律地低頻率跳轉至首頁和商品詳情頁。根據(jù)正常用戶訪問行為統(tǒng)計,訪問資訊頁面并停留在資訊頁面的概率為(0.1)n,其中n為連續(xù)訪問的次數(shù),顯然這段訪問明顯偏離HMM用戶行為模型,且商城資訊頁攻擊難度最小,因此片段C1鑒定為SQL注入攻擊片段。
對于序號8到75之間的長片段C2:虛線曲線在登錄系統(tǒng)和注冊之后查看詳情頁面,最后在登錄之后跳轉至商品搜索結果頁面。登錄和注冊頁面來回跳轉概率分別為38%和10%,該現(xiàn)象較符合正常用戶訪問習慣。而實線曲線是高頻率反復訪問商品分類頁,根據(jù)HMM模型正常用戶轉移矩陣,該頁面重復訪問概率僅為(0.01)n,商品分類頁同時含有可閉合的URL參數(shù)和搜索輸入框,攻擊難度適中。所以片段C2極有可能包含SQL注入攻擊。
片段C3是序號起止于266和291的訪問序列。虛線曲線訪問頁面是首頁、搜索列表、用戶中心和資訊詳情,跳轉方向和頻率均未有異常,也未出現(xiàn)單個頁面的連續(xù)多次訪問。作為對比的實線曲線,雖然在幫助列表和幫助詳情兩者之間的跳轉方向符合正常模型要求,但出現(xiàn)了明顯的幫助詳情頁的連續(xù)請求記錄,該頁面又屬于攻擊難度最小的類別,故將該片段識別為危險訪問級別的請求序列。
此外,本文通過實驗過程還發(fā)現(xiàn)了存在跨越正常瀏覽片段和危險訪問片段的行為單元。實驗中,定義行為單元的5條記錄中,屬于危險片段的記錄不少于3條,則將該單元納入攻擊行為的范疇。例如,序號1到10的記錄分為兩個行為單元Behavior_a(1-5)和Behavior_b(6-10)。序號8/9/10被并入了前一部分分析到的攻擊片段C1,因此行為單元Behavior_b含有三條攻擊屬性記錄,屬于攻擊屬性的行為單元;Behavior_a屬于正常訪問行為單元。標記完成后統(tǒng)計實驗結果,長片段C1、C2、C3包含的攻擊行為單元共210個,如表4所示。整體實驗的誤報率為16.2%,漏報率為5.75%,實驗結果表明本文所述方法可以有效檢測出Web系統(tǒng)用戶的SQL注入攻擊行為。
表4 粒度調整對實驗的影響
為進一步對比驗證本文所述方法的有效性,本文采用K-means方法及FCM模糊聚類方法進行橫向實驗和結果對比分析。
為反映不同類型攻擊的特征,本文在進行K-means聚類分析時,從語法角度將SQL注入記錄標記為7個參數(shù)指標,分別是:前終結符、注入前綴、注入關鍵詞、常變量參數(shù)、大寫字母、其他特殊字符、后終結符。
首先使用粒度為5進行聚類,將初始日志每5條綁定成一個單元,這涉及到橫向參數(shù)綁定方法和縱向條目綁定方法。不同于上節(jié)中曲線繪制時選擇的評定方法,前者選擇將5條訪問數(shù)據(jù)視為一個行為單元整體,可以保證行為曲線在最小粒度上的含義和連貫性,從而給出更合理的異常劃分標準。此處選擇縱向綁定保證盡可能地保留參數(shù)包含的攻擊意圖。橫向和縱向是針對數(shù)據(jù)排列方向而言,橫向意味著將同一條記錄數(shù)據(jù)的不同參數(shù)進行歸并來縮減算法復雜度,更加適用于獨立性較強的界限明確的數(shù)據(jù)源;縱向是指將相鄰n條數(shù)據(jù)對應的同一個參數(shù)的不同取值進行歸并,換算成為一條綜合評定的有代表性的新數(shù)據(jù)項。后者更適用于在更細粒度上不方便設定異常劃分標準的數(shù)據(jù)源。兩種思想都具有一定的減小數(shù)據(jù)規(guī)模和算法復雜度的效果。
實驗中的橫向綁定方法:將每條日志記錄的7個特殊參數(shù)值評定出攻擊結果(是/否),將連續(xù)5條結果進行單元綁定來決定該行為單元的結果,橫向綁定會增大判定誤差;縱向綁定方法:行為單元L={l1,l2,l3,l4,l5},包含5條連續(xù)日志。日志包含7個SQL注入攻擊參數(shù)。將p11、p21、p31、p41、p51綁定為行為單元L的第一個參數(shù)的集合,L的其他參數(shù)以此類推,從而得到L的參數(shù)表。再使用K-means方法進行聚類,K-means方法使用默認參數(shù),共410條結果,71個攻擊記錄,339個正常訪問記錄。
若使用默認粒度1,直接進行K-means聚類,得到攻擊分類577條,正常日志記錄1 474條。攻擊占比為28.1%,攻擊識別結果低于HMM方法。因為攻擊單元是把連續(xù)的一段訪問都記為攻擊范疇,而K-means方法會把攻擊過程中必要或非必要指向正常頁面的記錄記為正常訪問結果。在聚類或距離分類方法中,每個日志記錄都是相對獨立的,因此對主頁的訪問將被歸類為正常訪問記錄,導致攻擊檢測結果低于HMM行為單元方法。
FCM(Fuzzy C-means)算法是基于對目標函數(shù)優(yōu)化基礎上的一種數(shù)據(jù)聚類方法。在該算法產生的結果中,用一個個數(shù)值表示每一個數(shù)據(jù)點對聚類中心的隸屬程度。文中的日志數(shù)據(jù)中,處于試探攻擊地帶的日志和一定比例的非正常模式瀏覽痕跡是不應該從嚴格意義上劃分是否屬于攻擊類別的。使用FCM模糊聚類算法處理文中行為單元數(shù)據(jù),得到每個行為單元對攻擊類別的隸屬度。在模糊集上,給定一個論域U,從U到單位區(qū)間[0,1]上的一個映射就可以稱為U上的一個模糊集,記為A。對于每一條數(shù)據(jù)x,μA是映射函數(shù),μA(x)的值叫作元素x對模糊集A的隸屬度,接近1的取值表示x隸屬于A的可能性更大。
引進隸屬度的概念同樣可以驗證HMM模型中的片段概率分析的合理性。在用戶瀏覽軌跡圖中,長片段C1的范圍大約是從序號110到序號204之間的記錄。
表5 瀏覽軌跡C1片段的攻擊隸屬度分布
該片段的攻擊隸屬度聚集在高可信度的范圍,這和HMM模型下的屬于正常瀏覽模型的概率極低的結論相契合,同時也表明識別SQL注入攻擊特征字段選擇的合理性。
本文基于隱馬爾可夫模型,提出一種SQL注入攻擊行為的檢測方法。首先獲取Web系統(tǒng)訪問用戶的行為序列,利用HMM模型恢復隱藏狀態(tài)并完成狀態(tài)序列,然后利用網(wǎng)頁訪問頻率區(qū)分用戶瀏覽意圖,從而優(yōu)化攻擊識別結果。該方法不需要提供系統(tǒng)的字符輸入接口,建模完成后即可獲取所需的輸入數(shù)據(jù),幾乎不會影響原系統(tǒng)的源代碼和運行邏輯,且不受防火墻和代理服務器限制。最后根據(jù)行為曲線偏離程度和訪問頻率異常程度綜合判定具有SQL注入攻擊意圖的用戶。在異常標準設定和結果評定方面,提出了縱向綁定和橫向綁定的數(shù)據(jù)處理方法,有效提升了異常數(shù)據(jù)的保留比例,提高了系統(tǒng)中SQL注入攻擊檢測能力,并通過對比實驗和結果分析驗證了本文所述方法的有效性。下一步工作考慮同時應用單個操作的攻擊隸屬度和所屬行為單元的攻擊概率來分配權重,設計成綜合性的用戶行為評估系統(tǒng)以提高結果準確性。