1、引言
隨著社會發展越來越依賴于計算機系統和網絡技術,惡意軟件對于當今社會的威脅越來越大。惡意軟件檢測一直是網絡安全學術界和工業界長期致力于解決的關鍵問題。傳統的惡意軟件方法依賴威脅情報庫,即將軟件的特征與情報庫中的情報做信息匹配。然而,這種威脅情報庫的維護成本很大,并且需要大量的專家知識,而且隨著惡意軟件向著載荷小、隱蔽性高、危害性大、變體繁雜等方向持續進化,特別是現在很多黑客組織直接采用腳本生成大批量的惡意軟件從而進行大規模惡意軟件攻擊,傳統依賴于規則匹配的方法很難再適用于當下的網絡安全環境。
近幾年,隨著大數據和機器學習的大規模發展,越來越多的網絡安全人員嘗試使用機器學習的方式學習惡意軟件與正常軟件的特征,從而讓惡意軟件檢測工作擺脫威脅情報和專家知識,并且能夠從容應對大規模的惡意軟件攻擊。
2、背景
隨著計算機系統和網絡技術的大規模應用,惡意軟件的危害也變得尤為突出。網絡蠕蟲、勒索軟件等入侵事件愈演愈烈,黑客組織往往采用腳本生成大量同類惡意軟件的變體從而進行大規模的網絡攻擊,導致社會各界損失慘重。根據Gantz等人的研究,僅2014年隱藏在盜版軟件中的惡意軟件,就造成了接近5000億美元的經濟損失,這還只是眾多類型惡意軟件的冰山一角。根據AV-TEST的統計,在2019到2020年期間,各大安全廠商上報的惡意軟件中,就有超過1.14個惡意軟件沒有被最新的威脅情報記錄在案,而僅僅是在2020年的第一季度,就發現了超過4.3億個新型惡意軟件。顯然,在當今的網絡環境下,惡意軟件攻擊是復雜多變的。僅僅依靠傳統的規則特征匹配不僅需要大量的專家知識維護情報庫,而且往往對新出現的惡意軟件變體無可奈何。
應用機器學習算法,根據惡意軟件的行為特征來檢測惡意軟件似乎是解決這一問題的可能途徑。事實上,早在1995年就有人產生過將機器學習應用于惡意軟件檢測的想法。但是因為要訓練一個好用的機器學習模型,必須要有足夠數量和質量的數據集做支撐,但在當時還沒有大數據的概念,惡意軟件的可用樣本也比較少,難以讓模型真正有效地學習到相應的特征。近幾年,由于惡意軟件的數量激增,研究人員可以收集到大規模的惡意軟件樣本,并由此對機器學習甚至是深度學習模型的訓練提供良好的數據支撐。并且除了統計機器學習模型外,深度學習如卷積神經網絡、循環神經網絡、圖神經網絡等算法的蓬勃發展,也為研究人員提供了更好的選擇。在這種背景下,越來越多的安全研究人員設計針對惡意軟件檢測的特征工程,并把多種機器學習算法應用于惡意軟件檢測,最終達到了非常好的效果。值得一提的是,由于機器學習方法不依賴于專家知識和威脅情報,而且是通過學習惡意軟件的特征來給出評判結果,所以這種方式可以在成本小的前提下對于變體惡意軟件具有良好的判別力。
3、方法
雖然惡意軟件檢測問題涉及多種文件格式和操作系統,但在大多數情況下,同樣的特征工程和方法也適用于其他惡意軟件領域,例如適用于windows系統可執行文件(PE)的檢測算法也同樣適用于惡意PDF文件,Linux或Android平臺的惡意軟件。本文將基于機器學習的惡意軟件檢測方法按照所需要的特征和模型分為主要的四類,并分別概述具有代表性方法。
3.1 基于統計特征的方法
被廣泛使用的特征工程項目LIEF根據解析二進制文件的頭部和節的相關信息提取多維特征,包含文件字節碼特征、導入表信息、文件各個部分的熵值等信息,共同組成一個特征向量,作為被檢測文件的畫像。基于這種特征提取方式,研究人員大多采用一些統計機器學習模型如決策樹、支持向量機、集成學習等進行有監督訓練,并最終達到區分良性軟件與惡意軟件的目的。
3.2 基于指紋圖的方法
此類方法的大致流程如圖-2所示。由于軟件樣本本身是二進制文件,而一個字節(八位二進制數)的大小范圍為0-255,也就是一個像素的取值范圍。所以在特征提取階段可以將二進制可執行文件按照八位一個像素值轉化為一個“指紋灰度圖”,這樣惡意軟件檢測問題就變成了一個對指紋圖的學習和分類問題。而在深度學習領域,計算機視覺領域的卷積神經網絡(Convolutional Neural Networks, CNNs)十分擅長對圖片進行學習。所以,安全人員將指紋圖輸入到各種卷積神經網絡,并輸出惡意軟件置信度,最終判斷輸入樣本是否為惡意軟件。代表工作MalConv就是利用這種方式可以在大規模惡意軟件檢測任務中達到90%以上的檢測準確率。
3.3 基于API調用序列的方法
相對于基于統計特征和指紋圖的方法,基于API調用序列的方法旨在讓模型真正學到軟件所暴露的惡意行為,并以此為特征來判別惡意軟件。這類方法,首先在特征提取階段,相比于基于統計特征和指紋圖這些直接在文件中提取特征的方法,基于API調用序列的方法往往要真正地運行軟件樣本,并監控軟件所對應的進程,提取該軟件在運行過程中所調用的系統API,用這些API所組成的序列作為特征來表示軟件運行過程中的各種操作,進而表示軟件的行為。為了更加有效的獲取API調用序列,研究人員往往在沙箱中運行軟件樣本,成熟的沙箱系統如Cuckoo提供了安全的軟件執行環境,并且會自動化地監控軟件運行所對應進程的API調用信息。在獲取到API調用序列之后,就要考慮如何讓模型“理解”這段序列并做出判斷。一個合理的解決方案是把API調用序列中的每個API看做是一個詞,那么整個序列就可以看做是一句話,這樣就可以使用自然語言處理領域的多種模型來解決這個問題。在自然語言處理領域,以循環神經網絡(Recurrent Neural Networks, RNNs)為代表的的多種模型取得了巨大的成功。安全人員嘗試借鑒自然語言處理領域的各種特征編碼和模型來分析API調用序列,并在大規模惡意軟件檢測任務中可以達到97%以上的檢測準確率。
3.4 基于程序執行流程圖的方法
控制流圖是非常熟知的特征,研究人員通過反匯編將二進制軟件樣本轉化為匯編代碼,并從中提取控制流圖,從而轉化為一個圖分類問題。近年來圖神經網絡(Graph Neural Networks,GNNs)的蓬勃發展為解決這類問題提供了新的思路。使用圖神經網絡來分析控制流圖,并在大規模數據集中可以達到95%以上的準確率。
4、挑戰
雖然機器學習在惡意軟件檢測方面已經取得了非常可觀的效果,但是由于機器學習本身的一些原因,這些方法還是存在一些問題,而這也導致了在工業界機器學習并沒有進行大規模的普遍使用,這里介紹三個主要的問題。
第一個比較核心的問題,就是機器學習模型的魯棒性問題,因為這種模式畢竟是數據驅動的,在數據集上得出的結論往往會與現實世界有偏差,極高準確率下的檢測結果往往是由于模型對于數據的過擬合造成的,這樣的模型一旦投入生產反而會成為黑客組織攻擊的對象。所以如何提高模型魯棒性泛化性也是學術界一直在探討的熱點問題。
第二個問題,是機器學習可解釋性的問題。眾所周知,很多機器學習模型是按照端到端的模式設計的,這樣的模型對于使用者和維護者來說就是一個黑盒,人們無法理解模型到底是憑借什么做出的決策,又該朝著什么方向去優化,這使得機器學習往往在網絡安全產品層面給人一種泡沫感。
第三個問題,是概念漂移的問題。由于惡意軟件是隨著時間不斷進化的,所以通過現有數據集訓練好的機器學習模型可能在未來某個時候會不再適用,而重新訓練模型往往伴隨著巨大的成本。所以如何在低成本的條件下讓模型持久使用也是一個亟待解決的問題。
5、小結
在大數據時代下,傳統基于規則的惡意軟件檢測方法能力有限,將機器學習應用于惡意軟件檢測會在不依賴專家知識的條件下取得較好的效果。然而由于機器學習本身的一些問題目前并沒有很系統的解決方案,所以現階段這種模型也只是小規模地應用在工業界,絕大多數網絡安全產品往往采用傳統方法與機器學習方法相結合的模式。因此,現階段其實處在一個技術過渡與發展的時期,惡意軟件檢測是一個復雜而長期的問題,充滿著機遇與挑戰。
及時掌握網絡安全態勢 盡在傻蛋網絡安全監測系統
本文來源:中國保密協會科學技術分會
如涉及侵權,請及時與我們聯系,我們會在第一時間刪除或處理侵權內容。
電話:400-869-9193 負責人:張明