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