王 晨,郭 春+,申國偉,崔允賀
1.貴州大學 計算機科學與技術學院,貴陽 550025
2.公共大數(shù)據(jù)國家重點實驗室,貴陽 550025
遠控木馬(remote access Trojan,RAT)作為一類危害性極大且知名度極高的惡意程序,主要被用于控制目標主機、監(jiān)控受害者的主機行為以及竊取機密信息等[1]。CNCERT 發(fā)布的2019 年度報告[2]指出,我國境內感染計算機惡意程序的主機數(shù)量約582 萬臺;ProofPoint 在其2019 年Q3 威脅報告[3]中顯示,盡管惡意程序數(shù)量呈現(xiàn)整體下滑趨勢,遠控木馬的數(shù)量相比第二季度卻增長了55%。由此可見,遠控木馬相比于其他類型的惡意程序仍在高速增長,儼然成為了互聯(lián)網(wǎng)所面臨的主要安全威脅之一。
與勒索軟件等以破壞信息系統(tǒng)可用性為主的惡意軟件不同,遠控木馬以破壞信息系統(tǒng)機密性為主,其集成了鍵盤記錄、文件上傳和下載、系統(tǒng)信息竊取、桌面/攝像頭監(jiān)控、進程與注冊表修改以及文件讀寫等一系列危險功能。遠控木馬被攻擊者通過各種手段植入到目標主機后進行潛伏,待接收相關指令后向攻擊者返回指令執(zhí)行結果。由于遠控木馬具有高隱蔽性的特點,其常被用于APT(advanced persistent threat)攻擊[4]的后滲透階段以竊取機密信息。
為應對遠控木馬所引發(fā)的安全威脅,近年來國內外研究者提出了一系列遠控木馬檢測方法?;诰W(wǎng)絡流量的檢測方法是現(xiàn)階段遠控木馬檢測方法的主流[5-8],但是這類方法中大多使用從整條流中提取的統(tǒng)計特征,對木馬通信流的完整性要求較高,致使可能出現(xiàn)在檢測到遠控木馬流量的同時,被控主機已然執(zhí)行部分攻擊指令而泄露了隱私信息。因此,實現(xiàn)對遠控木馬的有效防御,對檢測方法的檢測及時性有著很高的要求。
為及時檢測遠控木馬流量,從遠控木馬控制端和被控端建立會話后初期的流量中提取特征是一個可行思路。然而,若從遠控木馬會話建立后初期的流量中所提取的特征不能較好地反映木馬的通信行為,則基于這些特征的檢測方法容易出現(xiàn)較高的漏報率或誤報率。針對上述情況,本文分析了遠控木馬會話建立后初期的網(wǎng)絡流量行為,發(fā)現(xiàn)其控制端和被控端通常會在該時間段中出現(xiàn)不涉及人為操作而自動進行的、較為固定的數(shù)據(jù)包交互行為,且該行為與正常應用同時期的流量存在明顯的差異?;谏鲜龇治鼋Y果,本文提出了一種利用序列分析的遠控木馬早期檢測方法。該方法針對遠控木馬會話建立后初期流量中的“上線包”及其后少量數(shù)據(jù)包所提取的包負載大小序列、包時間間隔以及包負載上傳下載比三個特征,運用機器學習算法建立木馬檢測模型實現(xiàn)對遠控木馬的早期檢測。
本文主要工作如下:
(1)對35 個遠控木馬與12 個正常軟件的通信行為進行實驗分析,通過比較遠控木馬和正常軟件各自通信會話建立后初期的流量,發(fā)現(xiàn)它們在數(shù)據(jù)包負載大小、數(shù)據(jù)包時間間隔等方面存在明顯區(qū)別,并進一步分析了遠控木馬通信會話建立后流量中首個具有較大負載的數(shù)據(jù)包(“上線包”)及其后數(shù)個數(shù)據(jù)包所具有的特性。
(2)基于遠控木馬和正常軟件在會話建立后初期通信流量的差別,提出了一種利用序列分析的遠控木馬檢測方法。該方法使用從“上線包”及其后少量數(shù)據(jù)包的負載大小序列與時間間隔序列中提取的三個特征,結合機器學習算法實現(xiàn)對遠控木馬的早期檢測。
(3)搭建模擬環(huán)境對所提出的遠控木馬檢測方法進行了實驗測試,并探索了“上線包”后不同的數(shù)據(jù)包數(shù)量對于所提方法檢測結果的影響。實驗結果表明本文方法能夠以通信會話建立后初期的數(shù)個數(shù)據(jù)包實現(xiàn)對已知和未知遠控木馬的高準確率檢測,有助于及時檢測出遠控木馬流量。
現(xiàn)今遠控木馬檢測方法主要分為兩類,即基于主機的檢測方法與基于網(wǎng)絡的檢測方法。
基于主機的檢測方法主要通過分析木馬源代碼構建木馬特征庫以檢測遠控木馬,亦或是在受控環(huán)境下(沙箱、虛擬機等)監(jiān)測遠控木馬運行時的主機資源消耗情況、注冊表編輯、端口隱藏以及關鍵API調用等敏感行為構建模型進行檢測。
Ahmadi 等人[9]通過將程序運行中的API 調用轉化為灰度圖并運用圖像識別相關技術來檢測木馬。Rhode 等人[10]通過收集惡意程序在沙箱中運行的早期行為來進行惡意程序判別。Canali 等人[11]基于n-gram 模型提出了一種木馬程序的檢測方法?;谥鳈C的檢測方法需要將檢測系統(tǒng)部署在主機上,除了占用一定主機資源之外,還需要涉及對操作系統(tǒng)的底層操作,可能對主機的穩(wěn)定性造成一定影響。并且隨著隱蔽技術在遠控木馬中的應用及發(fā)展,基于主機的檢測難度逐漸增加。
早期基于網(wǎng)絡的檢測方法通常采用報文負載匹配技術,提取數(shù)據(jù)包負載與木馬特征庫進行匹配以檢測遠控木馬。該類檢測方法檢測速度快,同時還能具有較高的準確率,但是基于報文負載匹配方法的識別能力依賴于特征庫的完備程度,且只能檢測已知木馬[12]。因此,基于通信行為分析的檢測方法更受現(xiàn)階段遠控木馬檢測研究者的青睞,在網(wǎng)絡入侵檢測方法[13-14]中也常被運用。
李巍等人[15]通過分析遠控木馬的通信行為,將遠控木馬運行過程分為建立連接、命令控制與保持連接三個階段,從每個階段中提取不同的統(tǒng)計特征并結合C4.5 算法實現(xiàn)檢測。該方法需要使用完整的數(shù)據(jù)流,因而其檢測存在一定程度的滯后,這也是現(xiàn)今很多遠控木馬檢測方法都存在的問題。姜偉等人在文獻[16]及文獻[17]中設計了一種基于異常網(wǎng)絡行為的遠控木馬檢測模型,但該方法同樣需要使用較長的通信流。Jiang 等人[18]將遠控木馬通信流量中出現(xiàn)在TCP 三次握手后且相鄰數(shù)據(jù)包時間間隔大于1 s之前的會話定義為早期階段,從中提取了數(shù)據(jù)包數(shù)量、上下行數(shù)據(jù)包數(shù)量比等6 個統(tǒng)計特征來快速檢測遠控木馬,但該方法的漏報率較高;Adachi 等人[19]在Jiang 研究的基礎上將網(wǎng)絡會話與主機進程進行關聯(lián),增加了4 個特征用于檢測遠控木馬,但是其方法仍存在較高的誤報率。宋紫華等人[20]從TCP 會話的前5 個數(shù)據(jù)包中提取了14 個特征,并以此設計了一種木馬快速檢測方法,但此方法的檢測對象是TCP會話,因此需要對多個TCP 會話進行檢測才能識別出具有主從連接的遠控木馬。Wu 等人[21]受文獻[22]的啟發(fā),以遠控木馬的人為控制特性為檢測出發(fā)點,先對數(shù)據(jù)流進行切片,再以每個切片中前3 個包的方向序列來判斷數(shù)據(jù)流是否屬于遠控木馬會話,但該方法需要分析每條流中250 個數(shù)據(jù)包以檢測遠控木馬會話。Pallaprolu 等人[23]從每個數(shù)據(jù)包中提取出特征向量,并運用集成學習對每個分類器的檢測結果進行投票來獲得高檢測率,但由于該方法以會話中全部數(shù)據(jù)包為分析對象,需要很長的訓練時間和檢測時間。
通過對上述文獻的分析可知,現(xiàn)階段基于網(wǎng)絡的檢測方法大多對數(shù)據(jù)流的完整性有較高的要求,其檢測存在一定程度的滯后;已有的遠控木馬早期檢測方法則較少考慮數(shù)據(jù)流的序列特性而僅使用統(tǒng)計特征導致誤報率較高。因此,本文重點關注遠控木馬通信會話建立后初期流量的序列特性,旨在高準確率的前提下提高遠控木馬流量檢測的及時性。
遠控木馬包括控制端與被控端,植入受害主機的被控端通常會伴隨系統(tǒng)的啟動而啟動,而攻擊者通過控制端發(fā)送指令與被控端進行交互。早期的遠控木馬通常由控制端發(fā)出連接請求以連接被控端。但是隨著防火墻的廣泛應用和發(fā)展,越來越多的遠控木馬采用反彈式連接(即由被控端發(fā)起連接請求以連接控制端)來避開防火墻的篩查。如圖1 所示,遠控木馬的運行過程可以劃分為建立連接、命令交互和保持存活三個“階段”。在建立連接階段,被控端與控制端通過TCP 三次握手完成連接,之后被控端會主動回傳受害者的上線信息;命令交互階段中部分木馬會在主連接存在的情況下建立次連接用于執(zhí)行指令與回傳結果;而在保持存活階段,攻擊者通過設計心跳行為來保持連接,部分木馬的心跳包會以固定模式貫穿遠控木馬整個通信周期。
Fig.1 RAT communication flow chart圖1 遠控木馬的通信流程圖
據(jù)實驗觀察,遠控木馬建立連接階段流量具有以下特性:遠控木馬為了逃避網(wǎng)絡監(jiān)控軟件的查殺,通常會盡可能減少被控端與控制端的交互來隱藏自己,這使得遠控木馬在會話建立后初期傳輸?shù)臄?shù)據(jù)量不會太多;建立連接階段被控端需要反復發(fā)出連接請求直至控制端對其進行響應,之后被控端將收集到的受害者主機信息主動回傳給攻擊者,這種回傳信息的數(shù)據(jù)包的負載通常較大,與該階段其余的數(shù)據(jù)包負載大小存在明顯區(qū)別。本文將由{源IP 地址、目的IP 地址、傳輸層協(xié)議}三元組確定的網(wǎng)絡通信流定義為IP 會話,并將IP 會話的第一條TCP 流中由內部主機向外部網(wǎng)絡發(fā)送且數(shù)據(jù)包傳輸層負載大于α字節(jié)的第一個數(shù)據(jù)包定義為信息回傳包,也稱為上線包。表1 統(tǒng)計了35 個遠控木馬在建立連接階段的上線包的負載大小情況,這些遠控木馬均使用TCP 協(xié)議進行信息回傳。
由表1 可知,上線包的負載在遠控木馬建立連接階段的數(shù)據(jù)傳輸總量(不含三次握手)中占了極大比重,且orion、qusar 等遠控木馬在該階段只進行了上線操作。如圖2 所示,不同遠控木馬的上線包負載大小因其傳輸內容不同而不同,為能夠全部覆蓋本文所分析遠控木馬的上線包,本文將α設定為60。遠控木馬被控端向控制端主動發(fā)送上線包后,控制端會發(fā)送一個ACK 包告知被控端已確認接收,在這之后的數(shù)個數(shù)據(jù)包可能出現(xiàn)在以下不同階段從而具有不同特性:
(1)建立連接階段:這些數(shù)據(jù)包對應控制端自動發(fā)出的控制命令或者心跳行為,但是由于該階段下的所有行為均不涉及人為操作,遠控木馬發(fā)生大數(shù)據(jù)量交互的可能性較低,因而上線包之后數(shù)個數(shù)據(jù)包的負載大小往往小于上線包的負載大小。
(2)命令交互階段:攻擊者觀察到受害者主機上線,在經(jīng)過一定的人為反應時間后將向被控端發(fā)送指令以執(zhí)行相應攻擊操作。由于指令對應的數(shù)據(jù)包大多只包含少許指令參數(shù),其負載通常較小。
Table 1 Payload of information return packet during phase of connection establishment表1 上線包在建立連接階段中的負載情況
Fig.2 Payload distribution of information return packet of used RATs圖2 實驗所用遠控木馬的上線包負載分布
(3)保持存活階段:出現(xiàn)在該階段的原因是此時攻擊者未能及時觀察到被控端上線,通信雙方在靜默狀態(tài)下進入了通過心跳包維持通信的保持存活階段。由于心跳包在大多數(shù)情況下不涉及信息交互,其負載通常較小。
由以上分析可知,遠控木馬在上線包之后的數(shù)個數(shù)據(jù)包傾向于使用小包傳輸,而正常應用程序為實現(xiàn)資源快速交互會在建立連接后進行大量數(shù)據(jù)交換行為,其第一個傳遞數(shù)據(jù)的“大包”(負載大于α字節(jié),本文方法將其視為正常應用程序的“上線包”)發(fā)生之后通常會繼續(xù)傳遞大量由正常應用服務端發(fā)出的響應信息,由于不需要隱藏自身行為,后續(xù)幾個數(shù)據(jù)包的負載通常會很大,這與遠控木馬形成了鮮明對比。同樣,此行為也使得正常程序在這幾個數(shù)據(jù)包的上下行字節(jié)比值較小(其中,本文將由遠控木馬被控端(對應正常應用客戶端)向遠控木馬控制端(對應正常應用服務端)的傳輸流量統(tǒng)稱為上行流量,反之為下行流量),遠控木馬則與之相反。另外,對于在建立連接階段僅進行上線操作的遠控木馬,上線包與其后的數(shù)個數(shù)據(jù)包之間會因人為反應或心跳間隙造成較大的時間間隔,而正常程序在網(wǎng)絡不發(fā)生堵塞時較少發(fā)生該情況。因此,本文在后續(xù)章節(jié)中將基于遠控木馬的以上特點進一步分析遠控木馬通信會話建立后初期流量中的上線包及其之后的數(shù)個數(shù)據(jù)包所具有的特性,對其提取特征并結合機器學習算法建立模型及進行檢測。
基于第2 章的分析結果,遠控木馬在建立連接階段中存在自動且相對固定的數(shù)據(jù)包交互行為,且該行為與正常應用存在明顯區(qū)別。如果能在遠控木馬實現(xiàn)命令交互以獲取受害者隱私信息前發(fā)現(xiàn)其流量,則能夠有效降低受害者隱私泄露的風險。因此,本文在對遠控木馬通信會話建立后初期的數(shù)據(jù)包序列進行分析的基礎上,運用時序特征與統(tǒng)計特征,提出了一種利用序列分析的遠控木馬早期檢測方法,該方法能夠在遠控木馬會話建立后初期及時且高準確率地檢測出遠控木馬流量。由于部分遠控木馬存在主從連接的情況,為能夠及時檢測出木馬流量,本文將檢測單元設定為IP 會話中的第一條TCP 流,由{源IP 地址、源端口、目的IP 地址、目的端口、傳輸層協(xié)議}五元組確定。如圖3 所示,本文所提出的利用序列分析的遠控木馬早期檢測方法首先對數(shù)據(jù)包進行過濾并抽取通信會話,選取每個會話中的第一條TCP 流,以內部主機向外部網(wǎng)絡發(fā)送的上線包為標志,加上其后數(shù)個數(shù)據(jù)包共同用于提取時序特征及統(tǒng)計特征,然后運用機器學習算法訓練檢測模型,最后由訓練好的檢測模型對待檢流量進行判斷,以判別該流量是正常應用流量還是遠控木馬流量。
本文選擇上線包及其后續(xù)數(shù)個數(shù)據(jù)包的傳輸負載大小序列、傳輸字節(jié)數(shù)和時間間隔作為特征,具體介紹如下。
Fig.3 RAT early detection method using sequence analysis圖3 利用序列分析的遠控木馬早期檢測方法
3.2.1 傳輸負載序列
遠控木馬在建立連接階段的主要操作目的是向攻擊者傳輸被控主機信息。據(jù)實驗分析發(fā)現(xiàn),部分遠控木馬會在連接建立后主動上傳受害者信息;部分遠控木馬則是在接收到控制端自動發(fā)出的請求信息之后再發(fā)送上線包;少數(shù)遠控木馬還會在發(fā)送上線包之前進行確認版本以及握手等操作,但是相比于上線包,這些數(shù)據(jù)包由于只傳遞命令參數(shù)其負載往往較小。本文以上線包的大小作為閾值,將包負載字節(jié)數(shù)小于上線包大?。?0 B)的數(shù)據(jù)包稱為小包并記為0,反之則稱為大包并記為1。表2 統(tǒng)計了717條正常會話與985 條遠控木馬會話上線包之后3 個數(shù)據(jù)包的負載大小序列(Slength)的分布情況,其中正常會話來源于實驗室內部主機流量,木馬會話包括35 個遠控木馬的流量,表中序列長度小于3 時表示網(wǎng)絡流中上線包后出現(xiàn)的數(shù)據(jù)包數(shù)量不足3 個。可以看出,正常應用所產(chǎn)生的數(shù)據(jù)包的負載序列多集中在“011”與“11”類型,這與正常應用在建立連接后需要接收來自于服務器的資源響應有關;而遠控木馬出于對自身隱蔽性的考慮,上線包后的數(shù)個數(shù)據(jù)包多為小包。因此,將上線包后的數(shù)個數(shù)據(jù)包的負載序列作為檢測遠控木馬流量的特征之一。
Table 2 Statistics of different software's load sequence times of following three packets after information return packet表2 不同軟件的上線包之后3 個數(shù)據(jù)包負載序列次數(shù)統(tǒng)計
為方便機器學習算法進行訓練,本文將上線包后的數(shù)據(jù)包負載大小序列轉化為十進制。對一個長度為m的數(shù)據(jù)包負載序列d={d1,d2,…,dm},將其每個字符di乘以2 的m-i次方后再進行累加,即對應的特征值應表示為:
3.2.2 傳輸字節(jié)數(shù)
如第2 章所述,遠控木馬在上線包之后的數(shù)個數(shù)據(jù)包傾向于使用小包傳輸。因此,遠控木馬被控端所發(fā)出的上線包及之后交互的數(shù)個數(shù)據(jù)包的上下行字節(jié)比(Rlength)通常也會較大。圖4 展示了4 個遠控木馬被控端與5個正常應用客戶端所發(fā)出的上線包及其后交互的3 個包(4Pks)的上下行字節(jié)比值。由圖4可知,這些木馬流量的上下行字節(jié)比值在10 左右,而正常應用的該值小于1。這是因為上線包的負載較大,無論遠控木馬在上線包發(fā)出后進入操作狀態(tài)或靜默狀態(tài),其后產(chǎn)生的數(shù)個數(shù)據(jù)包對應的控制命令包或心跳包均多為小包;而正常應用行為如瀏覽網(wǎng)頁、觀看視頻以及下載文件時產(chǎn)生的下行方向的數(shù)據(jù)包的負載較大,故正常應用在其上線包及之后幾個數(shù)據(jù)包的上下行字節(jié)比值較小。
Fig.4 Ratio of different software's upstream and downstream bytes of information return packet and next 3 packets(4Pks)圖4 不同軟件的上線包及之后3 個數(shù)據(jù)包(4Pks)上下行字節(jié)比
由于本文方法需要使用的數(shù)據(jù)包數(shù)量較少,有可能出現(xiàn)下行數(shù)據(jù)包負載之和為0 的情況。本文方法在下行數(shù)據(jù)包負載之和為0 時將選擇所有上行數(shù)據(jù)負載之和作為特征值。對一個長度為m的數(shù)據(jù)包負載序列d={d1,d2,…,dm},當其上行數(shù)據(jù)負載總和為Ulength,下行數(shù)據(jù)負載總和為Dlength,則上下行數(shù)據(jù)包負載字節(jié)比特征值為:
3.2.3 時間間隔
有別于建立連接階段,遠控木馬在其命令交互階段的行為更多包含攻擊者的人為控制因素。該階段攻擊者可以通過控制端向被控端發(fā)送攻擊指令執(zhí)行惡意操作,包括但不限于下載文件、監(jiān)控攝像頭等,不同的惡意操作對應著不同的指令。通過第2 章的分析可知,部分遠控木馬在建立連接階段中僅包含建立連接及上線包操作,之后便進入命令交互階段或保持存活階段,但由于遠控木馬的人為控制特性,在建立連接階段到進入命令交互階段或保存存活階段之間的數(shù)據(jù)包間會出現(xiàn)相對較長的時間間隔,這是由攻擊者需要一定的反應時間或者由攻擊者自行設定的心跳間隔所導致的;而正常應用在連接建立初期,其客戶端和服務端交互頻繁,因此處于該時期的數(shù)據(jù)包的時間間隔會相對較小。該過程的示意圖如圖5 所示,遠控木馬在上線包發(fā)出后到接收到控制命令之間需要的攻擊者反應時間為t(單位:s),而正常應用客戶端在發(fā)出資源請求后服務器會很快返回大量的響應數(shù)據(jù)包。
因此,本文選取上線包及其后數(shù)個數(shù)據(jù)包中最大的一個時間間隔作為特征,記為Tinterval。對一個長度為m-1 的數(shù)據(jù)包時間間隔序列T={T1,T2,…,Tm-1},其最大時間間隔特征值為:
Fig.5 Comparison of RAT and normal application in data stream transmission圖5 遠控木馬與正常應用數(shù)據(jù)流傳輸對比
綜上所述,所提方法提取特征的對象為n個數(shù)據(jù)包(nPks),即上線包及其后續(xù)n-1 個數(shù)據(jù)包,從會話時間與傳輸字節(jié)數(shù)兩方面提取了三維特征,具體描述如表3 所示。
Table 3 Feature description表3 特征描述
本階段的主要工作是基于上述特征提取階段所得到的特征向量構建一個檢測模型用于區(qū)分遠控木馬流量與正常應用流量。為實現(xiàn)該目標,本文通過搭建實驗環(huán)境采集了多個知名的遠控木馬流量和正常應用流量,從這些流量中提取傳輸負載大小序列、傳輸字節(jié)數(shù)和時間間隔等特征并添加類別標簽(正常流量或遠控木馬流量)以構建訓練集Dtr(Dtr={(x1,Y1),(x2,Y2),…,(xM,YM)},其中Yi∈{正常流量,遠控木馬流量},xi=(Tintervali,Rlengthi,Slengthi))。然后通過Dtr結合分類算法建立一個遠控木馬檢測模型。為得到高準確率的檢測結果,本文分別運用了支持向量機(support vector machine,SVM)、貝葉斯(na?ve Bayes,NB)、K近鄰(K-nearest neighbor,KNN)、隨機森林(random forest,RF)以及決策樹(decision tree,DT)5 種分類算法訓練檢測模型并對其檢測結果進行對比。
在檢測階段,訓練好的檢測模型將對測試集中的每條待檢流量進行檢測,以判別各條流量屬于正常應用流量還是遠控木馬流量。
在搭建實驗環(huán)境時,為保護內網(wǎng)主機安全,本文將遠控木馬的控制端安裝在具有公有IP 的云服務器上,而被控端安裝在局域網(wǎng)內的Vmware 虛擬機中,虛擬機采用Windows 7 操作系統(tǒng)。檢測模型所在主機的硬件配置為8 GB 內存,Intel i7-6700HQ 處理器,使用Wireshark 抓包,編程語言采用Python3.7,并使用scikit-learn 0.22.1 庫進行檢測模型訓練。實驗拓撲如圖6 所示。
Fig.6 Experimental topology圖6 實驗拓撲
本文實驗的遠控木馬程序包括35 個知名遠控木馬程序:black_worm、daleth、darkcomet、darktrack、killer、nanocore、njrat、pshare、quasar、remcos、revenge、slayer、spynet、troianos、ugsec、babylon、bozok、bxrat、cybergate、greame、mlrat、mega、paradox、ucul、orion、novalite、drat、proton、cloud、l6-rat、ctos、vantom、xena、xrat、xtreme。為體現(xiàn)正常應用流量的覆蓋率,本文從瀏覽器、電子郵件、即時通信、視頻軟件、P2P 下載、云服務以及游戲7 種不同類型的正常應用中共選取12款代表性程序。選取的正常應用類型及程序如表4所示。實驗中正常流量采集于實驗室內部主機正常使用表4 中的正常應用程序時所產(chǎn)生的網(wǎng)絡流量。對于遠控木馬,由于本文所提的檢測方法只涉及遠控木馬會話建立后的少量數(shù)據(jù)包,對每個遠控木馬每次采集約5 min 流量數(shù)據(jù)。由于正常應用流量在實際通信環(huán)境中通常遠多于遠控木馬的流量,本文實驗將正常流量與木馬流量按照約10∶1 的比例混合以模擬真實網(wǎng)絡環(huán)境的流量占比情況。本文將收集到的正常流量和木馬流量劃分為訓練集、已知遠控木馬測試集和未知遠控木馬測試集,其中未知遠控木馬測試集對應未在訓練集中出現(xiàn)過的killer、njrat、xrat、spynet 4 個遠控木馬的流量,用于測試本文方法對于未知遠控木馬流量的檢測能力。具體而言,如表5 所示,本次實驗的訓練集包括5 462 個正常應用會話和452 個遠控木馬會話;已知遠控木馬測試集包括5 513 個正常應用會話和449 個遠控木馬會話;未知遠控木馬測試集包含717 個正常應用會話和84 個遠控木馬會話。
Table 4 Normal applications used in experiment表4 實驗所用正常程序
Table 5 Experimental data表5 實驗數(shù)據(jù)
本文采用準確率(Accuracy)、漏報率(false negative rate,F(xiàn)NR)以及誤報率(false positive rate,F(xiàn)PR)這3 個常用評價指標來衡量本文方法的檢測效果。這些指標可以通過TP、TN、FP、FN計算得到。TP表示遠控木馬流量被正確檢測的數(shù)量,F(xiàn)N表示遠控木馬流量被誤判為正常應用流量的數(shù)量,F(xiàn)P表示正常應用流量被誤判為遠控木馬流量的數(shù)量,TN表示正常應用流量被正確檢測的數(shù)量。3 個指標的含義及具體的計算方法為式(4)~(6)。
Accuracy表示預測的準確率:
FNR表示所有預測為正的樣本中實際為負的比例:
FPR表示所有預測為負的樣本中實際為正的比例:
4.4.1 實驗結果
本文實驗采用SVM、NB、KNN、RF 和DT 在內5種機器學習算法,利用相同的訓練集構建檢測模型,再使用已知遠控木馬測試集與未知遠控木馬測試集來分別測試檢測模型對已知遠控木馬和未知遠控木馬的檢測能力,并進一步分析本文方法在不同數(shù)量數(shù)據(jù)包(上線包及其之后的數(shù)據(jù)包)下的檢測效果。
表6 顯示了本文方法在分別使用3、4、5 和6 個數(shù)據(jù)包時(包含上線包)運用不同機器學習算法在已知遠控木馬測試集上獲得的Accuracy、FNR以及FPR值。其中,使用4 個數(shù)據(jù)包(4Pks)時運用RF 算法獲得的Accuracy最高,達到0.994,而對應的FNR與FPR分別為0.029 與0.004。
如圖7 所示,當本文方法在3Pks 進行檢測時,DT與RF 能夠實現(xiàn)0.989 的Accuracy;當使用數(shù)據(jù)包數(shù)達到4 時,RF的Accuracy值能夠達到0.994;RF使用5Pks 與6Pks分別獲得了0.989 與0.987 的Accuracy。值得注意的是,5 種算法中SVM 與NB 的Accuracy較低,其余3 種算法均在4Pks 時取得最佳的Accuracy。經(jīng)分析發(fā)現(xiàn),這是因為方法所使用的部分特征隨著用于提取特征的數(shù)據(jù)包數(shù)量增加,其特征值在正常應用流量和遠控木馬流量中愈發(fā)趨同。圖8 給出了本文訓練集與測試集中正常與遠控木馬流量在不同數(shù)據(jù)包下其特征Tinterval的值大于1 s 的樣本數(shù)量??梢钥吹接糜谔崛√卣鞯臄?shù)據(jù)包數(shù)為4Pks 時,Tinterval的值大于1 s 的木馬流量樣本多于正常流量樣本;而當用于提取特征的數(shù)據(jù)包數(shù)為5Pks 時,Tinterval的值大于1 s 的流量中正常流量樣本占了大部分。因此本文所提檢測方法將檢測數(shù)據(jù)包數(shù)設定為4Pks。
表7 為本文方法在4Pks 時對未知遠控木馬測試集所得到的Accuracy、FNR與FPR值。表7 的結果顯示RF 的檢測效果最佳,其Accuracy達到0.985,F(xiàn)NR和FPR分別為0.012 與0.015。
Table 6 Results of 5 algorithms on known RAT test set with different packets表6 5 種算法在不同數(shù)據(jù)包數(shù)下對已知木馬測試集的檢測結果
Fig.7 Accuracy of 5 algorithms on known RAT test set圖7 5 種算法在已知遠控木馬測試集上的Accuracy
Fig.8 Number of samples with Tinterval value greater than 1 s for different number of packets圖8 不同數(shù)據(jù)包數(shù)下Tinterval的值大于1 s的樣本數(shù)
Table 7 Detection results of 5 algorithms using 4Pks on unknown RAT test set表7 4Pks時5 種算法對未知遠控木馬測試集的檢測結果
為進一步對比所提方法的檢測效果,本文采用文獻[18]與文獻[23]的檢測方法分別對相同的流量進行處理并提取特征,其中文獻[18]使用RF 算法訓練模型并進行檢測;文獻[23]使用集成學習方法訓練模型,其所用分類算法包括KNN、J48 決策樹與SVM 三種。表8 和表9 分別給出了文獻[18]與文獻[23]的檢測方法對已知與未知遠控木馬測試集的檢測結果。
Table 8 Detection results of different methods on known RAT test set表8 不同方法在已知遠控木馬測試集上的檢測結果
Table 9 Detection results of different methods on unknown RAT test set表9 不同方法在未知遠控木馬測試集上的檢測結果
由表8 的結果可知,本文方法在已知木馬測試集上的Accuracy和FPR分別為0.993 79 和0.004 35,優(yōu)于文獻[18]和文獻[23]方法所得到的Accuracy和FPR。在FNR指標上,由于文獻[23]的方法是通過木馬控制端和被控端的所有數(shù)據(jù)包來提取特征,所獲得的FNR優(yōu)于僅使用部分數(shù)據(jù)包來提取特征的文獻[18]方法和本文方法;同時,本文方法在FNR指標上優(yōu)于文獻[18]的方法。由表9 可知,在對未知遠控木馬數(shù)據(jù)集的檢測結果上,本文方法在僅使用會話中少量數(shù)據(jù)包的情況下獲得了0.985 02 的Accuracy和0.015 34 的FPR,該結果與文獻[23]方法使用會話中全部數(shù)據(jù)包所獲得的Accuracy和FPR相近。因此,從實驗結果可以看到,本文方法能夠在遠控木馬被控端和控制端開始通信的初期,通過少量數(shù)據(jù)包來有效地區(qū)分正常應用的通信會話和遠控木馬的通信會話。
4.4.2 結果分析
本小節(jié)給出了本文方法分別運用5 種不同機器學習算法在4Pks 時所需要的訓練時間和檢測時間。如表10 所示,5 種算法中最長的訓練時長為SVM 的0.315 s,最長的檢測時長為KNN 的0.040 s,而RF 的訓練時長為0.045 s,檢測時長為0.017 s,表明本文方法使用這5 種算法均能獲得高的檢測效率。
此外,為進一步分析本文方法對遠控木馬流量及時檢測的能力,本文對比了文獻[18]與文獻[23]所用特征需要檢測的數(shù)據(jù)包數(shù)量(從通信會話建立后開始統(tǒng)計),并依據(jù)是否有攻擊者操作木馬分別進行統(tǒng)計,即靜默狀態(tài)與操作狀態(tài),結果如表11 所示。
Table 10 Training and detection time of 5 algorithms on known RAT test set using 4Pks表10 4Pks時5 種算法對已知遠控木馬測試集的訓練及檢測時長 s
Table 11 Average number of packets need to be detected by different methods表11 不同方法所需要檢測的平均數(shù)據(jù)包數(shù)
由表11 可知,按照文獻[18]中對遠控木馬早期的定義,由于正常應用早期不需要隱藏自己的行為,通信雙方在會話建立后的短時間內即進行大量數(shù)據(jù)交互,導致該方法在正常程序流量中抽取數(shù)據(jù)包數(shù)量遠多于本文方法;文獻[23]由于其檢測對象是數(shù)據(jù)包級,需要檢測通信雙方的所有交互數(shù)據(jù)包,而正常應用的交互流量中存在多達幾萬個數(shù)據(jù)包的長會話,因此該方法所需要檢測的數(shù)據(jù)包數(shù)量大且效率較低,無法實現(xiàn)木馬通信流量的早期檢測;而本文方法關注于上線包,僅需要檢測通信會話建立后初期的少量數(shù)據(jù)包。綜上,本文方法所需的會話數(shù)據(jù)包數(shù)量較少,能夠較早地檢測出遠控木馬通信流量。
本文通過分析遠控木馬會話建立后初期的通信行為,發(fā)現(xiàn)木馬程序與正常應用在該時期內存在數(shù)據(jù)包序列差異,然后進一步提出了一種利用序列分析的遠控木馬早期檢測方法。本文實驗通過提取上線包及其后續(xù)數(shù)個數(shù)據(jù)包的特征并采用五種不同機器學習算法進行模型訓練和檢測,實驗結果表明本文方法運用RF 算法能夠在4Pks 時對已知遠控木馬測試集與未知遠控木馬測試集分別獲得0.993 79 和0.985 02 的Accuracy,說明本文方法能夠及時且以高準確率檢測遠控木馬流量。后續(xù)本文方法將在實際辦公環(huán)境中進行測試,并研究如何進一步降低檢測方法對未知遠控木馬檢測的漏報率與誤報率。