蔡元萃,杜紅艷,王欣
(1.中國勞動關系學院網絡信息中心,北京 100048;2.中國航天系統科學與工程研究院,北京 100083;3.中電智能科技有限公司,北京 102209)
隨著云計算、大數據、人工智能給人類社會與生活帶來極大變革,網絡環境和數據利用日趨復雜,催生了嚴峻的網絡安全問題與挑戰,網絡安全成為了信息時代的核心命題[1],傳統的網絡安全管理思路,如“重建設、輕管理”、一成不變的安全策略等,都難以適應網絡安全形勢瞬息萬變新時代,如何智能調整安全策略,自動識別新型網絡攻擊,是當下網絡安全的難點和痛點。本文在傳統網絡安全態勢感知平臺基礎上提出響應式解決方案,并在識別新型網絡攻擊方面提出智能預測的應用思路,以提升網絡安全態勢感知平臺的主動性和智能性。
網絡安全態勢感知研究是近幾年發展起來的一個熱門研究領域。網絡安全態勢感知在提高網絡的監控能力、應急響應能力和預測網絡安全的發展趨勢等方面都具有重要的意義。它融合所有信息實時評估網絡安全狀況,為網絡安全的決策提供依據,將風險和損失降到最低。一般來說,網絡安全態勢感知按功能分為要素提取、評估和預測三個方面[2]。
在要素提取方面,態勢要素主要包括靜態的配置信息、動態的運行信息以及網絡的流量信息等。國外的學者一般通過提取某種角度的態勢要素來評估網絡安全態勢,但存在無法獲取全面信息的問題。國內的學者一般綜合考慮網絡各方面的信息,比如充分使用大數據技術,從多個角度分層次描述網絡的安全態勢,但沒有考慮指標體系中各因素之間的關聯性。
在態勢評估方面,研究者們摒棄了研究單一的安全事件,而是從宏觀角度去考慮網絡整體的安全狀況,以獲得網絡安全的綜合評估。目前用于網絡安全態勢評估的算法大致分為以下幾類:邏輯關系法、數學模型法、概率統計法和推理規則法。其中邏輯關系不能解釋系統中存在的不確定性,概率統計容易造成計算量爆炸問題,影響態勢評估的實時性,推理規則在輸入條件沖突時,方法的準確性會受到嚴重的影響。
在態勢預測方面,網絡安全態勢的預測是指根據網絡安全態勢的歷史信息和當前狀態對網絡未來一段時間的發展趨勢進行預測。由于網絡攻擊的隨機性和不確定性,安全態勢變化是一個復雜的非線性過程,限制了傳統預測模型的使用。目前,網絡安全態勢預測一般采用支持向量機、時間序列預測法、機器學習等方法。支持向量機屬于有監督機制算法,難以解決非線性問題;時間序列預測法在處理具有非線性關系、非正態分布特性的宏觀網絡態勢值所形成的時間序列數據時,效果并不是很理想;機器學習算法主要依靠經驗風險最小化原則,容易導致泛化能力下降且模型結構難以確定的問題,但隨著深度學習理論的突破,取得的效果逐漸顯著,是目前絡安全態勢預測的研究熱點[2]。
傳統的網絡安全態勢感知主要針對單一網絡環境,在設計上僅對網絡攻擊的行為進行數據收集和分析。隨著網絡規模的不斷擴大,相應的指標體系應運而生,但指標不全面,精準性與實時性方面時常存在缺陷。大數據技術提升了感知能力,深度學習加強了預測分析能力,網絡安全態勢感知系統具備了實戰能力,這都依賴于大量的歷史數據和關聯數據。網絡攻防的形勢瞬息萬變,靠先驗知識難以精準應對碎片化攻擊、超長潛伏期攻擊,尤其對于新型攻擊的識別存在較大困難,如何能做到先敵制勝,是網絡安全防御的終極難題。對此,人工智能領域中的生成對抗網絡技術對于模擬攻防行為和應急演練上能自我提升學習能力,根據有限的攻擊片段,提前發掘完整攻擊鏈,對識別新型攻擊將具有極大的研究價值。
響應式網絡安全態勢感知平臺是以復雜網絡環境為研究背景[3],將統一數據管理、態勢感知、態勢評估、智能預測和決策支持等緊密結合,利用大數據技術的大量、高速、多樣、價值、真實性的特征,利用深度學習技術的無監督、可泛化、自主學習的優勢,實現網絡安全態勢感知、評估和決策一體化系統[4]。它可以實時監控網絡的安全狀態,保證網絡的安全性能,并自動調整安全策略應對潛在的安全威脅和攻擊,實現響應式系統能力。響應式網絡安全態勢感知平臺技術架構如圖1所示。
響應式網絡安全態勢感知平臺分為統一數據管理系統、態勢感知系統、態勢評估系統、智能預測系統、決策支持系統五個子系統。
(1)統一數據管理系統
有效解決數據多來源、多格式、多標準的問題,避免信息孤島,構建統一的數據資源池,實現全方位的數據共享和利用,為整體平臺和其他子系統的數據生產和流向奠定基礎。
(2)態勢感知系統
統籌其他子系統協作分工的核心子系統。第一,利用大數據技術對各類型的數據進行采集,實時統一轉儲到統一數據管理系統;第二,啟動智能預測系統進行安全威脅分析,得出安全威脅系數;第三,根據安全威脅系數的級別和類別,更新態勢評估系統的安全類別聚類中心和聚類范圍,當安全威脅系數觸發規則,啟動決策支持系統,對安全策略進行變更,實現靈活機動的自適應功能,具備響應式的基本特征。
(3)態勢評估系統
態勢評估系統是對態勢感知的數據進行評估,得出安全級別劃分和安全分類聚類,通常用概率或權重來表示。在級別劃分上采用有監督機制,人工制定安全級別和對應的威脅程度;在安全分類上采用無監督機制,利用聚類的方法進行動態調整。
(4)智能預測系統
采用機器學習中深度學習方法不斷訓練匹配規則,通過足夠量的訓練數據,提升預測匹配度,輸入數據為統一標準后的網絡行為鏈,輸出數據為發生安全威脅的概率。
(5)響應式決策支持系統
以自主防御為目的,采用決策支持系統的架構,輔以專家系統和關聯規則等技術,根據系統決策的量化結果,自動觸發應急預案,通過細化的組合指令向安全設備發出系統級命令,啟動或關閉預定策略,以達到自動化響應式的效果。
生成式對抗網絡是一種深度學習模型,能夠自我博弈,且具備高檢測精度和低時間消耗的識別模型,是近年來復雜分布上無監督學習最具前景的方法之一。本文將依托網絡安全行為數據特征,構建一種基于生成對抗網絡的解決思路,起到提前預測的效果。
數據空間是網絡安全行為所在的空間,是所有訪問日志、行為日志等數據構成的集合。在生成攻擊鏈這個任務中,數據空間就是一些網絡安全行為的集合,也稱為網絡安全行為空間。在網絡安全行為空間里,每一個網絡安全行為都是這個空間里的點。將這些特殊的點記做數據點,為了有效表達,關鍵特征必須包括時間、級別、次數、協議、源IP、目標IP、動作、事件描述等要素,具體數據存儲建模記做Dp(i)={Time,Level,Number,Protocol,Source IP,Target IP,Action,Event Description},而由數據空間中的數據點構成的具有關聯關系的序列數據簇,并且能產生網絡安全威脅和后果,稱作攻擊鏈。
3.2.1 網絡模型結構
生成式對抗網絡是源于博弈論中的零和博弈的一種生成式模型[5],主要由一個生成器(Generator) 和一個判別器(Discriminator) 組成,如圖2所示。從某個概率分布P中采樣隨機變量Z,作為生成器G的輸入,經過G的轉換,輸出偽數據G(Z)。同時將一個證實的網絡攻擊數據X稱為真實數據。判別器D以G(Z) 或X為輸入,計算某一個輸入是否為真實數據,并得出概率,能有效區分輸入數據是來自于真實數據還是生成數據[6]。

圖2 生成對抗網絡結構流程圖
3.2.2 生成網絡
生成網絡的職責是把隨機點變成與數據集相似的數據。這些隨機點是從一個潛在空間中隨機抽取的。生成網絡是一個可以實現“點到點變換”的函數,它把潛在空間中的點變成網絡威脅空間中的點。生成網絡生成的點叫做生成點。通過生成網絡,潛在空間中的分布可以變換為網絡威脅空間中的分布。
真實網絡攻擊鏈在網絡空間中的分布情況是非常復雜的,簡單的函數很難把這些隨機的點恰好都變到真實網絡攻擊鏈所在的位置,所以實踐中通常要利用深度神經網絡,其強大的表達能力使得生成完整的網絡攻擊鏈成為可能,但仍有可能因生成網絡的隨意設定而得到一些毫無意義的網絡行為鏈,所以設定訓練目標,可以通過減小與目標的差距而優化網絡。
在訓練生成網絡過程中,先固定生成網絡,訓練判別網絡。首先生成一定數量的隨機點,并利用生成網絡將這些隨機點變為網絡攻擊鏈,再找一定數量的真實網絡攻擊鏈,與生成網絡攻擊連組成一個二分類的數據集。分類的目標就是分辨網絡攻擊鏈是生成的還是真實的,在這個小數據集上可以訓練一個判別網絡,從而賦予其區分真實網絡攻擊鏈和生成網絡攻擊鏈的能力。
3.2.3 判別網絡
判別網絡的任務是判斷一個網絡攻擊鏈究竟是來自真實數據還是由生成網絡所生成。在訓練判別網絡的過程中,通過不斷輸入兩類不同的網絡攻擊鏈并為兩類行為標注不同的數值以提高它的辨別能力,通常輸入真實網絡攻擊鏈標注數值為1,若輸入的是當前生成網絡生成的網絡攻擊鏈標注數值為0。當判別網絡認為兩種可能都有時,則會輸出網絡攻擊鏈是真實數據的概率。判別網絡的輸出結果用一個數值來指示空間中的一個點來自真實數據的可能性。
在訓練判別網絡的過程中,先固定判別網絡,訓練生成網絡,持續地在潛在空間中生成隨機點,并通過生成網絡將這些隨機點變換成生成網絡攻擊鏈。將生成攻擊鏈輸入到判別器中,得到其是否為真實網絡攻擊鏈的概率。更重要的是,判別網絡也會給生成網絡提出如何提高判別輸出概率的反饋信息。生成網絡利用得到的反饋信息來調整網絡的參數,使得生成出來的作品能在判別網絡中獲得更高的分數,經過一定量的訓練,生成網絡就可以輸出更接近真實網絡攻擊鏈的生成攻擊鏈。
3.3.1 實驗環境
硬件環境為:4顆i7-6 850k的CPU,2顆EVGA GTX1 080T的GPU,4條32G DDR4內存。
軟件環境為:操作系統為Ubuntu16.04,集成環境為AnaConda3-5.2.0,開發環境為PyCharm2018.3.3,開發語言為Python3.3,計算架構為TensorFlow2.0,其他庫包括matplotlib.pyplot、numpy、os、PIL、time。
數據源為:KDD CUP 99 dataset。
3.3.2 實驗步驟
(1)定義生成器
使用上采樣從隨機變量生成網絡安全攻擊鏈,從一個Dense將此種子作為輸入的層開始,然后上采樣幾次。定義方法為:
def make_generator_model()
(2)定義判別器
使用判別器旨在一個形成網絡安全攻擊鏈分類器。定義方法為:
def make_discriminator_model()
(3)定義判別器損失函數與優化器
該方法量化了判別器能夠將真實攻擊鏈與生成攻擊鏈區分開的程度。它將判別器對真實攻擊鏈的預測與1的數組進行比較,并將判別器對生成攻擊鏈的預測與0的數組進行比較。定義損失函數為:
def discriminator_loss(real_output,fake_output)
定義優化方法為:
discriminator_optimizer = tf.keras.optimizers.Adam(1e-4)
(4)生成器損失函數與優化器
生成器的損失函數直觀地量化了它能夠欺騙鑒別器的程度。如果生成器表現良好,則判別器將生成攻擊鏈分類為真實(或1)。將生成的攻擊鏈上的判別器決策與1的數組進行比較。定義損失函數為:
def generator_loss(fake_output)
定義優化方法為:
generator_optimizer = tf.keras.optimizers.Adam(1e-4)
(5)定義循環訓練
循環訓練從生成器接收隨機種子作為輸入開始。該種子用于產生攻擊鏈,然后使用判別器對真實攻擊鏈(從訓練集中生成)和生成攻擊鏈(由生成器產生)進行分類。計算每個模型的損失函數,并使用梯度更新生成器和判別器。定義方法為:
def train_step(attackchains)
def train(dataset,epochs)
def generate_and_save_attackchains(model,epoch,test_input)
(6)訓練模型
調用train()上面定義的方法同時訓練生成器和判別器。定義方法為:
train(train_dataset,EPOCHS)
(7)創建一個完整攻擊鏈
根據一個攻擊片段,生成一個完整攻擊鏈,完成預測。定義方法為:
def display_attackchain(epoch_no)
3.3.3 實驗結果
KDD99數據集總共由500萬條記錄構成,含有一個10%的訓練子集和測試子集,訓練集中共出現了22個攻擊類型,而剩下的17種只在測試集中出現,本試驗在訓練集數據9 000次迭代后,開始啟用測試集,針對17種新型攻擊的識別概率0.7以上的是15種,攻擊鏈構建70%時的提前識別率為5種,其中識別概率最高的是DOS攻擊分類下的mailbomb攻擊子類,數值為93.75%,最早被識別的是R2L攻擊分類下的snmpgetattack子類,提前識別率為72%,這對于瞬息萬變的網絡安全形勢而言,識別率并不理想,仍需進一步根據數據源分布情況進行深化研究,具體思路為對損失函數和優化器進行綜合改進的同時,對生成對抗網絡的結構進行改進,增加其反饋機制,改進循環策略,提升收斂速度。
本文研究了網絡安全態勢感知的現狀,并針對現有缺陷分析提出了一種新的系統設計思路,在傳統態勢感知三大功能基礎上,提出決策支持和統一數據管理的創新思路,使得網絡安全態勢感知具備響應式布局,能夠對安全威脅進行最快的阻斷和應急反應。同時提出一種基于生成對抗網絡的智能預測模型,可以根據攻擊片段預測完整攻擊鏈,提前主動式發掘新型網絡攻擊,結合響應式網絡安全態勢感知系統,變被動為主動,顯著提升網絡安全防御的能力。但根據實證分析,識別率(特別是提前識別率)不夠理想,算法模型仍需在識別精度、識別分類上繼續改進。