霍躍華, 趙法起, 吳文昊
(1. 中國礦業(yè)大學(北京) 機電與信息工程學院,北京 100083;2. 中國礦業(yè)大學(北京) 網(wǎng)絡與信息中心,北京 100083)
煤炭素有“工業(yè)糧食”之稱,在我國的能源化工領域有著不可替代的作用。伴隨著互聯(lián)網(wǎng)和移動信息的發(fā)展,煤炭行業(yè)的礦井環(huán)境監(jiān)測、安全巡查和遠程控制等正積極向網(wǎng)絡化、信息化和智能化轉型。這些轉型提高了煤礦生產(chǎn)效率,但也為煤礦網(wǎng)絡的安全性帶來了挑戰(zhàn)。
網(wǎng)絡是煤礦產(chǎn)業(yè)(煤炭產(chǎn)業(yè)或煤炭行業(yè))智能化建設和數(shù)據(jù)傳輸鏈路的關鍵。當前我國煤礦網(wǎng)絡存在如下問題[1-2]:網(wǎng)絡結構不合理,分配虛擬網(wǎng)絡時易產(chǎn)生漏洞;使用大量非標準的通信協(xié)議,危險性高;煤礦網(wǎng)絡采用典型環(huán)形以太網(wǎng)結構,威脅易擴散;從業(yè)人員缺乏網(wǎng)絡安全意識,預防和處理網(wǎng)絡風險能力差。針對上述問題,煤礦網(wǎng)絡采取了安全措施,但現(xiàn)有安全措施存在不同程度的問題:防火墻技術無法阻止內(nèi)部攻擊;虛擬專用網(wǎng)技術費用高且在特定情況下易被攻破;安全掃描技術存在滯后性且消耗資源多;基于區(qū)塊鏈的訪問控制安全性研究不足[3]。因此,研究我國煤礦網(wǎng)絡的安全入侵檢測具有重要的實際意義。
當前煤礦網(wǎng)絡面臨嚴重的惡意軟件攻擊,例如APP病毒攻擊[2],它通過偽造網(wǎng)絡地址來阻礙煤礦網(wǎng)絡與外網(wǎng)的正常通信,進而影響生產(chǎn)安全。2020 年,在通過 Internet 與遠程系統(tǒng)通信中,有23%的惡意軟件使用安全傳輸層協(xié)議(Transport Layer Security,TLS)加密;到2021年,這一比例接近46%,這個趨勢使得煤礦網(wǎng)絡的智能化建設也面臨嚴峻的威脅[4]。為了提高網(wǎng)絡的安全性,各界學者對TLS加密惡意流量識別進行了研究,大致經(jīng)歷了3個階段:第1階段,采用解密技術破解TLS加密協(xié)議,但該方法計算開銷大、成本高,且侵犯了用戶的隱私。第2階段,在非解密的前提下,觀測網(wǎng)絡出口的加密通信流量(443端口),利用已掌握的數(shù)據(jù)資源,對加密流量進行判別[5],但現(xiàn)在惡意軟件會繞過443端口使用其他端口實現(xiàn)入侵,降低了該方法的有效性。第3階段,非解密分析流量包,通過提取流量包中的數(shù)據(jù)元特征、TLS明文特征[5]、DNS(Domain Name System,域名系統(tǒng))和HTTP(Hyper Text Transfer Protocol,超文本傳輸協(xié)議)上下文數(shù)據(jù)流等特征,利用機器學習和深度學習[6-10]的方法實現(xiàn)非解密的TLS加密惡意流量檢測,其中,特征的選取和數(shù)據(jù)的質(zhì)量對這一類方法檢測結果具有決定性影響[11-12]。上述3個階段的研究都存在加密流量誤報率高的問題,此問題加大了從業(yè)人員的工作量。
針對煤礦網(wǎng)絡面臨由惡意軟件所產(chǎn)生的TLS加密惡意流量威脅和檢測過程加密流量誤報率高的問題,提出了一種基于多特征融合的煤礦網(wǎng)絡加密惡意流量檢測方法。首先提取流的連接特征、元數(shù)據(jù)和TLS握手特征,構建特征集。其次,利用特征工程方法進行規(guī)約處理。最后,構建投票模型訓練樣本集,實現(xiàn)高效的TLS加密惡意流量檢測。
TLS加密協(xié)議位于開放式系統(tǒng)互聯(lián)(Open System Interconnection,OSI)7層參考模型中的第3層和第4層之間,為網(wǎng)絡中的任意2個通信應用程序提供加密服務。該協(xié)議由TLS記錄協(xié)議和TLS握手協(xié)議構成。TLS記錄協(xié)議主要用來識別TLS中的消息類型,并對每條消息的完整性進行保護和驗證。TLS握手協(xié)議負責在客戶端與服務器在交換數(shù)據(jù)之前,協(xié)商建立加密信道,通信雙方建立連接的過程采用明文傳輸,該協(xié)議也是本文重點研究的協(xié)議。
TLS握手過程是由客戶端發(fā)起,服務端響應,在通信雙方進行一系列信息交換和身份驗證后完成,如圖1所示。一個完整的TLS握手過程包括Client Hello,Server Hello,Certificate&Key&Cipher,ChangeCipherSpec 4個部分[13],通信雙方在建立連接過程中協(xié)商選擇TLS協(xié)議版本號、加密算法等信息來確定加密方式。進一步通過證書校驗、密鑰交換等操作來進行身份驗證,驗證通過后,構建加密信道進行數(shù)據(jù)傳輸。
圖1 TLS握手過程Fig. 1 TLS handshake process
為了高效檢測TLS加密惡意流量,提出了基于多特征融合的TLS加密惡意流量檢測方法,如圖2所示。該方法包含特征選擇、特征子集的構建與標準化、特征子集降維及模型訓練與評估4個模塊,采用有監(jiān)督的機器學習算法建立檢測模型,利用特征工程將數(shù)據(jù)集轉換后導入檢測模型進行訓練和預測,通過預測結果對模型進行評估。
圖2 基于多特征融合的TLS加密惡意流量檢測方法流程Fig. 2 Flow of TLS encrypted malicious traffic detected method based on multi-feature fusion
流[14]是指在一定時間內(nèi),具有相同源IP地址、源端口號、目的 IP 地址、目的端口號和協(xié)議的網(wǎng)絡數(shù)據(jù)包所攜帶的數(shù)據(jù)特征總和[13]。使用Zeek工具對pcap流量包進行特征提取,并將得到的流特征分別存儲在flowmeter.log,conn.log,ssl.log和X.509.log日志文件中。pcap流量包中每條流使用的IP地址和端口等信息均存儲在日志文件中,每條流都對應一個唯一的流指紋uid,用于關聯(lián)流在不同日志中的行為。pcap流量包處理流程如圖3所示。先將惡意和良性pcap流量包進行預處理,利用Zeek工具解析pcap流量包中每條流,得到所有流的特征并存儲在4個日志文件中,進而利用Zat工具將所提取的特征轉換為惡意流量特征子集和良性流量特征子集。
圖3 pcap流量包處理流程Fig. 3 Flow of pcap traffic packages processing
(1) 流元特征。存儲在flowmeter.log日志文件中的流元特征包括有效負載的數(shù)據(jù)包數(shù)量、大小、到達時間和有效負載字節(jié)數(shù)等,良性流量與惡意流量在這些特征上具有統(tǒng)計學意義的差異[15]。
(2) 連接特征。連接特征包括跟蹤TCP/UDP建立連接的過程和TLS握手特征中的Client Hello,Server Hello,ServerHelloDone,分別存儲于conn.log和ssl.log日志文件中。連接特征反映了網(wǎng)絡中通信主體在何時持續(xù)多長時間及使用何種協(xié)議進行數(shù)據(jù)傳輸。
(3) X.509證書特征。X.509證書特征是TLS握手過程中證書校驗部分,包括證書簽發(fā)者、證書是否自簽名、證書包含的域名數(shù)量等,存儲于X.509.log日志文件中。
過多的特征會導致訓練與檢測的效果下降,所選特征過多會增加計算開銷,占用過量的內(nèi)存和存儲空間,造成資源災難。為了避免這個問題,在特征提取階段避免選擇重復或相似度較高的特征;采用特征工程對所提取的特征進行降維,刪除冗余特征,將相似特征在特征空間進行合成,降低特征維度,保留有效信息。
提取的流元特征、連接特征通過流指紋uid構成流特征子集,共94維。將流子集進行標準化,使特征數(shù)據(jù)均值和方差服從N(0,1)分布。首先計算特征數(shù)據(jù)的最大值、最小值、均值和方差,進而對每個維度的特征進行標準化處理。
式中:x′為標準化后的特征值;x為特征子集中的特征值;μ為特征子集中某特征的平均值;σ2為特征子集中某特征的方差。
將所得到的標準流特征子集X1與對應的標簽值構成一個訓練集T1。
X.509證書特征包括issuer,subject和cipher 3個部分,作為證書特征子集。對證書特征子集進行onehot編碼,得到2 874維稀疏證書特征子集X2。
為了減少計算開銷,提高檢測的準確性,對特征子集X1和X2進行降維。采用隨機森林特征重要性評估器對標準流特征子集X1進行降維,先將訓練集T1輸入隨機森林分類器進行訓練,訓練完成后從隨機森林特征重要性評估器中得到每維特征的重要性權 重 εi(i=1,2,···,94,i為特征維數(shù))1,選取εi≥0.01的28維特征作為降維后的標準流特征子集,標準流特征子集對流特征子集的貢獻率為0.715 8。前28個特征和特征重要性權重見表1。
表1 εi≥0.01的前28個特征和特征重要性權重Table 1 Top 28 features with εi≥0.01 and feature importance weights
編碼后的證書特征子集升維會造成維度災難,隨機森林特征重要性評估器的方法不再適用。為此,采用主成分分析法(Principal Component Analysis,PCA)去除數(shù)據(jù)中的噪聲且緩解維度災難,對稀疏證書特征子集X2進行降維。首先從X2中獲得協(xié)方差矩陣,根據(jù)協(xié)方差矩陣得到X2的特征值和特征向量,進而得到每個特征向量對訓練集的貢獻率,降維后的特征維度由前j個主成分的特征貢獻率θk(k=1,2,···,j)決定,則累計特征貢獻率(前j個主成分貢獻率的總和)為
為了避免過擬合,在降維過程中丟棄冗余的信息,經(jīng)過大量實驗驗證可得,當 θ∈[0.9,0.95] 時,機器學習訓練效果最好,本文以計算量最小原則,取θ=0.9的閾值進行PCA 降維,進而確定降維后的稀疏證書特征子集X2共有106維,對證書特征子集的貢獻率為0.900 1。
將TLS握手過程中所提取的TLS版本號特征作為每條TLS加密流的標志。其中,本文所使用數(shù)據(jù)集中含SSL3.0/ TLS1.0/ TLS1.1/ TLS1.2[16]4個TLS版本,對TLS版本號特征進行獨熱編碼后得到4個維度的數(shù)值特征。將TLS版本號特征與處理后的流特征子集和稀疏特征子集通過流指紋拼接,得到138維特征集X,X與其標簽Y構成樣本集T,將樣本集T按照7:3的比例劃分為訓練集和測試集,其中訓練集與測試集中惡意流量和良性流量的比例與樣本集T保持一致,均為2:1。
使 用 決 策 樹(Decision Tree, DT)分 類 器[17-18]、K近鄰(K-Nearest Neighbor, KNN)分類器、高斯樸素貝葉斯(Gaussian Naive Bayes, GNB)分類器、L2邏輯回歸(Logistic Regression, LR)分類器和隨機梯度下降(Stochastic Gradient Descent , SGD)分類器5個子模型對所提出特征集進行檢驗。采用控制變量法得到DT分類器子模型的最大深度為 20,并使用信息熵作為特征劃分依據(jù);建立 KNN分類器子模型,采用網(wǎng)格搜索法確定K值為5;建立GNB分類器子模型,利用極大似然法計算先驗概率;建立LR分類器子模型,設置正則化參數(shù)L2;建立SGD分類器子模型,設置正則化參數(shù)L2,損失函數(shù)為“hinge”。將訓練集分別輸入5個子模型進行訓練,用測試集對5個子模型進行檢驗,使5個子模型達到最優(yōu)效果。
為了提高檢測模型的魯棒性,本文結合投票法原理將5個子模型結合,構建了多模型投票(Mutimodel Voting Classifier,MVC)檢測模型。MVC檢測模型將5個分類器子模型作為投票器,每個分類器子模型單獨訓練樣本集,輸出每個樣本為良性/惡意流量的預測值,按照少數(shù)服從多數(shù)原則進行投票,進而得到每個樣本的最終預測值。
為驗證本文方法的有效性,對MVC檢測模型進行了實驗。實驗環(huán)境為Python 3.7,通過調(diào)用scikitlearn[19]庫來構建機器學習模型。
本文使用的是開源CTU-13[20]數(shù)據(jù)集,該數(shù)據(jù)集是在特定場景中分別執(zhí)行13個惡意家族軟件并收集惡意軟件感染過程所產(chǎn)生的流量,包括良性流量子集和13個惡意家族流量子集。由于惡意家族的軟件在真實的網(wǎng)絡環(huán)境中所產(chǎn)生的攻擊行為具有同源性,對于某一個家族來說,其在攻擊任何網(wǎng)絡主體時,所產(chǎn)生的流量行為具有高度的相似性?;趷阂饧易宓奶匦裕珻TU-13數(shù)據(jù)集的采集環(huán)境可以很好地代表煤礦網(wǎng)絡面臨的攻擊環(huán)境。
本文在CTU-13數(shù)據(jù)集中挑選了7個惡意pcap流量包和1個良性pcap流量包,對MVC檢測模型進行驗證,其中,每個惡意pcap流量包中只包含一種惡意軟件產(chǎn)生的TLS加密惡意流量。利用Wireshark工具將所獲取的pcap流量包按時間序列進行合并,得到1個惡意流量包和1個良性流量包。將流量包進行數(shù)據(jù)清洗,刪除冗余、無效的信息,忽略TCP(Transmission Control Protocol,傳輸控制協(xié)議)校驗和無效的流量。實驗所用流量數(shù)據(jù)集(表2)共有314 733條良性流量(含51 373條TLS加密流量)和657 198條惡意流量(含35 383條TLS加密流量)。
表2 流量數(shù)據(jù)集Table 2 Traffic dataset
為更加客觀地評價MVC檢測模型的有效性,本文從2個方面對模型進行評估:① 使用準確率A、召回率R、F1分數(shù)(精確率和召回率的調(diào)和平均數(shù),即認為精確率和召回率同等重要,權重都為1)和誤報率W(正樣本被預測為負樣本的概率)檢驗模型分類效果。② 從檢測模型錯誤分類的TLS加密流量樣本量來進行評估。
式中:NTP為被正確識別為正樣本的正樣本;NTN為被正確識別為負樣本的負樣本;NFP為被錯誤識別為負樣本的正樣本;NFN為被錯誤識別為正樣本的負樣本;P為精確率。
將訓練集輸入5個分類器子模型和MVC檢測模型進行訓練,用測試集檢驗模型性能,測試集樣本總量為307 179條,其中惡意樣本量為198 944條,TLS加密良性樣本量為10 476條,TLS加密惡意樣本量為15 372條,模型性能對比見表3。
表3 模型性能對比Table 3 Comparison of the performance of models
由表3可看出,本文所提出的多特征融合特征集在DT分類器、KNN分類器和LR分類器子模型上有良好的表現(xiàn),其中DT分類器和KNN分類器子模型表現(xiàn)較好,準確率和召回率達99%以上,誤報率均在0.10%以下。而GNB分類器和SGD分類器子模型的檢測結果相對較差,主要是因為GNB分類器子模型對數(shù)據(jù)表達形式比較敏感,經(jīng)過特征工程處理的特征集將文本類特征轉換為數(shù)值類特征,使得該分類器的表現(xiàn)有所下降,但其能夠有效降低誤報率,使得其在投票過程中依舊能夠發(fā)揮優(yōu)勢。SGD分類器子模型對數(shù)據(jù)縮放和特征降維比較敏感,對于惡意流量檢測檢測效果較好,但其誤報率較高。MVC檢測模型準確率為99.66%,召回率達99.28%,F(xiàn)1分數(shù)為99.52,誤報率為0.13%,提高了加密惡意流量的檢出率。
模型錯誤分類TLS加密樣本數(shù)量如圖4所示??煽闯鯩VC檢測模型在數(shù)據(jù)集上實現(xiàn)了對TLS加密惡意流量的“零誤報率”。
圖4 模型錯誤分類TLS加密樣本數(shù)量Fig. 4 Number of TLS encrypted samples misclassified by models
(1) 所構建的特征集降低了樣本集維度,提高了TLS加密流量檢測效率。
(2) DT分類器和KNN分類器子模型在特征集上有良好的表現(xiàn),其中準確率和召回率均在99%以上,誤報率均在0.10%以下;GNB分類器子模型表現(xiàn)最差,召回率僅達51.87%;SGD分類器和LR分類器子模型具有相似的表現(xiàn),其誤報率都很高。
(3) MVC檢測模型的準確率達99%以上,誤報率為0.13%,提高了加密惡意流量的檢出率。
(4) MVC檢測模型在數(shù)據(jù)集上實現(xiàn)了對TLS加密惡意流量的“零誤報率”。