王艷偉,鄔 江,羅赟騫,史春見
(中電長(zhǎng)城網(wǎng)際系統(tǒng)應(yīng)用有限公司,北京 102209)
隨著信息技術(shù)的發(fā)展,黑客破壞、數(shù)據(jù)篡改、信息泄露、間諜軟件等攻擊事件層出不窮,網(wǎng)絡(luò)安全形勢(shì)越來越嚴(yán)峻。Gartner[1]和CB Insights[2]的分析表明,網(wǎng)絡(luò)流量分析是目前網(wǎng)絡(luò)攻擊檢測(cè)的重要手段,因此,各信息安全廠商推出多種基于網(wǎng)絡(luò)流量或特定網(wǎng)絡(luò)協(xié)議的安全檢測(cè)引擎或系統(tǒng),具備不同的檢測(cè)重點(diǎn)和功能特點(diǎn)。但是,隨著信息技術(shù)不斷進(jìn)步,出現(xiàn)了大量復(fù)雜和未知的網(wǎng)絡(luò)攻擊,僅靠單一的檢測(cè)手段難以有效監(jiān)測(cè)。研究既能解決檢測(cè)手段的瓶頸問題,又能利用多種現(xiàn)有流量分析引擎的監(jiān)測(cè)體系變得具有重要的現(xiàn)實(shí)意義。
隨著大數(shù)據(jù)技術(shù)的廣泛應(yīng)用,國內(nèi)外相關(guān)組織和廠家的安全產(chǎn)品向大數(shù)據(jù)平臺(tái)遷移的趨勢(shì)越來越明顯,出現(xiàn)了多個(gè)開源的安全大數(shù)據(jù)分析框架和平臺(tái)。Intel和Cloudera構(gòu)建了Apache spot,采用大數(shù)據(jù)分析及機(jī)器學(xué)習(xí)提供先進(jìn)的威脅檢測(cè),提高了對(duì)安全威脅的可視性[3];Hortonworks構(gòu)建了Apache Metron網(wǎng)絡(luò)安全應(yīng)用框架,專注于安全信息和事件管理(Security Information & Event Management,SIEM)[4];Security Onion基于Elastic套件提供了一個(gè)免費(fèi)的安全分析平臺(tái)[5],重點(diǎn)是入侵檢測(cè)、企業(yè)安全監(jiān)視和日志管理;Moloch通過Elasticsearch構(gòu)建了一個(gè)流量回溯分析系統(tǒng),實(shí)現(xiàn)對(duì)原始PCAP文件的快速查看[6]。上述平臺(tái)中,Apache Metron和Security Onion專注于SIEM,Apache spot和Moloch專注于網(wǎng)絡(luò)流量分析,兩組框架在各自的應(yīng)用場(chǎng)景中都有較強(qiáng)的優(yōu)勢(shì)。
本文結(jié)合SIEM的優(yōu)勢(shì)和網(wǎng)絡(luò)流量分析的特點(diǎn),提出一種新的網(wǎng)絡(luò)流量監(jiān)測(cè)體系設(shè)計(jì)方法,通過定義一套開放聚合的框架和通用的數(shù)據(jù)輸入、輸出訪問接口,來完成各類流量檢測(cè)引擎的快速適配和接入,實(shí)現(xiàn)多種檢測(cè)引擎的能力聚合和統(tǒng)一分析,應(yīng)對(duì)新形勢(shì)下復(fù)雜、動(dòng)態(tài)、隱蔽的網(wǎng)絡(luò)攻擊,展開高效檢測(cè)和交叉驗(yàn)證的新篇章。
整體框架按照數(shù)據(jù)的處理流程劃分為三層,依次是流量采集輸入層、聚合檢測(cè)分析層和檢測(cè)告警輸出層。如圖1所示。
圖1 開放聚合式網(wǎng)絡(luò)流量監(jiān)測(cè)體系架構(gòu)
流量采集輸入層:主要負(fù)責(zé)IP流量采集、協(xié)議識(shí)別、元數(shù)據(jù)提取的工作,完成元數(shù)據(jù)標(biāo)準(zhǔn)化輸出接口,提供聚合多種協(xié)議解析的處理組件,以適配統(tǒng)一和特定的數(shù)據(jù)輸入要求。
聚合檢測(cè)分析層:提供容納多種流量檢測(cè)引擎和模型的容器,經(jīng)過數(shù)據(jù)輸入、輸出的適配后,可以快速進(jìn)行部署應(yīng)用,實(shí)現(xiàn)檢測(cè)能力的聚合。
檢測(cè)告警輸出層:定義統(tǒng)一的告警輸出接口,接收多種聚合引擎或模型檢測(cè)上報(bào)的安全告警,在規(guī)范一致的數(shù)據(jù)層面開展告警展示、查詢、關(guān)聯(lián)分析等應(yīng)用。
另外,資產(chǎn)信息和威脅情報(bào)作為知識(shí)庫,提供資產(chǎn)風(fēng)險(xiǎn)評(píng)估和規(guī)則檢測(cè)的數(shù)據(jù)支撐。
這些框架和設(shè)計(jì)可以建立在大數(shù)據(jù)平臺(tái)上,但在此不對(duì)大數(shù)據(jù)存儲(chǔ)和分析展開討論,針對(duì)安全大數(shù)據(jù)分析的應(yīng)用和技術(shù)文章可以參考文獻(xiàn)[7]~[12]。
網(wǎng)絡(luò)流量的數(shù)據(jù)來源目前主要包括流量端口鏡像、NetFlow、Proxy、SNMP(Simple Network Management Protocol)等采集方式。NetFlow由Cisco提出并實(shí)現(xiàn),目前大部分網(wǎng)絡(luò)設(shè)備都提供類似的功能支持,NetFlow可以提供網(wǎng)絡(luò)流量的會(huì)話級(jí)視圖,易于管理和易讀,但不能提供網(wǎng)絡(luò)流量的完整記錄;鏡像流量方式可以采集完整的網(wǎng)絡(luò)流量數(shù)據(jù)包,有利于開展全流量分析,但需要考慮實(shí)時(shí)大數(shù)據(jù)存儲(chǔ)與計(jì)算資源需求的平衡;其他幾種方式適用于特定應(yīng)用和協(xié)議的數(shù)據(jù)采集,不具備通用性和擴(kuò)展性。
流量采集輸入層采用鏡像流量方式,可以獲取完整的IP數(shù)據(jù)報(bào)文和元數(shù)據(jù)信息。流量采集輸入層主要負(fù)責(zé)IP流量采集、協(xié)議識(shí)別還原、元數(shù)據(jù)提取和定義輸出接口的工作,工作原理描述如下。
IP流量采集探針基于鏡像端口捕獲數(shù)據(jù)包,一路輸出到上層的聚合檢測(cè)規(guī)則模塊,進(jìn)行基于流的規(guī)則檢測(cè),也可以定義上層檢測(cè)規(guī)則模塊的回調(diào)接口,進(jìn)行實(shí)時(shí)的規(guī)則匹配或過濾;另一路按照PCAP包格式落盤存儲(chǔ),用于開展后續(xù)的全流量回溯分析;最后一路將采集到的數(shù)據(jù)流提交到協(xié)議識(shí)別和還原的模塊,進(jìn)行預(yù)處理解析工作。
協(xié)議識(shí)別模塊完成基礎(chǔ)元數(shù)據(jù)的提取(如五元組信息等),同時(shí)允許定義多種協(xié)議解析的插件,以適配新的協(xié)議識(shí)別需求;協(xié)議還原模塊基于通用應(yīng)用協(xié)議類型還原文件,還原完成的文件落盤到存儲(chǔ)模塊,后續(xù)開展基于文件的惡意樣本檢測(cè)。協(xié)議識(shí)別后的結(jié)構(gòu)化數(shù)據(jù)提交到元數(shù)據(jù)提取模塊。
元數(shù)據(jù)提取模塊接收協(xié)議識(shí)別模塊輸出的結(jié)構(gòu)化元數(shù)據(jù),按照J(rèn)SON(JavaScript Object Notation)格式定義元數(shù)據(jù)標(biāo)準(zhǔn)化輸出格式。同時(shí)針對(duì)單個(gè)元數(shù)據(jù)包提供基于會(huì)話層的數(shù)據(jù)聚合,以支持基于會(huì)話層的檢測(cè)引擎。元數(shù)據(jù)標(biāo)準(zhǔn)化輸出格式按照粒度劃分為兩種:IP單包元數(shù)據(jù)和會(huì)話層元數(shù)據(jù)。
為了適配上層多種類型的聚合檢測(cè)引擎,定義了幾種元數(shù)據(jù)推送的方式:JSON文件、數(shù)據(jù)庫存儲(chǔ)、Kafka[9]流推送、RESTFul接口[10],同時(shí)定義相應(yīng)的過濾器,針對(duì)不同的應(yīng)用類型或字段進(jìn)行定制輸出。
聚合檢測(cè)分析層提供一個(gè)聚合的容器機(jī)制,通過對(duì)輸入元數(shù)據(jù)和輸出告警的標(biāo)準(zhǔn)化適配后,可以快速接入特定的檢測(cè)模塊,實(shí)現(xiàn)檢測(cè)能力的聚合。
聚合檢測(cè)模塊分為三類,分別是聚合檢測(cè)規(guī)則、聚合檢測(cè)引擎和聚合檢測(cè)模型,依次表示了檢測(cè)技術(shù)演進(jìn)的不同階段。
聚合檢測(cè)規(guī)則包括了基于黑白名單的靜態(tài)檢測(cè)規(guī)則、基于流式特征的檢測(cè)規(guī)則、基于組合的檢測(cè)規(guī)則,規(guī)則對(duì)輸入數(shù)據(jù)的需求主要包括基于五元組的元數(shù)據(jù)信息和IP流式數(shù)據(jù)包。
聚合檢測(cè)引擎針對(duì)特定流量或各類協(xié)議的檢測(cè)引擎進(jìn)行數(shù)據(jù)接口的封裝,數(shù)據(jù)源從流量采集輸出層按照不同的推送方式訂閱,經(jīng)過檢測(cè)引擎的分析,產(chǎn)生最終的檢測(cè)結(jié)果,以統(tǒng)一的告警形式輸出。
聚合檢測(cè)模型針對(duì)特定應(yīng)用場(chǎng)景的流量檢測(cè)算法和模型進(jìn)行深度的集成,然后用基礎(chǔ)元數(shù)據(jù)完成二次數(shù)據(jù)的預(yù)處理分析。
檢測(cè)告警輸出層作為聚合檢測(cè)能力的呈現(xiàn),定義統(tǒng)一的告警輸入接口,告警包含攻擊類型、攻擊方式、攻擊路徑和異常點(diǎn)的結(jié)構(gòu)化描述信息。檢測(cè)告警輸出層定義統(tǒng)一的告警輸出方式,至少包括Syslog日志格式和RESTFul接口兩種開放式的輸出類型,以松耦合的方式接收多種聚合引擎或模型檢測(cè)上報(bào)的安全告警。
告警被接收后,最終落地輸出到統(tǒng)一的數(shù)據(jù)庫存儲(chǔ),在規(guī)范一致的數(shù)據(jù)層面開展告警展示、查詢、關(guān)聯(lián)分析等應(yīng)用。
基于開放聚合式的網(wǎng)絡(luò)流量安全監(jiān)測(cè)體系架構(gòu)的設(shè)計(jì)思路,結(jié)合現(xiàn)實(shí)環(huán)境中具備的流量采集和流量檢測(cè)分析能力,構(gòu)建具備開放聚合能力的邊界流量安全監(jiān)測(cè)平臺(tái)(以下簡(jiǎn)稱為監(jiān)測(cè)平臺(tái)),實(shí)現(xiàn)企業(yè)級(jí)甚至運(yùn)營(yíng)商城域網(wǎng)出口流量的安全監(jiān)測(cè)需求。監(jiān)測(cè)平臺(tái)允許第三方流量安全檢測(cè)引擎分別在元數(shù)據(jù)輸入層、檢測(cè)告警輸出層接入平臺(tái),并完成檢測(cè)能力的聚合,具體平臺(tái)設(shè)計(jì)如圖2所示。
圖2 基于開放聚合框架的邊界流量安全監(jiān)測(cè)平臺(tái)設(shè)計(jì)
圖3 元數(shù)據(jù)標(biāo)準(zhǔn)格式
監(jiān)測(cè)平臺(tái)構(gòu)建在分布式環(huán)境上,操作系統(tǒng)為CentOS 7,流量采集探針采用C++語言,聚合協(xié)議處理組件封裝為動(dòng)態(tài)庫方式進(jìn)行加載,分布式存儲(chǔ)利用Hadoop環(huán)境下的HDFS/HBASE[11],部分參考了文獻(xiàn)[12]里采用的大數(shù)據(jù)技術(shù),檢索分析使用ES(ElasticSearch)技術(shù),在線數(shù)據(jù)共享通過端口復(fù)制、Kafka、Syslog、RESTFul等技術(shù)完成聚合檢測(cè)組件的松耦合接口對(duì)接。
2.2.1流量采集流程和接口
流量采集輸入層重點(diǎn)負(fù)責(zé)流量采集探針、聚合協(xié)議處理組件和元數(shù)據(jù)推送接口三個(gè)部分的工作。
流量采集探針設(shè)計(jì)了兩種流量采集方式:對(duì)千兆以下的網(wǎng)絡(luò)直接利用網(wǎng)卡驅(qū)動(dòng)進(jìn)行抓包;對(duì)千兆以上的網(wǎng)絡(luò)使用DPDK(Data Plane Development Kit)技術(shù)完成高速流量下的數(shù)據(jù)采集。以太網(wǎng)鏡像流量經(jīng)過高速數(shù)據(jù)采集后,一部分通過端口復(fù)制方式推送給流式規(guī)則檢測(cè)組件,或無法接入元數(shù)據(jù)的第三方檢測(cè)分析設(shè)備,采集探針同時(shí)根據(jù)平臺(tái)部署,將已解析流量以PCAP格式輸出到HDFS存儲(chǔ),以便后續(xù)開展追蹤溯源。
IP流數(shù)據(jù)進(jìn)入聚合協(xié)議處理組件,進(jìn)行協(xié)議識(shí)別、會(huì)話重組、元數(shù)據(jù)提取以及應(yīng)用解析還原。聚合數(shù)據(jù)處理組件輸出的各類元數(shù)據(jù)信息、文件、郵件等,作為聚合檢測(cè)分析引擎的分析對(duì)象輸入,按照統(tǒng)一的元數(shù)據(jù)標(biāo)準(zhǔn)格式和接口進(jìn)行推送。
元數(shù)據(jù)按照J(rèn)SON格式進(jìn)行標(biāo)準(zhǔn)化輸出,第一層包含IP五元組等關(guān)鍵信息,具體應(yīng)用層協(xié)議的元數(shù)據(jù)信息在第二層展開描述,具體的格式定義參考圖3。
上述以IP單包元數(shù)據(jù)格式輸出的元數(shù)據(jù)標(biāo)準(zhǔn)格式,以及通過會(huì)話重組后基于會(huì)話層輸出的元數(shù)據(jù)標(biāo)準(zhǔn)格式,增加了會(huì)話和協(xié)議匯聚后的信息。
元數(shù)據(jù)推送接口包含兩部分內(nèi)容:元數(shù)據(jù)過濾器和推送方式。元數(shù)據(jù)過濾器以ES常用的DSL腳本查詢語言為基礎(chǔ)進(jìn)行定義,根據(jù)不同的聚合檢測(cè)組件要求進(jìn)行配置。推送方式以Kafka流為例來說明:按照不同的過濾器和組件推送需求,創(chuàng)建不同的Kafka主題,以消息訂閱分發(fā)的方式完成元數(shù)據(jù)的推送,Kafka具備分布式消息緩存機(jī)制,能應(yīng)對(duì)大流量環(huán)境下的數(shù)據(jù)吞吐量和緩解高峰期消息處理壓力。
2.2.2聚合檢測(cè)分析流程和接口
聚合檢測(cè)分析層的核心功能是:使用威脅情報(bào)技術(shù)和入侵檢測(cè)技術(shù)對(duì)流量進(jìn)行預(yù)處理,發(fā)現(xiàn)已知威脅;使用人工智能技術(shù)對(duì)還原文件和網(wǎng)絡(luò)流量進(jìn)行檢測(cè),發(fā)現(xiàn)未知威脅。其檢測(cè)流程圖如圖4所示。
圖4 聚合檢測(cè)流程
流量采集輸入層采集流量后,通過消息隊(duì)列將流量數(shù)據(jù)推送給聚合檢測(cè)分析層進(jìn)行在線分析,或者將還原文件存儲(chǔ)到Hadoop環(huán)境的HDFS中。
在線分析層進(jìn)行數(shù)據(jù)預(yù)處理,并開始聚合規(guī)則檢測(cè)。IP流數(shù)據(jù)或元數(shù)據(jù)進(jìn)入聚合規(guī)則檢測(cè)組件,進(jìn)行三類規(guī)則(五元組+關(guān)鍵詞規(guī)則、Suricata規(guī)則、數(shù)據(jù)回溯規(guī)則)檢測(cè),并使用符合STIX(Structured Threat Information eXpression)標(biāo)準(zhǔn)格式的威脅情報(bào)信息作為輸入標(biāo)準(zhǔn),對(duì)輸入流進(jìn)行威脅匹配。威脅情報(bào)庫將定時(shí)從外部威脅情報(bào)源接收最新的威脅情報(bào)信息。
智能檢測(cè)在實(shí)現(xiàn)聚合檢測(cè)分析相關(guān)功能上,主要體現(xiàn)在流量統(tǒng)計(jì)分析、回溯分析、域名分析、郵件分析、文件分析、異常流量檢測(cè),其核心技術(shù)是采用人工智能分析文件和流量。
惡意代碼檢測(cè)模塊定期讀取HDFS中存儲(chǔ)的文件,采用動(dòng)態(tài)和靜態(tài)分析的方式提取文件的相關(guān)特征。靜態(tài)分析采用反匯編的方式提取文件相關(guān)靜態(tài)特征;動(dòng)態(tài)分析采用沙箱的方式提取文件相關(guān)動(dòng)態(tài)特征?;谔崛〉奶卣?,使用淺層機(jī)器學(xué)習(xí)或深度學(xué)習(xí)的方法,如LSTM(Long Short-Term Memory)、CNN(Convolutional Neural Network),構(gòu)建模型檢測(cè)文件屬性。流量檢測(cè)模型實(shí)時(shí)檢測(cè)NoSQL數(shù)據(jù)庫中存入的流量元數(shù)據(jù),根據(jù)網(wǎng)絡(luò)流量和應(yīng)用層元數(shù)據(jù)信息,提取相關(guān)特征,采用淺層機(jī)器學(xué)習(xí)或深度學(xué)習(xí)方法構(gòu)建模型,實(shí)現(xiàn)DGA(Domain Generation Algorithm)域名檢測(cè)、用戶行為分析、惡意連接分析和惡意流量檢測(cè)。鑒于流量的海量性,一般采用非監(jiān)督的學(xué)習(xí)方法構(gòu)建檢測(cè)模型[13],如:Auto-Encoder,DAGMM(Deep Autoencoding Gaussian Mixture Model)模型。
使用人工智能方法對(duì)文件和流量進(jìn)行檢測(cè),不僅能夠提高檢測(cè)精度,還能減少誤報(bào)率。聚合檢測(cè)分析層發(fā)現(xiàn)的安全事件或檢測(cè)結(jié)果按照告警標(biāo)準(zhǔn)格式輸出,接收模塊提取的告警信息在NoSQL數(shù)據(jù)庫內(nèi)集中存儲(chǔ),并在可視化層進(jìn)行通用展示分析。
2.2.3檢測(cè)告警輸出流程和接口
檢測(cè)告警輸出層定義了告警標(biāo)準(zhǔn)格式、輸出方式以及告警的應(yīng)用分析。
告警標(biāo)準(zhǔn)格式參考國際國內(nèi)相關(guān)標(biāo)準(zhǔn)規(guī)范、網(wǎng)站安全事件信息發(fā)布格式、國測(cè)事件型漏洞定義、綠盟/科來等Syslog日志、部分項(xiàng)目安全分析報(bào)告、系統(tǒng)生成/外部集成/人工分析等多類應(yīng)用場(chǎng)景、安全大數(shù)據(jù)綜合分析應(yīng)用場(chǎng)景,制定安全告警事件的標(biāo)準(zhǔn)格式,參見表1。
安全告警接收接口定義了兩種實(shí)現(xiàn)方式:Syslog和RESTFul接口,安全告警接收模塊收到各類安全告警事件,統(tǒng)一輸出到安全告警事件庫中。
告警接收模塊基于元數(shù)據(jù)和安全告警存儲(chǔ)記錄,結(jié)合威脅情報(bào)信息和資產(chǎn)信息,開展告警統(tǒng)計(jì)、告警關(guān)聯(lián)分析、殺傷鏈分析、資產(chǎn)風(fēng)險(xiǎn)分析和流量溯源追蹤等相關(guān)服務(wù)和應(yīng)用。
表1 元數(shù)據(jù)標(biāo)準(zhǔn)化格式定義
基于開放聚合框架的網(wǎng)絡(luò)流量監(jiān)測(cè)體系設(shè)計(jì)思路,結(jié)合流量采集、規(guī)則檢測(cè)、流量協(xié)議分析等子系統(tǒng),在3個(gè)月內(nèi)完成邊界流量安全監(jiān)測(cè)平臺(tái)的構(gòu)建,形成較完整的邊界流量檢測(cè)方案,在通過內(nèi)部環(huán)境測(cè)試之后,迅速應(yīng)用到重點(diǎn)項(xiàng)目的安全監(jiān)測(cè)工作中,并且發(fā)揮了良好的安全監(jiān)測(cè)效果,體現(xiàn)了架構(gòu)的開放性和快速聚合能力。
本文提出了一種基于開放聚合框架的網(wǎng)絡(luò)流量監(jiān)測(cè)體系設(shè)計(jì),通過以此設(shè)計(jì)構(gòu)建的邊界流量平臺(tái),初步具備了開放和聚合的特點(diǎn),可以快速集成第三方流量檢測(cè)引擎,實(shí)現(xiàn)安全監(jiān)測(cè)能力的聚合。未來,還需要在聚合協(xié)議處理組件的完備性、通用分布式計(jì)算能力和告警應(yīng)用分析場(chǎng)景上繼續(xù)對(duì)此設(shè)計(jì)作深入的研究和改善。