管軍霖,師功才,陳 宏
(桂林電子科技大學(xué)計算機(jī)與信息安全學(xué)院,廣西 桂林 541004)
網(wǎng)絡(luò)應(yīng)用服務(wù)的增加,促進(jìn)了人們對網(wǎng)絡(luò)環(huán)境的關(guān)注。安全良好的網(wǎng)絡(luò)有利于抵抗攻擊行為,保護(hù)用戶的敏感數(shù)據(jù)。網(wǎng)絡(luò)漏洞是導(dǎo)致入侵攻擊的主要因素[1],現(xiàn)代網(wǎng)絡(luò)每時每刻都在遭受大量的惡意攻擊,黑客通過尋找網(wǎng)絡(luò)漏洞,將一些腳本植入應(yīng)用,進(jìn)而截獲所需數(shù)據(jù)并謀取利益[2-3]。因此,網(wǎng)絡(luò)漏洞的及時準(zhǔn)確發(fā)現(xiàn)是關(guān)乎網(wǎng)絡(luò)安全的關(guān)鍵[4]。
對于網(wǎng)絡(luò)漏洞的挖掘,早期的思想是構(gòu)造漏洞庫,通過比較的方式識別出漏洞的存在。如文獻(xiàn)[5]通過對比網(wǎng)頁信息與規(guī)則庫來識別SQL或者XSS攻擊,優(yōu)點(diǎn)是能夠支持GET與POST請求,缺點(diǎn)是挖掘速度較慢。由于漏洞庫比較的方式在實(shí)際應(yīng)用場合中過于復(fù)雜,受到的限制較多,一些學(xué)者提出了動態(tài)分析挖掘。如文獻(xiàn)[6]利用載荷單元的屬性差異對攻擊行為采取劃分,同時也建立了規(guī)則庫,這種方法能夠避開對源碼的依賴,但是相對而言準(zhǔn)確性要差一些。于是,又有部分學(xué)者開始從漏洞入侵日志著手,通過引入一些數(shù)據(jù)分析算法來達(dá)到漏洞檢測的目的。如文獻(xiàn)[7]針對WEB應(yīng)用采用了一種SVM算法,對HTTP報文進(jìn)行特征提取及分類處理,這種方法能夠保持良好的泛化性,但是應(yīng)用范圍過于狹窄,目前只支持對Struts2-045的識別。文獻(xiàn)[8]對入侵攻擊的風(fēng)險日志采取關(guān)聯(lián)規(guī)則分析,通過與庫的比較實(shí)現(xiàn)漏洞挖掘,這種方法充分利用日志信息,很好的把數(shù)據(jù)分析與漏洞挖掘結(jié)合起來,但是在數(shù)據(jù)處理和時間性能方面仍有很大的優(yōu)化空間。
隨著應(yīng)用對漏洞攻擊日志的大量收集,通過日志分析能夠獲取到很多關(guān)于漏洞的價值信息,因此,本文也采用風(fēng)險數(shù)據(jù)分析技術(shù)完成漏洞挖掘。為改善風(fēng)險數(shù)據(jù)的可用性,在預(yù)處理階段對數(shù)據(jù)進(jìn)行標(biāo)準(zhǔn)化和去冗余操作,再利用Apriori算法增強(qiáng)置信度和關(guān)聯(lián)規(guī)則計算,提高對漏洞挖掘的準(zhǔn)確性和效率。最后將分析挖掘算法在MapReduce上實(shí)現(xiàn),進(jìn)一步提高漏洞挖掘過程對海量數(shù)據(jù)的處理性能。
風(fēng)險數(shù)據(jù)保存了網(wǎng)絡(luò)攻擊行為,是網(wǎng)絡(luò)漏洞挖掘的數(shù)據(jù)基礎(chǔ),在識別網(wǎng)絡(luò)入侵的時候,相同類型的入侵會生成眾多格式近似的風(fēng)險數(shù)據(jù),非相同類型的入侵會生成不同格式的風(fēng)險數(shù)據(jù)。由于入侵類型的不同,要么得到大量異構(gòu)風(fēng)險數(shù)據(jù),要么得到大量冗余風(fēng)險數(shù)據(jù),不管類型差異與否,都將給網(wǎng)絡(luò)漏洞挖掘帶來嚴(yán)重數(shù)據(jù)干擾。于是,本文在漏洞挖掘的初始階段對風(fēng)險數(shù)據(jù)采取融合處理。
對幾類典型的風(fēng)險數(shù)據(jù)進(jìn)行格式分析。根據(jù)數(shù)據(jù)分析,能夠得到漏洞信息,從而指導(dǎo)攻擊防御。表1羅列了Ossec、Snort和Firewall三類風(fēng)險數(shù)據(jù)格式。對于不同的風(fēng)險數(shù)據(jù),包含的字段信息并非完全相同,需要對其進(jìn)行標(biāo)準(zhǔn)化處理來提高數(shù)據(jù)的處理性能。在標(biāo)準(zhǔn)化過程中,應(yīng)充分考慮字段對網(wǎng)絡(luò)攻擊的表達(dá),確保標(biāo)準(zhǔn)化字段可以清楚描述攻擊屬性。表2列舉了標(biāo)準(zhǔn)化后的風(fēng)險數(shù)據(jù)字段。經(jīng)過格式標(biāo)準(zhǔn)化處理后,所有的入侵信息被統(tǒng)一描述,避免了異構(gòu)數(shù)據(jù)對分析性能的影響。
表1 三類典型風(fēng)險數(shù)據(jù)格式
表2 標(biāo)準(zhǔn)化風(fēng)險數(shù)據(jù)字段
除了格式標(biāo)準(zhǔn)化以外,風(fēng)險數(shù)據(jù)還存在大量近似的攻擊日志,為降低數(shù)據(jù)冗余度,對數(shù)據(jù)采取相似度融合。因?yàn)樽侄未嬖诙鄠€類型,且每個字段對相似度的影響程度各不相同,所以針對每個字段采取獨(dú)立的相似度求解,再通過權(quán)重得到整體相似度。參與相似度計算的字段包括:Time、Src_IP/Dst_IP、Src_Port/Dst_Port、Type、Level、Pro_Type以及Description。
在某個時間范圍內(nèi)產(chǎn)生的風(fēng)險數(shù)據(jù),可能是由某個共同的入侵行為引起。假定兩次風(fēng)險日志依次表示為Risk1與Risk2,則根據(jù)它們在時間上的接近程度,將時間相似度描述為
(1)
其中,Thtime表示時間閾值,用于控制時間相似度的衡量標(biāo)準(zhǔn)。Risk1與Risk2的時間越靠近,表明Risk1與Risk2的相似度越高。
當(dāng)風(fēng)險數(shù)據(jù)中的網(wǎng)絡(luò)地址較為接近時,也意味著可能是由同種網(wǎng)絡(luò)入侵所造成。某些網(wǎng)絡(luò)入侵會針對同一網(wǎng)段主機(jī)發(fā)起攻擊,考慮IP字段的位數(shù),將IP相似度描述為
Sip=k/bitip
(2)
其中,bitip表示IP對應(yīng)的二進(jìn)制位數(shù);k表示相同的位數(shù)。IP用于區(qū)分主機(jī),端口號用于區(qū)分服務(wù)類型,端口號為int類型,根據(jù)兩條風(fēng)險數(shù)據(jù)中的端口一致性,利用boole類型表示其相似度,端口一致則Sport=1,否則Sport=0。描述如下
(3)
與Src_Port/Dst_Port字段類似,對Type、Level、Pro_Type和Description字段相似度的計算也同樣根據(jù)一致性判斷,將相似度描述為boole類型,分別標(biāo)記為Stype、Slevel、SproType和Sdesc?;诟髯侄为?dú)立相似度,通過加權(quán)求解風(fēng)險數(shù)據(jù)的整體相似度,公式描述為
Stotal=ω1*Stime+ω2*Sip+ω3*Sport+ω4*Stype+ω5*Slevel+ω6*SproType+ω7*Sdesc
(4)
其中,ω1~ω7分別代表各字段的加權(quán)系數(shù)。
Apriori算法的基礎(chǔ)是關(guān)聯(lián)規(guī)則,對于一組具有關(guān)聯(lián)規(guī)則的事務(wù),對應(yīng)集合可以表示為A={A1,A2,…,An}。A中全部項(xiàng)集表示為I={I1,I2,…,Im},m代表項(xiàng)特征數(shù)量。對于任何X?I,Y?I,如果存在X→Y關(guān)聯(lián)規(guī)則,則有X∩Y=?。假定集合A內(nèi)包含X∪Y項(xiàng)的事務(wù)比例為p,則可得如下表達(dá)式
Sup(X∪Y)=P(X∪Y)=p
(5)
根據(jù)Sup(X∪Y)與Sup(X),可得X→Y的置信度為
(6)
通過對Sup(X∪Y)與C(X→Y)的最小限制可以確定頻集。為防止出現(xiàn)大量小候選集,在采取數(shù)據(jù)掃描之前,將數(shù)據(jù)轉(zhuǎn)換成布爾矩陣處理。把A視為行向量,I視為列向量。當(dāng)項(xiàng)i包含于事務(wù)j中時,就令對應(yīng)的矩陣元素等于1,否則等于0。從而得到關(guān)于事務(wù)與項(xiàng)的布爾矩陣。每一行代表一條事務(wù)記錄,每一列代表一項(xiàng)記錄。布爾矩陣表示如下
(7)
矩陣B(i)n×m第i行是事務(wù)i對應(yīng)數(shù)據(jù);第j列是項(xiàng)特征j對應(yīng)數(shù)據(jù)。通過第j列元素累加,計算出項(xiàng)特征j支持度如下
(8)
對B(i)n×m進(jìn)行掃描,將Sup(Ij)和最小限制TSup做比較,符合Sup(Ij) (9) 因?yàn)楫?dāng)行值低于2的時候,將不再生成頻集,所以能夠避免形成大量小候選集。比較Sup(Ij→Il)和最小限制TSup,去掉U2中小于TSup的元素,建立頻集F2。根據(jù)F2,計算得到項(xiàng)間置信度為: (10) 依據(jù)置信度比較能夠確定強(qiáng)關(guān)聯(lián)規(guī)則。為確保關(guān)聯(lián)規(guī)則的合理有效,設(shè)計評判策略,構(gòu)建評判矩陣如下 (11) 矩陣元素hij是事務(wù)i對項(xiàng)j的評判。如果hij大于零,說明事務(wù)i對項(xiàng)j采取過評判;如果hij等于零,說明事務(wù)i對項(xiàng)j未采取過評判。結(jié)合事務(wù)對項(xiàng)的置信度,得到預(yù)評判如下 E(i)ij=max(H(i))×C(i)kj (12) 其中1≤k≤m。利用E(i)ij值構(gòu)建預(yù)評判矩陣,構(gòu)建方式描述為 (13) 其中ai表示項(xiàng)加權(quán)系數(shù)。對于En×m中等于零的元素,選擇關(guān)聯(lián)項(xiàng)的預(yù)評判來替換。從而使得到的關(guān)聯(lián)規(guī)則能夠更好的體現(xiàn)事務(wù)聯(lián)系。 根據(jù)網(wǎng)絡(luò)風(fēng)險數(shù)據(jù)融合與Apriori算法架構(gòu),基于MapReduce的網(wǎng)絡(luò)漏洞挖掘模型描述如圖1所示。 圖1 基于MapReduce的網(wǎng)絡(luò)漏洞挖掘模型 仿真基于Windows10操作系統(tǒng),Java開發(fā)環(huán)境為JDK1.8,選擇EasyJSP、Jauction、Jinsure、Jvote,以及MeshCMS五類項(xiàng)目。搭建網(wǎng)絡(luò)漏洞挖掘云模型,實(shí)現(xiàn)MapReduce架構(gòu),如圖2所示。本文共配置了9臺機(jī)器,包含1臺Master和8臺任務(wù)節(jié)點(diǎn)。它們的操作系統(tǒng)均為Ubuntu,開發(fā)環(huán)境也為JDK1.8。 圖2 網(wǎng)絡(luò)漏洞挖掘云模型 風(fēng)險數(shù)據(jù)融合過程中,設(shè)置各字段的加權(quán)系數(shù)ω1=0.1,ω2=0.15,ω3=0.1,ω4=0.2,ω5=0.1,ω6=0.2,ω7=0.15。Apriori算法處理過程中,設(shè)置支持度閾值為0.55,置信度閾值為0.65。實(shí)驗(yàn)從漏洞挖掘效率和挖掘精度兩方面對網(wǎng)絡(luò)漏洞挖掘效果進(jìn)行分析,另外,引入文獻(xiàn)[8]作為性能比較。由于文獻(xiàn)[8]中沒有提及分布式云框架,所以在模擬文獻(xiàn)[8]的過程中沒有采用云模型。 由于本文和文獻(xiàn)[8]都采用了關(guān)聯(lián)規(guī)則對風(fēng)險數(shù)據(jù)進(jìn)行分析,差別是本文引入了Apriori算法優(yōu)化關(guān)聯(lián)規(guī)則的搜索。為了比較本文相對文獻(xiàn)[8]在關(guān)聯(lián)規(guī)則查找方面的性能,通過仿真得到規(guī)則比較次數(shù)。分別向五個測試應(yīng)用中注入Medium XSS反射攻擊,在請求次數(shù)達(dá)到5000的情況下,記錄漏洞挖掘過程中的單次規(guī)則比較次數(shù),結(jié)果如圖3所示。 圖3 規(guī)則比較次數(shù) 根據(jù)實(shí)驗(yàn)結(jié)果對比,本文的規(guī)則比較次數(shù)較文獻(xiàn)[8]有所降低,五個項(xiàng)目的比較次數(shù)依次降低了18.61%、24.44%、11.63%、21.95%和5.26%。比較次數(shù)的縮減,說明對關(guān)聯(lián)規(guī)則查找效率的提升,此外關(guān)聯(lián)規(guī)則的查找會影響漏洞挖掘速度,有利于降低漏洞挖掘的響應(yīng)時間。 分別向五個測試項(xiàng)目中注入Medium XSS反射攻擊,在請求次數(shù)達(dá)到5000的情況下,記錄漏洞挖掘的平均響應(yīng)時延,結(jié)果如圖4所示。 圖4 平均響應(yīng)時延 根據(jù)實(shí)驗(yàn)結(jié)果對比,本文的漏洞挖掘方法平均響應(yīng)時延大幅降低,五個項(xiàng)目的響應(yīng)時延依次降低了7.805s、8.211s、9.698s、8.588s和9.170s。此外可以看出,文獻(xiàn)[8]對于不同的項(xiàng)目會產(chǎn)生較為明顯的響應(yīng)時延差異,最大和最小平均時延相差1.830s。而本文方法對于所有的測試項(xiàng)目都具有較為接近的響應(yīng)時延,最大和最小平均時延僅相差0.118s。結(jié)果說明本文所提的挖掘方法在時間性能上有顯著的優(yōu)勢,不僅縮短了平均響應(yīng)時延,還提高了不同應(yīng)用的穩(wěn)定性。導(dǎo)致這種結(jié)果的原因是:對風(fēng)險數(shù)據(jù)的融合處理降低了初始數(shù)據(jù)的冗余性和異構(gòu)性,有效去除了同一入侵行為產(chǎn)生的大量風(fēng)險數(shù)據(jù),規(guī)范了不同入侵行為產(chǎn)生的不同格式數(shù)據(jù),有利于數(shù)據(jù)的操作和分析;改進(jìn)Apriori算法對風(fēng)險數(shù)據(jù)關(guān)聯(lián)規(guī)則分析的優(yōu)化,避免了小候選集的過多出現(xiàn);MapReduce框架實(shí)現(xiàn)了Apriori算法漏洞挖掘的并行計算。 通過準(zhǔn)確率和誤報率來驗(yàn)證漏洞挖掘精度。實(shí)驗(yàn)得到五個項(xiàng)目對應(yīng)的準(zhǔn)確率和誤報率結(jié)果,如圖5和圖6所示。 圖5 漏洞挖掘準(zhǔn)確率 圖6 漏洞挖掘誤報率 根據(jù)實(shí)驗(yàn)結(jié)果對比,本文的漏洞挖掘方法準(zhǔn)確率明顯提升,五個項(xiàng)目的準(zhǔn)確率依次提高了7.38%、6.78%、3.64%、5.45%和5.53%,所有項(xiàng)目的準(zhǔn)確率均在92%以上。誤報率明顯下降,五個項(xiàng)目的誤報率依次下降了6.40%、6.62%、3.18%、4.26%和4.36%,所有項(xiàng)目的誤報率均在4%以下。結(jié)果表明本文方法有效提高了網(wǎng)絡(luò)漏洞的挖掘精度,得益于改進(jìn)Apriori算法對頻集和關(guān)聯(lián)規(guī)則的準(zhǔn)確提取。 針對網(wǎng)絡(luò)漏洞入侵攻擊,提出一種改進(jìn)Apriori風(fēng)險數(shù)據(jù)分析挖掘方法。該方法通過對大量風(fēng)險日志的融合分析,得到數(shù)據(jù)間的關(guān)聯(lián)規(guī)則,從中搜索得出漏洞信息。實(shí)驗(yàn)搭建了基于MapReduce架構(gòu)的漏洞挖掘模型,從挖掘效率和挖掘精度兩方面進(jìn)行仿真分析,得到結(jié)果為:單次請求的規(guī)則比較次數(shù)為35,響應(yīng)時延為2.73s;五個項(xiàng)目的平均準(zhǔn)確率為93.87%,平均誤報率為3.17%。結(jié)果表明風(fēng)險數(shù)據(jù)處理和改進(jìn)Apriori算法有效優(yōu)化了關(guān)聯(lián)規(guī)則查找性能,通過風(fēng)險數(shù)據(jù)分析結(jié)合MapReduce架構(gòu),顯著提升了漏洞挖掘的效率和精度。4 仿真與結(jié)果分析
4.1 仿真環(huán)境搭建
4.2 挖掘效率分析
4.3 挖掘精度分析
5 結(jié)束語