嚴(yán)瑩子 王小平* 莊葛巍 顧 臻 賀 青 史 揚(yáng)
1(同濟(jì)大學(xué)電子與信息工程學(xué)院 上海 200092) 2(國(guó)網(wǎng)上海市電力公司電力科學(xué)研究院 上海 200436) 3(同濟(jì)大學(xué)軟件學(xué)院 上海 200092)
據(jù)卡巴斯基實(shí)驗(yàn)室統(tǒng)計(jì)報(bào)道,在2016年被惡意軟件攻擊的設(shè)備多達(dá)2 871 965臺(tái),2017年多達(dá)1 126 701臺(tái),2018年多達(dá)830 135臺(tái)。面對(duì)如此大量的惡意軟件攻擊案例,傳統(tǒng)的基于簽名的檢測(cè)技術(shù)[1]已經(jīng)難以覆蓋大量新型惡意程序,而機(jī)器學(xué)習(xí)可以更加快速準(zhǔn)確地將海量信息應(yīng)用到惡意代碼檢測(cè)任務(wù)當(dāng)中,以應(yīng)對(duì)層出不窮、復(fù)雜且不確定的攻擊方式。在機(jī)器學(xué)習(xí)中,特征提取是非常關(guān)鍵的數(shù)據(jù)處理步驟。惡意軟件的特征提取方法分為靜態(tài)特征提取和動(dòng)態(tài)特征提取[2]。靜態(tài)檢測(cè)的優(yōu)勢(shì)在于檢測(cè)速度較快,但檢測(cè)結(jié)果容易受到代碼混淆、加密和壓縮等代碼變換的影響,很難應(yīng)對(duì)未知的惡意軟件以及惡意軟件變種[3];動(dòng)態(tài)檢測(cè)雖有不易受到代碼變換影響的優(yōu)勢(shì),但由于需要代碼在沙箱環(huán)境中實(shí)際運(yùn)行,因此可能因執(zhí)行環(huán)境配置不完善而無法觸發(fā)程序的惡意攻擊行為,并且比靜態(tài)分析需要更多時(shí)間??紤]到機(jī)器學(xué)習(xí)方法需要大量樣本,本文主要關(guān)注靜態(tài)特征提取方法。
近年來,基于機(jī)器學(xué)習(xí)的靜態(tài)檢測(cè)方法相繼被提出,比如基于卷積神經(jīng)網(wǎng)絡(luò)(CNN)[4-5]、循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)[6]、長(zhǎng)短時(shí)記憶網(wǎng)絡(luò)(LSTM)[7-8]和門控循環(huán)單元(GRU)[9]等模型,但這些模型在包含混淆樣本的數(shù)據(jù)上,漏檢率和誤判率都比較高。這是因?yàn)榛跈C(jī)器學(xué)習(xí)的檢測(cè)模型存在獨(dú)立同分布的要求,未知的惡意軟件與已知的作為模型訓(xùn)練集的惡意軟件需要有相似的特征分布,而代碼混淆技術(shù)可以一定程度上更改樣本原本的特征分布,因此機(jī)器學(xué)習(xí)模型容易受到基于代碼混淆的攻擊。
考慮到混淆對(duì)基于機(jī)器學(xué)習(xí)的惡意軟件檢測(cè)模型造成的干擾,本文認(rèn)為混淆樣本和機(jī)器學(xué)習(xí)中的對(duì)抗樣本[10]有共通之處。在機(jī)器學(xué)習(xí)中,對(duì)抗樣本是在數(shù)據(jù)集中通過故意添加細(xì)微的干擾所形成的輸入樣本,這種樣本導(dǎo)致模型以高置信度給出一個(gè)錯(cuò)誤的輸出。雖然對(duì)抗樣本給機(jī)器學(xué)習(xí)、深度學(xué)習(xí)帶來了質(zhì)疑,但其實(shí)這也提供了一個(gè)修正模型的機(jī)會(huì),因?yàn)榭梢苑催^來利用對(duì)抗樣本來提高模型的抗干擾能力,因此提出了對(duì)抗機(jī)器學(xué)習(xí)(Adversarial Machine Learning,AML)的概念。在惡意代碼檢測(cè)的領(lǐng)域中,結(jié)合GANs的思想,Hu等[11]提出一種基于GANs的方法,從代碼中提取系統(tǒng)級(jí)別API特征,首先生成固定長(zhǎng)度的二進(jìn)制特征向量;然后通過在特征向量中添加隨機(jī)噪聲的方式產(chǎn)生對(duì)抗樣本,以擾亂判別模型對(duì)樣本是否屬于惡意代碼的判斷;最終在生成模型和判別模型的交替訓(xùn)練下,生成模型能生成更具有迷惑性的惡意代碼對(duì)抗樣本,判別模型也能更好地抵抗樣本中隨機(jī)噪聲的干擾。類似文獻(xiàn)[11]對(duì)惡意代碼在特征級(jí)別上進(jìn)行混淆的研究思路還有文獻(xiàn)[12]和文獻(xiàn)[13]。但比起在PE二進(jìn)制文件提取的特征上進(jìn)行混淆,對(duì)PE二進(jìn)制文件先進(jìn)行代碼混淆再提取特征更貼近于真實(shí)的應(yīng)用場(chǎng)景,因此本文研究的混淆是針對(duì)原始惡意代碼的,即使用機(jī)器學(xué)習(xí)算法模擬真實(shí)的惡意代碼混淆,對(duì)惡意代碼檢測(cè)模型進(jìn)行檢測(cè)逃避攻擊。
Suciu等[14]提出了兩種針對(duì)原始代碼的對(duì)抗樣本生成方式:(1)在PE二進(jìn)制文件的末尾加入對(duì)抗噪聲。(2) 在PE文件中尋找不會(huì)映射到內(nèi)存的部分加入對(duì)抗噪聲。該研究對(duì)不同方式生成的對(duì)抗噪聲進(jìn)行實(shí)驗(yàn),包括隨機(jī)產(chǎn)生字符、基于梯度產(chǎn)生字符和從合法樣本中提取字符。文中提到基于梯度的惡意代碼對(duì)抗樣本生成方法也是一個(gè)熱門的研究方向,與之類似的研究還有文獻(xiàn)[15]和文獻(xiàn)[16]。但使用基于梯度的方法生成對(duì)抗樣本是在白盒攻擊模式下的,要求攻擊者完全知曉惡意代碼檢測(cè)器的模型和參數(shù),這在現(xiàn)實(shí)情況下通常難以實(shí)現(xiàn)。
Anserson等[17-18]在2017年首次提出一種基于RL的惡意樣本逃逸攻擊方法,結(jié)合了多種代碼混淆算法對(duì)基于機(jī)器學(xué)習(xí)的惡意軟件檢測(cè)模型進(jìn)行黑盒攻擊。該方法使用了ACER(Actor Critic with Experience Replay)算法[19],用神經(jīng)網(wǎng)絡(luò)來估計(jì)一個(gè)價(jià)值函數(shù),根據(jù)價(jià)值選取一個(gè)策略對(duì)惡意樣本進(jìn)行多次混淆嘗試,如果當(dāng)前樣本在有限的混淆次數(shù)內(nèi)成功逃避了惡意軟件檢測(cè)器的檢測(cè),則會(huì)產(chǎn)生一個(gè)較大的獎(jiǎng)勵(lì)值,若逃逸失敗,則無法得到獎(jiǎng)勵(lì)。通過獎(jiǎng)勵(lì)值的引導(dǎo),最終算法會(huì)學(xué)習(xí)到一個(gè)有效的混淆策略,在盡可能少的混淆次數(shù)內(nèi)使樣本更大概率地逃逸檢測(cè)。該方法巧妙地將惡意代碼混淆對(duì)抗樣本生成的問題建模為一個(gè)馬爾可夫決策過程(MDP),為惡意軟件逃逸攻擊提供了一種新穎的解決方案。但該方法的效果還有待提升。該模型在200個(gè)樣本組成的測(cè)試集上的逃逸率僅24%,只比隨機(jī)混淆算法高出1%。
本文面向代碼混淆的惡意軟件對(duì)抗樣本,借鑒了Anserson等[17-18]提出的基于RL的惡意軟件逃逸攻擊框架,對(duì)模型進(jìn)行了如下改進(jìn):
(1) 在RL的狀態(tài)空間中加入了“歷史幀”。
(2) 本文在ACER模型中加入了具有記憶性的歷史幀模塊和LSTM模塊,提高了測(cè)試集上的檢測(cè)逃逸率。
(3) 將混淆分為了預(yù)混淆階段和RL混淆階段。
PE文件是在Windows操作系統(tǒng)上執(zhí)行的二進(jìn)制映像的標(biāo)準(zhǔn)文件格式,擴(kuò)展名通常為“.exe”“.dll”或“.sys”,它們會(huì)首先被操作系統(tǒng)加載器加載到系統(tǒng)內(nèi)存中,然后由系統(tǒng)執(zhí)行。
PE文件不是作為單一內(nèi)存映射文件被裝入內(nèi)存的。PE文件在二進(jìn)制文件映像中包含多個(gè)部分,每個(gè)PE部分都可以看作一個(gè)文件夾,其中包含各種二進(jìn)制對(duì)象(比如圖像文件),由Windows加載器遍歷PE文件并決定文件的哪一部分被映射,然后這些被映射二進(jìn)制對(duì)象在運(yùn)行時(shí)被執(zhí)行。PE文件的框架結(jié)構(gòu)如圖1所示。
圖1 PE文件的框架結(jié)構(gòu)
在PE文件中,最需要關(guān)注的是PE文件頭、節(jié)表(Section Table)和節(jié)(Section,也稱為塊、段)這三個(gè)部分。PE文件頭包含了有關(guān)用于存儲(chǔ)代碼和數(shù)據(jù)的不同部分的信息(包括簽名)以及從其他庫(DLL)請(qǐng)求的導(dǎo)入或所提供的導(dǎo)出。節(jié)表包含每個(gè)節(jié)在映像中的信息(如位置、長(zhǎng)度、屬性),分別指向不同的節(jié)實(shí)體。節(jié)是PE文件中代碼或數(shù)據(jù)的基本單位,邏輯上將不同的功能區(qū)(例如代碼區(qū)和數(shù)據(jù)區(qū))劃分為多個(gè)節(jié)。從PE文件的結(jié)構(gòu)組成中可以得知,PE文件中存在許多冗余字段和空間,這可能會(huì)為藏匿惡意軟件創(chuàng)造機(jī)會(huì)。
強(qiáng)化學(xué)習(xí)由馬爾可夫決策過程(MDP)發(fā)展而來,用于解決連續(xù)決策尋找最優(yōu)解的問題。與各種形式的機(jī)器學(xué)習(xí)算法相比,強(qiáng)化學(xué)習(xí)(RL)的特點(diǎn)是實(shí)現(xiàn)了一種試錯(cuò)模式的自動(dòng)學(xué)習(xí),其學(xué)習(xí)過程不是基于訓(xùn)練數(shù)據(jù)集進(jìn)行的,而是基于智能體(Agent)與環(huán)境(Environment)之間的相互交互進(jìn)行的。RL具有以下要素:
(1) 智能體Agent。
(2) 環(huán)境Environment(對(duì)真實(shí)用例建模而成,與智能體進(jìn)行交互)。
(3) 狀態(tài)states(智能體當(dāng)前到達(dá)的地方或當(dāng)前看見的視野)。
(4) 動(dòng)作Actions(智能體采取不同動(dòng)作以達(dá)到不同狀態(tài))。
(5) 策略Policy(智能體根據(jù)策略來采取不同動(dòng)作)。
(6) 反饋Reward(智能體采取正確的動(dòng)作會(huì)得到正向的反饋)。
智能體在具體環(huán)境下基于一定策略執(zhí)行動(dòng)作,然后得到環(huán)境的獎(jiǎng)勵(lì)并遷移到下一個(gè)狀態(tài),這就是強(qiáng)化學(xué)習(xí)中的一個(gè)典型的交互過程。隨著強(qiáng)化學(xué)習(xí)的進(jìn)行,智能體會(huì)探索在當(dāng)前狀態(tài)下用怎樣的策略來執(zhí)行動(dòng)作才能使最終得到的獎(jiǎng)勵(lì)達(dá)到最大。
在RL中,智能體在某一狀態(tài)S下執(zhí)行某一動(dòng)作A,環(huán)境會(huì)根據(jù)設(shè)定來判斷該動(dòng)作的好壞,然后反饋給智能體相應(yīng)的獎(jiǎng)勵(lì)R,并且轉(zhuǎn)移到下一個(gè)狀態(tài)S’。RL惡意樣本混淆對(duì)抗樣本生成模型的框架如圖2所示。在框架中分為兩個(gè)混淆階段,分別是預(yù)混淆和RL混淆,其中RL混淆主要包含四個(gè)模塊:PE特征提取算法、PE代碼混淆算法、RL環(huán)境和RL智能體。
圖2 惡意樣本混淆對(duì)抗樣本生成模型框架
本文的RL環(huán)境是一個(gè)惡意軟件檢測(cè)器,它可以是任何一個(gè)檢測(cè)模型,也可以是一個(gè)線上的病毒監(jiān)測(cè)引擎,對(duì)本文RL模型而言是一個(gè)獨(dú)立的黑盒檢測(cè)系統(tǒng),RL不需要知道它的模型結(jié)構(gòu)或參數(shù),只需要輸入一個(gè)惡意軟件樣本,得到一個(gè)檢測(cè)是否為惡意樣本的結(jié)果。
RL智能體作為算法的主角,與其相關(guān)的主要模塊如下:
(1) 狀態(tài)S:狀態(tài)是智能體的輸入,在本文背景下就是惡意軟件樣本的特征相關(guān)信息。本文在RL的狀態(tài)空間中引入了歷史幀(History Frame,HF)技術(shù)。
(2) 策略Pi:策略是智能體執(zhí)行決策的方法,在本文使用的RL模型ACER算法中,智能體執(zhí)行決策的過程由價(jià)值函數(shù)神經(jīng)網(wǎng)絡(luò)和策略函數(shù)神經(jīng)網(wǎng)絡(luò)來完成。本文在RL模型中融合了全連接神經(jīng)網(wǎng)絡(luò)(FCN)與LSTM神經(jīng)網(wǎng)絡(luò)。
(3) 回報(bào)R:回報(bào)是智能體每執(zhí)行一個(gè)動(dòng)作后得到的環(huán)境的反饋,正確的動(dòng)作會(huì)得到正向反饋,也就是比較大的回報(bào)值;錯(cuò)誤的動(dòng)作會(huì)得到負(fù)向反饋?zhàn)鳛閼土P,也就是比較小的回報(bào)值。
本文在構(gòu)建RL模型之前預(yù)先訓(xùn)練了一個(gè)基于XGBoost[20]的惡意軟件檢測(cè)器作為RL模型進(jìn)行逃逸攻擊的黑盒攻擊對(duì)象,同時(shí)也作為RL的環(huán)境,給智能體提供反饋。檢測(cè)器的輸入為PE文件的二進(jìn)制字節(jié),通過文獻(xiàn)[4]所述的算法進(jìn)行特征提取,然后使用XGBoost二分類模型進(jìn)行訓(xùn)練和測(cè)試。模型的數(shù)據(jù)集由3 192個(gè)合法樣本與2 918個(gè)惡意樣本組成,其中合法樣本來自于PortableApps網(wǎng)站[21](包含教育、游戲、影音、網(wǎng)絡(luò)、安全和工具等類型的軟件安裝包),惡意軟件來自于VirusTotal[22]網(wǎng)站。其中隨機(jī)抽取了1 192個(gè)合法樣本和918個(gè)惡意樣本作為測(cè)試集,余下2 000個(gè)合法樣本和2 000個(gè)惡意樣本作為訓(xùn)練集。
在進(jìn)行114次迭代之后,該檢測(cè)器在訓(xùn)練集上準(zhǔn)確率達(dá)到100%,在測(cè)試集上準(zhǔn)確率達(dá)到99.57%。
需要注意的是,對(duì)于RL模型而言,這個(gè)檢測(cè)器是一個(gè)黑箱,即RL模型無法獲取這個(gè)檢測(cè)器的模型結(jié)構(gòu)、參數(shù)等信息,只能輸入一個(gè)PE文件的二進(jìn)制字節(jié),得到檢測(cè)器反饋的惡意軟件指數(shù)評(píng)分,評(píng)分取值在0到1區(qū)間,得分越高代表該樣本的惡意程度越高。
狀態(tài)(state)又稱為智能體的觀察(observation),是對(duì)智能體的輸入,而智能體作出的決策是輸出。輸入的內(nèi)容對(duì)于智能體的決策過程及最終的輸出具有決定性的影響。在惡意軟件對(duì)抗樣本生成的任務(wù)中,直觀來看,智能體接收的輸入信息就是PE二進(jìn)制文件。但直接通過對(duì)PE二進(jìn)制文件的觀察來作出決策,這不論是對(duì)人類還是對(duì)機(jī)器而言都是十分困難的,為了降低RL的學(xué)習(xí)難度,本文將PE二進(jìn)制文件進(jìn)行特征提取,然后將特征進(jìn)行標(biāo)準(zhǔn)化處理后作為RL智能體的輸入。
Saxe等[3]總結(jié)前人的研究成果,給出了使用深度學(xué)習(xí)算法檢測(cè)惡意軟件的具體方法,該方法將PE文件特征提取方式主要分為兩類,一類是通過PE文件可以直接獲取到的特征,比如字節(jié)直方圖、字節(jié)熵直方圖和字符串特征等;另一類特征是需要解析PE文件結(jié)構(gòu),從各個(gè)節(jié)分析出的特征,比如節(jié)特征、導(dǎo)入表特征、導(dǎo)出表特征和文件頭特征等。參考文獻(xiàn)[4]提出的特征提取方法,本文從PE二進(jìn)制文件中一共提取了2 349個(gè)特征。
由于RL中的狀態(tài)轉(zhuǎn)移過程服從馬爾可夫性[23],因此RL在當(dāng)前狀態(tài)下執(zhí)行動(dòng)作并轉(zhuǎn)移到下一個(gè)狀態(tài),并不考慮之前的狀態(tài)。但是RL在對(duì)惡意軟件進(jìn)行多次混淆決策時(shí),僅根據(jù)當(dāng)前PE特征來選擇下一次混淆的動(dòng)作而不考慮前幾次混淆后的特征,于RL而言會(huì)損失很多重要信息。為了提高RL的學(xué)習(xí)效率,本文在RL的狀態(tài)空間里引入了歷史幀(History Frame,HF)技術(shù),在狀態(tài)空間里保留N份PE特征的歷史記錄,其中第一份記錄始終保持PE文件的初始特征,后續(xù)N-1份記錄保持最近N-1次混淆產(chǎn)生的PE特征。第一份記錄的作用是保留樣本的原始信息,這有利于智能體對(duì)樣本的初始特征進(jìn)行判斷;后續(xù)的N-1份記錄可以有效引導(dǎo)智能體學(xué)習(xí)歷史動(dòng)作對(duì)樣本產(chǎn)生的變化軌跡,學(xué)習(xí)每份記錄之間的關(guān)系。
RL的動(dòng)作空間由代碼混淆算法組成。為了保持代碼的功能以及可執(zhí)行性,本文采取了以下混淆算法:
(1) 在末尾添加隨機(jī)字節(jié)(Overlay Append,OA)。
(2) 追加導(dǎo)入表[11](Import Append,IA)。
(3) 改變節(jié)名稱(Section Rename,SR)。
(4) 添加新的節(jié)(Section Add,SA)。
(5) 節(jié)內(nèi)末尾追加隨機(jī)內(nèi)容(Section Append,SP)。
(6) 刪除簽名信息(Remove Signature,RS)。
(7) 刪除debug信息(Remove Debug,RD)。
在這些混淆算法中,RS和RD這兩個(gè)混淆算法是“一次性”的,也就是說只有第一次執(zhí)行這些混淆操作才會(huì)對(duì)樣本產(chǎn)生變更,后續(xù)重復(fù)操作是無效的。因此本文將RS和RD這兩個(gè)混淆算法放入了預(yù)處理階段,也就是在RL環(huán)境setup時(shí)就對(duì)樣本進(jìn)行RS和RD的預(yù)處理。若預(yù)處理后樣本已經(jīng)成功逃逸,則跳過該樣本,因?yàn)镽L模型無法從中學(xué)到有用的知識(shí)。評(píng)估RL模型時(shí)也要先對(duì)樣本進(jìn)行同樣的預(yù)處理,然后再進(jìn)入測(cè)試階段。OA、IA、SR、SA和SP五種混淆算法如表1所示。
表1 混淆算法
對(duì)于RL智能體,本文使用ACER算法來實(shí)現(xiàn)其功能。ACER是一種Actor-Critic模型,包含Actor和Critic兩個(gè)部分,其中Actor參考Critic評(píng)估的價(jià)值函數(shù)Q來更新策略函數(shù)Pi,并且執(zhí)行策略;Critic參考Actor執(zhí)行策略的果效(得到的獎(jiǎng)勵(lì))來評(píng)估策略Pi,并且更新價(jià)值函數(shù)Q。價(jià)值函數(shù)Q和策略函數(shù)Pi分別用一個(gè)深度神經(jīng)網(wǎng)絡(luò)來實(shí)現(xiàn),兩個(gè)神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)可以相同,也可以不同。在兩個(gè)網(wǎng)絡(luò)的結(jié)構(gòu)相同的條件下可以實(shí)現(xiàn)部分網(wǎng)絡(luò)參數(shù)共享,就是數(shù)據(jù)輸入的底層網(wǎng)絡(luò)參數(shù)共享,后續(xù)接入不共享的兩個(gè)神經(jīng)網(wǎng)絡(luò),這樣做的好處是價(jià)值函數(shù)和策略函數(shù)對(duì)輸入的數(shù)據(jù)進(jìn)行了相同的預(yù)處理,并且節(jié)約了計(jì)算成本。但兩個(gè)網(wǎng)絡(luò)不進(jìn)行參數(shù)共享(或者網(wǎng)絡(luò)結(jié)構(gòu)不同)也具有優(yōu)勢(shì),可以使RL的Actor和Critic擁有獨(dú)立的處理決策、增強(qiáng)模型穩(wěn)定性。
對(duì)于價(jià)值函數(shù)Q而言,其輸入是RL的狀態(tài)空間,輸出是當(dāng)前狀態(tài)下每個(gè)動(dòng)作所對(duì)應(yīng)的價(jià)值;對(duì)于策略函數(shù)Pi而言,其輸入是RL的狀態(tài)空間,輸出是當(dāng)前狀態(tài)下執(zhí)行每個(gè)動(dòng)作的概率。
在HF模塊(如圖3所示)與LSTM模塊(如圖4所示)的基礎(chǔ)上,本文構(gòu)建了四種ACER模型結(jié)構(gòu),分別表示為HF、HF_LSTM、LSTM_HF和LSTM,四種結(jié)構(gòu)如表2所示。在這四種模型中,當(dāng)歷史幀參數(shù)HISTORY_FRAME設(shè)置為1時(shí),HF模型退化為不具有記憶性的普通全連接網(wǎng)絡(luò)ACER模型,HF_LSTM模型退化為僅價(jià)值函數(shù)具有記憶性的ACER模型,LSTM_HF模型退化為僅策略函數(shù)具有記憶性的ACER模型,而LSTM模型本就是策略函數(shù)與價(jià)值函數(shù)都具有記憶性的ACER模型,不受HISTORY_FRAME參數(shù)設(shè)置的影響,因此其默認(rèn)HISTORY_FRAME=1;當(dāng)歷史幀參數(shù)HISTORY_FRAME設(shè)置為大于1時(shí),HF模型、HF_LSTM模型和LSTM_HF模型都屬于策略函數(shù)與價(jià)值函數(shù)都具有記憶性的ACER模型。
圖3 HF模塊
圖4 LSTM模塊
表2 四種ACER模型結(jié)構(gòu)
本文設(shè)計(jì)的RL回報(bào)函數(shù)如式(1)所示。
(1)
式中:Reward初始化為0,回合結(jié)束時(shí)Reward最大取值為100;Δmalscore表示上一次混淆后樣本的惡意評(píng)分與現(xiàn)在混淆后樣本的惡意評(píng)分的差值(若惡意評(píng)分在混淆后反而上升,則Δmalscore為負(fù)值);TURN表示目前的混淆次數(shù);MAXTURN表示設(shè)置的最大混淆次數(shù);這樣設(shè)置回報(bào)函數(shù)有兩個(gè)目的:
(1) 利用RL對(duì)惡意樣本進(jìn)行混淆使其逃逸檢測(cè),這原本是一個(gè)獎(jiǎng)勵(lì)值稀疏的環(huán)境,因?yàn)榇蟛糠智闆r下RL采取混淆操作并不能使樣本逃逸成功,有時(shí)超過了最大閾值仍以失敗告終。如果僅在回合結(jié)束且逃逸成功時(shí)才給予智能體正向獎(jiǎng)勵(lì),則對(duì)RL的學(xué)習(xí)過程造成很大的挑戰(zhàn)。因此在回報(bào)函數(shù)中加入了Δmalscore作為中間獎(jiǎng)勵(lì),當(dāng)一次混淆使樣本的惡意評(píng)分稍有降低時(shí)智能體就能得到一個(gè)小小的正向獎(jiǎng)勵(lì),從而引導(dǎo)它更有效地學(xué)習(xí)混淆策略,盡量以更高的置信度逃逸檢測(cè)。
(2) 本文實(shí)現(xiàn)模型時(shí)將MAXTURN設(shè)置為80,如式(1)所示,當(dāng)混淆后樣本逃逸成功時(shí),回報(bào)值的增量為70×15-(TURN-1)/MAXTURN,曲線如圖5所示。其取值范圍為4.67到70.00區(qū)間內(nèi),隨著混淆次數(shù)的增加,所得到的回報(bào)值呈指數(shù)下降趨勢(shì),這可以引導(dǎo)RL學(xué)習(xí)在盡量少的混淆次數(shù)內(nèi)使樣本達(dá)到逃逸檢測(cè)的目的。
圖5 回報(bào)函數(shù)曲線
實(shí)驗(yàn)所使用的惡意軟件樣本是來自于Virus Total[22]的PE二進(jìn)制文件,采集自2017年網(wǎng)絡(luò)上捕獲的真實(shí)惡意軟件樣本,每個(gè)文件都可以直接運(yùn)行。為了規(guī)范文件命名,本文將每個(gè)樣本都統(tǒng)一命名為該樣本的sha256值。為保證惡意樣本標(biāo)簽的正確性,用開源病毒檢測(cè)工具ClamAV[24]對(duì)樣本進(jìn)行掃描,刪除標(biāo)簽不明確的樣本后,最終數(shù)據(jù)集由2 918個(gè)樣本組成,隨機(jī)抽取其中918個(gè)樣本作為測(cè)試集。RL模型每次從數(shù)據(jù)集中隨機(jī)抽取一個(gè)PE二進(jìn)制文件樣本,開始一個(gè)新的回合(如圖2所示)。
本文設(shè)計(jì)的評(píng)估指標(biāo)如表3所示。
表3 評(píng)估指標(biāo)
對(duì)于惡意軟件混淆對(duì)抗樣本生成模型而言,最直觀且具有說服力的指標(biāo)是成功逃逸模型檢測(cè)的混淆對(duì)抗樣本數(shù)量,因此evaded_rate為評(píng)估的主要指標(biāo),其余為輔助分析的次要指標(biāo)。
本文模型是基于Anserson等[17-18]在2017年首次提出的基于RL的惡意樣本逃逸攻擊方法進(jìn)行改進(jìn)的,文獻(xiàn)中的模型分別使用了兩個(gè)全連接網(wǎng)絡(luò)分別作為ACER模型的價(jià)值函數(shù)和策略函數(shù)。由于文獻(xiàn)未公布詳細(xì)參數(shù),因此本文以歷史幀數(shù)量設(shè)置為1的HF模型(表2所示的HF_1)作為文獻(xiàn)[17-18]模型的實(shí)現(xiàn),并將其作為實(shí)驗(yàn)的baseline。
如表2所示,本文設(shè)計(jì)并實(shí)現(xiàn)了包含baseline模型在內(nèi)的一共七種模型,其神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)及超參數(shù)設(shè)置如表4、表5和表6所示。
表4 網(wǎng)絡(luò)層級(jí)結(jié)構(gòu)的參數(shù)說明
表5 網(wǎng)絡(luò)層級(jí)結(jié)構(gòu)的參數(shù)
續(xù)表5
表6 RL模型的參數(shù)
續(xù)表6
每個(gè)模型分別在訓(xùn)練集上進(jìn)行50 000次迭代(一次迭代代表智能體對(duì)PE文件進(jìn)行一次混淆)。在相同的50 000迭代次數(shù)內(nèi),不同模型進(jìn)行的回合數(shù)量是不一樣的,因?yàn)樵谝粋€(gè)回合中,如果智能體對(duì)PE文件進(jìn)行混淆后使其成功逃逸檢測(cè),則該回合的迭代次數(shù)少于逃逸失敗的回合迭代次數(shù)。為了方便評(píng)估樣本逃逸量指標(biāo),本文以50 000次迭代內(nèi)各模型中最少的回合數(shù)量為樣本總數(shù),總數(shù)為897個(gè)。也就是說,雖然訓(xùn)練集中一共2 000個(gè)樣本,但在50 000迭代次數(shù)內(nèi)模型只能進(jìn)行897次樣本隨機(jī)抽取。
3.3.1模型訓(xùn)練評(píng)估
模型訓(xùn)練過程中大小為100個(gè)回合的滑動(dòng)窗口內(nèi)evaded_rate指標(biāo)隨模型迭代次數(shù)增加的變化情況如圖6所示。
圖6 七種模型的evaded_rate指標(biāo)對(duì)比
從上述evaded_rate指標(biāo)的結(jié)果來看,LSTM_1模型在訓(xùn)練集上的效果是最突出的。
模型訓(xùn)練過程中average_value、average_entropy和average_kl指標(biāo)隨模型迭代次數(shù)增加的變化情況如圖7、圖8和圖9所示。
圖7 七種模型的average_value指標(biāo)對(duì)比
圖8 七種模型的average_entropy指標(biāo)對(duì)比
圖9 七種模型的average_kl指標(biāo)對(duì)比
從上述結(jié)果可以看出,average_value指標(biāo)和ave-rage_kl指標(biāo)往往出現(xiàn)同步的突然上升情況,據(jù)此推測(cè)原因可能是模型從訓(xùn)練集中抽取到了比較容易被混淆且成功逃逸的樣本,模型從中得到了較大的正向反饋,因此有較大程度的模型參數(shù)更新。而average_entropy指標(biāo)反映了混淆操作的多樣性,LSTM_HF_ 1、LSTM_HF_5和LSTM_ 1模型隨著迭代的進(jìn)行,最終趨向較小的average_entropy值,這意味著這幾個(gè)模型可能出現(xiàn)了過擬合情況。
本文統(tǒng)計(jì)了在模型訓(xùn)練的897個(gè)回合(即897個(gè)樣本)中成功逃逸的樣本數(shù)量以及測(cè)試集上共918個(gè)樣本中成功逃逸的樣本數(shù)量,結(jié)果如表7所示,其中RANDOM模型表示采用隨機(jī)策略,每次從動(dòng)作空間中隨機(jī)抽取混淆算法,統(tǒng)計(jì)樣本在MAXTURN混淆次數(shù)內(nèi)成功逃逸的數(shù)量,與其他模型進(jìn)行對(duì)比。
表7 不同模型在測(cè)試集上的樣本逃逸數(shù)量
從表7所示的統(tǒng)計(jì)結(jié)果得知,在訓(xùn)練集上逃逸率最高的模型是LSTM _1和LSTM_HF _1,但它們?cè)跍y(cè)試集上的逃逸率遠(yuǎn)比不上在訓(xùn)練集上的逃逸率,出現(xiàn)了較嚴(yán)重的過擬合情況。在測(cè)試集上逃逸率最高的是HF_LSTM _5模型,逃逸率為39.54%,比作為baseline的HF_1高出17.65百分點(diǎn),比隨機(jī)混淆算法RANDOM高出27.23百分點(diǎn)。因此得出結(jié)論:HF_LSTM_5是上述對(duì)照實(shí)驗(yàn)中效果最佳的模型。
3.3.3測(cè)試集逃逸樣本分析
接下來對(duì)HF_LSTM_5模型在測(cè)試集上逃逸成功的363個(gè)樣本進(jìn)行混淆次數(shù)分布情況分析。
由于預(yù)混淆階段的混淆次數(shù)為2,RL模型對(duì)樣本進(jìn)行混淆的最大次數(shù)設(shè)置為80,因此總混淆次數(shù)在 [2,82]區(qū)間內(nèi)。在363個(gè)逃逸樣本中,在預(yù)混淆階段成功逃逸的樣本共124個(gè),在RL模型的混淆策略下逃逸的樣本共239個(gè)。逃逸樣本中各類別惡意軟件的數(shù)量占測(cè)試集總樣本的比例如表8所示,不同類別逃逸樣本的混淆次數(shù)分布情況如圖10所示。分析得知,在逃逸樣本中占測(cè)試集對(duì)應(yīng)類別樣本數(shù)量比例最大的是dropper惡意軟件,并且都是在預(yù)混淆階段逃逸成功的。
表8 測(cè)試集逃逸樣本的惡意軟件類別比例
圖10 測(cè)試集逃逸樣本的惡意軟件類別分布
在惡意軟件檢測(cè)領(lǐng)域,惡意軟件制造者通常使用代碼混淆技術(shù)來快速開發(fā)惡意軟件變種以逃避檢測(cè)。由于機(jī)器學(xué)習(xí)模型容易受到對(duì)抗樣本的干擾,基于機(jī)器學(xué)習(xí)的惡意軟件檢測(cè)模型也容易受到代碼混淆產(chǎn)生的對(duì)抗樣本的逃逸攻擊。雖然對(duì)抗樣本給機(jī)器學(xué)習(xí)帶來了挑戰(zhàn),但若能獲取大量高質(zhì)量的對(duì)抗樣本,則能用這些對(duì)抗樣本來修正模型,提高模型的抗干擾能力。為了有效生成惡意軟件對(duì)抗樣本,本文主要研究了基于RL的惡意軟件混淆對(duì)抗樣本生成方法,從PE文件中提取了2 349維特征,使用了RS和RD兩種預(yù)混淆算法與OA、IA、SR、SA和SP五種混淆算法,結(jié)合FCN和LSTM神經(jīng)網(wǎng)絡(luò)設(shè)計(jì)了四種不同的ACER模型結(jié)構(gòu),通過設(shè)置歷史幀參數(shù)和融合LSTM網(wǎng)絡(luò)結(jié)構(gòu)使RL智能體具有了“記憶性”。
為了驗(yàn)證本文方法的有效性,本文設(shè)計(jì)了七種ACER模型作為對(duì)照實(shí)驗(yàn),將每個(gè)模型分別在大小為2 000的訓(xùn)練集上進(jìn)行50 000次迭代,對(duì)比了在訓(xùn)練集和測(cè)試集上各模型的evaded_rate(逃逸率)、average_value(平均價(jià)值)、average_entropy(平均動(dòng)作熵)和average_kl(平均kl散度值)指標(biāo)。實(shí)驗(yàn)結(jié)果表明,本文設(shè)計(jì)的深度強(qiáng)化學(xué)習(xí)模型在混淆對(duì)抗樣本生成上的效果優(yōu)于現(xiàn)有研究。