時 林 時紹森 文偉平
(北京大學(xué)軟件與微電子學(xué)院 北京 102600)
隨著網(wǎng)絡(luò)逐漸滲透到人們生活的方方面面,網(wǎng)絡(luò)空間的安全問題也逐漸被重視起來.網(wǎng)絡(luò)中的攻擊手段多種多樣,高級持續(xù)威脅(advanced persistent threat, APT)攻擊為其中較為復(fù)雜并且危害性較高的一種.APT攻擊過程貫穿系統(tǒng)外部與系統(tǒng)內(nèi)部,且持續(xù)性很強,因此難以進行檢測與徹底防御,需要得到更多的關(guān)注.近年來,全球APT組織持續(xù)增多,攻擊涉及金融、政府、教育、科研等重點行業(yè)[1-2].到2021年上半年[3],APT攻擊整體形勢嚴峻,發(fā)現(xiàn)和披露的APT攻擊活動較2020年同期大幅增加.
APT攻擊周期一般較長,在長期且持續(xù)的攻擊下,攻擊者會將多種攻擊方式進行組合并調(diào)整,導(dǎo)致防護系統(tǒng)無法對經(jīng)過精心處理的攻擊特征完成規(guī)則匹配,最終導(dǎo)致目標機器遭到入侵.目前,大多數(shù)IDS系統(tǒng)僅具有單步攻擊的檢測能力,并沒有將持續(xù)性的攻擊聯(lián)系起來,且檢測內(nèi)容往往局限于網(wǎng)絡(luò)流量,如魚叉攻擊、XSS、SQL注入等.一些APT攻擊監(jiān)控系統(tǒng)使用IDS的告警日志進行攻擊判定.報警日志往往具有一定比例的誤報,判定的攻擊行為并不準確.更重要的是,僅檢測流量往往會忽略完整的APT攻擊過程,APT攻擊攻入系統(tǒng)后,會進一步釋放控制機器的惡意代碼,導(dǎo)致主機系統(tǒng)發(fā)生大量攻擊.因此,將主機內(nèi)的攻擊行為與網(wǎng)絡(luò)流量中的攻擊行為相結(jié)合,共同作為APT攻擊的判斷條件是十分必要的,并且對于APT攻擊檢測而言,主機內(nèi)的惡意行為非常重要.
目前,針對Windows系統(tǒng)的入侵檢測系統(tǒng)與沙箱系統(tǒng)較多,而針對Linux系統(tǒng)攻擊的分析與防御措施較為薄弱.很多惡意代碼檢測分析工具與防火墻都是針對Windows系統(tǒng)的,側(cè)重于Linux系統(tǒng)的惡意文件檢測手段較少.例如,開源的Cuckoo沙箱、商用的騰訊微步沙箱、奇安信文件分析平臺等對Windows惡意文件的檢測較為成熟,但是對于Linux平臺上的惡意文件缺乏檢測能力.因此針對Linux系統(tǒng)的APT攻擊檢測亟待解決.此外,目前業(yè)內(nèi)普遍用于研究的攻擊數(shù)據(jù)也只局限于網(wǎng)絡(luò)流量數(shù)據(jù)或某些APT攻擊釋放的惡意文件,并不具有很強的關(guān)聯(lián)性.APT攻擊持續(xù)時間長、攻擊步驟繁多的特點導(dǎo)致APT攻擊樣本并不豐富,目前還沒有形成一套科學(xué)的數(shù)據(jù)集供廣大安全從業(yè)人員進行研究.
針對以上問題和研究現(xiàn)狀,本文提出并實現(xiàn)了一種基于LSTM(long short-term memory)的Linux系統(tǒng)下APT攻擊檢測方案.該方案綜合了主機側(cè)與網(wǎng)絡(luò)側(cè)的雙側(cè)行為特征,將特征數(shù)據(jù)集依據(jù)APT攻擊的生命周期進行建模重構(gòu),進而使用LSTM進行訓(xùn)練,得到了檢測效果良好的APT攻擊檢測模型.
本文主要貢獻如下:
1) 捕獲惡意Linux ELF文件行為的LAnalysis沙箱.
構(gòu)建了一款能力較強的分析Linux ELF文件的LAnalysis沙箱,通過對相關(guān)內(nèi)核函數(shù)以及系統(tǒng)調(diào)用函數(shù)的針對性內(nèi)核插樁,LAnalysis可以獲取惡意代碼的持久化、隱藏與偽裝、權(quán)限提升、進程注入等10類共16種不同的惡意行為.
2) 符合APT攻擊生命周期的數(shù)據(jù)集.
使用LAnalyise沙箱分析了500個惡意家族的共4 101個惡意樣本.獲取了惡意樣本的主機側(cè)攻擊行為特征,構(gòu)建了Linux主機側(cè)的攻擊數(shù)據(jù)集,并結(jié)合網(wǎng)絡(luò)側(cè)數(shù)據(jù)集NSL-KDD按照APT攻擊生命周期,構(gòu)建了一套兼具主機行為和網(wǎng)絡(luò)行為特征的APT攻擊數(shù)據(jù)集.
3) 基于LSTM的APT攻擊檢測模型.
將符合APT生命周期的數(shù)據(jù)集放入注重時序性特征的LSTM進行訓(xùn)練,其中包含網(wǎng)絡(luò)與主機雙側(cè)特征,得到了可以檢測APT攻擊的深度學(xué)習(xí)模型,并取得了良好的應(yīng)用效果.
APT攻擊生命周期較長,各種攻擊行為之間具有一定的關(guān)聯(lián)性,這給檢測帶來很大挑戰(zhàn).目前的檢測手段主要分為側(cè)重于主機側(cè)APT攻擊部署的惡意代碼的檢測、側(cè)重于網(wǎng)絡(luò)側(cè)惡意流量分析的檢測以及將多步攻擊相結(jié)合的注重攻擊關(guān)聯(lián)性分析的檢測等.
主機側(cè)惡意代碼檢測主要是對APT攻擊釋放的木馬[4]或后門等文件進行檢測.當前針對可疑惡意程序的分析方法主要為動態(tài)分析與靜態(tài)分析[5].馮學(xué)偉等人[6]利用惡意代碼中使用的IP地址之間的聯(lián)系進行聚類;霍彥宇[7]將分析惡意代碼時產(chǎn)生的行為警報信息處理為特征,使用聚類的方法進行分類識別;Sharma等人[8]提出一種入侵檢測框架,使用6個監(jiān)視器監(jiān)視系統(tǒng)中的行為,統(tǒng)計4天中各個文件的更改情況以及進程數(shù)據(jù)作為正常情況后續(xù)進行狀態(tài)檢測,若文件與進程數(shù)據(jù)出現(xiàn)異常就會發(fā)出威脅告警;Moon等人[9]提出一種基于主機中發(fā)生行為的攻擊檢測方法,通過捕獲主機中39種特定行為的發(fā)生作為特征對APT攻擊進行檢測;孫增等人[10]提出基于沙箱回避對抗的相關(guān)檢測方法,統(tǒng)計了常見沙箱中使用系統(tǒng)的各種特征,在代碼運行前查找所運行系統(tǒng)的相關(guān)特征,進而判別當前軟件是否在沙箱中運行.
網(wǎng)絡(luò)側(cè)惡意流量分析檢測是對流量中的信息進行特征提取[11],利用這些特征通過規(guī)則匹配或機器學(xué)習(xí)與深度學(xué)習(xí)訓(xùn)練模型等方式判定是否為異常流量.攻擊者通過系統(tǒng)中運行的Web服務(wù)進行入侵,或從已經(jīng)完成入侵的系統(tǒng)中橫向移動至其他系統(tǒng),在此期間都會產(chǎn)生大量的異常流量.因此檢測相關(guān)攻擊可以從異常流量入手.戴震等人[12]通過流量分析發(fā)現(xiàn)惡意軟件的遠端控制服務(wù)器對其進行指令發(fā)送的過程具有一致性,進而通過解析報文的通信特征對攻擊進行判定;Chuan等人[13]通過結(jié)合機器學(xué)習(xí)模型形成了一種集成學(xué)習(xí)器對URL中的特征進行分析與提取,對具有惡意風險的網(wǎng)站進行識別;Liu等人[14]通過對數(shù)據(jù)集NSL-KDD進行處理形成了一套新的網(wǎng)絡(luò)攻擊數(shù)據(jù)集,使用DBN網(wǎng)絡(luò)降維后通過SVD模型對可疑數(shù)據(jù)進行識別與分類.APT攻擊流量檢測中還有一部分是通過域名檢測來判定惡意流量的.Vinayakumar等人[15]收集了網(wǎng)上公開的惡意域名數(shù)據(jù)集,并在系統(tǒng)中收集了DNS日志,在合并處理后采用LSTM進行檢測;Niu等人[16]針對移動端的DNS日志進行C2域名檢測.
攻擊關(guān)聯(lián)性分析檢測更加注重對APT攻擊之間關(guān)聯(lián)性的分析與建模.Bahrami等人[17]利用殺傷鏈模型對APT攻擊場景進行建模,該模型將APT攻擊分解為40多項子活動,并確定了APT攻擊中的行為特征,進而進行攻擊檢測;Kim等人[18]對殺傷鏈模型進行了改進與細化,主要用于對IOT網(wǎng)絡(luò)的APT攻擊進行檢測;Zhou等人[19]通過對移動目標進行防護來處理APT攻擊中的路徑突變問題;Jasiul等人[20]和杜鎮(zhèn)宇等人[21]設(shè)計了不同的基于Petri網(wǎng)的攻擊檢測模型,文獻[20]使用主機內(nèi)的系統(tǒng)特征與文件特征生成了有色Petri網(wǎng),利用其對惡意軟件中的惡意行為進行建模,文獻[21]中的模型通過匹配攻擊路徑,并根據(jù)收集到的報警信息對攻擊行為進行預(yù)測;Ghafir等人[22]將屬于一個完整APT攻擊的不同子攻擊活動的檢測結(jié)果進行關(guān)聯(lián),通過HMM對其解碼,確定最有可能的攻擊序列;Niu等人[23]使用動態(tài)步驟圖對APT攻擊進行映射,建立網(wǎng)絡(luò)攻擊模型捕獲APT攻擊因素;孫文新[24]提出了因果場景生成算法,將相關(guān)流量以及對應(yīng)的攻擊步驟匹配至殺傷鏈模型中,發(fā)掘流量數(shù)據(jù)之間的相關(guān)性.
通過對以上APT攻擊檢測方法的研究發(fā)現(xiàn),目前的檢測方法存在若干問題,包括對APT攻擊中單個攻擊之間的時序性結(jié)合關(guān)注度不高;針對Linux系統(tǒng)中惡意軟件的檢測與行為捕獲工具較少,且已有工具效果較差;由于APT攻擊周期過長導(dǎo)致業(yè)內(nèi)對于APT攻擊的高質(zhì)量數(shù)據(jù)集較少等.
高質(zhì)量的APT攻擊數(shù)據(jù)集是構(gòu)建APT攻擊檢測模型的關(guān)鍵.本文構(gòu)建的原始數(shù)據(jù)集融合了APT攻擊的主機側(cè)與網(wǎng)絡(luò)側(cè)雙側(cè)特征,為后續(xù)生成APT攻擊數(shù)據(jù)集提供了良好基礎(chǔ).構(gòu)建Linux主機攻擊行為捕獲沙箱LAnalysis,利用其分析Linux ELF惡意文件生成主機側(cè)初始數(shù)據(jù)集,對網(wǎng)絡(luò)公開數(shù)據(jù)集NSL-KDD進行處理,生成網(wǎng)絡(luò)側(cè)初始數(shù)據(jù)集.
目前常用的開源沙箱以及眾多商用和在線文件分析平臺針對Linux ELF文件的惡意代碼樣本分析能力較弱,以致無法獲取惡意樣本的全部惡意行為.本文構(gòu)建了一款能力較強的分析Linux ELF文件的沙箱LAnalysis,針對APT攻擊中使用的惡意代碼進行分析,進而構(gòu)建APT攻擊中的主機行為數(shù)據(jù)集.
LAnalysis為C/S架構(gòu),分為服務(wù)端(監(jiān)控端)與客戶端(被監(jiān)控端)2部分.檢測方式為服務(wù)端將樣本發(fā)送至客戶端,對目標樣本進行檢測,檢測完后將檢測報告進行回傳,服務(wù)端將檢測報告進行分類處理,形成不同類惡意行為的特征文件.系統(tǒng)結(jié)構(gòu)如圖1所示:
圖1 LAnalysis架構(gòu)
服務(wù)端分為通信層、分析層、控制層共3層.控制層依據(jù)用戶傳遞過來的指令啟動沙箱工作,并且通過命令執(zhí)行的方式對沙箱進行控制;通信層負責收集和處理另一端發(fā)來的消息并進行下一步流程的推進;分析層對客戶端發(fā)來的分析樣本的行為報告以及流量進行處理與分析,進一步提取出該樣本的惡意行為特征.
客戶端由一個沙箱虛擬機組成,沙箱分為通信層、檢測層與對抗層共3層.檢測層負責部署沙箱檢測模塊,對目標樣本進行行為分析;通信層負責與服務(wù)端的溝通并將分析結(jié)果回傳給服務(wù)端;對抗層負責部署沙箱自我保護模塊與規(guī)避行為檢測模塊,對惡意樣本進行檢測并與破壞沙箱的行為進行對抗.
LAnalyisis獲取惡意代碼的10類共16種不同的惡意行為,在檢測與分析APT攻擊中部署的惡意Linux ELF文件的惡意行為上表現(xiàn)更為出色.
LAnalysis對惡意代碼的10類惡意行為進行捕獲,用于構(gòu)建主機行為數(shù)據(jù)集.具體為反調(diào)試行為、遲滯代碼行為、持久化行為、文件隱藏行為、網(wǎng)絡(luò)隱藏行為、進程隱藏行為、網(wǎng)絡(luò)行為、權(quán)限提升行為、進程注入行為、對系統(tǒng)的窺探行為.捕獲行為的選擇來自攻擊框架ATT&CK中常用的攻擊行為.
惡意行為的捕獲與檢測主要依賴于LAnalysis的檢測層,它運行在沙箱內(nèi)部,部署沙箱監(jiān)控的各個模塊以檢測目標樣本的各類惡意行為,是整個沙箱系統(tǒng)的核心檢測層,由SystemTap編寫的8個惡意行為檢測模塊構(gòu)成,分別為文件主動探測模塊、遲滯代碼檢測模塊、反調(diào)試檢測模塊、隱藏行為檢測模塊、進程注入檢測模塊、持久化檢測模塊、窺探行為檢測模塊、進程追蹤模塊. 除此之外還有為了防止沙箱被破壞所構(gòu)建的沙箱自我保護模塊.另外,還有一些惡意行為的檢測不是通過SystemTap部署內(nèi)核探針完成的,而是通過惡意代碼運行前后系統(tǒng)發(fā)生的變化進行檢測.
在APT攻擊中,主機攻擊指攻擊者通過各種方式入侵受害者的主機系統(tǒng),在主機系統(tǒng)中植入惡意代碼,進而產(chǎn)生對受害者主機的控制與破壞行為.網(wǎng)絡(luò)側(cè)攻擊指在進入主機前在網(wǎng)絡(luò)空間中進行的流量攻擊或建立C2通道遠程操控進行攻擊的手段.
2.3.1 APT攻擊主機行為數(shù)據(jù)集的構(gòu)建
通過對大量不同惡意家族中惡意樣本的分析,獲取其在Linux主機上產(chǎn)生的惡意行為,將其構(gòu)建為APT攻擊的主機行為數(shù)據(jù)集.通過對無害良性樣本進行分析,提取與惡意樣本同樣的特征,作為正常主機行為特征,為構(gòu)建非APT攻擊數(shù)據(jù)集提供原數(shù)據(jù)基礎(chǔ).另外,為了方便生成APT攻擊樣本數(shù)據(jù),需要將主機行為數(shù)據(jù)集進行標簽化處理.
2.3.2 APT攻擊流量數(shù)據(jù)集的處理
本文選用的流量數(shù)據(jù)集為NSL-KDD. NSL-KDD是入侵檢測領(lǐng)域的一個經(jīng)典數(shù)據(jù)集,其每條數(shù)據(jù)均由41種特征組合而成,每個網(wǎng)絡(luò)連接被標記為normal或attack.本文使用NSL-KDD作為APT攻擊網(wǎng)絡(luò)攻擊數(shù)據(jù)集的原始數(shù)據(jù)集,其中attack表示攻擊數(shù)據(jù),共有4大類,這4大類又被細分為22種不同的攻擊,共有125 973條數(shù)據(jù).為了適應(yīng)深度學(xué)習(xí)模型的訓(xùn)練,通過one_hot對數(shù)據(jù)進行編碼.對數(shù)據(jù)集進行維度處理后,還需要將數(shù)據(jù)和標簽進行分離,同時將同一類標簽的數(shù)據(jù)進行歸類,以生成APT攻擊流量數(shù)據(jù)集.
APT攻擊檢測方案分為3個部分,分別為原始數(shù)據(jù)集生成模塊、APT攻擊數(shù)據(jù)集生成模塊、模型構(gòu)建模塊.總體設(shè)計圖如圖2所示.
1) 原始數(shù)據(jù)集生成模塊.
在原始數(shù)據(jù)集生成模塊中,構(gòu)建了沙箱LAnalysis并對采集的惡意樣本與良性樣本進行分析,形成APT攻擊的主機行為數(shù)據(jù)集;同時使用NSL-KDD作為APT攻擊的網(wǎng)絡(luò)流量初始數(shù)據(jù)集.
2) APT攻擊數(shù)據(jù)集生成模塊.
APT攻擊數(shù)據(jù)集生成模塊用于將網(wǎng)絡(luò)行為數(shù)據(jù)集與主機行為數(shù)據(jù)集根據(jù)APT攻擊的攻擊流程進行合并重構(gòu),將各種單獨的攻擊方式組合成具有前后上下文關(guān)聯(lián)的APT攻擊,生成APT攻擊數(shù)據(jù)集.同時,還需要生成非APT攻擊數(shù)據(jù)集作為深度學(xué)習(xí)模型訓(xùn)練的負樣本.
3) LSTM模型構(gòu)建模塊.
利用生成的APT攻擊數(shù)據(jù)集與非APT攻擊數(shù)據(jù)集構(gòu)建基于LSTM的APT攻擊檢測模型.
圖2 APT攻擊檢測方案總體設(shè)計圖
在APT攻擊數(shù)據(jù)生成前首先要針對APT攻擊過程進行攻擊步驟拆分與建模,之后使用網(wǎng)絡(luò)行為數(shù)據(jù)集與主機行為數(shù)據(jù)集中的子攻擊標簽組成APT攻擊標簽序列,形成符合APT攻擊生命周期的攻擊數(shù)據(jù).
3.2.1 攻擊過程建模
根據(jù)Hutchins等人[25]提出的網(wǎng)絡(luò)攻擊殺傷鏈分析模型(Cyber Kill Chain)可知,1次APT攻擊分多個具體的攻擊步驟.因此將網(wǎng)絡(luò)側(cè)行為數(shù)據(jù)與主機側(cè)行為數(shù)據(jù)依據(jù)APT攻擊過程進行建模是生成APT攻擊數(shù)據(jù)的關(guān)鍵.由于APT攻擊方式多種多樣,每次攻擊都可能有不同的戰(zhàn)術(shù)變化,本文只選用最經(jīng)典的3種APT攻擊方式進行模擬.
這3種最經(jīng)典的APT攻擊方式是:釣魚攻擊、利用Web漏洞與操作系統(tǒng)漏洞入侵、利用線下移動設(shè)備入侵.3種攻擊方式都包含相似的必要攻擊步驟,但是在感染主機和感染后的行為上略有不同.例如,釣魚攻擊通常沒有針對Web的攻擊行為,但會有可疑的網(wǎng)絡(luò)流量出現(xiàn),若被攻擊者成功執(zhí)行釣魚程序,則其可以直接以被攻擊者的權(quán)限運行,有時不需要進一步提升權(quán)限.利用Web漏洞與操作系統(tǒng)漏洞的攻擊方式往往有較多的網(wǎng)絡(luò)攻擊流量,且攻入系統(tǒng)后有權(quán)限提升行為.利用線下移動設(shè)備入侵沒有任何網(wǎng)絡(luò)攻擊流量,直接利用U盤、移動硬盤等通過植入惡意代碼進行攻擊,但是在入侵后具有與控制服務(wù)器交互的行為,會產(chǎn)生網(wǎng)絡(luò)流量.
1) 通過網(wǎng)頁或郵件等進行釣魚攻擊.
由于被攻擊者安全意識不強,誤執(zhí)行了攻擊者發(fā)送的郵件或網(wǎng)頁鏈接的不可信內(nèi)容,以致主機被感染后遭受到一系列攻擊行為.該種攻擊方式的攻擊過程如表1所示.
表1 釣魚攻擊流程
2) 利用Web漏洞與操作系統(tǒng)漏洞進行入侵.
利用運行的Web漏洞或開放的高危端口對應(yīng)的系統(tǒng)漏洞,通過網(wǎng)絡(luò)入侵進入主機后,進一步部署惡意代碼進行針對主機的攻擊.該種攻擊方式的攻擊過程如表2所示.
表2 利用Web漏洞與操作系統(tǒng)漏洞進行入侵
3) 利用線下移動設(shè)備入侵.
以便攜式的移動設(shè)備進行攻擊,如移動硬盤、U盤、手機等設(shè)備接入主機,可以直接進行植入式攻擊.該種攻擊方式的攻擊過程如表3所示:
表3 利用線下移動設(shè)備入侵
3.2.2 攻擊序列標簽生成
在對APT攻擊行為進行建模后,使用網(wǎng)絡(luò)行為數(shù)據(jù)標簽與主機行為數(shù)據(jù)標簽針對這3類攻擊的攻擊過程進行對應(yīng),形成APT攻擊的標簽序列可以通過變更標簽中的不同樣本,生成大量不同的APT攻擊樣本.表4~6分別為3種APT攻擊方式對應(yīng)的攻擊標簽.
在生成APT攻擊數(shù)據(jù)時,由于真正的攻擊步驟在時間上不可能是完全連續(xù)的,各個步驟之間會有不可估計的時間間隔,因此需要在表4~6中的步驟之間穿插一系列的非攻擊操作.在實際生成APT攻擊數(shù)據(jù)集時,在表4~6中的各個步驟間,選擇在隨機位置插入隨機數(shù)量的標簽為normal的數(shù)據(jù),表示網(wǎng)絡(luò)行為中的正常行為與主機行為中的正常行為.同時每個標簽都對應(yīng)較多不同樣本,保證了APT攻擊數(shù)據(jù)集中數(shù)據(jù)的豐富性.
表4 釣魚攻擊流程的攻擊標簽
表5 利用Web漏洞與操作系統(tǒng)漏洞進行入侵的攻擊標簽
表6 利用線下移動設(shè)備入侵的攻擊標簽
圖3 1條APT攻擊數(shù)據(jù)構(gòu)成
3.2.3 依據(jù)標簽生成APT攻擊數(shù)據(jù)
在生成的APT攻擊數(shù)據(jù)中每個步驟都會有主機行為和網(wǎng)絡(luò)行為與之對應(yīng),APT攻擊的每個時間步的數(shù)據(jù)由網(wǎng)絡(luò)行為與主機行為合并而成,表示當前步驟中的網(wǎng)絡(luò)狀態(tài)與主機狀態(tài).特征處理方面,表示網(wǎng)絡(luò)狀態(tài)的特征為122維,即1個NSL-KDD數(shù)據(jù)標簽表示當前的網(wǎng)絡(luò)情況.主機行為特征由1個或多個當前步驟中的不同主機攻擊行為隨機組合而成.由于每種不同的主機攻擊行為在89維中都有自己固定的位置,因此組合后不會造成互相的覆蓋,而是會將各自的特征保留下來,沒有融合進來的其余位置都用0進行補齊,表示當前步驟中沒有類似的行為.因此1個或多個主機攻擊行為標簽最終會組合成89維的主機行為特征.1個步驟有網(wǎng)絡(luò)行為數(shù)據(jù)集的122維加上主機行為數(shù)據(jù)集的89維共211維特征.而1條APT攻擊數(shù)據(jù)就是由多個時間步的行為按照攻擊方式對應(yīng)的標簽順序排列而成.
1條APT攻擊數(shù)據(jù)的生成過程如圖3所示,每條數(shù)據(jù)都由若干個時間步構(gòu)成,表示每次攻擊中的攻擊步驟,而每個時間步有211維特征,由網(wǎng)絡(luò)側(cè)特征與主機側(cè)特征組合而成.利用線下移動設(shè)備入侵行為中的第7個攻擊步驟的1個時間步構(gòu)成如圖4所示,其網(wǎng)絡(luò)行為數(shù)據(jù)標簽為rootkit,主機側(cè)特征由惡意行為特征集file_hide和process_inject中隨機選取1種組合而成.
圖4 1個時間步構(gòu)成示例
APT攻擊數(shù)據(jù)集在最終模型的數(shù)據(jù)集中使用標簽1進行對應(yīng),表示正樣本集,還需生成非APT攻擊數(shù)據(jù)作為負樣本集,用標簽0與之對應(yīng).網(wǎng)絡(luò)特征部分使用NSL-KDD中標簽normal的樣本,總共為122維特征.主機行為的正常行為樣本在創(chuàng)建時就沒有按攻擊行為進行拆分,整個89維的標簽normal的樣本就是當前時刻正常的主機行為,因此從中隨機選取進行利用即可.將主機行為數(shù)據(jù)和網(wǎng)絡(luò)行為數(shù)據(jù)進行組合形成211維的當前步驟下的單步非APT攻擊數(shù)據(jù).
使用單步非APT攻擊數(shù)據(jù)生成1條完整的非APT攻擊數(shù)據(jù)的方式共有2種:第1種由標簽為normal的網(wǎng)絡(luò)單步數(shù)據(jù)與主機單步數(shù)據(jù)組成,這樣得到的數(shù)據(jù)為完全正常的行為序列;第2種是在APT攻擊的3種入侵方式中只生成某步驟之前的攻擊序列,代表攻擊的中止與失敗,該條數(shù)據(jù)也為非APT攻擊數(shù)據(jù),為了與攻擊數(shù)據(jù)有一定的區(qū)分度,截取的步驟為整體步驟的前2/3處,不會從接近攻擊結(jié)束的地方進行截取.
基于構(gòu)建出的APT攻擊數(shù)據(jù)集與非APT攻擊數(shù)據(jù)集,使用LSTM進行訓(xùn)練,訓(xùn)練過程分為以下幾個步驟:數(shù)據(jù)集劃分與處理、模型初步訓(xùn)練、調(diào)參優(yōu)化.生成參數(shù)最優(yōu)的APT攻擊檢測模型.整體流程如圖5所示:
圖5 APT攻擊檢測模型訓(xùn)練過程
1) 數(shù)據(jù)集劃分與處理.
首先對輸入模型的數(shù)據(jù)進行時序劃分處理,使用LSTM進行模型訓(xùn)練時,3個較為關(guān)鍵的可以體現(xiàn)時序特征的參數(shù)為單個數(shù)據(jù)維度、時間步長度與最大數(shù)據(jù)長度.本文單個數(shù)據(jù)維度為122+89=211維,表示當前步驟的網(wǎng)絡(luò)狀態(tài)與主機狀態(tài),最長數(shù)據(jù)由40個時間步構(gòu)成,因此最大數(shù)據(jù)長度為40×211=8 440.為了輸入數(shù)據(jù)的長短一致,將所有數(shù)據(jù)的長度補齊至8 440.
本文共生成16 000條APT攻擊數(shù)據(jù)與16 000條非APT攻擊數(shù)據(jù),將訓(xùn)練集與測試集按照3∶1進行劃分,則訓(xùn)練集共有12 000條正樣本數(shù)據(jù)與12 000條負樣本數(shù)據(jù),測試集共有4 000條正樣本數(shù)據(jù)與4 000條負樣本數(shù)據(jù).
2) 模型的調(diào)參優(yōu)化.
針對LSTM的learn_rate,batch_size以及epoch這3個參數(shù)進行優(yōu)化,比較取何值時模型的表現(xiàn)最好.batch_size是單批次訓(xùn)練數(shù)據(jù)的大小,影響訓(xùn)練時間與訓(xùn)練速度.epoch為訓(xùn)練的輪數(shù),值越大訓(xùn)練的時間就越長,隨著epoch的增大損失函數(shù)會逐漸收斂,此時模型趨于穩(wěn)定,因此需要找到合適的epoch值.learn_rate是1個相對重要的超參數(shù),其取值會影響模型最終的準確率.
3) 模型評價標準.
APT攻擊檢測是一個二分類問題,模型的預(yù)測出的結(jié)果只有1和0這2種取值.本文采用準確率、精確率、召回率和F1值這4個深度學(xué)習(xí)與機器學(xué)習(xí)中較為常用的指標衡量模型的優(yōu)劣程度.
4.1.1 LAnalysis實現(xiàn)環(huán)境
LAnalysis分為服務(wù)端與客戶端,都是基于Python3進行開發(fā),同時還使用了shell腳本、SystemTap腳本進行相關(guān)功能的實現(xiàn).服務(wù)端與客戶端采用虛擬機嵌套的方式運行,服務(wù)端使用主機系統(tǒng)中的VMware創(chuàng)建,客戶端使用服務(wù)端系統(tǒng)中的VirtualBox創(chuàng)建.具體環(huán)境參數(shù)如表7所示:
表7 LAnalysis環(huán)境參數(shù)
4.1.2 LSTM構(gòu)建環(huán)境
LSTM的構(gòu)建環(huán)境為Linux操作系統(tǒng),主要使用Python進行開發(fā).神經(jīng)網(wǎng)絡(luò)模型開發(fā)框架使用開源的Keras框架.具體環(huán)境參數(shù)如表8所示.
將本文自主構(gòu)建的沙箱LAnalysis與開源沙箱Cuckoo、業(yè)內(nèi)較常用的微步云沙箱和騰訊哈勃沙箱以及奇安信文件分析平臺進行對比,從Virustotal與VirusShare 2019—2020 ELF樣本集中隨機選取20個惡意樣本,對比統(tǒng)計分析出的惡意行為種類及個數(shù).
表8 LSTM環(huán)境參數(shù)
20個惡意樣本的用例編號如表9所示,根據(jù)惡意樣本用例編號可以直接在Virustotal和VirusShare中找到該惡意樣本,這是每個惡意樣本的唯一性標識.
表9 20個惡意樣本的用例編號
由于20個惡意樣本并不能完全覆蓋10類的16種惡意行為,因此將惡意行為概括為對抗行為、隱藏行為、持久化行為、窺探行為以及其他惡意行為5種.由于20個樣本一一列舉篇幅占用過多,因此只列出其中2個樣本的詳細對比結(jié)果與20個樣本的總體分析結(jié)果.
1) 0dbcc464a0dc0463bc9969f755e853d8.
該樣本為蓋茨家族的惡意樣本,各沙箱分析結(jié)果如表10所示.
表10 0dbcc464a0dc0463bc9969f755e853d8的沙箱分析結(jié)果對比
2) 0A9BBC90CAB339F37D5BDD0B906F1A9C.
該樣本為Skeeyah家族的惡意樣本,各沙箱分析結(jié)果如表11所示.
表11 0A9BBC90CAB339F37D5BDD0B906F1A9C的沙箱分析結(jié)果對比
3) 20個樣本.
各沙箱所檢測出來的20個惡意樣本的惡意行為總量如表12所示.
表12 20個惡意樣本的沙箱分析結(jié)果對比 項
由對比結(jié)果可知,雖然Cuckoo、騰訊哈勃、奇安信文件分析平臺以及微步在Windows文件分析上較為成熟,在業(yè)內(nèi)也較為常用,但是對Linux ELF文件的分析能力十分薄弱.
以上結(jié)果證明了本文構(gòu)建Linux ELF文件分析沙箱的合理性,同時也證明了LAnalysis在分析Linux ELF文件上的功能十分強大.LAnalysis較好地分析了眾多惡意家族的惡意樣本,因此基于LAnalysis構(gòu)建的APT攻擊主機行為數(shù)據(jù)集較為全面,利用這些數(shù)據(jù)構(gòu)成的APT攻擊樣本的合理性與豐富性也因此得到了保障.
4.3.1 LSTM模型訓(xùn)練與優(yōu)化
將3.4節(jié)所給出的訓(xùn)練集與測試集的正樣本與負樣本形成2維數(shù)組輸入模型,標簽為x_train,y_train與x_test,y_test.
首先設(shè)置batch_size=32,learn_rate=0.000 1,epoch=10.將初始參數(shù)設(shè)定為較小的值可以提高調(diào)參優(yōu)化的效率.此時的評價指標如表13所示:
表13 初始狀態(tài)的評價指標
1) 改變batch_size.
batch_size是訓(xùn)練1次所使用數(shù)據(jù)量的大小,對訓(xùn)練速度與時間具有較大影響,因此先對batch_size進行調(diào)整有利于為后續(xù)epoch和learn_rate的調(diào)整節(jié)省時間.batch_size受總內(nèi)存值的影響,取值從32開始翻倍增長,當batch_size增大到256時程序會明顯變慢,出現(xiàn)卡頓,因此batch_size最合適的大小應(yīng)設(shè)置為128.后續(xù)的調(diào)參過程中batch_size均設(shè)定為128,此時訓(xùn)練速度是最快的.
2) 改變epoch.
epoch為訓(xùn)練的輪數(shù),初始狀態(tài)epoch=10,此時損失函數(shù)的變化曲線如圖6所示.通過圖6可知損失函數(shù)尚未收斂,說明模型仍在優(yōu)化的過程中,因此應(yīng)該增大epoch的值進行再次訓(xùn)練.
圖6 epoch=10時的損失函數(shù)曲線
當epoch=50時,損失函數(shù)變化曲線如圖7所示,此時可以看到模型隨著訓(xùn)練輪數(shù)的增多逐漸收斂,當epoch=40時可以看到模型基本收斂,因此后續(xù)的調(diào)參過程將epoch設(shè)定為40.
圖7 epoch=50時的損失函數(shù)曲線
3) 改變learn_rate.
通常learn_rate的取值范圍為[0.000 1,1],但是若直接取值,大概率會選擇到[0.1,1]的范圍內(nèi),此時learn_rate的值難以在較大范圍內(nèi)變化.因此采用對數(shù)取值的方式,先選定4個區(qū)間,即[0.000 1,0.001],[0.001,0.01],[0.01,0.1],[0.1,1],在這4個區(qū)間內(nèi)再進行平均取值.本文在batch_size=128,epoch=40的情況下不斷改變learn_rate進行訓(xùn)練,不同learn_rate下的評價指標對比情況如表14所示.
表14 不同learn_rate下的評價指標對比情況
由表14可知,learn_rate=0.002時模型的F1值是最好的,因此模型的最終指標于batch_size=128,epoch=40,learn_rate=0.002時取得,如表15所示.
表15 模型最終指標
4.3.2 不同檢測模型和方案的對比與分析
1) 不同時序處理模型的比較.
本文方案的模型準確率為92.17%,F(xiàn)1值為0.926 7.為確定最優(yōu)的時序處理模型,訓(xùn)練了RNN模型、GRU模型與LSTM模型進行對比,實驗結(jié)果如圖8所示.從圖8可以看出LSTM在處理APT攻擊時序數(shù)據(jù)時效果要好于RNN與GRU模型.
圖8 不同時序處理模型的比對情況
2) 不同APT攻擊檢測方案的比較與分析.
目前業(yè)內(nèi)有眾多利用機器學(xué)習(xí)與深度學(xué)習(xí)進行APT攻擊檢測的方法.本文選擇了較有代表性的4種[9,14,22,26]與本文構(gòu)建的模型從模型準確率、特征全面度以及APT攻擊建模等方面進行比較,結(jié)果如表16所示:
表16 APT攻擊檢測模型對比
由表16可知,對比的4種方法沒有完全兼顧網(wǎng)絡(luò)側(cè)特征、主機側(cè)特征以及APT攻擊的時序性建模這3個APT攻擊檢測的重要方面,模型都存在不足之處.
文獻[22]使用自主構(gòu)建的網(wǎng)絡(luò)告警數(shù)據(jù)進行模型訓(xùn)練,沒有在大量網(wǎng)絡(luò)數(shù)據(jù)集中進行驗證與復(fù)現(xiàn),具有一定的片面性.此外,雖然其考慮到了APT攻擊中對子攻擊的時序性建模,但是沒有將主機側(cè)的行為數(shù)據(jù)放入模型,對APT攻擊的檢測具有片面性與不合理性.
文獻[9]使用沙箱Cuckoo對惡意代碼進行分析,由4.2節(jié)可知Cuckoo對惡意代碼的分析能力并不出色,因此基于Cuckoo進行惡意樣本分析以檢測APT攻擊具有很大的提升空間.另外文獻[9]并沒有考慮APT攻擊的時序性,仍局限于單種惡意代碼的檢測,并不能作為有效的APT攻擊檢測模型.
文獻[14]在數(shù)據(jù)處理時沒有使用NSL-KDD中的惡意行為細分標簽,而是將攻擊行為局限于大類,導(dǎo)致對攻擊的刻畫不夠具體.另外其沒有將APT攻擊與普通的入侵檢測進行區(qū)別,仍是針對單種攻擊進行檢測,沒有將APT攻擊的時序性特征考慮在內(nèi).雖然其準確率為93.7%,但卻不能視為較好的APT攻擊檢測效果.
文獻[26]在實驗中使用的數(shù)據(jù)集為KDD99,該數(shù)據(jù)集相較于NSL-KDD有明顯不足,存在大量冗余數(shù)據(jù),目前已很少被業(yè)內(nèi)使用.同時文獻[26]也沒有使用KDD99中更為細分的攻擊小類,而是使用大類進行檢測,對攻擊的刻畫不夠具體.另外,文獻[26]沒有使用任何主機數(shù)據(jù)構(gòu)建APT攻擊數(shù)據(jù)集,僅用KDD99中包含的網(wǎng)絡(luò)側(cè)特征數(shù)據(jù),而僅依據(jù)KDD99構(gòu)建的APT攻擊數(shù)據(jù)集與APT攻擊檢測模型是不合理的.
針對業(yè)內(nèi)檢測方案對APT攻擊中單個攻擊之間的時序性結(jié)合關(guān)注度不高、對于Linux系統(tǒng)中的惡意代碼攻擊檢測工具較少、APT攻擊周期過長導(dǎo)致APT攻擊研究樣本較少等問題,本文提出一種基于LSTM的Linux系統(tǒng)下APT攻擊檢測方案,并與其他方案進行了對比.實驗證明,本文方案能夠較好地對APT攻擊進行檢測,并且能夠構(gòu)建一套兼具主機行為和網(wǎng)絡(luò)行為特征的APT攻擊數(shù)據(jù)集,較好解決了當前業(yè)內(nèi)缺乏高質(zhì)量的APT攻擊數(shù)據(jù)集的問題,為后續(xù)研究工作打下了良好的基礎(chǔ).