劉延華,李嘉琪,歐振貴,高曉玲,劉西蒙,MENG Weizhi,劉寶旭
(1.福州大學(xué)計(jì)算機(jī)與大數(shù)據(jù)學(xué)院,福建 福州 350108;2.福建省網(wǎng)絡(luò)計(jì)算與智能信息處理重點(diǎn)實(shí)驗(yàn)室,福建 福州 350108;3.丹麥科技大學(xué)應(yīng)用數(shù)學(xué)和計(jì)算機(jī)系,哥本哈根 2800;4.中國(guó)科學(xué)院信息工程研究所,北京 100093)
根據(jù)我國(guó)互聯(lián)網(wǎng)網(wǎng)絡(luò)安全監(jiān)測(cè)數(shù)據(jù)分析報(bào)告,在2021 年上半年,我國(guó)境內(nèi)感染計(jì)算機(jī)惡意程序的主機(jī)約有446 萬(wàn)臺(tái),同比增長(zhǎng)46.8%,發(fā)現(xiàn)新增移動(dòng)互聯(lián)網(wǎng)惡意程序86.6 萬(wàn)余個(gè)。隨著惡意代碼及其變種數(shù)量的增加,惡意代碼檢測(cè)面臨著巨大的挑戰(zhàn)[1]?;谔卣鞔a的檢測(cè)技術(shù)無(wú)法應(yīng)對(duì)新型惡意代碼,以人工分析為主要方式的檢測(cè)技術(shù)存在檢測(cè)效率低等明顯問(wèn)題,無(wú)法適應(yīng)當(dāng)前的網(wǎng)絡(luò)安全環(huán)境,自動(dòng)化和智能化的惡意代碼檢測(cè)具有一定的必要性。
在智能化惡意代碼檢測(cè)中,相關(guān)特征(如任務(wù)、意圖、應(yīng)用編程接口調(diào)用、系統(tǒng)調(diào)用以及字節(jié)特征等)被提前提取并用于惡意代碼檢測(cè)器的訓(xùn)練,取得了較好的結(jié)果[2-3]。然而,機(jī)器學(xué)習(xí)本身存在一些安全性問(wèn)題[4]。機(jī)器學(xué)習(xí)模型的有效性取決于訓(xùn)練數(shù)據(jù)和測(cè)試數(shù)據(jù)遵循相同分布的假設(shè),這種假設(shè)很可能遭到攻擊者的破壞,損害模型的安全性。攻擊者在輸入樣本上施加微小的擾動(dòng)便能迫使分類模型輸出錯(cuò)誤的預(yù)測(cè),這種方式稱為對(duì)抗樣本攻擊[5]。在惡意代碼領(lǐng)域,攻擊者利用模型的不足,生成惡意代碼樣本,達(dá)到繞過(guò)惡意代碼檢測(cè)器的目的[6-7]。
隨著惡意代碼反檢測(cè)能力的提高,增強(qiáng)惡意代碼檢測(cè)器識(shí)別對(duì)抗樣本的能力,提高檢測(cè)器的穩(wěn)健性,是現(xiàn)階段提升惡意代碼檢測(cè)水平的關(guān)鍵。防御蒸餾[8]、對(duì)抗訓(xùn)練[9]和對(duì)抗樣本拒絕[10]等是常見(jiàn)的對(duì)抗樣本防御措施。其中,對(duì)抗訓(xùn)練被認(rèn)為是抵抗對(duì)抗攻擊的最佳解決方案,它利用訓(xùn)練好的模型來(lái)生成對(duì)抗樣本,然后將它們添加到訓(xùn)練集中以重新訓(xùn)練模型,從根本上增強(qiáng)目標(biāo)分類器的穩(wěn)健性[11]。Wang 和Liu 等[12]通過(guò)對(duì)抗訓(xùn)練方法提升面向惡意軟件C2 流量的檢測(cè)能力。Wang 和Zhang 等[13]提出了一個(gè)用于生成對(duì)抗樣本進(jìn)行對(duì)抗訓(xùn)練的框架,通過(guò)重訓(xùn)練提高分類器在安卓惡意軟件檢測(cè)和家庭分類中的有效性。這些研究證明了對(duì)抗訓(xùn)練增強(qiáng)惡意代碼檢測(cè)器的可行性。
在惡意代碼檢測(cè)器對(duì)抗訓(xùn)練的過(guò)程中,對(duì)抗樣本的生成是一個(gè)重要環(huán)節(jié)。如何利用對(duì)抗樣本知識(shí),以較小攻擊成本和較高攻擊成功率生成具有現(xiàn)實(shí)意義的惡意代碼對(duì)抗樣本是惡意代碼領(lǐng)域的一個(gè)重要問(wèn)題。Goodfellow 等[14]提出的生成對(duì)抗網(wǎng)絡(luò)(GAN,generative adversarial network)在樣本生成上具有一定的優(yōu)勢(shì)。GAN 由生成器和判別器構(gòu)成,通過(guò)生成器和判別器之間的博弈,生成器將學(xué)習(xí)到數(shù)據(jù)的潛在規(guī)律并生成新的數(shù)據(jù)。Kim 等[15]利用GAN 生成基于灰度圖像的惡意代碼樣本。之后,Kim 等[16]在文獻(xiàn)[15]的基礎(chǔ)上利用深度卷積GAN 模型生成惡意代碼樣本,并基于圖像結(jié)構(gòu)相似性模擬零日惡意代碼的生成。文獻(xiàn)[17]利用輔助分類生成對(duì)抗網(wǎng)絡(luò)生成惡意代碼灰度圖像,但沒(méi)有考慮生成器生成的惡意代碼質(zhì)量。由于惡意代碼的相鄰字節(jié)之間存在結(jié)構(gòu)上的相互依賴關(guān)系,對(duì)于惡意代碼文件的任何更改都可能破壞可執(zhí)行文件的功能,影響惡意代碼的惡意功能[18]。惡意代碼對(duì)抗樣本與對(duì)抗性圖像不同,即使成功地欺騙了檢測(cè)模型,這些對(duì)抗樣本在現(xiàn)實(shí)世界中也是不可行的。
在惡意代碼的執(zhí)行性問(wèn)題上,Hu 等[19]提出了一種基于GAN 的惡意軟件生成算法,通過(guò)引入一個(gè)替代檢測(cè)器,對(duì)惡意代碼檢測(cè)器實(shí)現(xiàn)黑盒攻擊,并通過(guò)在導(dǎo)入表中添加擾動(dòng)應(yīng)用程序接口(API,application programming interface)實(shí)現(xiàn)惡意代碼對(duì)抗樣本的生成。但是,基于原始GAN 模型的惡意代碼生成,容易面臨梯度消失以及訓(xùn)練不穩(wěn)定等問(wèn)題[20]。而且該研究在對(duì)抗生成的過(guò)程中并未考慮到攻擊成本的問(wèn)題。唐川等[21]提出了一種基于最小修改成本的對(duì)抗樣本生成算法,利用深度卷積GAN 模型生成良性擾動(dòng),通過(guò)修改反編譯文件并對(duì)安卓應(yīng)用程序包(APK,Android application package)進(jìn)行重打包,生成可執(zhí)行的惡意軟件對(duì)抗樣本,成功繞過(guò)目標(biāo)檢測(cè)器的檢測(cè)。但是該方法只考慮到了惡意代碼特征的修改成本,未考慮到對(duì)抗樣本生成過(guò)程中惡意代碼檢測(cè)器的查詢次數(shù)。由于檢測(cè)器的多次重復(fù)查詢,容易引起安全人員的察覺(jué),攻擊者在對(duì)檢測(cè)器進(jìn)行攻擊時(shí),需要考慮到目標(biāo)檢測(cè)器查詢效率問(wèn)題。
針對(duì)上述問(wèn)題,本文提出了一種對(duì)抗訓(xùn)練驅(qū)動(dòng)的惡意代碼檢測(cè)增強(qiáng)方法。首先,基于沃瑟斯坦生成對(duì)抗網(wǎng)絡(luò)[22](WGAN,Wasserstein generative adversarial network)和擾動(dòng)刪減方法,生成低擾動(dòng)數(shù)量、高查詢效率的惡意代碼對(duì)抗樣本。然后,利用生成的對(duì)抗樣本對(duì)目標(biāo)檢測(cè)器進(jìn)行再訓(xùn)練,增強(qiáng)惡意代碼檢測(cè)器性能。本文的主要研究工作包含以下幾個(gè)方面。
1) 提出一種基于WGAN 的良性樣本生成算法,構(gòu)建面向API 調(diào)用的良性樣本庫(kù)。利用WGAN在一定程度上解決原始GAN 訓(xùn)練不穩(wěn)定的問(wèn)題。通過(guò)生成器和判別器之間的博弈訓(xùn)練,模擬良性樣本的分布,構(gòu)建良性樣本庫(kù),進(jìn)而為惡意代碼對(duì)抗提供更加豐富的擾動(dòng)組合。
2) 提出一種基于對(duì)數(shù)回溯法的擾動(dòng)刪減算法,構(gòu)造惡意代碼對(duì)抗樣本。將生成的良性樣本以擾動(dòng)的形式添加到惡意代碼,利用對(duì)數(shù)回溯法對(duì)添加的擾動(dòng)進(jìn)行刪減,以較少的擾動(dòng)數(shù)量和目標(biāo)檢測(cè)器查詢次數(shù)繞過(guò)惡意代碼檢測(cè)器。
3) 基于對(duì)抗訓(xùn)練對(duì)目標(biāo)檢測(cè)器進(jìn)行增強(qiáng)。利用生成的惡意代碼對(duì)抗樣本對(duì)惡意代碼檢測(cè)器進(jìn)行重訓(xùn)練,提高惡意代碼檢測(cè)器對(duì)于對(duì)抗樣本的檢測(cè)率。最后,選取不同的惡意代碼檢測(cè)器進(jìn)行實(shí)驗(yàn),驗(yàn)證了本文方法的有效性和通用性。
WGAN 是GAN 的一種變體,不同于GAN 使用具有突變性的詹森香農(nóng)散度作為生成數(shù)據(jù)與真實(shí)數(shù)據(jù)間的距離衡量標(biāo)準(zhǔn),WGAN 引入沃瑟斯坦距離作為損失函數(shù),能夠?qū)AN 模型梯度消失以及訓(xùn)練不穩(wěn)定問(wèn)題進(jìn)行優(yōu)化。沃瑟斯坦距離更加平滑,即使2 個(gè)分布互不重疊,也能夠很好地反映二者的遠(yuǎn)近。沃瑟斯坦距離的計(jì)算方法如式(1)所示。
其中,Pr和Pg分別表示真實(shí)樣本的分布和生成器生成樣本的分布,K表示利普希茨常數(shù)。||f||L≤K等價(jià)于若f的定義域?yàn)閷?shí)數(shù)集合,則||f||L≤K表示f的導(dǎo)函數(shù)絕對(duì)值不超過(guò)K。
將判別器表示為函數(shù)f,設(shè)定一個(gè)固定常數(shù)c(c〉0),以c的絕對(duì)值截?cái)嗯袆e器的參數(shù)ω,限制判別器的最大局部變動(dòng)幅度,使其滿足在判別器和生成器雙方的博弈中,判別器的目標(biāo)是盡可能正確地區(qū)分真實(shí)樣本與生成器生成的假樣本,即最大化沃瑟斯坦距離。相反地,生成器的目標(biāo)是最小化沃瑟斯坦距離,盡可能輸出與真實(shí)樣本相似的樣本以欺騙判別器。判別器的損失函數(shù)、生成器的損失函數(shù)以及WGAN 的目標(biāo)函數(shù)分別如式(2)~式(4)所示。
其中,G和D分別表示生成模型和判別模型,θ表示生成器的參數(shù),ω表示判別器的參數(shù)。Pr、Pg和Pz分別表示真實(shí)樣本分布、生成器生成樣本分布和隨機(jī)噪聲分布。
WGAN 的訓(xùn)練是一個(gè)零和博弈的過(guò)程,生成器和判別器通過(guò)交替迭代訓(xùn)練,最終達(dá)到納什均衡。訓(xùn)練判別器時(shí),固定生成器的參數(shù),將生成器生成的樣本和真實(shí)樣本作為判別器的輸入,根據(jù)損失函數(shù)LD,更新判別器的參數(shù)并將梯度反向傳播給生成器。每次判別器參數(shù)ω更新后將其按固定常數(shù)c的絕對(duì)值截?cái)?,將判別器的參數(shù)限制在固定范圍內(nèi),即ω∈[-c,c]。訓(xùn)練生成器時(shí),固定判別器的參數(shù),輸入一批隨機(jī)噪聲向量,然后輸出虛擬數(shù)據(jù),由判別器對(duì)生成的虛擬數(shù)據(jù)進(jìn)行評(píng)估,根據(jù)損失函數(shù)LG更新參數(shù)和反傳梯度。
本文主要研究面向API 調(diào)用的惡意代碼檢測(cè),通過(guò)獲取應(yīng)用程序的API 調(diào)用特征判斷應(yīng)用程序是否具有盜取隱私信息、惡意刪除文件等惡意行為。定義一個(gè)應(yīng)用程序API 特征集合S={s1,s2,…,sn}。將應(yīng)用程序的API 調(diào)用特征映射為一個(gè)二值特征向量,若該應(yīng)用程序包含API 調(diào)用si,則對(duì)應(yīng)位置的特征向量元素值為1;若該應(yīng)用程序未調(diào)用sj,則對(duì)應(yīng)位置的特征向量元素值為0。
為了增強(qiáng)惡意代碼檢測(cè)模型的穩(wěn)健性和對(duì)抗樣本識(shí)別能力,本文提出了對(duì)抗訓(xùn)練驅(qū)動(dòng)的惡意代碼檢測(cè)增強(qiáng)方法。模型框架如圖1 所示,主要由數(shù)據(jù)預(yù)處理、良性樣本庫(kù)構(gòu)建、對(duì)抗樣本生成和對(duì)抗訓(xùn)練組成。
圖1 對(duì)抗訓(xùn)練驅(qū)動(dòng)的惡意代碼檢測(cè)增強(qiáng)模型框架
首先,使用反匯編工具對(duì)應(yīng)用程序進(jìn)行反編譯,獲取應(yīng)用程序的API 調(diào)用特征。由于總體API數(shù)量較多,使用從惡意樣本數(shù)據(jù)中提取的API 調(diào)用構(gòu)建特征。同時(shí),參考安卓開發(fā)者官網(wǎng)提供的API包索引名對(duì)提取的API 調(diào)用特征進(jìn)行過(guò)濾。最后,采用卡方檢驗(yàn)法降低特征維度,為每一個(gè)應(yīng)用程序樣本生成二值特征向量。
WGAN 模型在一定程度上能夠解決GAN 訓(xùn)練不穩(wěn)定和模式崩潰導(dǎo)致生成數(shù)據(jù)多樣性不足的問(wèn)題。在構(gòu)建良性樣本庫(kù)的過(guò)程中,基于WGAN 模型學(xué)習(xí)真實(shí)良性樣本的特征分布,在滿足真實(shí)樣本分布的前提下,實(shí)現(xiàn)在真實(shí)良性樣本基礎(chǔ)上細(xì)微的變化,在一定程度上模擬良性樣本的變種生成,進(jìn)而提供更加豐富的擾動(dòng)組合。
為了區(qū)分不同模塊生成的樣本,本文定義了不同的樣本名稱,具體描述如表1 所示。
表1 各模塊生成樣本的詳細(xì)描述
在模型的結(jié)構(gòu)設(shè)計(jì)方面,使用多層全連接網(wǎng)絡(luò)構(gòu)建WGAN 生成模型和判別模型,網(wǎng)絡(luò)結(jié)構(gòu)分別如圖2 和圖3 所示。
圖2 生成模型的網(wǎng)絡(luò)結(jié)構(gòu)
圖3 判別模型的網(wǎng)絡(luò)結(jié)構(gòu)
生成模型由一個(gè)輸入層、2 個(gè)隱藏層和一個(gè)輸出層組成。輸入層的輸入向量為服從標(biāo)準(zhǔn)正態(tài)分布的隨機(jī)噪聲向量。隱藏層使用非線性函數(shù)ReLU 作為激活函數(shù),能夠減少計(jì)算量和降低過(guò)擬合。輸出層使用的激活函數(shù)為Sigmoid。
判別模型由一個(gè)輸入層、2 個(gè)隱藏層和一個(gè)輸出層組成。輸入層的輸入來(lái)自真實(shí)樣本。不同于生成模型使用的激活函數(shù)為ReLU,判別模型的隱藏層使用的激活函數(shù)為L(zhǎng)eakyReLU。并且,在每個(gè)隱藏層后各添加一個(gè)Dropout 層,防止模型過(guò)擬合。
本文采用模擬對(duì)抗樣本攻擊的方式,通過(guò)對(duì)惡意代碼添加擾動(dòng)生成對(duì)抗樣本,達(dá)到繞過(guò)目標(biāo)檢測(cè)器檢測(cè)的目的。其中,攻擊者的能力設(shè)定為攻擊者掌握了目標(biāo)檢測(cè)器所使用的算法和特征集合,但是無(wú)法獲取檢測(cè)器的訓(xùn)練數(shù)據(jù);攻擊者通過(guò)增加API調(diào)用的方式修改惡意軟件;攻擊者只能查詢目標(biāo)檢測(cè)器預(yù)測(cè)的類別。
由于惡意代碼的特殊性,直接從原始惡意代碼中刪除一個(gè)特征可能會(huì)導(dǎo)致惡意功能消失,甚至程序崩潰。為了保留惡意代碼的原始功能,只對(duì)原始樣本添加API 調(diào)用,不刪除或修改原本存在的特征。對(duì)抗樣本的生成流程如圖4 所示。
圖4 惡意代碼對(duì)抗樣本生成流程
首先,將良性樣本庫(kù)中的樣本以擾動(dòng)的形式添加進(jìn)惡意樣本中,以躲避惡意代碼檢測(cè)器的檢測(cè)。擾動(dòng)方式如式(5)所示。
其中,X為原始惡意樣本,B(i)為良性樣本庫(kù)中的第i個(gè)樣本,X'(i) 為對(duì)應(yīng)的添加擾動(dòng)后的擾動(dòng)樣本,n為良性樣本庫(kù)的規(guī)模。max(·) 代表2 個(gè)特征向量間逐元素的或運(yùn)算,若X的某一元素值為1,則X'(i)對(duì)應(yīng)位置的元素值也為1,即保留惡意樣本中的原始API 調(diào)用;若X的某一元素值為0,而B(i)對(duì)應(yīng)位置的元素值為1,則X'(i) 對(duì)應(yīng)位置的元素值也為1,即添加良性擾動(dòng)。
其次,為了更加真實(shí)地模擬惡意代碼制作者的攻擊思路,本文從攻擊者的角度出發(fā),使用對(duì)數(shù)回溯法進(jìn)行擾動(dòng)刪減,實(shí)現(xiàn)以較少的查詢次數(shù)和較少的擾動(dòng)數(shù)量生成惡意代碼對(duì)抗樣本。
最后,通過(guò)將生成的惡意代碼對(duì)抗樣本標(biāo)注為惡意,擴(kuò)充惡意代碼檢測(cè)器訓(xùn)練數(shù)據(jù),完成檢測(cè)器再訓(xùn)練,達(dá)到增強(qiáng)惡意代碼檢測(cè)器的目的。
本文提出基于WGAN 的良性樣本生成算法,WGAN 模型通過(guò)生成器和判別器之間的博弈訓(xùn)練,生成近似真實(shí)良性樣本的數(shù)據(jù)。良性樣本生成過(guò)程如算法1 所示。
首先,通過(guò)選擇生成器生成的數(shù)據(jù)和真實(shí)樣本來(lái)訓(xùn)練判別器,更新判別器的參數(shù)。然后,利用生成器生成的數(shù)據(jù)欺騙判別器,將判別器的判斷結(jié)果反饋給生成器,并更新生成器的參數(shù)。通過(guò)生成器和判別器之間的博弈訓(xùn)練,生成器可以生成更真實(shí)的樣本。
總之,在以后的工作中,輔導(dǎo)員老師不僅要加強(qiáng)對(duì)學(xué)生的心理關(guān)注,安全意識(shí)的灌輸與教育,更要加強(qiáng)對(duì)重大事件危機(jī)應(yīng)對(duì)措施的正確引導(dǎo),使學(xué)生能夠正確處理好自己的極端情緒,提升自身理性思考能力和調(diào)試能力,客觀、正確地面對(duì)困難,解決困難!
由于樣本數(shù)據(jù)是由0 和1 構(gòu)成的二進(jìn)制特征向量,而生成樣本的數(shù)值介于0~1,需要對(duì)生成器的輸出進(jìn)行二值化處理。二值化處理如式(6)所示。
其中,oi為生成網(wǎng)絡(luò)的輸出向量的第i個(gè)特征值,bi為對(duì)應(yīng)特征二值化結(jié)果。算法2 展示了二值化處理的過(guò)程。
運(yùn)用算法1 和算法2,能夠生成近似良性樣本的生成樣本,構(gòu)建良性樣本庫(kù),為惡意樣本提供良性擾動(dòng)。
由于攻擊者在攻擊的過(guò)程中需要對(duì)檢測(cè)器的結(jié)果進(jìn)行查詢,以判斷攻擊的有效性。減少查詢目標(biāo)檢測(cè)器的次數(shù)可以防止被目標(biāo)檢測(cè)器發(fā)現(xiàn)其攻擊行為而拒絕提供服務(wù)。攻擊者在制作對(duì)抗樣本時(shí)傾向于降低攻擊成本、減少擾動(dòng)數(shù)量和提高查詢效率。為了從攻擊者的角度模擬對(duì)抗樣本的生成,提出基于對(duì)數(shù)回溯法的擾動(dòng)刪減算法,實(shí)現(xiàn)以較少的查詢次數(shù)和較少的擾動(dòng)數(shù)量生成惡意代碼對(duì)抗樣本?;趯?duì)數(shù)回溯法的擾動(dòng)刪減算法如算法3 所示。
對(duì)數(shù)回溯法是一種與二分查找思路相似的方法。二分查找法假定原始數(shù)據(jù)是一個(gè)有序的狀態(tài),通過(guò)數(shù)據(jù)的中間值與目標(biāo)值的對(duì)比選取執(zhí)行方向。而在本文中,對(duì)數(shù)回溯法面向的數(shù)據(jù)是API 調(diào)用列表,是一種無(wú)序的數(shù)據(jù)。本文模仿二分查找的思路,在迭代過(guò)程中,將原始數(shù)據(jù)隨機(jī)減少一半。
首先,選取可以躲避惡意代碼檢測(cè)器的擾動(dòng)樣本,計(jì)算擾動(dòng)集。然后,隨機(jī)減少一半的擾動(dòng),加入惡意樣本進(jìn)行查詢,并記錄當(dāng)前刪除的擾動(dòng)集。如果查詢結(jié)果為良性,則重復(fù)進(jìn)行此過(guò)程,直至檢測(cè)器結(jié)果為惡意,交換刪除數(shù)據(jù)和當(dāng)前保留數(shù)據(jù),重復(fù)上述迭代過(guò)程。若交換數(shù)據(jù)后查詢結(jié)果仍為惡意,則恢復(fù)移除數(shù)據(jù)的一半數(shù)據(jù)進(jìn)行查詢,重復(fù)迭代,直至檢測(cè)器結(jié)果為良性。當(dāng)前數(shù)據(jù)集為刪減后所得API。
實(shí)驗(yàn)使用了2 個(gè)數(shù)據(jù)集,一個(gè)是安卓平臺(tái)應(yīng)用程序的數(shù)據(jù)集(后文簡(jiǎn)稱為安卓數(shù)據(jù)集),一個(gè)是Windows 可執(zhí)行應(yīng)用程序的數(shù)據(jù)集(后文簡(jiǎn)稱為Windows 數(shù)據(jù)集)。
安卓平臺(tái)應(yīng)用程序的數(shù)據(jù)集包含2 932 個(gè)惡意樣本和2 165 個(gè)良性樣本。其中,惡意樣本來(lái)自開源惡意程序樣本庫(kù)VirusShare。良性樣本來(lái)自小米應(yīng)用商店,并且所有的良性樣本都經(jīng)過(guò)VirusTotal 平臺(tái)的檢測(cè)。VirusTotal 是一個(gè)在線檢測(cè)平臺(tái),它通過(guò)將文件分發(fā)給多種反病毒引擎進(jìn)行掃描,掃描結(jié)果準(zhǔn)確率優(yōu)于單一產(chǎn)品掃描,具有較高的可靠性。
Windows可執(zhí)行應(yīng)用程序的數(shù)據(jù)集為天池阿里云安全惡意程序檢測(cè)比賽數(shù)據(jù),包含8 909 個(gè)惡意樣本和4 978 個(gè)良性樣本。數(shù)據(jù)來(lái)自文件(Windows可執(zhí)行程序)經(jīng)過(guò)沙箱程序模擬運(yùn)行后的經(jīng)過(guò)脫敏處理的API 指令序列。
實(shí)驗(yàn)選取隨機(jī)森林(RF,random forest)、邏輯回歸(LR,logistic regression)、決策樹(DT,decision tree)、支持向量機(jī)(SVM,support vector machine)和多層感知器(MLP,multilayer perceptron)作為目標(biāo)檢測(cè)器,驗(yàn)證本文提出的對(duì)抗訓(xùn)練驅(qū)動(dòng)的惡意代碼檢測(cè)增強(qiáng)方法的有效性。首先通過(guò)對(duì)良性樣本和對(duì)抗樣本進(jìn)行評(píng)估,驗(yàn)證對(duì)抗樣本生成方法的有效性;然后通過(guò)對(duì)抗訓(xùn)練前后的檢測(cè)器對(duì)比,驗(yàn)證對(duì)抗訓(xùn)練的有效性。
在生成對(duì)抗網(wǎng)絡(luò)模型的構(gòu)建中,生成模型的節(jié)點(diǎn)數(shù)設(shè)置為100-128-128-196,判別模型的節(jié)點(diǎn)數(shù)設(shè)置為196-128-128-1。WGAN 模型的實(shí)驗(yàn)參數(shù)如表2 所示。
表2 WGAN 實(shí)驗(yàn)參數(shù)
5.3.1 生成模型的有效性評(píng)估
對(duì)于生成模型的有效性評(píng)估,使用模型生成樣本的良性樣本檢測(cè)率作為評(píng)估指標(biāo),即生成樣本被檢測(cè)器判斷為良性的概率,記作GEN_TPR,定義如式(7)所示。
其中,num(·) 為樣本的數(shù)量,f(·) 為目標(biāo)檢測(cè)器對(duì)樣本的預(yù)測(cè)結(jié)果。G為WGAN 的生成器,z為從標(biāo)準(zhǔn)正態(tài)分布的隨機(jī)噪聲向量。
5.3.2 對(duì)抗樣本的有效性
對(duì)抗樣本的評(píng)估包含攻擊成功率和攻擊成本這2 個(gè)方面。
攻擊成功率也稱為繞過(guò)率,即對(duì)抗樣本成功躲避目標(biāo)惡意代碼檢測(cè)器檢測(cè),被檢測(cè)器識(shí)別為良性的概率,記作ASR,計(jì)算方法如式(8)所示。
其中,num(·) 為樣本的數(shù)量,f(·) 為目標(biāo)檢測(cè)器對(duì)樣本的預(yù)測(cè)結(jié)果;x為惡意樣本,x' 為x經(jīng)過(guò)擾動(dòng)后的樣本。
對(duì)于攻擊成本,本文綜合考慮了添加的擾動(dòng)數(shù)量和檢測(cè)器查詢次數(shù),計(jì)算方法如式(9)所示。
其中,cost 為攻擊成本;p為擾動(dòng)數(shù)量,即添加的API 調(diào)用數(shù)量;q為惡意代碼檢測(cè)器的查詢次數(shù),α和β分別為p和q的權(quán)重,本文設(shè)定擾動(dòng)數(shù)量與查詢次數(shù)占相等權(quán)重,即α=β=0.5。
5.3.3 對(duì)抗訓(xùn)練的有效性
惡意代碼檢測(cè)器性能的評(píng)估,采用模型準(zhǔn)確率來(lái)衡量檢測(cè)器的檢測(cè)率,通過(guò)對(duì)抗訓(xùn)練前后的準(zhǔn)確率對(duì)比,驗(yàn)證對(duì)抗訓(xùn)練的有效性。準(zhǔn)確率的計(jì)算方法如式(10)所示。
其中,TP 表示正確檢測(cè)的惡意樣本數(shù)量,TN 表示正確檢測(cè)的良性樣本數(shù)量,F(xiàn)N 表示被判斷為良性的惡意樣本數(shù)量,F(xiàn)P 表示被判斷為惡意的良性樣本數(shù)量。
在訓(xùn)練WGAN 模型的過(guò)程中,將生成器的輸出樣本進(jìn)行二值化處理后,作為目標(biāo)檢測(cè)器的輸入,計(jì)算良性樣本檢測(cè)率。
在安卓數(shù)據(jù)集中,實(shí)驗(yàn)選取5.2 節(jié)中的5 種目標(biāo)檢測(cè)器,計(jì)算不同訓(xùn)練次數(shù)下的良性樣本檢測(cè)率,實(shí)驗(yàn)結(jié)果如圖5 所示。
圖5 安卓數(shù)據(jù)集下WGAN 生成樣本的良性檢測(cè)率
在Windows 數(shù)據(jù)集中,實(shí)驗(yàn)選取DT、MLP 和LR 這3 種目標(biāo)檢測(cè)器,計(jì)算不同訓(xùn)練次數(shù)下的良性樣本檢測(cè)率,實(shí)驗(yàn)結(jié)果如圖6 所示。
圖6 Windows 數(shù)據(jù)集下WGAN 生成樣本的良性檢測(cè)率
由于WGAN 的訓(xùn)練過(guò)程是生成器和判別器的博弈過(guò)程,在迭代初始階段,生成器還沒(méi)有學(xué)習(xí)真實(shí)樣本的分布,良性樣本檢測(cè)率較低,且存在較大波動(dòng),當(dāng)生成器和判別器進(jìn)行了多次博弈后,生成器模型生成更加滿足真實(shí)樣本分布的數(shù)據(jù)。
從圖5 和圖6 可以看出,安卓數(shù)據(jù)集在經(jīng)過(guò)約12 500 次訓(xùn)練后,在不同的目標(biāo)檢測(cè)器下,良性樣本檢測(cè)率均在趨近100%處保持穩(wěn)定。Windows 數(shù)據(jù)集在經(jīng)過(guò)16 000 次訓(xùn)練后,生成樣本的良性檢測(cè)率維持在97%以上。基于WGAN 的生成樣本較好地學(xué)習(xí)了真實(shí)良性樣本的分布特征,在構(gòu)建良性樣本庫(kù)上具有一定的有效性。
5.5.1 攻擊成功率評(píng)估
在攻擊成功率評(píng)估的實(shí)驗(yàn)中,對(duì)2 個(gè)數(shù)據(jù)集選取與5.4 節(jié)中相同的目標(biāo)檢測(cè)器進(jìn)行實(shí)驗(yàn)。實(shí)驗(yàn)設(shè)置不同的良性樣本庫(kù)規(guī)模,評(píng)估惡意代碼對(duì)抗樣本的攻擊成功率。圖7 和圖8 分別為面向安卓數(shù)據(jù)集和Windows 數(shù)據(jù)集的攻擊成功率結(jié)果。其中,橫坐標(biāo)表示良性樣本庫(kù)的規(guī)模,縱坐標(biāo)為惡意代碼對(duì)抗樣本攻擊成功率。
圖7 安卓數(shù)據(jù)集下不同良性樣本庫(kù)規(guī)模的攻擊成功率
圖8 Windows 數(shù)據(jù)集下不同良性樣本庫(kù)規(guī)模的攻擊成功率
在安卓數(shù)據(jù)集中,當(dāng)良性樣本庫(kù)規(guī)模大于2 000 個(gè)時(shí),攻擊成功率維持在一個(gè)相對(duì)穩(wěn)定的狀態(tài),對(duì)抗樣本具有較高攻擊成功率。
在Windows 數(shù)據(jù)集中,MLP 的攻擊成功率較低,但在良性樣本庫(kù)規(guī)模大于2 000 個(gè)時(shí),仍達(dá)到60%以上的攻擊成功率。在4 000~10 000 個(gè)的良性樣本庫(kù)規(guī)模中,攻擊成功率呈現(xiàn)出一定的增長(zhǎng)趨勢(shì)。當(dāng)良性樣本庫(kù)規(guī)模達(dá)到10 000 時(shí),攻擊成功率取得了較好的結(jié)果。
實(shí)驗(yàn)結(jié)果發(fā)現(xiàn),當(dāng)良性樣本庫(kù)規(guī)模為1 000 個(gè)時(shí),2 個(gè)數(shù)據(jù)集下不同的目標(biāo)檢測(cè)器的攻擊成功率均最低,過(guò)少的良性樣本會(huì)影響當(dāng)前對(duì)抗樣本攻擊方法的效果。當(dāng)目標(biāo)檢測(cè)器為DT 時(shí),2 種數(shù)據(jù)集都具有最高攻擊成功率。決策樹算法通過(guò)對(duì)訓(xùn)練數(shù)據(jù)進(jìn)行分析,對(duì)特征生成規(guī)則,利用規(guī)則對(duì)新數(shù)據(jù)進(jìn)行判斷。本文的攻擊方法通過(guò)向惡意樣本添加擾動(dòng),容易對(duì)基于生成規(guī)則的決策產(chǎn)生干擾,達(dá)到攻擊效果。
5.5.2 攻擊成本評(píng)估
為了驗(yàn)證基于對(duì)數(shù)回溯法的擾動(dòng)刪減在擾動(dòng)成本和查詢效率上的有效性,本文對(duì)安卓數(shù)據(jù)集進(jìn)行3 組實(shí)驗(yàn),即實(shí)驗(yàn)1、實(shí)驗(yàn)2 和實(shí)驗(yàn)3,分別計(jì)算安卓數(shù)據(jù)集惡意代碼對(duì)抗樣本在不同良性樣本庫(kù)規(guī)模的攻擊成本。實(shí)驗(yàn)1 按照擾動(dòng)數(shù)量從小到大的順序選取擾動(dòng)樣本,進(jìn)行檢測(cè)器查詢,直到樣本成功躲避惡意代碼檢測(cè)器的檢測(cè)。實(shí)驗(yàn)2 按照擾動(dòng)數(shù)量從小到大的順序選取擾動(dòng)樣本,進(jìn)行檢測(cè)器查詢,并對(duì)成功躲避惡意代碼檢測(cè)器的樣本進(jìn)行擾動(dòng)刪減。實(shí)驗(yàn)3 隨機(jī)選取擾動(dòng)樣本,對(duì)成功躲避惡意代碼檢測(cè)器的樣本執(zhí)行基于對(duì)數(shù)回溯法的擾動(dòng)刪減。3 組實(shí)驗(yàn)統(tǒng)一使用RF 算法作為惡意代碼目標(biāo)檢測(cè)器,評(píng)估在不同規(guī)模的良性樣本庫(kù)下,對(duì)抗樣本生成的攻擊成本,采用箱型圖展示攻擊成本結(jié)果,如圖9~圖11 所示,其中,▲表示數(shù)據(jù)平均值,●表示數(shù)據(jù)異常值。
圖9 不同良性樣本庫(kù)規(guī)模的擾動(dòng)數(shù)量
圖10 不同良性樣本庫(kù)規(guī)模的查詢次數(shù)
圖11 不同良性樣本庫(kù)規(guī)模的攻擊成本
在擾動(dòng)數(shù)量上,3 組實(shí)驗(yàn)均受良性樣本庫(kù)規(guī)模的大小影響不大。實(shí)驗(yàn)1 是在文獻(xiàn)[21]的對(duì)抗樣本生成算法的基礎(chǔ)上增加擾動(dòng)樣本的排序操作,擾動(dòng)數(shù)量與文獻(xiàn)[21]一致。實(shí)驗(yàn)2 在實(shí)驗(yàn)1 的基礎(chǔ)上進(jìn)行擾動(dòng)刪減,擾動(dòng)數(shù)量最少。實(shí)驗(yàn)3 采取隨機(jī)選取擾動(dòng)樣本的方式,擾動(dòng)數(shù)量不穩(wěn)定,跨度較大。從整體擾動(dòng)數(shù)量的平均值看,3 組實(shí)驗(yàn)的擾動(dòng)數(shù)量差距在5 個(gè)以內(nèi)。
在目標(biāo)檢測(cè)器查詢次數(shù)上,實(shí)驗(yàn)3 的查詢次數(shù)最少。實(shí)驗(yàn)1 和實(shí)驗(yàn)2 的查詢次數(shù)隨著良性樣本庫(kù)規(guī)模的增加而增加,實(shí)驗(yàn)3 的擾動(dòng)數(shù)量受良性樣本庫(kù)規(guī)模影響不大,始終保持較低查詢次數(shù)。
本文通過(guò)理論分析,計(jì)算基于對(duì)數(shù)回溯法的擾動(dòng)刪減方法的查詢次數(shù)。在進(jìn)行擾動(dòng)刪減時(shí),基于對(duì)數(shù)回溯法從最大的擾動(dòng)集開始,不斷從擾動(dòng)樣本中刪除一半添加的擾動(dòng),直到樣本被目標(biāo)檢測(cè)器錯(cuò)誤分類,實(shí)現(xiàn)在盡可能少的查詢次數(shù)內(nèi)減少擾動(dòng)數(shù),當(dāng)刪減到只剩一個(gè)擾動(dòng)且刪減過(guò)程中每次迭代都需要交換保留集和刪除集時(shí),所需查詢次數(shù)最多,設(shè)原擾動(dòng)數(shù)為p,特征維度為k,則查詢次數(shù)為2logp≤2logk。而在文獻(xiàn)[21]的對(duì)抗樣本生成算法中,對(duì)抗樣本生成只關(guān)注擾動(dòng)數(shù)量,并不關(guān)注查詢次數(shù),檢測(cè)器查詢次數(shù)等于良性樣本庫(kù)規(guī)模大小。
為了綜合考慮擾動(dòng)數(shù)量和惡意代碼檢測(cè)器查詢次數(shù),采用式(9)的攻擊成本計(jì)算方法,實(shí)驗(yàn)結(jié)果如圖11 所示。從圖11 中可知,當(dāng)良性樣本庫(kù)規(guī)模為100 個(gè)時(shí),由于良性樣本庫(kù)規(guī)模較小,實(shí)驗(yàn)3 在查詢次數(shù)上的優(yōu)勢(shì)并沒(méi)有得到體現(xiàn)。并且,由于實(shí)驗(yàn)3 在選擇擾動(dòng)樣本時(shí)具備一定的隨機(jī)性,擾動(dòng)數(shù)量存在一定的浮動(dòng),在良性樣本庫(kù)規(guī)模為100 個(gè)時(shí),攻擊成本的平均值略大于實(shí)驗(yàn)1 和實(shí)驗(yàn)2。在其他良性樣本庫(kù)規(guī)模中,實(shí)驗(yàn)3 的攻擊成本最小,且實(shí)驗(yàn)3 的攻擊成本不受良性樣本庫(kù)規(guī)模的影響。
在安卓數(shù)據(jù)集中,當(dāng)良性樣本庫(kù)規(guī)模大于2 000時(shí),攻擊成功率維持在一個(gè)相對(duì)穩(wěn)定的狀態(tài),對(duì)抗樣本具有較高攻擊成功率。為了驗(yàn)證本文方法對(duì)于不同分類器具有通用性,選取5.2 節(jié)中的目標(biāo)檢測(cè)器進(jìn)行實(shí)驗(yàn),在良性樣本庫(kù)規(guī)模為2 000 個(gè)的條件下,計(jì)算對(duì)抗樣本生成的擾動(dòng)數(shù)量與查詢次數(shù),結(jié)果如圖12 和圖13 所示。
圖12 不同目標(biāo)檢測(cè)器的擾動(dòng)數(shù)量
圖13 不同目標(biāo)檢測(cè)器的查詢次數(shù)
實(shí)驗(yàn)結(jié)果表明,本文提出的基于對(duì)數(shù)回溯法的擾動(dòng)刪減算法能夠以較小的擾動(dòng)數(shù)量和查詢次數(shù),躲避多種惡意代碼檢測(cè)器的檢測(cè),對(duì)不同的惡意代碼檢測(cè)器具有一定的通用性。
結(jié)合圖7 和圖12 中安卓數(shù)據(jù)集不同目標(biāo)檢測(cè)器的攻擊成功率和擾動(dòng)數(shù)量實(shí)驗(yàn)結(jié)果可以發(fā)現(xiàn),具有最高攻擊成功率的DT 檢測(cè)器對(duì)應(yīng)的平均擾動(dòng)數(shù)量最少,而具有最低攻擊成功率的SVM 檢測(cè)器對(duì)應(yīng)的平均擾動(dòng)數(shù)量最多。檢測(cè)器的對(duì)抗攻擊難度與對(duì)抗樣本擾動(dòng)數(shù)量具有一定的正相關(guān)性。
在查詢次數(shù)方面,各目標(biāo)檢測(cè)器模型沒(méi)有體現(xiàn)出明顯的差距,攻擊過(guò)程中的檢測(cè)器查詢次數(shù)集中在5~10 次,具有較高的查詢效率。
5.5.3 對(duì)抗樣本的有效性評(píng)估
對(duì)于安卓應(yīng)用程序,本文通過(guò)在反匯編文件中文件中插入擾動(dòng)API,并利用工具對(duì)文件進(jìn)行重打包和重簽名。
以惡意 APK“VirusShare_ffb376be1e8d8311d 320f7a107caee9a”為例,利用本文提出的對(duì)抗樣本生成算法,得到擾動(dòng)API,在反匯編文件中添加擾動(dòng)API 調(diào)用代碼,并進(jìn)行重打包和重簽名。最后,利用VirusTotal 對(duì)擾動(dòng)生成的APK 進(jìn)行檢測(cè),實(shí)驗(yàn)結(jié)果表明,與原始惡意樣本相比,將擾動(dòng)生成的對(duì)抗樣本識(shí)別為惡意文件的反病毒引擎數(shù)量減少了10 個(gè),驗(yàn)證了本文所提出的對(duì)抗樣本生成的有效性。
為了驗(yàn)證對(duì)抗訓(xùn)練對(duì)惡意代碼檢測(cè)器的增強(qiáng)作用,本文對(duì)2 組數(shù)據(jù)集分別進(jìn)行4 組實(shí)驗(yàn)。首先,計(jì)算原始目標(biāo)檢測(cè)器的準(zhǔn)確率,并對(duì)目標(biāo)檢測(cè)器進(jìn)行對(duì)抗攻擊。然后,將生成的對(duì)抗樣本加入惡意代碼檢測(cè)器進(jìn)行對(duì)抗訓(xùn)練。最后,再次攻擊對(duì)抗訓(xùn)練后的檢測(cè)器。
2 個(gè)數(shù)據(jù)集對(duì)抗訓(xùn)練前后檢測(cè)器的準(zhǔn)確率如表3 和表4 所示。其中,D 為初始檢測(cè)器,DAT為對(duì)抗訓(xùn)練后的檢測(cè)器。對(duì)D 和DAT檢測(cè)器進(jìn)行對(duì)抗樣本攻擊模型分別表示為AE1和AE2。表5 和表6為對(duì)D 和DAT檢測(cè)器進(jìn)行對(duì)抗攻擊的攻擊成功率,即AE1和AE2的攻擊成功率。
表3 對(duì)抗訓(xùn)練前后檢測(cè)器的準(zhǔn)確率(安卓數(shù)據(jù)集)
表4 對(duì)抗訓(xùn)練前后檢測(cè)器的準(zhǔn)確率(Windows 數(shù)據(jù)集)
表5 對(duì)抗訓(xùn)練前后對(duì)抗攻擊成功率(安卓數(shù)據(jù)集)
表6 對(duì)抗訓(xùn)練前后對(duì)抗攻擊成功率(Windows 數(shù)據(jù)集)
從表3 和表4 可知,對(duì)于不同的目標(biāo)檢測(cè)器,在經(jīng)過(guò)對(duì)抗訓(xùn)練后,檢測(cè)器的準(zhǔn)確率大都得到了一定的提升。結(jié)果表明,通過(guò)加入生成的惡意代碼對(duì)抗樣本進(jìn)行對(duì)抗訓(xùn)練,提升了目標(biāo)檢測(cè)器的惡意代碼識(shí)別能力。
從表5 和表6 可知,對(duì)抗訓(xùn)練后的惡意代碼檢測(cè)其攻擊成功率明顯低于原始惡意代碼檢測(cè)器。結(jié)果表明,通過(guò)對(duì)抗訓(xùn)練,惡意代碼檢測(cè)器識(shí)別對(duì)抗樣本的能力有明顯提高,提高了模型的抗干擾能力,增強(qiáng)了模型的穩(wěn)健性。
針對(duì)機(jī)器學(xué)習(xí)模型的脆弱性問(wèn)題,對(duì)惡意代碼檢測(cè)模型的增強(qiáng)方法展開了研究,提出了對(duì)抗訓(xùn)練驅(qū)動(dòng)的惡意代碼檢測(cè)增強(qiáng)方法。首先,基于WGAN構(gòu)建面向API 調(diào)用的良性樣本庫(kù),以擾動(dòng)的形式添加進(jìn)惡意樣本。然后,基于對(duì)數(shù)回溯法進(jìn)行擾動(dòng)刪減以降低攻擊成本。最后,基于主動(dòng)防御思想將生成的對(duì)抗樣本用于惡意代碼檢測(cè)器的重訓(xùn)練,提高惡意代碼檢測(cè)器防御對(duì)抗性攻擊的能力。實(shí)驗(yàn)表明,本文提出的惡意代碼對(duì)抗樣本生成方法能夠以較低的擾動(dòng)成本和較少的查詢次數(shù)生成具有較高躲避率的惡意代碼對(duì)抗樣本。通過(guò)生成的惡意代碼對(duì)抗樣本來(lái)豐富惡意樣本庫(kù),重訓(xùn)練惡意代碼檢測(cè)模型,能夠達(dá)到增強(qiáng)模型穩(wěn)健性和提高模型檢測(cè)率的效果。
在未來(lái)研究工作中,將進(jìn)一步對(duì)本文方法進(jìn)行改進(jìn)和完善。一方面,針對(duì)對(duì)抗樣本生成攻擊成本最小化問(wèn)題進(jìn)行優(yōu)化,考慮多個(gè)因素對(duì)攻擊成本的影響并賦予合適的權(quán)重。另一方面,進(jìn)一步探索基于代碼混淆技術(shù)和躲避動(dòng)態(tài)惡意代碼檢測(cè)模型的對(duì)抗樣本生成方法。