黃青
(武漢郵電科學(xué)研究院,湖北 武漢 430000)
惡意程序猖獗已久,從國(guó)家互聯(lián)網(wǎng)應(yīng)急中心(CNCERT)發(fā)布的數(shù)據(jù)[1]來(lái)看,僅2021 年上半年,機(jī)構(gòu)就捕獲惡意程序樣本數(shù)量約2 307 萬(wàn)個(gè)。傳統(tǒng)的基于簽名的檢測(cè)方法不足以應(yīng)對(duì)瞬息萬(wàn)變的惡意軟件,將人工智能技術(shù)應(yīng)用于惡意軟件檢測(cè)一直是網(wǎng)絡(luò)安全研究中的熱點(diǎn),有的研究使用了軟件的靜態(tài)特征[2],有的研究使用動(dòng)態(tài)特征[3-4],也有的研究將動(dòng)靜態(tài)特征結(jié)合分析[5]。
圖能表征很多內(nèi)容,但其非歐式結(jié)構(gòu)卻不適用于傳統(tǒng)的機(jī)器學(xué)習(xí)或者深度學(xué)習(xí)算法模型。近年來(lái)興起的圖神經(jīng)網(wǎng)絡(luò)就致力于研究將圖結(jié)構(gòu)向量化并用于算法模型,將稀疏高維的原始數(shù)據(jù)變得稠密低維以提高算法效率,也是圖算法研究中的重要一環(huán)。圖神經(jīng)網(wǎng)絡(luò)已經(jīng)廣泛用于社交網(wǎng)絡(luò)[6]、推薦系統(tǒng)[7]等場(chǎng)景,而對(duì)于網(wǎng)絡(luò)安全方面的應(yīng)用相對(duì)較少[8]。
文中研究了圖嵌入在惡意軟件檢測(cè)工作上的應(yīng)用,從樣本的掃描報(bào)告提取軟件的多種特征構(gòu)建軟件的異構(gòu)圖,通過(guò)改進(jìn)的圖嵌入方法得到異構(gòu)圖中節(jié)點(diǎn)的特征向量,然后利用嵌入向量完成后續(xù)檢測(cè)工作。
定義1 圖定義為G=(V,E,φ,ψ),圖的每個(gè)對(duì)象(節(jié)點(diǎn))v∈V屬于對(duì)象類(lèi)型集合A:φ(v)∈A,每個(gè)關(guān)系(邊)e∈E屬于關(guān)系類(lèi)型集合R:ψ(e)∈R。異構(gòu)圖(heterogeneous graph)的對(duì)象類(lèi)型數(shù)和關(guān)系類(lèi)型數(shù)|A|+|R|>2,與之對(duì)應(yīng)的同構(gòu)圖(homogeneous graph)的類(lèi)型集合 |A|=1 且 |R|=1。兩種圖示例如圖1所示。

圖1 兩種圖示例
定義2 網(wǎng)絡(luò)模式是一個(gè)定義在異構(gòu)圖G=(V,E)的對(duì)象類(lèi)型集合A和關(guān)系類(lèi)型集合R上的元模板,記為T(mén)G=(A,R)。
惡意軟件檢測(cè)使用的特征一般根據(jù)提取方式分為靜態(tài)特征和動(dòng)態(tài)特征,靜態(tài)特征不需要運(yùn)行軟件就可獲得,但是容易受到混淆影響;動(dòng)態(tài)特征從運(yùn)行中獲得,其描述軟件行為的信息更準(zhǔn)確,但是因?yàn)樾枰\(yùn)行所以提取效率不如靜態(tài)特征[9]。文中構(gòu)建的惡意軟件異構(gòu)圖的網(wǎng)絡(luò)模式中綜合考慮了軟件的動(dòng)靜態(tài)特征,根據(jù)數(shù)據(jù)源在靜態(tài)特征上選取了函數(shù)導(dǎo)入表,動(dòng)態(tài)特征上選取了打開(kāi)文件和注冊(cè)表行為。惡意軟件的網(wǎng)絡(luò)模式如圖2 所示。

圖2 惡意軟件的網(wǎng)絡(luò)模式
該網(wǎng)絡(luò)模式中的節(jié)點(diǎn)類(lèi)型有可執(zhí)行文件(PE,P)、導(dǎo)入函數(shù)(API,A)、動(dòng)態(tài)鏈接庫(kù)(DLL,D)、打開(kāi)文件(F)和打開(kāi)注冊(cè)表項(xiàng)(R)。節(jié)點(diǎn)之間涉及了四種關(guān)系,分別是:
1)R1:PE 導(dǎo)入API;
2)R2:API 屬于DLL;
3)R3:PE 打開(kāi)文件;
4)R4:PE 打開(kāi)注冊(cè)表。
圖在計(jì)算機(jī)中用以表示圖的矩陣一般是稀疏高維的,對(duì)這些矩陣進(jìn)行直接運(yùn)算代價(jià)極大,而且包含了很多無(wú)效計(jì)算。為了讓運(yùn)算更高效,需要對(duì)圖進(jìn)行嵌入處理。對(duì)于圖G=(V,E),圖嵌入定義[10]為一種映射f:vi→yi∈Rd(?i∈n,d? ||V),其中,d為嵌入后的向量維度。
異構(gòu)圖的嵌入方法一般是分解圖的矩陣(比如鄰接矩陣)生成節(jié)點(diǎn)的潛在維度表示[11],然而惡意軟件檢測(cè)對(duì)時(shí)間性能要求很高,文中選取了計(jì)算代價(jià)相對(duì)較小的基于隨機(jī)游走(random walk)的圖嵌入方法。
基于隨機(jī)游走的圖嵌入方法主要是將自然語(yǔ)言處理中的Word2Vec 思想延伸到圖上[12],經(jīng)典的模型有DeepWalk[13]、metapath2vec[14]等,Deepwalk 通過(guò)等概率隨機(jī)游走策略將一個(gè)節(jié)點(diǎn)周?chē)墓?jié)點(diǎn)轉(zhuǎn)為該節(jié)點(diǎn)的“上下文”。metapath2vec 隨機(jī)游走時(shí)下一個(gè)節(jié)點(diǎn)的選擇取決于元路徑的限制,元路徑(meta path)是網(wǎng)絡(luò)模式TG=(A,R) 上由不同類(lèi)型的對(duì)象和指定關(guān)系序列組成的一條路徑P,表現(xiàn)形式為
惡意軟件的異構(gòu)圖嵌入方法主要借鑒了metagraph2vec,通過(guò)元路徑限制的隨機(jī)游走策略在獲取上下文的同時(shí)保持了不同類(lèi)型節(jié)點(diǎn)之間的語(yǔ)義和結(jié)構(gòu)關(guān)聯(lián)性,并針對(duì)惡意軟件檢測(cè)做了以下優(yōu)化:
1)根據(jù)信息安全知識(shí)設(shè)計(jì)了可以描述軟件不同特征的元路徑,采用幾何角度加權(quán)的方式融合多條元路徑嵌入得到的向量。
2)針對(duì)惡意檢測(cè)時(shí)的節(jié)點(diǎn)分類(lèi)任務(wù)場(chǎng)景采用了不同的嵌入模型。
1.2.1 隨機(jī)游走策略
metapath2vec 中的隨機(jī)游走策略是基于元路徑指導(dǎo)的,文中基于安全知識(shí)提出圖3 所示的四種元路徑,M1和M2刻畫(huà)了PE 文件的靜態(tài)特征函數(shù)導(dǎo)入,M3和M4刻畫(huà)了PE 文件的動(dòng)態(tài)特征打開(kāi)文件和打開(kāi)注冊(cè)表項(xiàng)。

圖3 四種元路徑
下面以元路徑M1為例說(shuō)明游走策略,M1描述了兩個(gè)PE 文件導(dǎo)入同一個(gè)API 的場(chǎng)景,步行者會(huì)遍歷異構(gòu)圖中的每一個(gè)P節(jié)點(diǎn),從其中一個(gè)可執(zhí)行文件節(jié)點(diǎn)pi出發(fā),pi的周?chē)赡芨鞣N節(jié)點(diǎn),但異構(gòu)圖的隨機(jī)游走只在A節(jié)點(diǎn)中做隨機(jī)選擇,選擇A節(jié)點(diǎn)aj后,又從aj的周?chē)x擇可執(zhí)行文件節(jié)點(diǎn)pi+1。
1.2.2 嵌入方法
隨機(jī)游走后得到的節(jié)點(diǎn)路徑可以作為語(yǔ)料庫(kù),然后使用自然語(yǔ)言處理的嵌入模型進(jìn)行處理。metagragh2vec 方法使用的是skip-gram 模型,而針對(duì)惡意軟件的圖嵌入方法選擇了CBOW 模型。skipgram 和CBOW 是word2vec的兩種模型,skip-gram 是從中心詞對(duì)周?chē)脑~進(jìn)行預(yù)測(cè),而CBOW 模型則是通過(guò)周?chē)脑~預(yù)測(cè)中心詞。惡意軟件的圖嵌入目的是預(yù)測(cè)節(jié)點(diǎn)類(lèi)型,屬于從上下文(周?chē)?jié)點(diǎn))預(yù)測(cè)中心詞(中心節(jié)點(diǎn)),因此選用CBOW 模型進(jìn)行嵌入。
四種元路徑會(huì)獲得四種特征空間的向量,為了使最終獲得的向量可以更全面地描述軟件,文中方法將幾種特征向量進(jìn)行主角度加權(quán)融合,從物理意義上看,特征融合讓惡意軟件之間通過(guò)多種角度聯(lián)系到一起提升了關(guān)聯(lián)性,從而可以提高分類(lèi)檢測(cè)的準(zhǔn)確率。
假設(shè)有特征空間Yi和Yj,它們之間的角度余弦值cosθ定義如式(1)所示:
設(shè)θ1,θ2,…,θd是空間Yi和Yj的主角度,則Yi和Yj的幾何距離d如式(2)所示:
根據(jù)兩個(gè)空間的幾何距離計(jì)算空間Yi的權(quán)重,如(3)所示:
實(shí)驗(yàn)運(yùn)行在Intel Core i5 CPU@2.4 GHz 操作環(huán)境,Python 作為語(yǔ)言。利用DGL 庫(kù)構(gòu)建異構(gòu)網(wǎng)絡(luò)和隨機(jī)游走,gensim 庫(kù)完成嵌入,sklearn 實(shí)現(xiàn)分類(lèi)。
實(shí)驗(yàn)數(shù)據(jù)收集主要使用了威脅情報(bào)平臺(tái)VirusTotal 智能查詢(xún)接口和掃描報(bào)告接口。遵循諸多研究中的判定規(guī)則,實(shí)驗(yàn)中把VirusTotal 掃描結(jié)果判定數(shù)少于3 的認(rèn)為是良性樣本,而惡意樣本來(lái)源于Acronis2021 年上半年報(bào)告[15]中公布的十大惡意家族。經(jīng)過(guò)篩選后有效樣本數(shù)據(jù)共4 902個(gè),其中良性樣本2 284個(gè),惡意樣本2 618 個(gè)。
實(shí)驗(yàn)分類(lèi)模型選取了內(nèi)核為RFC 的支持向量機(jī)(SVC),結(jié)果評(píng)估以惡意為正例,選取了四個(gè)指標(biāo),分別為準(zhǔn)確率、精確率、召回率和F1-Score。
實(shí)驗(yàn)數(shù)據(jù)集中的4 902 個(gè)樣本共關(guān)聯(lián)了28 826個(gè)API、923 個(gè)DLL、205 803 個(gè)被操作文件和67 274個(gè)注冊(cè)表項(xiàng),構(gòu)成的異構(gòu)圖節(jié)點(diǎn)向量初始維度高達(dá)30 萬(wàn)維。實(shí)驗(yàn)首先在其他參數(shù)不變的情況下,使用元路徑M3探討參數(shù)隨機(jī)游走的游走長(zhǎng)度l和嵌入的維度d對(duì)結(jié)果的影響。
游走長(zhǎng)度l對(duì)檢測(cè)準(zhǔn)確率的影響如圖4 所示。從結(jié)果可以看出,l從40提升至100的過(guò)程中,準(zhǔn)確率也在逐步提高,而當(dāng)其超過(guò)100 后對(duì)準(zhǔn)確率的提升就沒(méi)有明顯效果,甚至有下降趨勢(shì)。游走長(zhǎng)度過(guò)短時(shí)無(wú)法很好地捕獲異構(gòu)圖的結(jié)構(gòu)信息,過(guò)長(zhǎng)時(shí)生成的節(jié)點(diǎn)路徑可能會(huì)趨于相近造成混淆,游走長(zhǎng)度變長(zhǎng)還會(huì)導(dǎo)致計(jì)算量的增加。綜合來(lái)看,游走長(zhǎng)度l設(shè)置為100 是可以兼顧準(zhǔn)確率和計(jì)算代價(jià)的性?xún)r(jià)比選擇。

圖4 游走長(zhǎng)度l和準(zhǔn)確率
嵌入維度d的設(shè)置對(duì)檢測(cè)準(zhǔn)確率的影響如圖5所示。從結(jié)果可知,d從32 增長(zhǎng)至128 的過(guò)程中,準(zhǔn)確率逐步升高,而超過(guò)128 之后,準(zhǔn)確率有了下降的趨勢(shì)。這是因?yàn)楫?dāng)嵌入維度過(guò)小時(shí),會(huì)有很多信息被舍棄,得到的特征向量難以準(zhǔn)確表達(dá)圖的內(nèi)容,而維度過(guò)高時(shí),得到的特征向量信息密度比較稀疏,也難以取得較好的效果,綜合來(lái)看嵌入維度d設(shè)置為128 可以獲得較好效果。

圖5 嵌入維度d對(duì)結(jié)果的影響
除了以上討論的兩個(gè)參數(shù),其他比較重要的參數(shù)還有每個(gè)節(jié)點(diǎn)的游走次數(shù)n、嵌入時(shí)的滑動(dòng)窗口大小w等,文中方法使用了研究中常使用的經(jīng)典值。
為了檢測(cè)改進(jìn)的圖嵌入方法在惡意軟件檢測(cè)上的有效性,實(shí)驗(yàn)選取了兩種經(jīng)典的圖嵌入方法與改進(jìn)方法進(jìn)行對(duì)比。
方法一是文獻(xiàn)[13]使用的DeepWalk,該模型不區(qū)分節(jié)點(diǎn)類(lèi)型進(jìn)行等概率隨機(jī)游走。
方法二是文獻(xiàn)[14]使用的metapath2vec,該模型在游走時(shí)根據(jù)設(shè)置的元路徑在指定類(lèi)型的節(jié)點(diǎn)中進(jìn)行隨機(jī)游走。
三種方法的參數(shù)設(shè)置都為每個(gè)節(jié)點(diǎn)游走次數(shù)10,游走長(zhǎng)度100,嵌入維度128,滑動(dòng)窗口大小5。metapath2vec 和改進(jìn)方法得到的向量都進(jìn)行了融合處理。對(duì)比結(jié)果如表1 所示。

表1 模型性能評(píng)估結(jié)果
從結(jié)果可以看出,改進(jìn)方法在各項(xiàng)性能上都有最佳表現(xiàn),準(zhǔn)確率最高相差2.8%。DeepWalk 方法明顯遜于后兩種方法,原始的metapath2vec 方法在惡意軟件檢測(cè)的應(yīng)用上也不如改進(jìn)方法。
文獻(xiàn)[16]在metapath2vec 的基礎(chǔ)上提出了更復(fù)雜的metagraph2vec,但由于在此次研究中難以獲取文獻(xiàn)[16]中軟件提交來(lái)源這種企業(yè)級(jí)別的內(nèi)容,因此只對(duì)比部分元路徑,該文獻(xiàn)設(shè)計(jì)的MID1、MID5使用的特征與M1、M2相似,單條元路徑上的分類(lèi)檢測(cè)結(jié)果對(duì)比如表2 所示。

表2 與文獻(xiàn)[16]單條元路徑對(duì)比
從單條元路徑檢測(cè)結(jié)果來(lái)看,文中改進(jìn)的方法依然優(yōu)于文獻(xiàn)[16],準(zhǔn)確率相差近10%。融合特征上由于兩個(gè)方法使用的特征存在較大差異,故沒(méi)有進(jìn)行對(duì)比。
針對(duì)圖智能算法在惡意軟件檢測(cè)上的應(yīng)用,文中提出了一種基于異構(gòu)圖嵌入的檢測(cè)方法。該方法提取了靜態(tài)特征和動(dòng)態(tài)特征一起構(gòu)建惡意軟件的異構(gòu)圖,然后采用改進(jìn)的基于元路徑的嵌入方法對(duì)異構(gòu)圖進(jìn)行學(xué)習(xí),最后將融合的特征向量送入SVM 分類(lèi)器完成檢測(cè)。通過(guò)實(shí)驗(yàn)獲得了嵌入方法的最佳參數(shù),并與其他方法對(duì)比證明了提出改進(jìn)方法的有效性。
在下一步的研究中,將嘗試找到更符合真實(shí)情況中惡意軟件分布的數(shù)據(jù)集,同時(shí)提取更多的惡意軟件特征將方法進(jìn)行擴(kuò)展;另一方面,提出方法目前只適用于不變化的圖,圖動(dòng)態(tài)變化時(shí)要如何高效學(xué)習(xí)和檢測(cè)也是待解決問(wèn)題。