駱子銘 許書彬



摘 ? 要:隨著互聯網應用加密業務流的快速增長,流量加密在保護隱私的同時也給網絡安全防御帶來了巨大的挑戰,惡意加密流量檢測是互聯網安全領域的一個重點問題。文章首先介紹了TLS協議特點、流量識別方法;然后,從TLS特征、數據元特征、上下文數據三個方面分析了惡意加密流量的特征,給出了基于機器學習的TLS惡意流量檢測相關方法;最后,通過構建基于機器學習的分布式自動化的惡意流量檢測體系,實現對惡意流量的動態檢測,并具備增量式學習能力。
關鍵詞:機器學習;流量識別;安全傳輸層
中圖分類號:TN918 ? ? ? ? ?文獻標識碼:A
Abstract: As the flow of encrypted network traffic growing rapidly, the encryption of data protects privacy while poses a great threat to cyberthreat defense. Identifying threats contained within encrypted network traffic is a key issue in the network security domain. In this paper, we begin by introduce the characteristics of TLS protocol and the methodology of identifying network traffic. Then, we analyze the characteristics of encrypted malware traffic from TLS data, observable metadata and contextual flow data. This study is used to design the methodology of detecting malicious traffic's use of TLS based on machine learning. Finally, we manage to detect malicious traffic dynamically with incremental learning ability by building a distributed automation malicious traffic detecting system based on machine learning.
Key words: machine learning; encrypted traffic; Transport Layer Security
1 引言
隨著安全傳輸層(Transport Layer Security,TLS)協議的廣泛使用,網絡中的加密流量越來越多,識別這些加密的流量是否安全可靠,給網絡安全防御帶來了巨大挑戰。傳統的流量識別方法,例如基于深度包檢測或者模式匹配等方法都對加密流量束手無策,因此識別網絡加密流量中包含的威脅是一項具有挑戰性的工作[1]。
由于網絡基礎設施安全的重要性,其對檢測的準確率和誤報率有較高的要求。同時,僵尸網絡、網絡入侵、惡意加密流量等網絡攻擊,具有攻擊量大、形式多樣化的特點,對于該類的攻擊檢測需要能夠做出快速實時的響應。基于機器學習的惡意加密流量檢測,一直是近年來網絡安全領域的研究熱點[2]。
目前,惡意加密流量檢測研究,主要側重于加密流量特征分析[3]以及機器學習算法的選擇問題[4]。通過合理的檢測體系,構建具備增量式學習能力的樣本數據庫,實時動態檢測分析惡意加密流量攻擊,將能夠快速實施響應并采取防御措施。本文所討論的加密流量限于采用TLS協議進行加密的網絡流量,故文中提到的“惡意加密流量”和“TLS惡意流量”均代指采用TLS協議加密的惡意流量。
2 ?TLS協議
2.1 ?TLS握手協議
TLS協議位于傳輸層和應用層之間,是一種在兩個通信應用程序之間提供安全通信的協議,保證了網絡通信數據的完整性和保密性[5]。TLS協議是由握手協議、記錄協議、更改密文協議和警報協議組成。
握手協議是TLS協議中十分重要的協議,客戶端和服務端一旦都同意使用TLS協議,需要通過握手協議協商出一個有狀態的連接以傳輸數據。通過握手過程,通信雙方需要確認使用的密鑰和算法。除此之外,還包括數據壓縮算法、信息摘要算法等一些數據傳輸的過程中需要使用的其他信息。當握手協議完成以后,通信雙方開始加密數據傳輸。
2.2 ?TLS流量識別
鑒于TLS握手協議通過明文傳輸的特點,可以捕獲PCAP文件并解析數據包的頭部信息,通過比較不同的頭部信息及對比不同消息的報文結構,可以判定當前的數據包是否為TLS握手協議的某一特定消息類型。一個完整的TLS會話過程一定包含五種類型的消息:ClientHello、Server Hello、Server Hello Done、Client KeyExchange、Change Cipher Spec。如果在某個數據流中沒有檢測到以上的消息,那么可以判定其為非TLS流。如果只檢測到其中的一部分消息,則有兩種可能:一是由于TLS握手過程不完整而導致了連接建立失敗;二是抓包不完整,此數據流是TLS流,但由于抓包過程中存在網絡延遲等原因,有可能丟包導致。在判定過程中,如果數據流中沒有全部包含以上的五種消息,則將該數據流判定為非TLS流,否則將其判定為一個TLS流。
3 ?TLS惡意流量特征分析
在學術界,惡意流量特征一般分為三類:內容特征、數據流統計特征、網絡連接行為特征[6]。
內容特征主要指惡意流量的協議段中特有的值和協議負載中含有的某些特殊的字符序列。數據流統計特征和網絡連接行為特征,需要采集數據并進行統計分析,從而得到某種規律,可以統稱為統計特征。從網絡層、傳輸層、應用層提取并計算流量統計值,可以得到數據流統計特征,再從這些統計特征中提取惡意流量特征。而一些惡意軟件同時也會產生特定的網絡連接特征,比如受蠕蟲病毒感染的主機由于隨機掃描互聯網IP地址,從而會產生大量的失敗網絡連接。針對采用TLS協議加密的惡意流量,本文從TLS特征、數據元統計特征、上下文數據三個方面來分析其特征要素。
3.1 ?TLS特征
惡意流量和良性流量具有非常明顯的TLS特征差異,如表1所示,主要包括提供的密碼組、客戶端公鑰長度、TLS擴展和服務器證書收集所采用的密碼套件。在流量的采集過程中,可以從客戶端發送的請求中獲取TLS版本、密碼套件列表和支持的TLS擴展列表。若分別用向量表示客戶端提供的密碼套件列表和TLS擴展列表,可以從服務器發送的確認包中的信息確定兩組向量的值。同時,從密鑰交換的數據包中,可以得到密鑰的長度。
3.2 ?數據元統計特征
惡性流量與良性流量的統計特征差別主要表現在數據包的大小、到達時間序列和字節分布。數據包的長度受UDP、TCP或者ICMP協議中數據包的有效載荷大小影響,如果數據包不屬于以上協議,則被設置為IP數據包的大小。因到達時間以毫秒分隔,故數據包長度和到達時間序列,可以模擬為馬爾科夫鏈,從而構成馬爾科夫狀態轉移矩陣。
3.3 ?上下文數據
上下文數據包括HTTP數據和DNS數據。過濾掉TLS流中的加密部分,可以得到HTTP流,具體包括出入站的HTTP字段、Content-type、User-agent、Accept-language、Server、HTTP響應碼。DNS數據包括DNS響應中域名的長度、數字以及非數字字符的長度、TTL值、DNS響應返回的IP地址數、域名在Alexa中的排名。
4 ?TLS惡意流量識別
加密網絡流量給網絡安全防御帶來了巨大的挑戰,在不加解密的基礎上識別加密流量中包含的威脅具有十分重要的意義。通過對加密惡意流量的特征進行深入的研究,進而探索加密惡意流量與正常流量的特征。然后通過機器學習的方法來學習這些特征,最終能夠實時動態的區分網絡中的惡意與良性流量,檢測到惡意威脅。
惡意流量識別分為四步:第一步數據采集;第二步數據預處理;第三步模型訓練;第四步評價驗證。
4.1 數據集
數據集可以通過Wireshark從公共網絡進行采集,過濾掉黑名單上的惡意IP流量,默認采集到的均為良性流量,而惡意流量可以通過沙箱環境模擬并采集。很多研究采用手工采集或者公司私有的數據集,在一定程度上會影響檢測結果的可信度,所以也可以采用公開的數據集,例如DARPA1998[7]、ISCX2012[8]、ISCX VPN-non VPN[9]等。
DARPA1998:1998年林肯實驗室在DARPA資助下建立的一個模擬各類入侵行為的流量數據集,包含7周訓練流量和2周測試流量,分為正常流量和四類攻擊流量(Dos、Probe、U2R、R2L)。
ISCX2012:2012年加拿大新布倫瑞克大學信息安全中心發布了一個入侵檢測數據集,這個數據集包含7天的流量數據集,分為正常流量和四種攻擊流量(Brute Force SSH、DDoS、Http DoS、Infiltrating)。
ISCX VPN-non VPN:Draper-gil等(2016)提供了一個加密流量數據集,包含7種常規的加密流量和7種協議封裝流量,格式包括時間流特征數據和原始流量數據。
4.2 數據預處理
在數據預處理階段,因流量數據維度較大,本文采用Relief算法對數據進行預處理,即將收集到的數據包按照網絡流的定義進行特征提取,降低數據維度,可減小后續分類器的錯誤率。Relief算法是一種特征權重算法(Feature Weighting Algorithms),可根據各個特征和類別的相關性賦予不予權重,權重小于某個閾值的特征將被移除。網絡流是指在一定的時間內,所有的具有相同五元組(源IP地址、源端口號、目的IP、目的端口號、協議字段)的網絡數據包所攜帶的數據特征總和。源IP地址、源端口號和目的IP地址、目的端口號可以互換,從而標記一個雙向的網絡流。
4.3 模型訓練
采集完樣本,首先將一個網絡流視為一個樣本并提取相關流量特征,將TLS特征、數據元統計特征和上下文數據特征建模為行向量作為特征取值,列向量不同的TLS流的矩陣。
擬采用隨機森林算法進行訓練,基于Bagging方法利用多個決策樹對樣本進行訓練并預測,隨機森林是一種有監督的學習算法,Bagging方法是指隨機有放回的選擇訓練數據,然后構造分類器,進而通過組合學習到的模型來提高整體效果。隨機森林算法具有可高度并行化,能夠處理高維度的數據,訓練后的模型方差小及泛化能力強等優點,如圖1所示。
為了避免測試的偶然性,采用十折交叉驗證法,將數據分為10份,輪流將其中的9份作為訓練數據,1份作為驗證數據進行試驗,最后將每次試驗得到的正確率取平均值作為最終精度。
4.4 評價標準
對于訓練產生的分類模型,需按照一定的指標進行評估測試,來評價分類器的的精準度。分類模型性能的一些主要指標,如表2所示。
5 分布式自動化惡意流量檢測體系
傳統的安全產品已無法滿足現有的安全態勢需求,如何利用機器學習快速檢測未知威脅,并盡快做出響應,是網絡安全態勢感知中的關鍵問題。利用上文提出的惡意流量檢測方法,進一步訓練并標記分類惡意流量家族樣本,建立增量式學習數據庫,進而可以構建自動化惡意流量檢測體系,有助于更好的降低未知惡意流量帶來的危害。
5.1 ?惡意流量家族
惡意軟件雖然層出不窮,但大部分惡意軟件都是某個惡意家族的變種。在惡意流量檢測的二分類問題中,將惡意流量提取出來并對所屬的家族進行標記,然后重新進行訓練,將惡意流量檢測轉換為通過流量特征判斷其所屬家族的多分類問題。獲得訓練的數據后,需對分類的結果進行分析討論,并盡量減少誤報率。
如表3所示,選取了在TLS特征中,7種惡意軟件家族的不同表現。除了表中展示的3種特征外,其他的特征還包括TLS客戶端、證書主題特征,借助這些不同的特征通過機器學習算法訓練,可以有效幫助區分惡意軟件的家族種類。
5.2 ?增量式學習數據庫
在當今網絡環境下,惡意軟件更新迭代層出不窮,為了保持惡意流量檢測系統的準確性,系統應具有增量式學習的能力。
增量式學習是指系統在不斷從新的樣本學習新的知識的同時,并能保存大部分以前已學習的知識。增量式學習類似于人類自身的學習模式,這種學習的特性,非常適合用于網絡安全中的的惡意軟件檢測。故建立增量式學習能力,需具有增量式學習能力的機器學習算法,其次建立惡意軟件數據庫,如圖2所示。
建立惡意軟件數據庫,需從客戶端和服務端兩個角度進行數據庫的建立研究。服務端:實時收集新生的惡意軟件所產生的流量,并進行定期的訓練后將特征添加到系統中,實現增量式學習。客戶端:當檢測到可疑流量時,分類器判定為其他類別后,需將其上傳至服務器端,同時在本地進行更新。
5.3 ?分布式自動化惡意流量檢測體系
利用上文給出的惡意流量檢測方法,搭建了分布式自動化惡意流量檢測體系,如圖3所示。
(1)IDS Agent負責采集或收集客戶端和服務端的需鑒定文件,計算文件的MD5hash值與FileHash緩存對比,如果存在則直接判定為惡意軟件流量,并附上家族標簽,否則緩存文件并進入下一步。
(2)對象存儲(公有云IAAS組件,OSS)負責文件緩存,便于處理海量的鑒定文件,當存儲完成后,發送Kafka Topic消息。
(3)主程序采用多線程方式啟用多個處理單元,收到Kafka消息后,從消息中獲得OSS文件路徑,下載文件到本地并發送給各個類型的檢測引擎,例如惡意流量檢測、動態/靜態文件檢測、Web Shell檢測等。
(4)惡意流量檢測引擎接收文件后,從文件中提取網絡流量相關數據,并根據TLS特征、數據元統計特征、上下文數據對數據進行預處理,然后經過分類器進行分類,將分類結果發往決策中心。
(5)決策中心收到各類檢測結果后,根據多類決策樹判斷,并將最終結果發往惡意軟件家族分類器。
(6)最后形成惡意軟件家族分類和未知的惡意分類,存儲到Elastic Search以提供給前端用戶展示。
對于系統中的機器學習部分,所提交需要保存的樣本均通過流量的形式發送到Kafka并存儲到HIVE中,然后導入到Spark Mlib進行模型計算,其他通過公網添加的黑白樣本也通過同樣的方式加入系統進行循環。在系統資源有限的情況下,大約一周更新一次分類模型。
通過構建分布式自動化惡意流量檢測體系,可以快速、高效地獲取加密網絡數據流量,對數據進行科學分析與存儲,縮短檢測時間的同時獲得更準確的檢測結果,并預測未知威脅,實現網絡安全態勢感知。
6 ?結束語
本文基于TLS握手協議的特點,分析了惡意流量的識別特征,通過對三類特征的具體分析,給出了一種基于機器學習的TLS惡意流量檢測方法,并結合惡意軟件家族樣本分類,構建增量式學習能力,最終構建了一個分布式自動化惡意流量檢測體系體系,該方案具有多重優點,可有效抵御層出不窮惡意流量網絡威脅。
參考文獻
[1] 張蕾,崔勇,劉靜,等.機器學習在網絡空間安全研究中的應用[J].計算機學報,2018(9):1943-1975.
[2] 王偉.基于深度學習的網絡流量分類及異常檢測方法研究[D]. 2018.
[3] Anderson B, McGrew, David. Identifying Encrypted Malware Traffic with Contextual Flow Data[C]// Acm Workshop on Artificial Intelligence & Security. 2016.
[4] Anderson B, Mcgrew D. Machine Learning for Encrypted Malware Traffic Classification: Accounting for Noisy Labels and Non-Stationarity[C]// the 23rd ACM SIGKDD International Conference. 2017.
[5] 王琳,封化民,劉飚,等.基于混合方法的SSL VPN加密流量識別研究[J].計算機應用與軟件,2019,36(02):321-328.
[6] 魯剛,郭榮華,周穎,等.惡意流量特征提取綜述[J].信息網絡安全,2018,213(09):7-15.
[7] Tavallaee M , Bagheri E , Lu W , etal. A detailed analysis of the KDD CUP 99 data set[C]// IEEE International Conference on Computational Intelligence for Security & Defense Applications. IEEE, 2009.
[8] Shiravi A, Shiravi H, Tavallaee M, etal. Toward developing a systematic approach to generate benchmark datasets for intrusion detection[J]. Computers & Security, 2012, 31(3):357–374.
[9] Lashkari A H, Draper-Gil G, Mamun M S I, etal. Characterization of Encrypted and VPN Traffic Using Time-Related Features[C]// International Conference on Information Systems Security & Privacy. 2016.