殷 博 朱靜雯 劉 磊 許 靜
1(國網(wǎng)天津市電力公司 天津 300010)
2(南開大學(xué)軟件學(xué)院 天津 300350)
3(南開大學(xué)人工智能學(xué)院 天津 300350)
隨著電力信息系統(tǒng)接入互聯(lián)網(wǎng),電力信息網(wǎng)絡(luò)安全變得越來越重要。近年來我國電力行業(yè)信息系統(tǒng)發(fā)展迅速,與多種業(yè)務(wù)系統(tǒng)智能互聯(lián),如用戶用電業(yè)務(wù)系統(tǒng)、充電樁業(yè)務(wù)系統(tǒng)等。電力業(yè)務(wù)相關(guān)數(shù)據(jù)不斷積累,提高電網(wǎng)信息系統(tǒng)面對外界惡意攻擊時的防控能力對保證電網(wǎng)安全、穩(wěn)定、高效運(yùn)行非常重要。在Web應(yīng)用的所有安全問題中,SQL注入是危害嚴(yán)重且影響范圍較廣的重要問題之一,據(jù)OWASP[1]和CVE[2]統(tǒng)計(jì),近幾年SQL注入攻擊(SQL-Injection Attacks,SQLIA)在十大Web安全隱患中穩(wěn)居第一,而且SQL注入在所有被報(bào)告的安全漏洞中也是頻率增長最快的類型。與傳統(tǒng)Web相比,電力信息Web系統(tǒng)具有規(guī)模大、業(yè)務(wù)邏輯實(shí)時多樣、專用性強(qiáng)等特點(diǎn),這也導(dǎo)致了針對電力信息Web系統(tǒng)SQL注入攻擊的檢測難度大。其實(shí)現(xiàn)過程中容易產(chǎn)生大量漏洞,并且對此進(jìn)行的攻擊事件越來越多且難以辨別,因而對于電力信息Web系統(tǒng)SQL注入攻擊檢測技術(shù)的研究十分必要?;赪eb信息系統(tǒng)訪問日志挖掘用戶訪問行為的研究日益增多,文獻(xiàn)[3-5]均是對用戶訪問日志進(jìn)行分析,用于檢測分布式拒絕服務(wù)攻擊(DDOS)以及Web爬蟲行為。
本文提出一種面向電力信息系統(tǒng)日志數(shù)據(jù)的注入攻擊特征提取方法。首先,分析Web訪問日志和SQL注入特征,提出一種從自定義Web訪問日志中提取SQL注入語法特征和行為特征的方法;其次,對日志進(jìn)行預(yù)處理和特征提取操作,得到語法特征矩陣和行為特征矩陣;最后,在兩類特征數(shù)據(jù)集的基礎(chǔ)上使用4種算法模型進(jìn)行實(shí)驗(yàn)。結(jié)果表明,將SQL注入攻擊的檢測與語法特征和行為特征相結(jié)合的方式,可以有效檢測SQL注入攻擊。使用該方法,電力信息Web系統(tǒng)安全管理員能夠及時發(fā)現(xiàn)系統(tǒng)的惡意訪問用戶,從而提前采取防范措施、避免損失。
針對Web系統(tǒng)的漏洞挖掘技術(shù),國內(nèi)高校、研究機(jī)構(gòu)和企業(yè)積極開展相關(guān)技術(shù)研究[6-7]。國內(nèi)外現(xiàn)有的漏洞利用工具,如綠盟推出的Web應(yīng)用漏洞掃描系統(tǒng)、開源滲透測試框架Metasploit Framework(MSF)等雖各有所長,但是并沒有與電力信息Web系統(tǒng)多場景的特點(diǎn)相結(jié)合。
目前對SQLIA的檢測主要有基于規(guī)則匹配[6]和基于查詢語法樹[7]的方法。韓宸望等[8]將基于SQL語法樹比較的安全策略引入用戶輸入過濾的設(shè)計(jì)中,提出了一種新的SQL注入過濾方法,該方法能夠有效防止SQLIA,并有較高的攔截率和較低的誤報(bào)率。王苗苗等[9]對大量SQL注入攻擊報(bào)文的攻擊特征進(jìn)行總結(jié)分析,提出了一種基于通用規(guī)則的SQL注入攻擊檢測與防御的方法,利用SQL注入檢測工具SQLMap進(jìn)行SQL注入攻擊模擬,捕捉攻擊流量,提取攻擊特征,總結(jié)通用規(guī)則。Kim等[10]提出一種基于內(nèi)部查詢樹和SVM的SQLIA檢測方法,該方法從數(shù)據(jù)庫級別的日志中收集SQL查詢樹信息,從復(fù)雜和多變的查詢樹中提取語法特征和語義特征,但是在實(shí)現(xiàn)和操作上比較復(fù)雜。張志超等[11]提出一種基于人工神經(jīng)元網(wǎng)絡(luò)的SQL注入漏洞的分析模型,在識別SQL關(guān)鍵字注入攻擊特點(diǎn)的基礎(chǔ)上,利用人工神經(jīng)元網(wǎng)絡(luò)算法對SQL注入語句進(jìn)行檢測,能夠直接分析SQL語句,判斷用戶輸入的SQL語句是否為SQL注入的語句,該模型可提高SQL注入漏洞檢測的準(zhǔn)確率和執(zhí)行效率。Singh等[12]提出了一種算法,不僅可以檢測SQL注入攻擊,而且可以通過機(jī)器學(xué)習(xí)技術(shù),維護(hù)審計(jì)記錄檢測未授權(quán)用戶的訪問。
基于規(guī)則匹配的方法能夠很好地檢測出規(guī)則庫中已知的SQLIA類型,準(zhǔn)確率高,誤報(bào)率小。但該方法過度依賴于規(guī)則知識庫,不能檢測出未知攻擊,漏報(bào)率高,而當(dāng)前的SQLIA手段總是在不斷更新和變化?;诓樵冋Z法樹通過比對安全的查詢語句語法樹和待測語句的語法樹,若兩個語法樹不同,則該查詢語句為SQL注入攻擊。但該方法漏報(bào)率和誤報(bào)率都比較高,并且也不能檢測出未知SQL注入攻擊。
電力信息系統(tǒng)規(guī)模龐大,對安全性要求較高,目前面向電力信息Web系統(tǒng)特點(diǎn)的SQL注入攻擊檢測方法的研究較少。為了提高電力信息Web系統(tǒng)的安全性,防止用戶通過輸入提交惡意SQL語句制造SQL注入攻擊,本文提出一種面向電力信息系統(tǒng)日志數(shù)據(jù)的注入攻擊特征提取方法,提高對SQL注入攻擊檢測的準(zhǔn)確性。
首先對用戶訪問Web系統(tǒng)產(chǎn)生的日志數(shù)據(jù)進(jìn)行解碼、分析等預(yù)處理操作。然后從日志文件中提取語法特征字段以及行為特征字段。由于SQL注入攻擊包含一系列Web訪問動作,因此提取行為特征字段之前還需要進(jìn)行用戶識別和會話識別,再對提取的特征字段進(jìn)行類別標(biāo)注,形成特征字段訓(xùn)練集以及測試集。最后使用分類/聚類算法進(jìn)行訓(xùn)練建模。本文提出的方法架構(gòu)如圖1所示。
圖1 本文方法架構(gòu)
服務(wù)器默認(rèn)的日志字段中記錄了用戶訪問的URL,通過URL字段中的用戶輸入信息判斷是否為惡意輸入。然而只能記錄GET請求類型的參數(shù),無法記錄POST類型的參數(shù)以及HTTP HEADER的注入信息。因此若使用服務(wù)器默認(rèn)的日志分析SQL注入攻擊行為,則會導(dǎo)致大量攻擊無法檢測,進(jìn)而導(dǎo)致漏報(bào)率高,無法達(dá)到防御攻擊的目的。由于Apache服務(wù)器日志中包含許多與研究目標(biāo)無關(guān)的記錄和字段,這些信息不需要記錄在內(nèi)。此外,為了提高日志處理效率,本文自定義了Web訪問日志的格式,根據(jù)研究目標(biāo),確定6個日志字段信息,日志以文本文件的格式保存在服務(wù)器端。日志各字段及含義如表1所示。
表1 日志字段及含義
Time記錄服務(wù)器完成請求處理時的時間,IPAddr表示訪問用戶的IP地址,RemoteHost記錄用戶訪問的主機(jī)名,UserAgent記錄用戶操作系統(tǒng)和瀏覽器信息,以上4個字段用于確定SQL注入行為特征。IPAddr、RemoteHost和UserAgent字段可以進(jìn)行用戶識別,之后根據(jù)訪問時間進(jìn)行會話識別。
ReqMethod字段表示用戶發(fā)送請求使用的方法,主要有g(shù)et、post、head和put方法,其中g(shù)et和post方法最為常用。
InputPara記錄用戶請求的輸入?yún)?shù)。SQL注入攻擊就是由于不安全的用戶輸入導(dǎo)致的。通過InputPara可初步判斷用戶輸入數(shù)據(jù)的安全性。SQL注入語法特征的提取主要是從InputPara字段獲得。
SQL注入攻擊發(fā)生時輸入的參數(shù)在語法方面具有共同特征,都是將輸入?yún)?shù)直接拼接到SQL語句中,從而改變SQL語句功能,竊取數(shù)據(jù)。根據(jù)SQL注入攻擊參數(shù)的一般形式和語法特征,可將SQL注入攻擊參數(shù)分為7部分,每個字段擁有相應(yīng)功能并完成相應(yīng)的注入目的。按照在SQL注入語句中出現(xiàn)的順序,7個字段分別為:(1) 前終結(jié)符,用PreTerm表示;(2) 注入前綴,用InjecPrefix表示;(3) 注入關(guān)鍵詞,用InjecKey表示;(4) 常量參數(shù),用ConstPar表示;(5) 大寫字母,用UpLet表示;(6) 其他特殊字符,用SpecLet表示;(7) 后終結(jié)符,用SufTerm表示。SQL注入語法特征字段含義及實(shí)例說明如表2所示。
表2 SQL注入語法特征字段
圖2所示為生成語法特征矩陣的工作流程。圖2(a)為SQL注入語句的提取流程,其中日志文件為經(jīng)過解碼處理后得到的日志文件,這是由于服務(wù)器記錄的用戶訪問日志的輸入?yún)?shù)字段是經(jīng)過編碼的字符串,所以首先需要對日志的輸入?yún)?shù)字段進(jìn)行解碼等預(yù)處理。經(jīng)過解碼處理后,對每條日志進(jìn)行分析,判斷其是否符合SQL注入特征。對于符合SQL注入特征的語句提取形成SQL注入語句文件,然后根據(jù)提取結(jié)果,在字段分析時采取分支結(jié)構(gòu)判斷SQL語句中是否有符合上述7個字段的字符,如圖2(b)所示。每個字段的值均為BOOL類型,0值表示該條日志記錄不包含此字段,1值表示該條日志記錄包含此字段。對所有的日志記錄處理之后,形成大小為n×7的矩陣,其中n為日志記錄個數(shù),7為每條日志記錄的特征字段個數(shù)。由此得到SQL注入語法特征矩陣。
(a) SQL注入語句提取流程 (b) 語法特征矩陣生成流程
SQL注入攻擊是逐步嘗試進(jìn)行完成,包含一系列Web訪問動作。若只考慮每條日志的SQL注入語法特征,在標(biāo)注標(biāo)準(zhǔn)嚴(yán)格的情況下,偶爾一次的輸入錯誤當(dāng)作攻擊行為,會出現(xiàn)誤報(bào);反之,容易出現(xiàn)漏報(bào)。SQL注入攻擊步驟如圖3所示。
圖3 SQL注入攻擊步驟
(1) 尋找SQL注入點(diǎn)。在動態(tài)網(wǎng)頁輸入?yún)?shù)的位置,通過不合法或邏輯錯誤的輸入、推斷攻擊、重言式攻擊和SQL盲注入的方式判斷是否存在SQL注入。
(2) 確認(rèn)SQL注入點(diǎn)。在找到SQL注入點(diǎn)后,還需進(jìn)一步確認(rèn)SQL注入點(diǎn)的真實(shí)性和注入類型。一般需要多次嘗試,根據(jù)系統(tǒng)錯誤信息和數(shù)據(jù)庫錯誤信息來區(qū)分是字符、數(shù)字還是字符串類型的注入。
(3) 獲取系統(tǒng)和數(shù)據(jù)庫信息。由于不同數(shù)據(jù)庫具體的注入方式不同,所以還需要進(jìn)一步獲取系統(tǒng)和數(shù)據(jù)庫相關(guān)信息。該過程可以使用UNION聯(lián)合查詢、多語句命令執(zhí)行,利用內(nèi)置函數(shù)實(shí)現(xiàn),猜測數(shù)據(jù)庫的類型、表名、列名、判斷列的數(shù)據(jù)類型等。
(4) 實(shí)施注入攻擊。在確定數(shù)據(jù)庫信息之后,利用SQL注入漏洞進(jìn)行真正的攻擊,包括擴(kuò)張權(quán)限、竊取/篡改信息、惡意代碼執(zhí)行、腳本上傳等。
SQL注入攻擊特征不僅體現(xiàn)在SQL語句的語法特征上,在用戶訪問行為上同樣具有異于正常訪問行為的特征。例如用戶在同一個會話內(nèi)重復(fù)多次請求同一個網(wǎng)頁、在一定的時間內(nèi)發(fā)生大量的會話等。因此,分析SQL注入行為特征時,也需要進(jìn)行用戶識別和會話識別。
本文根據(jù)Web訪問日志的IPAddr、RemoteHost和UserAgent字段進(jìn)行用戶識別。如果兩條Web訪問日志記錄的IPAddr、RemoteHost和UserAgent三個字段對應(yīng)相等,則認(rèn)為這兩條日志屬于同一用戶的操作記錄,否則屬于不同用戶。
設(shè)置會話持續(xù)時間閾值T,把T時間段內(nèi)的訪問記錄作為一個會話,本文使用啟發(fā)式方法動態(tài)確定閾值,以自適應(yīng)的閾值識別會話。設(shè)最大請求數(shù)Rmax,如果當(dāng)前會話的請求數(shù)小于Rmax,設(shè)置閾值為T1;如果請求數(shù)達(dá)到Rmax,設(shè)置閾值為T2,T2>T1。在實(shí)驗(yàn)中,Rmax取值為100,T1為30分鐘,T2為60分鐘。會話識別中,每個會話中有多個日志訪問記錄,定義每個會話中含有的記錄數(shù)目稱為該會話的長度,用len_session表示。SQL注入行為特征字段如圖4所示。
圖4 SQL注入行為特征字段
各字段含義如下:
(1) PPT(Percentage of PreTerm):含有前終結(jié)符的記錄數(shù)目與會話長度的比例,即PPT=npt/len_session,npt為該會話中含有前終結(jié)符的記錄數(shù)目。
(2) PIP(Percentage of InjecPrefix):含有注入前綴的記錄數(shù)目與會話長度的比例,即PIP=nip/len_session,nip為該會話中含有注入前綴的記錄數(shù)目。
(3) PIK(Percentage of InjecKey):含有注入關(guān)鍵詞的記錄數(shù)目與會話長度的比例,即PIK=nik/len_session,nik為該會話中含有注入關(guān)鍵詞的記錄數(shù)目。
(4) PCP(Percentage of ConstPar):含有常量參數(shù)的記錄數(shù)目與會話長度的比例,即PCP=ncp/len_session,ncp為該會話中含有常量參數(shù)的記錄數(shù)目。
(5) PUL(Percentage of UpLet):含有大寫字母的記錄數(shù)目與會話長度的比例,即PUL=nul/len_session,nul為該會話中含有大寫字母的記錄數(shù)目。
(6) PSL(Percentage of SpecLet):含有其他特殊字符的記錄數(shù)目與會話長度的比例,即PSL=nsl/len_session,nsl為該會話中含有其他特殊字符的記錄數(shù)目。
(7) PST(Percentage of SufTerm):含有后終結(jié)符的記錄數(shù)目與會話長度的比例,即PSE=nst/len_session,nst為該會話中含有后終結(jié)符的記錄數(shù)目。
(8) PRT(Percentage of Max Request Times):請求次數(shù)最多的頁面被請求的次數(shù)與會話長度的比例,即PRT=nrt/len_session,nrt為該會話中被請求次數(shù)最多的頁面被請求的次數(shù)。
(9) DT(Duration Time):會話的持續(xù)時間,即會話最后一條記錄的時間與第一條記錄的時間差。
日志預(yù)處理、用戶識別和會話識別后進(jìn)行行為特征字段提取,提取每個會話中的上述9個特征字段值,每個字段值的范圍是0~1。對所有會話記錄進(jìn)行SQL注入行為特征提取之后,形成大小為n×9的矩陣,其中n為會話記錄的個數(shù),9為每個會話的特征字段個數(shù)。由此得到SQL注入行為特征矩陣。
通過分析電力信息系統(tǒng)特點(diǎn),本文搭建相應(yīng)的Web應(yīng)用系統(tǒng),并將其部署于模擬電力信息系統(tǒng)的實(shí)驗(yàn)環(huán)境中。在系統(tǒng)源代碼中人工添加GET、POST、HTTP Cookie、HTTP Referer和HTTP Header “X-Forwarded-For”5大種類共計(jì)13個SQL注入漏洞,如表3所示。
表3 Web系統(tǒng)SQL注入漏洞列表
針對SQL注入攻擊的需求,本文在模擬實(shí)驗(yàn)環(huán)境中部署的Web系統(tǒng)上增加了相應(yīng)的SQL注入漏洞入口。采用多用戶以及SQL注入工具的方式進(jìn)行多次正常訪問和嘗試攻擊,記錄下用戶訪問日志,其中部分日志InputPara信息如下:
controller=site&action=pro_list&cat=57
controller=site&action=pro_list&cat=
57 and(select count(1) from sysobjects)>0 And 1=1
controller=site&action=pro_list&cat=
57 and len(@@version)>0 And 1=1
controller=site&action=pro_list&cat=
57 and(select count(table_name) from user_tables)>0 And 1=1
controller=site&action=pro_list&cat=
57 and 1=1-- And 1=1
controller=site&action=pro_list&cat=
57 and 1=1/* And 1=1
controller=site&action=pro_list&cat=
57 and 0<=(select count(*) from master..syslogins) And 1=1
對Web訪問日志進(jìn)行去除無效訪問日志、解碼等預(yù)處理操作步驟,然后進(jìn)行特征提取,形成語法特征(Syntactic Feature,SF)矩陣與行為特征(Behavioral Feature,BF)矩陣兩類實(shí)驗(yàn)數(shù)據(jù)集。SQL注入攻擊數(shù)與正常訪問日志數(shù)比例如圖5所示,其中TrainSet為訓(xùn)練集,TestSet為測試集。
圖5 SQL注入攻擊數(shù)與正常訪問日志數(shù)比例
在入侵、攻擊檢測等研究中,常用漏報(bào)率和誤報(bào)率評價檢測方法的有效性[10,13]。漏報(bào)率即沒有檢測出來的攻擊記錄數(shù)與總攻擊記錄數(shù)的比例,用FNR(False Negative Rate)表示;誤報(bào)率即被檢測出來是攻擊但實(shí)際上是正常的記錄數(shù)與總的正常記錄數(shù)的比例,用FPR(False Positive Rate)表示。本文使用FNR和FPR評估檢測算法的有效性,通常具有較低漏報(bào)率和誤報(bào)率的模型檢測效果較好。誤報(bào)率和漏報(bào)率的計(jì)算分別如下:
FPR=FP/(FP+TN)
(1)
FNR=FN/(TP+FN)
(2)
式中:FP表示實(shí)際是正常的日志記錄,但檢測結(jié)果是SQLIA的日志記錄個數(shù);TN表示實(shí)際與檢測結(jié)果均是正常的訪問日志記錄;FN表示沒有檢測出來的SQLIA日志記錄個數(shù);TP表示實(shí)際與檢測結(jié)果均是SQLIA的訪問日志記錄數(shù)目。
實(shí)驗(yàn)平臺為Windows 7,系統(tǒng)內(nèi)存4 GB,CPU為Core i3,使用Firefox瀏覽器,在模擬電力信息系統(tǒng)實(shí)驗(yàn)環(huán)境下運(yùn)行Web應(yīng)用。
使用K-means、樸素貝葉斯(Naive Bayes)、支持向量機(jī)(Support Vector Machine, SVM)和隨機(jī)森林(Random Forest,RF)算法分別對SQL注入語法特征矩陣和行為特征矩陣建模和預(yù)測,計(jì)算FPR和FNR。使用這兩種特征矩陣目的是評估語法特征和行為特征在SQL注入攻擊檢測中的效果。
另外,對SQL注入語法特征的每個樣本類型進(jìn)行重新標(biāo)注設(shè)計(jì)一組對比實(shí)驗(yàn)。進(jìn)行重新標(biāo)注是因?yàn)檎Z法特征是以每個日志作為一個樣本,單獨(dú)從每個日志的語法特征分析該樣本是否是攻擊往往具有一定的偏差。標(biāo)注標(biāo)準(zhǔn)嚴(yán)格會導(dǎo)致誤報(bào),標(biāo)準(zhǔn)寬松則會導(dǎo)致漏報(bào)。而行為特征是以用戶的一次會話作為一個樣本,其標(biāo)注一般不存在此問題。因此,為了增加實(shí)驗(yàn)結(jié)果的充分性,本文考慮對語法特征進(jìn)行重新標(biāo)注。
首先將兩類實(shí)驗(yàn)數(shù)據(jù)訓(xùn)練集TrainSet_SF(340條SQLIA記錄,25 040條正常訪問記錄)和TrainSet_BF(260條SQLIA記錄,1 590條正常訪問記錄)分別代入上述4種算法模型進(jìn)行訓(xùn)練,并不斷調(diào)整參數(shù)選出效果更優(yōu)的訓(xùn)練模型,采用十折交叉驗(yàn)證方法對模型進(jìn)行綜合驗(yàn)證評價。然后將TestSet1_SF(290條SQLIA記錄,1 470條正常訪問記錄)、TestSet2_SF(130條SQLIA記錄,20 380條正常訪問記錄)和TestSet1_BF(110條SQLIA記錄,120條正常訪問記錄)、 TestSet2_BF(130條SQLIA記錄,990條正常訪問記錄)代入4種訓(xùn)練模型進(jìn)行預(yù)測。上述模型對SQL注入攻擊檢測結(jié)果的漏報(bào)率和誤報(bào)率如表4所示。按照同樣的實(shí)驗(yàn)過程對重新標(biāo)注后的語法特征數(shù)據(jù)集SF進(jìn)行實(shí)驗(yàn),漏報(bào)率和誤報(bào)率結(jié)果如表5所示。其中TestSet1_SFR和TestSet2_SFR分別表示重新標(biāo)注后SF的兩個測試集。
表4 各模型在SQL注入語法特征和行為特征數(shù)據(jù)集的預(yù)測結(jié)果 %
表5 SQL注入語法特征數(shù)據(jù)集重新標(biāo)注前后預(yù)測結(jié)果對比 %
(1) SQL注入語法特征和行為特征對漏報(bào)率FNR的影響。圖6為各模型在語法特征測試集和行為特征測試集上檢測結(jié)果的漏報(bào)率??梢钥闯觯總€模型在語法特征數(shù)據(jù)集和行為特征數(shù)據(jù)集上的檢測結(jié)果的漏報(bào)率差距明顯,使用SQL注入行為特征數(shù)據(jù)集進(jìn)行SQL注入攻擊檢測,可以有效降低漏報(bào)率。
圖6 各模型在SF和BF上的FNR結(jié)果
(2) SQL注入語法特征和行為特征對誤報(bào)率FPR的影響。圖7為各模型在語法特征測試集和行為特征測試集上檢測結(jié)果的誤報(bào)率。可以看出,每個模型在語法特征數(shù)據(jù)集和行為特征數(shù)據(jù)集上的檢測結(jié)果的誤報(bào)率差距不是特別明顯,多數(shù)模型在行為特征數(shù)據(jù)集上測試結(jié)果的誤報(bào)率略高于在語法特征數(shù)據(jù)集上的結(jié)果。這是由于語法特征數(shù)據(jù)集在標(biāo)注時標(biāo)準(zhǔn)不太嚴(yán)格,導(dǎo)致漏報(bào)率較高,但是誤報(bào)率低。
圖7 各模型在SF和BF上的FPR結(jié)果
綜合考慮FNR和FPR兩個因素,行為特征在SQL注入攻擊檢測中具有更好的效果。
(3) 各模型檢測效果分析。本文實(shí)驗(yàn)數(shù)據(jù)的特點(diǎn)是小數(shù)據(jù)量和低維度。通過比較各模型在數(shù)據(jù)集上的分類效果,K-means無監(jiān)督聚類相比其他分類算法,F(xiàn)NR和FPR偏高。Naive Bayes適合屬性相互獨(dú)立的數(shù)據(jù)集,在本實(shí)驗(yàn)中的結(jié)果比SVM、RF稍差。RF適合較高維度和大數(shù)據(jù)量的數(shù)據(jù)集,SVM適合小樣本和高維數(shù)據(jù),在本文實(shí)驗(yàn)中的檢測結(jié)果相差不大,均能得到可以接受的分類結(jié)果。
(4) 數(shù)據(jù)集規(guī)模以及攻擊樣本所占比例對實(shí)驗(yàn)結(jié)果的影響。實(shí)驗(yàn)中TestSet1和TestSet2在數(shù)據(jù)集規(guī)模和攻擊樣本所占比例上都有很大差異。TestSet1是攻擊樣本比例高的規(guī)模較小的數(shù)據(jù)集;TestSet2是攻擊樣本比例低的規(guī)模較大的數(shù)據(jù)集,更符合真實(shí)環(huán)境中用戶訪問日志情況??梢钥闯觯赥estSet2數(shù)據(jù)集下的預(yù)測結(jié)果更為穩(wěn)定,預(yù)測結(jié)果更加準(zhǔn)確。
(5) 語法特征數(shù)據(jù)集的標(biāo)注與否對SQL注入攻擊檢測漏報(bào)率FNR和誤報(bào)率FPR的影響。圖8、圖9分別為各模型在語法特征數(shù)據(jù)集重新標(biāo)注前后FNR、FPR的實(shí)驗(yàn)結(jié)果??梢钥闯?,語法特征數(shù)據(jù)集樣本重新標(biāo)注后,各模型漏報(bào)率明顯降低,誤報(bào)率維持在可接受的較低范圍內(nèi)。由此可見,語法特征數(shù)據(jù)集的標(biāo)注標(biāo)準(zhǔn)對SQL注入攻擊檢測結(jié)果的影響較大。
圖8 SF重新標(biāo)注前后FNR對比
圖9 SF重新標(biāo)注前后FPR對比
通過上述結(jié)果分析可知,基于電力信息系統(tǒng)日志數(shù)據(jù)提取SQL注入攻擊語法特征和行為特征,用于注入攻擊檢測,能夠有效檢測出注入攻擊,且檢測結(jié)果具有較低的漏報(bào)率和誤報(bào)率。本文實(shí)驗(yàn)結(jié)果雖然依賴于日志定義、攻擊特征提取以及攻擊行為的認(rèn)定,但在SQL注入攻擊檢測方面具有非常好的通用性和易用性,經(jīng)過簡單的調(diào)整就可以對某類技術(shù)搭建的系統(tǒng)獲得很好的檢測效果。用于電力信息系統(tǒng)的SQL注入攻擊檢測中,可有效防止惡意用戶的SQL注入攻擊,保障電網(wǎng)信息系統(tǒng)的數(shù)據(jù)安全。
本文首先對Web應(yīng)用日志數(shù)據(jù)進(jìn)行分析,結(jié)合SQL注入攻擊特點(diǎn),從中提取注入攻擊語法特征與行為特征,得到語法特征矩陣SF和行為特征矩陣BF兩類實(shí)驗(yàn)數(shù)據(jù)集。然后使用K-means、Naive Bayes、SVM和RF算法進(jìn)行建模和預(yù)測。通過實(shí)際的電力信息系統(tǒng)訪問日志數(shù)據(jù)分析各算法模型在SF和BF數(shù)據(jù)集下對注入攻擊檢測的誤報(bào)率和漏報(bào)率。實(shí)驗(yàn)結(jié)果表明,面向電力信息系統(tǒng)日志數(shù)據(jù)的注入攻擊檢測方法可有效檢測對系統(tǒng)的SQL注入攻擊。與語法特征相比,行為特征在注入攻擊檢測中具有更好的檢測效果。SVM和RF算法的檢測效果較好,具有較低的漏報(bào)率和誤報(bào)率。未來工作將會在增加數(shù)據(jù)規(guī)模和安全攻擊數(shù)據(jù)類型的基礎(chǔ)上,基于多種數(shù)據(jù)挖掘模型進(jìn)行綜合研究分析,以進(jìn)一步提高面向電力信息系統(tǒng)安全相關(guān)數(shù)據(jù)特征的挖掘與分析能力。