黃青
(武漢郵電科學(xué)研究院,湖北 武漢 430000)
惡意程序猖獗已久,從國家互聯(lián)網(wǎng)應(yīng)急中心(CNCERT)發(fā)布的數(shù)據(jù)[1]來看,僅2021 年上半年,機構(gòu)就捕獲惡意程序樣本數(shù)量約2 307 萬個。傳統(tǒng)的基于簽名的檢測方法不足以應(yīng)對瞬息萬變的惡意軟件,將人工智能技術(shù)應(yīng)用于惡意軟件檢測一直是網(wǎng)絡(luò)安全研究中的熱點,有的研究使用了軟件的靜態(tài)特征[2],有的研究使用動態(tài)特征[3-4],也有的研究將動靜態(tài)特征結(jié)合分析[5]。
圖能表征很多內(nèi)容,但其非歐式結(jié)構(gòu)卻不適用于傳統(tǒng)的機器學(xué)習(xí)或者深度學(xué)習(xí)算法模型。近年來興起的圖神經(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]等場景,而對于網(wǎng)絡(luò)安全方面的應(yīng)用相對較少[8]。
文中研究了圖嵌入在惡意軟件檢測工作上的應(yīng)用,從樣本的掃描報告提取軟件的多種特征構(gòu)建軟件的異構(gòu)圖,通過改進的圖嵌入方法得到異構(gòu)圖中節(jié)點的特征向量,然后利用嵌入向量完成后續(xù)檢測工作。
定義1 圖定義為G=(V,E,φ,ψ),圖的每個對象(節(jié)點)v∈V屬于對象類型集合A:φ(v)∈A,每個關(guān)系(邊)e∈E屬于關(guān)系類型集合R:ψ(e)∈R。異構(gòu)圖(heterogeneous graph)的對象類型數(shù)和關(guān)系類型數(shù)|A|+|R|>2,與之對應(yīng)的同構(gòu)圖(homogeneous graph)的類型集合 |A|=1 且 |R|=1。兩種圖示例如圖1所示。
圖1 兩種圖示例
定義2 網(wǎng)絡(luò)模式是一個定義在異構(gòu)圖G=(V,E)的對象類型集合A和關(guān)系類型集合R上的元模板,記為TG=(A,R)。
惡意軟件檢測使用的特征一般根據(jù)提取方式分為靜態(tài)特征和動態(tài)特征,靜態(tài)特征不需要運行軟件就可獲得,但是容易受到混淆影響;動態(tài)特征從運行中獲得,其描述軟件行為的信息更準(zhǔn)確,但是因為需要運行所以提取效率不如靜態(tài)特征[9]。文中構(gòu)建的惡意軟件異構(gòu)圖的網(wǎng)絡(luò)模式中綜合考慮了軟件的動靜態(tài)特征,根據(jù)數(shù)據(jù)源在靜態(tài)特征上選取了函數(shù)導(dǎo)入表,動態(tài)特征上選取了打開文件和注冊表行為。惡意軟件的網(wǎng)絡(luò)模式如圖2 所示。
圖2 惡意軟件的網(wǎng)絡(luò)模式
該網(wǎng)絡(luò)模式中的節(jié)點類型有可執(zhí)行文件(PE,P)、導(dǎo)入函數(shù)(API,A)、動態(tài)鏈接庫(DLL,D)、打開文件(F)和打開注冊表項(R)。節(jié)點之間涉及了四種關(guān)系,分別是:
1)R1:PE 導(dǎo)入API;
2)R2:API 屬于DLL;
3)R3:PE 打開文件;
4)R4:PE 打開注冊表。
圖在計算機中用以表示圖的矩陣一般是稀疏高維的,對這些矩陣進行直接運算代價極大,而且包含了很多無效計算。為了讓運算更高效,需要對圖進行嵌入處理。對于圖G=(V,E),圖嵌入定義[10]為一種映射f:vi→yi∈Rd(?i∈n,d? ||V),其中,d為嵌入后的向量維度。
異構(gòu)圖的嵌入方法一般是分解圖的矩陣(比如鄰接矩陣)生成節(jié)點的潛在維度表示[11],然而惡意軟件檢測對時間性能要求很高,文中選取了計算代價相對較小的基于隨機游走(random walk)的圖嵌入方法。
基于隨機游走的圖嵌入方法主要是將自然語言處理中的Word2Vec 思想延伸到圖上[12],經(jīng)典的模型有DeepWalk[13]、metapath2vec[14]等,Deepwalk 通過等概率隨機游走策略將一個節(jié)點周圍的節(jié)點轉(zhuǎn)為該節(jié)點的“上下文”。metapath2vec 隨機游走時下一個節(jié)點的選擇取決于元路徑的限制,元路徑(meta path)是網(wǎng)絡(luò)模式TG=(A,R) 上由不同類型的對象和指定關(guān)系序列組成的一條路徑P,表現(xiàn)形式為
惡意軟件的異構(gòu)圖嵌入方法主要借鑒了metagraph2vec,通過元路徑限制的隨機游走策略在獲取上下文的同時保持了不同類型節(jié)點之間的語義和結(jié)構(gòu)關(guān)聯(lián)性,并針對惡意軟件檢測做了以下優(yōu)化:
1)根據(jù)信息安全知識設(shè)計了可以描述軟件不同特征的元路徑,采用幾何角度加權(quán)的方式融合多條元路徑嵌入得到的向量。
2)針對惡意檢測時的節(jié)點分類任務(wù)場景采用了不同的嵌入模型。
1.2.1 隨機游走策略
metapath2vec 中的隨機游走策略是基于元路徑指導(dǎo)的,文中基于安全知識提出圖3 所示的四種元路徑,M1和M2刻畫了PE 文件的靜態(tài)特征函數(shù)導(dǎo)入,M3和M4刻畫了PE 文件的動態(tài)特征打開文件和打開注冊表項。
圖3 四種元路徑
下面以元路徑M1為例說明游走策略,M1描述了兩個PE 文件導(dǎo)入同一個API 的場景,步行者會遍歷異構(gòu)圖中的每一個P節(jié)點,從其中一個可執(zhí)行文件節(jié)點pi出發(fā),pi的周圍可能各種節(jié)點,但異構(gòu)圖的隨機游走只在A節(jié)點中做隨機選擇,選擇A節(jié)點aj后,又從aj的周圍選擇可執(zhí)行文件節(jié)點pi+1。
1.2.2 嵌入方法
隨機游走后得到的節(jié)點路徑可以作為語料庫,然后使用自然語言處理的嵌入模型進行處理。metagragh2vec 方法使用的是skip-gram 模型,而針對惡意軟件的圖嵌入方法選擇了CBOW 模型。skipgram 和CBOW 是word2vec的兩種模型,skip-gram 是從中心詞對周圍的詞進行預(yù)測,而CBOW 模型則是通過周圍的詞預(yù)測中心詞。惡意軟件的圖嵌入目的是預(yù)測節(jié)點類型,屬于從上下文(周圍節(jié)點)預(yù)測中心詞(中心節(jié)點),因此選用CBOW 模型進行嵌入。
四種元路徑會獲得四種特征空間的向量,為了使最終獲得的向量可以更全面地描述軟件,文中方法將幾種特征向量進行主角度加權(quán)融合,從物理意義上看,特征融合讓惡意軟件之間通過多種角度聯(lián)系到一起提升了關(guān)聯(lián)性,從而可以提高分類檢測的準(zhǔn)確率。
假設(shè)有特征空間Yi和Yj,它們之間的角度余弦值cosθ定義如式(1)所示:
設(shè)θ1,θ2,…,θd是空間Yi和Yj的主角度,則Yi和Yj的幾何距離d如式(2)所示:
根據(jù)兩個空間的幾何距離計算空間Yi的權(quán)重,如(3)所示:
實驗運行在Intel Core i5 CPU@2.4 GHz 操作環(huán)境,Python 作為語言。利用DGL 庫構(gòu)建異構(gòu)網(wǎng)絡(luò)和隨機游走,gensim 庫完成嵌入,sklearn 實現(xiàn)分類。
實驗數(shù)據(jù)收集主要使用了威脅情報平臺VirusTotal 智能查詢接口和掃描報告接口。遵循諸多研究中的判定規(guī)則,實驗中把VirusTotal 掃描結(jié)果判定數(shù)少于3 的認(rèn)為是良性樣本,而惡意樣本來源于Acronis2021 年上半年報告[15]中公布的十大惡意家族。經(jīng)過篩選后有效樣本數(shù)據(jù)共4 902個,其中良性樣本2 284個,惡意樣本2 618 個。
實驗分類模型選取了內(nèi)核為RFC 的支持向量機(SVC),結(jié)果評估以惡意為正例,選取了四個指標(biāo),分別為準(zhǔn)確率、精確率、召回率和F1-Score。
實驗數(shù)據(jù)集中的4 902 個樣本共關(guān)聯(lián)了28 826個API、923 個DLL、205 803 個被操作文件和67 274個注冊表項,構(gòu)成的異構(gòu)圖節(jié)點向量初始維度高達30 萬維。實驗首先在其他參數(shù)不變的情況下,使用元路徑M3探討參數(shù)隨機游走的游走長度l和嵌入的維度d對結(jié)果的影響。
游走長度l對檢測準(zhǔn)確率的影響如圖4 所示。從結(jié)果可以看出,l從40提升至100的過程中,準(zhǔn)確率也在逐步提高,而當(dāng)其超過100 后對準(zhǔn)確率的提升就沒有明顯效果,甚至有下降趨勢。游走長度過短時無法很好地捕獲異構(gòu)圖的結(jié)構(gòu)信息,過長時生成的節(jié)點路徑可能會趨于相近造成混淆,游走長度變長還會導(dǎo)致計算量的增加。綜合來看,游走長度l設(shè)置為100 是可以兼顧準(zhǔn)確率和計算代價的性價比選擇。
圖4 游走長度l和準(zhǔn)確率
嵌入維度d的設(shè)置對檢測準(zhǔn)確率的影響如圖5所示。從結(jié)果可知,d從32 增長至128 的過程中,準(zhǔn)確率逐步升高,而超過128 之后,準(zhǔn)確率有了下降的趨勢。這是因為當(dāng)嵌入維度過小時,會有很多信息被舍棄,得到的特征向量難以準(zhǔn)確表達圖的內(nèi)容,而維度過高時,得到的特征向量信息密度比較稀疏,也難以取得較好的效果,綜合來看嵌入維度d設(shè)置為128 可以獲得較好效果。
圖5 嵌入維度d對結(jié)果的影響
除了以上討論的兩個參數(shù),其他比較重要的參數(shù)還有每個節(jié)點的游走次數(shù)n、嵌入時的滑動窗口大小w等,文中方法使用了研究中常使用的經(jīng)典值。
為了檢測改進的圖嵌入方法在惡意軟件檢測上的有效性,實驗選取了兩種經(jīng)典的圖嵌入方法與改進方法進行對比。
方法一是文獻[13]使用的DeepWalk,該模型不區(qū)分節(jié)點類型進行等概率隨機游走。
方法二是文獻[14]使用的metapath2vec,該模型在游走時根據(jù)設(shè)置的元路徑在指定類型的節(jié)點中進行隨機游走。
三種方法的參數(shù)設(shè)置都為每個節(jié)點游走次數(shù)10,游走長度100,嵌入維度128,滑動窗口大小5。metapath2vec 和改進方法得到的向量都進行了融合處理。對比結(jié)果如表1 所示。
表1 模型性能評估結(jié)果
從結(jié)果可以看出,改進方法在各項性能上都有最佳表現(xiàn),準(zhǔn)確率最高相差2.8%。DeepWalk 方法明顯遜于后兩種方法,原始的metapath2vec 方法在惡意軟件檢測的應(yīng)用上也不如改進方法。
文獻[16]在metapath2vec 的基礎(chǔ)上提出了更復(fù)雜的metagraph2vec,但由于在此次研究中難以獲取文獻[16]中軟件提交來源這種企業(yè)級別的內(nèi)容,因此只對比部分元路徑,該文獻設(shè)計的MID1、MID5使用的特征與M1、M2相似,單條元路徑上的分類檢測結(jié)果對比如表2 所示。
表2 與文獻[16]單條元路徑對比
從單條元路徑檢測結(jié)果來看,文中改進的方法依然優(yōu)于文獻[16],準(zhǔn)確率相差近10%。融合特征上由于兩個方法使用的特征存在較大差異,故沒有進行對比。
針對圖智能算法在惡意軟件檢測上的應(yīng)用,文中提出了一種基于異構(gòu)圖嵌入的檢測方法。該方法提取了靜態(tài)特征和動態(tài)特征一起構(gòu)建惡意軟件的異構(gòu)圖,然后采用改進的基于元路徑的嵌入方法對異構(gòu)圖進行學(xué)習(xí),最后將融合的特征向量送入SVM 分類器完成檢測。通過實驗獲得了嵌入方法的最佳參數(shù),并與其他方法對比證明了提出改進方法的有效性。
在下一步的研究中,將嘗試找到更符合真實情況中惡意軟件分布的數(shù)據(jù)集,同時提取更多的惡意軟件特征將方法進行擴展;另一方面,提出方法目前只適用于不變化的圖,圖動態(tài)變化時要如何高效學(xué)習(xí)和檢測也是待解決問題。