壽 增,狄躍斌,馬 驍,許睿超,尹 隆
(1.國(guó)網(wǎng)遼寧省電力有限公司,遼寧 沈陽(yáng) 110003;2.南瑞集團(tuán)有限公司(國(guó)網(wǎng)電力科學(xué)研究院有限公司),江蘇 南京 210061;3.北京科東電力控制系統(tǒng)有限責(zé)任公司,北京 100192;4.東北大學(xué) 軟件學(xué)院,遼寧 沈陽(yáng) 110169)
傳統(tǒng)的網(wǎng)絡(luò)威脅檢測(cè)系統(tǒng),如入侵檢測(cè)系統(tǒng),主要使用關(guān)系型數(shù)據(jù)庫(kù)進(jìn)行建模分析,但表與表的關(guān)系復(fù)雜、不直觀,不能表達(dá)出清晰的網(wǎng)絡(luò)攻擊路徑。當(dāng)前,網(wǎng)絡(luò)攻擊行為日新月異,網(wǎng)絡(luò)威脅行為也趨于復(fù)雜化,傳統(tǒng)的檢測(cè)方式,例如特征碼檢測(cè)[1-2]、opcode[3-4]檢測(cè)、虛擬執(zhí)行法等只能對(duì)已知的威脅進(jìn)行檢測(cè),不能檢測(cè)出未知、復(fù)雜的網(wǎng)絡(luò)威脅行為,檢測(cè)速度慢、資源消耗,嚴(yán)重影響了系統(tǒng)的性能。
為了解決傳統(tǒng)網(wǎng)絡(luò)威脅檢測(cè)技術(shù)不能應(yīng)對(duì)復(fù)雜的網(wǎng)絡(luò)攻擊以及無法對(duì)網(wǎng)絡(luò)攻擊進(jìn)行溯源[5-7]的問題,利用知識(shí)圖譜[8-10]與圖數(shù)據(jù)庫(kù)Neo4j[11],本文設(shè)計(jì)并實(shí)現(xiàn)了可動(dòng)態(tài)識(shí)別并學(xué)習(xí)新型網(wǎng)絡(luò)攻擊的網(wǎng)絡(luò)威脅行為分析系統(tǒng)。利用知識(shí)圖譜構(gòu)建網(wǎng)絡(luò)威脅行為庫(kù),對(duì)復(fù)雜的網(wǎng)絡(luò)威脅行為以及這些行為直接的邏輯關(guān)系進(jìn)行描述。在威脅識(shí)別方面,設(shè)計(jì)了知識(shí)圖譜匹配算法將采集到的威脅事件發(fā)送至知識(shí)圖譜與已有威脅知識(shí)圖譜進(jìn)行匹配。針對(duì)新的網(wǎng)絡(luò)威脅,基于知識(shí)圖譜的自學(xué)習(xí)能力,設(shè)計(jì)了網(wǎng)絡(luò)威脅檢測(cè)自學(xué)習(xí)方案,可對(duì)新出現(xiàn)的網(wǎng)絡(luò)威脅事件進(jìn)行學(xué)習(xí),并更新已有知識(shí)圖譜。利用Neo4j來實(shí)現(xiàn)知識(shí)圖譜,采用Flume+Kafka+Storm的平臺(tái)架構(gòu)對(duì)網(wǎng)絡(luò)威脅行為數(shù)據(jù)進(jìn)行處理,提升知識(shí)圖譜各節(jié)點(diǎn)之間的遍歷搜索速度,加快網(wǎng)絡(luò)威脅行為識(shí)別效率。區(qū)別于傳統(tǒng)的檢測(cè)方法,基于知識(shí)圖譜的網(wǎng)絡(luò)威脅行為檢測(cè)不僅具有傳統(tǒng)檢測(cè)方法的優(yōu)勢(shì),而且解決了傳統(tǒng)檢測(cè)方法速度慢、資源消耗大、無法描述復(fù)雜網(wǎng)絡(luò)威脅行為攻擊鏈等問題。
知識(shí)圖譜又稱為科學(xué)知識(shí)圖譜,是引文分析與數(shù)據(jù)、信息可視化相結(jié)合的產(chǎn)物。知識(shí)圖譜本質(zhì)上是一種基于圖的數(shù)據(jù)結(jié)構(gòu),由節(jié)點(diǎn)和邊組成。其中節(jié)點(diǎn)即實(shí)體,由一個(gè)全局唯一的ID標(biāo)示,關(guān)系(也稱屬性)用于連接2個(gè)節(jié)點(diǎn),通過知識(shí)圖譜更加快捷地查找到所需要的內(nèi)容,以及發(fā)現(xiàn)節(jié)點(diǎn)與節(jié)點(diǎn)之間的關(guān)系。
本系統(tǒng)采用Neo4j實(shí)現(xiàn)知識(shí)圖譜,Neo4j是目前用的較多的圖數(shù)據(jù)庫(kù),它基于Java的高性能、高可靠性、可擴(kuò)展性強(qiáng)的開源圖數(shù)據(jù)庫(kù)[12],完全兼容ACID,即原子性(Atomicity)、一致性(Consistency)、隔離性(Isolation)和持久性 (Durability)。
Neo4j的數(shù)據(jù)存儲(chǔ)形式主要是節(jié)點(diǎn)(Node)和邊(Edge)來組織數(shù)據(jù)。Node可以代表知識(shí)圖譜中的實(shí)體;Edge可以用來代表實(shí)體間的關(guān)系,關(guān)系可以有方向,兩端對(duì)應(yīng)開始節(jié)點(diǎn)和結(jié)束節(jié)點(diǎn)。另外,可以在Node上加一個(gè)或多個(gè)標(biāo)簽表示實(shí)體的分類,以及一個(gè)鍵值對(duì)集合來表示該實(shí)體除了關(guān)系屬性之外的一些額外屬性。關(guān)系也可以附帶額外的屬性。其使用的存儲(chǔ)后端專門為圖結(jié)構(gòu)數(shù)據(jù)的存儲(chǔ)和管理進(jìn)行定制和優(yōu)化,在圖上互相關(guān)聯(lián)的節(jié)點(diǎn)在數(shù)據(jù)庫(kù)中的物理地址也指向彼此,因此更能發(fā)揮出圖結(jié)構(gòu)形式數(shù)據(jù)的優(yōu)勢(shì)。
Flume是Cloudera提供的一個(gè)高可用、高可靠、分布式的海量日志采集、聚合和傳輸系統(tǒng)。Flume在數(shù)據(jù)輸入上支持:
① Avro:監(jiān)聽Avro端口,接受來自外部Avro客戶端的事件流。利用Avro可以實(shí)現(xiàn)多級(jí)流動(dòng)、扇出流和扇入流等效果。
② Spooling Directory:監(jiān)視指定目錄,讀取新文件的內(nèi)容作為數(shù)據(jù)源。
③ NetCat:監(jiān)聽一個(gè)指定的端口,并將接收到的數(shù)據(jù)的每一行轉(zhuǎn)換為一個(gè)事件。
④ HTTP:基于http協(xié)議收集消息。
Flume允許復(fù)雜的數(shù)據(jù)流動(dòng)模型,事務(wù)性的數(shù)據(jù)傳遞保證了數(shù)據(jù)的可靠性,并且Flume支持文件型Channel,提供了可恢復(fù)性。
Kafka[13]是由Apache軟件基金會(huì)開發(fā)的一個(gè)開源流處理平臺(tái),是一種高吞吐量的分布式發(fā)布訂閱消息系統(tǒng),它可以處理消費(fèi)者在網(wǎng)站中的所有動(dòng)作流數(shù)據(jù)。因此,本文選擇Apache Kafka[14]作為事件收集與事件處理的中間件。Kafka可以是一臺(tái)服務(wù)器,也可以是服務(wù)器集群,統(tǒng)稱為broker。每條發(fā)布到broker上的消息都有一個(gè)類別,成為topic。而每個(gè)topic下對(duì)應(yīng)了多個(gè)持久化的數(shù)據(jù)文件,即partition。每個(gè)topic在集群環(huán)境中有多個(gè)備份。
Storm[15]是一個(gè)分布式的、容錯(cuò)的實(shí)時(shí)流計(jì)算系統(tǒng),可以方便地在一個(gè)計(jì)算機(jī)集群中編寫與擴(kuò)展復(fù)雜的實(shí)時(shí)計(jì)算,其具有如下優(yōu)勢(shì)[16]:
① 低延遲與高性能:Storm集群主要由工作進(jìn)程、線程和任務(wù)構(gòu)成。每臺(tái)主機(jī)上可運(yùn)行多個(gè)工作進(jìn)程,每個(gè)工作進(jìn)程又可以創(chuàng)建多個(gè)線程,每個(gè)線程可以執(zhí)行多任務(wù),而任務(wù)是真正進(jìn)行數(shù)據(jù)處理的實(shí)體。針對(duì)開發(fā)者創(chuàng)建的任務(wù)拓?fù)鋱D,Storm能根據(jù)集群中各個(gè)主機(jī)的性能,恰當(dāng)?shù)胤峙淙蝿?wù)。
② 高可靠與高容錯(cuò):Storm可以保證接收的所有數(shù)據(jù)都能被完全處理,而如果數(shù)據(jù)在處理過程中出現(xiàn)異常,Storm會(huì)重新部署出錯(cuò)的處理單元,保證處理單元永遠(yuǎn)運(yùn)行。
③ 流處理:批處理框架Hadoop[17]運(yùn)行的是MapReduce job,當(dāng)job結(jié)束后主機(jī)將會(huì)進(jìn)入閑置狀態(tài)。Storm上運(yùn)行的是拓?fù)?,可以不斷根?jù)拓?fù)浞职l(fā)任務(wù)到處理單元。
本文設(shè)計(jì)的系統(tǒng)由大數(shù)據(jù)平臺(tái)、威脅事件分析與知識(shí)圖譜構(gòu)建模塊、持久化存儲(chǔ)與前端展示模塊部分構(gòu)成,如圖1所示。
圖1 系統(tǒng)架構(gòu)Fig.1 System architecture
在實(shí)際網(wǎng)絡(luò)環(huán)境中,系統(tǒng)采集來自網(wǎng)絡(luò)中各個(gè)終端節(jié)點(diǎn)上的防火墻探針發(fā)送的網(wǎng)絡(luò)威脅事件信息,將搜集到的各種網(wǎng)絡(luò)威脅事件信息發(fā)送到Flume+Kafka+Storm構(gòu)成的大數(shù)據(jù)平臺(tái),然后由大數(shù)據(jù)平臺(tái)將網(wǎng)絡(luò)威脅事件實(shí)時(shí)地發(fā)送至知識(shí)圖譜學(xué)習(xí)識(shí)別,并通過Neo4j圖數(shù)據(jù)庫(kù)存儲(chǔ)生成的知識(shí)圖譜,最后將未識(shí)別成功的數(shù)據(jù)傳到MySQL關(guān)系型數(shù)據(jù)庫(kù)。然后通過Spring,SpringMVC和Mybatis框架進(jìn)行數(shù)據(jù)處理并最終返回給前端,由前端將實(shí)時(shí)的攻擊界面展示給用戶。
(1) 數(shù)據(jù)采集
在事件采集階段,使用Flume平臺(tái)提供的接口,搜集已授權(quán)的終端節(jié)點(diǎn)上的各種網(wǎng)絡(luò)威脅事件,再將這些網(wǎng)絡(luò)威脅事件提交給Kafka平臺(tái)進(jìn)行緩沖處理,隨后產(chǎn)生與消費(fèi)速率相匹配的事件流發(fā)往Storm平臺(tái),由其產(chǎn)生實(shí)時(shí)的數(shù)據(jù)流發(fā)往Neo4j。
(2) 事件識(shí)別
在系統(tǒng)進(jìn)行初始化的同時(shí),系統(tǒng)同時(shí)訪問圖數(shù)據(jù)庫(kù)Neo4j,從中提取現(xiàn)有的網(wǎng)絡(luò)威脅事件的知識(shí)圖譜,將其載入到內(nèi)存中,運(yùn)行的時(shí)候可以直接在內(nèi)存中訪問,避免在識(shí)別過程中多次對(duì)數(shù)據(jù)庫(kù)訪問,提高了系統(tǒng)的執(zhí)行效率。當(dāng)遇到網(wǎng)絡(luò)威脅事件時(shí),系統(tǒng)直接從內(nèi)存中讀取知識(shí)圖譜與網(wǎng)絡(luò)威脅事件比對(duì)。
(3) 威脅學(xué)習(xí)
當(dāng)系統(tǒng)出現(xiàn)比對(duì)異常時(shí),即發(fā)現(xiàn)了未知事件,就啟動(dòng)學(xué)習(xí)功能,觸發(fā)威脅學(xué)習(xí)模塊。系統(tǒng)通過學(xué)習(xí)此事件,將相關(guān)威脅事件信息加入知識(shí)圖譜中,并更新內(nèi)存中的知識(shí)圖譜。
(4) 主機(jī)評(píng)估
系統(tǒng)根據(jù)識(shí)別模塊已經(jīng)統(tǒng)計(jì)的網(wǎng)絡(luò)威脅行為數(shù)據(jù),對(duì)此主機(jī)IP地址進(jìn)行判斷其威脅程度的高低,將威脅程度高的主機(jī)納入黑名單中并進(jìn)行廣播處理。
(5) 數(shù)據(jù)統(tǒng)計(jì)
在知識(shí)圖譜更新完成后,系統(tǒng)再統(tǒng)計(jì)并記錄有關(guān)事件的攻擊次數(shù)等信息,提供給統(tǒng)計(jì)算法,供其進(jìn)行進(jìn)一步的分析。
(6) 數(shù)據(jù)持久化
在知識(shí)圖譜更新完成后,系統(tǒng)將這些數(shù)據(jù)進(jìn)行持久化,將其存儲(chǔ)到MySQL和Neo4j數(shù)據(jù)庫(kù)中,防止數(shù)據(jù)丟失。
(7) 可視化處理
系統(tǒng)調(diào)用前端顯示模塊,將此網(wǎng)絡(luò)威脅事件的信息實(shí)時(shí)更新到前端,給用戶展示實(shí)時(shí)的安全情況。
系統(tǒng)的軟件架構(gòu)如圖2所示,主要分為應(yīng)用層、接口層、邏輯層、網(wǎng)絡(luò)層和存儲(chǔ)層。
圖2 系統(tǒng)軟件架構(gòu)Fig.2 System software architecture
① 應(yīng)用層:用戶首先進(jìn)行注冊(cè),在通過認(rèn)證后,進(jìn)入整個(gè)系統(tǒng)進(jìn)行全局管理。服務(wù)器集群中的每個(gè)節(jié)點(diǎn)將自己采集到的網(wǎng)絡(luò)威脅事件分析處理后交給系統(tǒng)進(jìn)行匹配和更新。
② 接口層:系統(tǒng)中包含用戶注冊(cè)接口、身份認(rèn)證接口、數(shù)據(jù)上傳接口、網(wǎng)絡(luò)威脅事件匹配接口和IP控制接口。
③ 邏輯層:通過調(diào)用接口實(shí)現(xiàn)了身份認(rèn)證、網(wǎng)絡(luò)威脅事件匹配、網(wǎng)絡(luò)威脅事件的知識(shí)圖譜更新、節(jié)點(diǎn)危險(xiǎn)程度更新、IP黑白名單控制和整體事態(tài)感知功能。
④ 網(wǎng)絡(luò)層:主機(jī)集群通過大數(shù)據(jù)平臺(tái)進(jìn)行網(wǎng)絡(luò)威脅數(shù)據(jù)的采集與分析。用戶登錄系統(tǒng)后,可以對(duì)服務(wù)器采集到的網(wǎng)絡(luò)威脅事件數(shù)據(jù)進(jìn)行管理。
⑤ 存儲(chǔ)層:接收到新的網(wǎng)絡(luò)威脅事件后,對(duì)知識(shí)圖譜進(jìn)行更新,新的事件、賬戶信息更新,存放到數(shù)據(jù)庫(kù)中。
在事件采集模塊中,系統(tǒng)采用Flume+Kafka+Storm的數(shù)據(jù)采集處理框架,通過 Flume提供的接口,收集大量已授權(quán)網(wǎng)絡(luò)發(fā)送的威脅事件,再將收集到的威脅事件提交到消息中間件 Kafka,之后在Storm中進(jìn)行數(shù)據(jù)的消費(fèi),傳入到知識(shí)圖譜中。系統(tǒng)的數(shù)據(jù)處理流程如圖3所示。
圖3 數(shù)據(jù)處理流程Fig.3 Data processing flow
系統(tǒng)包括6個(gè)模塊:大數(shù)據(jù)實(shí)時(shí)處理模塊、網(wǎng)絡(luò)威脅行為識(shí)別模塊、網(wǎng)絡(luò)威脅自學(xué)習(xí)模塊、黑名單策略模塊、數(shù)據(jù)持久化模塊和用戶模塊。系統(tǒng)功能組成如圖4所示。
圖4 系統(tǒng)功能模塊Fig.4 System function modules
大數(shù)據(jù)實(shí)時(shí)處理模塊負(fù)責(zé)搜集威脅事件并將其封裝成實(shí)時(shí)事件流傳輸給網(wǎng)絡(luò)威脅行為識(shí)別模塊,由其進(jìn)行識(shí)別處理,對(duì)于未能準(zhǔn)確識(shí)別的事件交由網(wǎng)絡(luò)威脅自學(xué)習(xí)模塊進(jìn)行處理;對(duì)于識(shí)別成功的事件交由黑名單策略模塊進(jìn)行分析處理;對(duì)于傳播影響度較大的IP地址進(jìn)行屏蔽處理,再將這些得到的信息交給數(shù)據(jù)持久化模塊進(jìn)行儲(chǔ)存,并將實(shí)時(shí)的攻擊信息交給用戶模塊呈現(xiàn)給用戶。
該模塊負(fù)責(zé)搜集威脅事件,產(chǎn)生實(shí)時(shí)的數(shù)據(jù)傳輸流到威脅行為發(fā)現(xiàn)模塊。在該模塊中,F(xiàn)lume平臺(tái)從所管理的計(jì)算機(jī)集群防火墻和監(jiān)控軟件中獲取訪問數(shù)據(jù),作為生產(chǎn)者,將數(shù)據(jù)發(fā)送給消息隊(duì)列處理系統(tǒng)Kafka;Kafka作為中間緩沖區(qū),解決生產(chǎn)消費(fèi)速率不匹配問題;Storm則充當(dāng)消費(fèi)者實(shí)時(shí)地處理數(shù)據(jù),產(chǎn)生實(shí)時(shí)的數(shù)據(jù)流傳輸給威脅識(shí)別模塊。該模塊在終端防火墻部署,作為數(shù)據(jù)源,防火墻上記錄有計(jì)算機(jī)與外界的各種訪問記錄,這些往來記錄作為系統(tǒng)的數(shù)據(jù)。
數(shù)據(jù)實(shí)時(shí)處理流程如圖5所示。從事件源獲取數(shù)據(jù)后,F(xiàn)lume,Kafka和Storm三個(gè)大數(shù)據(jù)平臺(tái)各自獨(dú)立運(yùn)行,通過事件流的順序連接形成整體的大數(shù)據(jù)處理平臺(tái)。
圖5 數(shù)據(jù)實(shí)時(shí)處理流程Fig.5 Real-time data processing flow
每個(gè)Flume源從數(shù)據(jù)源中不斷地獲取數(shù)據(jù),得到數(shù)據(jù)后將威脅事件的數(shù)據(jù)暫時(shí)存儲(chǔ)在管道中,在匯聚點(diǎn)中將數(shù)據(jù)分為一條條的基本單位事件發(fā)向緩沖區(qū)Kafka集群中。
數(shù)據(jù)流分為許多事件類型,推向緩沖區(qū)Kafka后,根據(jù)不同的事件類型被分往不同的主題中,并儲(chǔ)存在物理內(nèi)存中。物理內(nèi)存中以分區(qū)作為單位存儲(chǔ),等待Storm平臺(tái)發(fā)送需求數(shù)據(jù)的請(qǐng)求,再按照請(qǐng)求發(fā)送相應(yīng)規(guī)模的數(shù)據(jù)。傳輸時(shí)每條數(shù)據(jù)擁有自己的偏移量,并采用相應(yīng)的機(jī)制來保證有序性和傳輸可靠性。
Storm平臺(tái)從Kafka中得到消費(fèi)數(shù)據(jù)后,其中的組件Nimbus模塊則會(huì)根據(jù)當(dāng)前系統(tǒng)的繁忙情況和可負(fù)載的數(shù)據(jù)量,將處理信息的任務(wù)分給相對(duì)空閑的數(shù)據(jù)處理組件進(jìn)行處理。
該模塊將知識(shí)圖譜與Neo4j圖數(shù)據(jù)庫(kù)結(jié)合。在初始化階段,系統(tǒng)根據(jù)威脅事件的各個(gè)屬性來構(gòu)建知識(shí)圖譜,每一個(gè)節(jié)點(diǎn)表示一個(gè)威脅事件,節(jié)點(diǎn)之間的連線表示威脅事件之間的路徑關(guān)系,用Neo4j來儲(chǔ)存構(gòu)建好的知識(shí)圖譜,用于之后的威脅事件識(shí)別[18]。初始化完成后,從數(shù)據(jù)實(shí)時(shí)處理模塊中獲得實(shí)時(shí)的威脅事件流信息,比對(duì)威脅事件的各個(gè)屬性以此來判斷是否為相同事件,借助知識(shí)圖譜的特性提高威脅事件的識(shí)別速度。
該功能的實(shí)現(xiàn)主要依賴大數(shù)據(jù)平臺(tái)的計(jì)算能力和知識(shí)圖譜的擴(kuò)展學(xué)習(xí)能力。當(dāng)系統(tǒng)發(fā)現(xiàn)新的網(wǎng)絡(luò)威脅行為,且在已有知識(shí)圖譜無法識(shí)別該威脅,為此,可以對(duì)已獲取的新的網(wǎng)絡(luò)威脅行為的行為路徑進(jìn)行分析,與從其他終端節(jié)點(diǎn)上獲取的此新網(wǎng)絡(luò)威脅行為的行為特征進(jìn)行比對(duì)。當(dāng)系統(tǒng)比對(duì)一定數(shù)量后,系統(tǒng)便能對(duì)新的網(wǎng)絡(luò)威脅行為的行為特征和路徑準(zhǔn)確掌握,用以更新知識(shí)圖譜。
傳入威脅事件后,每次匹配成功,則將相應(yīng)主機(jī)節(jié)點(diǎn)的威脅程度進(jìn)行更新,在威脅程度超出一定范圍后,認(rèn)定其為被攻擊者控制的傀儡計(jì)算機(jī),自動(dòng)將此主機(jī)IP加入到黑名單中,之后再?gòu)V播通知集群中的各個(gè)主機(jī)節(jié)點(diǎn),對(duì)此IP進(jìn)行屏蔽,從而抑制由此IP發(fā)送的威脅事件的傳播。
黑名單策略模塊的業(yè)務(wù)流程如圖6所示,當(dāng)發(fā)現(xiàn)某臺(tái)主機(jī)被攻擊時(shí),馬上根據(jù)采集到的威脅事件的數(shù)據(jù)進(jìn)行查詢,即以該主機(jī)的IP為目的IP查詢出威脅事件的源IP,并標(biāo)記此源IP。判斷此IP是否是所有威脅事件傳播的起始IP,如果是,此源IP則為攻擊者;若不是,用其他被感染主機(jī)的數(shù)據(jù)繼續(xù)判斷該IP是否被標(biāo)記到達(dá)了一定次數(shù)N,若是則加入黑名單,并繼續(xù)以此IP為目的IP進(jìn)行查詢,直到到達(dá)頂層,找到攻擊者IP地址進(jìn)行廣播。
圖6 黑名單策略模塊流程Fig.6 Workflow of the blacklist policy module
該模塊將從Neo4j圖數(shù)據(jù)庫(kù)中讀取相關(guān)威脅事件信息,通過MySQL數(shù)據(jù)庫(kù)對(duì)這些事件信息進(jìn)行存儲(chǔ),然后再使用Mybatis,Spring和SpringMVC框架進(jìn)行數(shù)據(jù)處理,最終將處理后的數(shù)據(jù)流返回給前端用戶模塊。數(shù)據(jù)全部用MySQL數(shù)據(jù)庫(kù)進(jìn)行持久化存儲(chǔ)。由于sql寫在xml文件中,Mybatis便于統(tǒng)一管理和優(yōu)化,解除MySQL和程序代碼的耦合。提供映射標(biāo)簽,支持對(duì)象和數(shù)據(jù)庫(kù)orm字段關(guān)系的映射、對(duì)象關(guān)系映射標(biāo)簽和對(duì)象關(guān)系的組建。
用戶模塊主要分為2個(gè)功能:注冊(cè)功能和登錄功能。系統(tǒng)會(huì)按照用戶身份信息的不同將用戶分為普通用戶和管理員用戶。普通用戶即正常注冊(cè)使用的用戶,可以查看自己的主機(jī)遭受攻擊的數(shù)據(jù)統(tǒng)計(jì)。管理員用戶擁有高權(quán)限,可以看到所有用戶的受攻擊數(shù)據(jù)統(tǒng)計(jì),并可以監(jiān)視整個(gè)網(wǎng)絡(luò)。
基于知識(shí)圖譜的網(wǎng)絡(luò)威脅行為識(shí)別,其本質(zhì)為搜集的威脅事件與知識(shí)圖譜中的現(xiàn)有事件進(jìn)行比較,具體流程如圖7所示。
圖7 基于知識(shí)圖譜的網(wǎng)絡(luò)威脅行為識(shí)別流程Fig.7 Network threat behavior identification process based on knowledge graph
在威脅識(shí)別模塊接收到威脅事件時(shí),利用知識(shí)圖譜識(shí)別威脅事件[19]。將新的事件與知識(shí)圖譜內(nèi)已有的事件進(jìn)行比較,如果與一個(gè)事件的各個(gè)屬性都匹配上,則認(rèn)定為2個(gè)事件相同,然后將后續(xù)威脅事件按照當(dāng)前節(jié)點(diǎn)的路徑相連的節(jié)點(diǎn)相比較,如此循環(huán)直到?jīng)]有匹配上的,則此時(shí)威脅事件就達(dá)到了一個(gè)場(chǎng)景節(jié)點(diǎn),然后將沒有匹配上的事件傳輸?shù)綌?shù)據(jù)持久層供知識(shí)圖譜學(xué)習(xí)。
算法1是對(duì)基于知識(shí)圖譜的網(wǎng)絡(luò)威脅行為識(shí)別過程的描述。在算法1中,安全事件作為基本事件類型,由上層的大數(shù)據(jù)平臺(tái)傳導(dǎo),每一個(gè)事件包括不同的屬性,例如源IP和目的IP等,通過對(duì)這些屬性具體分析識(shí)別得到結(jié)果。
算法1:基于知識(shí)圖譜的網(wǎng)絡(luò)威脅行為識(shí)別算法Input E:Security incident M:Knowledge mapOutput E1:Not matching successfully security incidentBegin whileflag==True do Select event E from data platform if(E in M) then Continue comparison along node path Else Send events to data persistence layer End if End whileEnd
對(duì)于未能識(shí)別的網(wǎng)絡(luò)威脅,需要通過網(wǎng)絡(luò)威脅行為學(xué)習(xí)算法進(jìn)行學(xué)習(xí),并對(duì)已有知識(shí)圖譜進(jìn)行擴(kuò)充[20]。網(wǎng)絡(luò)威脅行為學(xué)習(xí)流程如圖8所示。當(dāng)有威脅事件被檢測(cè)到時(shí),開始判斷是否為已知威脅事件,如果為是,則將攻擊路徑和攻擊結(jié)果記錄到數(shù)據(jù)持久層;如果為否,則根據(jù)攻擊結(jié)果檢索相同的攻擊路徑并計(jì)算相同路徑的概率,判斷概率是否大于系統(tǒng)設(shè)定的閾值,若大于則將此路徑構(gòu)建到網(wǎng)絡(luò)威脅行為庫(kù)中,若不大于則重新開始監(jiān)聽新的事件。
圖8 網(wǎng)絡(luò)威脅行為學(xué)習(xí)流程Fig.8 Network threat behavior learning process
算法2是對(duì)網(wǎng)絡(luò)威脅行為學(xué)習(xí)過程的描述。
算法2:網(wǎng)絡(luò)威脅行為學(xué)習(xí)算法Input E:Security incident D:Network dangerous behavior databaseOutput D1:Updated network dangerous behavior database Begin whileflag==True do if(E in D) then Record path into data persistence layer Record attack results into data persistence layer else Retrieve the same attack path according to the attack result Calculate the probability of the same path in each path ifprobability>85%then flag==False Build this path into the network dangerous behavior database End if End if End whileEnd
本文設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)基于知識(shí)圖譜的網(wǎng)絡(luò)威脅行為分析系統(tǒng)。利用Flume + Kafka + Storm 構(gòu)建的數(shù)據(jù)處理平臺(tái),保證大量網(wǎng)絡(luò)威脅行為數(shù)據(jù)高效傳輸與處理。利用知識(shí)圖譜描述網(wǎng)絡(luò)威脅行為間的各種關(guān)系,并根據(jù)已有網(wǎng)絡(luò)威脅行為來動(dòng)態(tài)更新已有知識(shí)圖譜,實(shí)現(xiàn)網(wǎng)絡(luò)威脅行為的自學(xué)習(xí)。系統(tǒng)通過自學(xué)習(xí)、自生成的知識(shí)圖譜和實(shí)時(shí)更新的自適應(yīng)網(wǎng)絡(luò)威脅行為檢測(cè)方法,彌補(bǔ)了傳統(tǒng)網(wǎng)絡(luò)威脅檢測(cè)方法難以檢測(cè)未知、復(fù)雜的網(wǎng)絡(luò)威脅行為的技術(shù)短板,并提升了檢測(cè)效率。