徐 婷 郭 春 申國偉 周雪梅
(貴州大學計算機科學與技術學院公共大數據國家重點實驗室 貴陽 550025)
間諜軟件[1]主要指在未經用戶許可情況下收集并使用用戶個人隱私數據或機密信息的計算機程序,是攻擊者廣泛使用的一種竊密軟件。為便于敘述,本文將被植入間諜軟件的一端統稱為竊密端(類似正常軟件客戶端),將接收竊密信息的一端統稱為接收端(類似正常軟件服務端)。間諜軟件被植入到竊密端后,會盡可能隱蔽竊取受害主機的隱私信息[2],這使得準確檢測間諜軟件成為惡意軟件檢測領域的一個難點。
現階段基于特征碼的檢測技術[3]無法檢測未在特征庫中的間諜軟件。而間諜軟件感染主機后僅在不連續的較短時間段內執行其竊密行為[4],導致基于主機行為的檢測方法對其檢測漏報率較高。間諜軟件作為以竊取數據為主要意圖的惡意軟件,將受害主機上竊取的隱私信息遠程傳送給攻擊者是其必要步驟。當前,因特網是攻擊者與間諜軟件通信的主要通道。因此,本文重點關注間諜軟件網絡通信行為,從待檢測主機的網絡流量中提取間諜軟件網絡通信行為特征,構建一種基于網絡通信行為特征的間諜軟件檢測方法(spyware detection method based on network communication behavior characteristics,SDMNC)。
本文主要工作如下:
1)實驗分析多款間諜軟件的網絡通信行為,從間諜軟件攻擊意圖角度探究間諜軟件“網絡通信階段”存在的必然性,為設計基于網絡通信行為的間諜軟件檢測方法奠定基礎;
2)提出一種基于網絡通信行為特征的間諜軟件檢測方法SDMNC。SDMNC從網絡通信行為中提取會話持續時間、上行/下行數據包數量比、上行/下行數據量比等通信行為特征,運用機器學習算法建立檢測模型實現間諜軟件檢測。
當前惡意軟件檢測方法可以分為靜態檢測方法和動態檢測方法。本文工作主要涉及的是基于行為特征的動態檢測方法,該類方法主要分為基于主機行為特征的檢測方法和基于網絡行為特征的檢測方法[5]。
基于主機行為特征的檢測方法通過從某程序在主機中運行時所使用的系統資源信息(如系統API調用[6]、CPU使用信息[6]、進程網絡行為[8]等)中提取特征來判斷其是否為惡意軟件。該方法被大多數研究者應用于檢測間諜軟件。
Majid等[9]通過監視鍵盤驅動程序棧的變化來檢測鍵盤記錄器。Javaheri等[10]通過監控與截取屏幕相關的API操作,實現對鍵盤記錄器與屏幕竊取器的檢測。武紅濤[11]通過捕獲間諜軟件文件或注冊表操作行為,結合貝葉斯算法進行間諜軟件檢測。基于主機行為特征的方法需要以軟件的主機行為特征作為判定一個軟件有無惡意性的依據。由于間諜軟件執行其竊密行為的時長短,導致這類方法對間諜軟件難以獲取很高的檢測率。
基于網絡行為特征的檢測方法通過提取惡意軟件交互的網絡通信流量特征作為依據來判斷其是否為惡意軟件。
JIANG等[12]使用數據包數量、數據包大小等七個特征,并采用隨機森林(Random Forest,RF)算法構建模型對木馬類惡意流量進行檢測。王偉等[13]提出了一種使用原始流量數據結合卷積神經網絡應用于惡意軟件流量分類的方法,該方法以原始流量作為模型輸入,減少了人工設計特征步驟。JIANG等[14]使用標志位、會話個數等八個特征,并采用XGBoost算法構建模型對木馬流量進行檢測。基于網絡行為特征的檢測方法以惡意軟件的網絡流量為分析對象,不受惡意軟件使用的各種主機隱藏技術影響,但當前基于網絡行為特征的檢測方法應用于間諜軟件檢測的國內外相關研究較少。
通過文獻[11]的研究結果和本文的實驗分析可知,間諜軟件的生命周期大致包含傳播、植入、潛伏、竊密、網絡通信五個階段。攻擊者為實現通過間諜軟件遠程獲取受害者數據的目的,將從受害者主機上收集的數據通過因特網等通道發送給攻擊者是間諜軟件必不可少的行為。因此,從間諜軟件攻擊意圖的角度看,其具有存在“網絡通信階段”的必然性。
定義1(間諜軟件網絡通信階段)本文將間諜軟件發起的從TCP連接建立到釋放連接之間的通信行為定義為一次數據通信行為,間諜軟件實施數據通信行為的時間段即為其網絡通信階段。
為分析不同間諜軟件網絡通信階段的存在情況及持續時長,本文搭建環境并收集15款間諜軟件在60s內的網絡通信行為(各軟件在此期間至少有一次通信行為),結果如表1所示。所分析的15款間諜軟件均具有網絡通信階段,其發送竊取數據所用的傳輸層協議均為TCP協議。此外,表1還顯示所分析的間諜軟件的網絡通信階段平均所持續時長t為1.2s,均遠低于這些間諜軟件60s的總運行時長T。

表1 間諜軟件通信行為特性
由于間諜軟件網絡通信階段存在的必然性,本文將間諜軟件的網絡通信行為作為對象,提出一種基于網絡通信行為特征的間諜軟件檢測方法SDMNC。
本文將檢測單元設為TCP會話,由{源IP地址、源端口、目的IP地址、目的端口、協議}五元組確定。如圖1所示,SDMNC首先對收集的間諜軟件網絡流量進行TCP會話抽取得到間諜軟件TCP會話集。相應地,SDMNC采集用戶使用正常軟件時所產生的網絡通信流量并抽取其TCP會話,保留會話中由各內部主機發起的會話得到正常軟件TCP會話集。之后,將會話集作為訓練集并提取其中每個會話的流量特征并結合機器學習算法訓練一個檢測模型,用以判別各待檢測TCP會話對應正常軟件流量還是間諜軟件流量。

圖1 基于網絡通信行為特征的間諜軟件檢測方法
綜合考慮檢測精度和檢測效率,SDMNC所采用的特征需要具有高區分度且特征數量不宜太多。本階段進一步從會話持續時間、上行/下行數據包數量比、上行/下行數據量三個方面分析間諜軟件網絡通信階段與正常軟件數據交互的會話之間存在的區別,其中由間諜軟件竊密端向間諜軟件接收端的傳輸流量稱為上行流量,反之即為下行流量。本階段從所收集的正常軟件會話集中選取三款正常軟件的連續會話(每組30個),并在隨機選取的三款間諜軟件中各選取一組連續會話(每組30個)為代表進行圖表展示。
4.2.1 會話持續時間
間諜軟件通常按設定的時間間隔周期性發送數據,其竊密端發送數據量較小,故會話持續時間較短。而正常軟件交互數據時其交互時長和數據大小均不定,但其不需要隱藏通信行為故其通信時長通常較間諜軟件長。如圖2所示,圖中的各間諜軟件的最大會話持續時間和平均會話持續時間均遠少于正常軟件。

圖2 不同軟件會話持續時間
本文提取會話持續時間這一網絡通信行為特征,記為Tduration。首先抽取正常軟件會話集(記為N)與間諜軟件會話集(記為S),并獲取N與S的會話數目。在提取Tduration時,將每個會話中第一條TCP流的時間視為該條會話的開始時間Tfirst(即對第i條會話,記為Tfirst-i),將每個會話中最后一條TCP流結束的時間視為該會話的結束時間Tend(即對第i條會話,記為Tend-i)。對于第k個會話而言,其Tduration特征通過式(1)計算。

4.2.2 上行/下行數據包數量比
間諜軟件通信時除協議層面必要的數據包交互外,竊密端發送數據包給接收端但接收端不對其進行回應,導致該過程中數據包數量較少;而正常軟件建立連接后客戶端頻繁進行請求,其服務端進行相應響應。如圖3所示,圖中各間諜軟件會話的上行/下行數據包數量比的值通常小于正常軟件。

圖3 不同軟件的上行/下行數據包數量比
本文提取上行/下行數據包數量比網絡通信行為特征,記為Pratio。首先分別統計N與S中每個會話中上行數據流的數目(Pup)及其下行數據流的數目(Pdown)。然后計算得到上行/下行流量數據包的數量,并計算每個會話的Pratio,其中第i(i≥1)個會話的上行/下行數據流數目記為Pup-i或Pdown-i。對于第k個會話而言,其Pratio特征通過式(2)計算。

4.2.3 上行/下行數據量比
除去通信雙方建立連接以及使用SSL加密協議所產生的必要的數據傳輸之外,間諜軟件出于隱藏自身的需求其接收端通常僅接收竊密端的數據而不進行響應;而正常軟件服務端和客戶端交互數據由不同的請求和響應組成。如圖4所示,圖中各間諜軟件會話的上行/下行數據量比值大小通常大于正常軟件。

圖4 不同軟件的上行/下行數據量比
本文提取上行/下行數據量比網絡通信行為特征,記為Dratio。首先統計N與S中每個會話中上行數據流的大小(記為Dup)及其下行數據流的大小(記為Ddown)。然后計算得到Dratio,其中第i(i≥1)個會話的上行/下行數據流數目記為Dup-i或Ddown-i。對于第k個會話而言,其Dratio特征通過式(3)計算。

由于所提取的三個特征的取值范圍差別較大,SDMNC對這些特征的數值進行了歸一化處理。
本階段基于從網絡通信階段會話中提取的特征向量xk=(Tduration,Pratio,Dratio)構建間諜軟件檢測模型,用以區分正常軟件與間諜軟件流量。通過對所提取的特征向量添加類別標簽(正常軟件會話為0,間諜軟件會話為1)得到訓練集,然后使用機器學習算法(如支持向量機[15]Support Vector Machines-SVM、K近 鄰[16]K-Nearest Neighbor-KNN、RF[17])訓練間諜軟件檢測模型,最后使用訓練得到的檢測模型對測試集中的待檢測會話進行檢測以判別其屬性。
本文在Vmware虛擬機中安裝Windows 7操作系統作為間諜軟件竊密端的運行環境,并在其中安裝了WPS、360瀏覽器等常用正常軟件,其中Ftp接收端與Email接收端分別處于內網和外網。實驗的間諜軟件如表1所示。正常軟件包括迅雷、QQ等常用軟件,如表2所示。

表2 實驗所用正常軟件
正常軟件流量采集于安裝有表2中正常軟件的實驗室內部主機的網絡流量。實驗中每個間諜軟件每次收集約3h流量數據,并將其發送時間間隔在[1min,5min]之間進行設置。本次實驗將收集到的正常軟件流量與間諜軟件流量劃分為訓練集、測試集1和測試集2。其中訓練集用于訓練檢測模型,測試集1為訓練集所包含軟件在不同于訓練集流量采集時間段所采集的流量,用于測試SDMNC對已知間諜軟件流量的檢測能力;將未在訓練集和測試集1中出現過的Silent Keylogger、Spyrix Personal Monitor間諜軟件產生流量作為測試集2中的間諜軟件流量,用于測試SDMNC對未知間諜軟件流量的檢測能力。實驗數據如表3所示。

表3 實驗數據集
本文采用準確率(Accuracy-ACC)、精確率(Precision-P)召回率(Recall-R)以及F1-score(F1)來衡量方法的檢測效果。
5.3.1 實驗結果
本文實驗測試了SDMNC使用SVM、KNN、RF三種不同的機器學習算法來構建其檢測模型時的不同檢測效果。這些算法在實驗中均使用默認參數。如表4、表5所示,分別給出了SDMNC使用不同機器學習算法對測試集1及測試集2進行檢測得到的ACC、P、R和F1值。

表4 SDMNC在測試集1上獲得的ACC,P,R和F1值

表5 SDMNC在測試集2上獲得的ACC,P,R和F1值
如表4所示,SDMNC使用RF算法時獲得的ACC、P和F1值最高,分別能達到99.2%、99.5%和99.5%;SDMNC使用KNN算法時獲得的R最高,達到了99.8%。該結果表明SDMNC能夠準確區分測試集1中的間諜軟件流量與正常軟件流量。
如表5所示,SDMNC使用RF算法時獲得的ACC、P和F1值最高,其值分別為97.4%、98.8%和98.5%;SDMNC使用KNN算法時獲取的R最高(99.8%)。該結果表明SDMNC對未知的間諜軟件流量也有很高的檢測精度。
為進一步評估SDMNC的檢測效果,本文將其與文獻[12]、文獻[13]和文獻[14]所提出的檢測方法在本文數據集上進行對比實驗,結果如表6和表7所示。

表6 不同方法在測試集1上獲得的ACC,P,R和F1值

表7 不同方法在測試集2上獲得的ACC,P,R和F1值
如表6和表7所示,對比四種檢測方法在測試集1和測試集2上的檢測結果,可以看到SDMNC在ACC和F1這兩個綜合指標上均明顯優于文獻[12]、文獻[13]和文獻[14]的方法。該結果表明,與文獻[12]、文獻[13]和文獻[14]的方法相比,SDMNC能夠以更高的準確率區分間諜軟件流量與正常軟件流量。
5.3.2 實驗結果分析
為進一步分析本文所提方法,本文對比了文獻[12]、文獻[13]和文獻[14]方法中的特征數量以及訓練及檢測的時長,結果如表8所示。

表8 不同方法的訓練及檢測時長
由表8可以看到,文獻[12]和文獻[14]均使用機器學習算法訓練模型,但它們所使用的特征數量(分別為7個和8個)均多于SDMNC所需特征數量(3個)。文獻[13]的方法通過卷積神經網絡訓練檢測模型,其模型訓練復雜度相對較高。使用不同的特征數量或算法使得這四種方法所需要的訓練和檢測時長不同。如表8所示,與SDMNC(使用RF算法)相比,文獻[12]、文獻[13]和文獻[14]方法都需要更長的訓練時長;而在檢測時長方面,SDMNC所用的檢測時長也較另外三種方法短,其分別僅需0.024s和0.012s即可完成對測試集1和測試集2的檢測。綜合精度和效率的結果,可以發現SDMNC相比幾種對比方法具有更高的檢測精度和檢測效率。
SDMNC使用上行/下行數據包數量比、上行/下行數據量比、會話持續時間等三個通信行為特征進行間諜軟件檢測。為了研究不同特征對SDMNC檢測精度的影響,本文設計了消融實驗,實驗結果如圖5、圖6所示(注:特征1~3分別指代上行/下行數據包數量比、上行/下行數據量比、會話持續時間)。

圖5 SDMNC在測試集1上的消融實驗結果

圖6 SDMNC在測試集2上的消融實驗結果
由圖5和圖6可知,移除三個特征中的任一個均對SDMNC在測試集1和測試集2上的檢測精度產生了明顯影響,并且移除不同特征對于SDMNC檢測精度的影響程度相近。由此可知,三個特征對SDMNC的檢測精度均貢獻明顯且它們的貢獻度相近,無需對各個特征賦予不同的權重。
本文從間諜軟件竊取數據的意圖出發,重點關注間諜軟件的網絡通信階段,以間諜軟件在該階段傳輸所竊取數據的通信行為作為檢測依據,利用從中提取的三個網絡通信行為特征結合機器學習算法構建了一種間諜軟件檢測方法SDMNC,旨在高準確率地檢測間諜軟件。實驗結果顯示SDMNC使用RF算法時在已知和未知間諜軟件測試集上分別可以獲得99.2%和97.4%的ACC值,表明從間諜軟件網絡通信行為對其進行檢測的有效性。本文后續工作將綜合考慮間諜軟件的主機行為和網絡行為,旨在進一步提升間諜軟件檢測的檢測效果。