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