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