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