基于AI恶意软件分类技术(5)
2021年惡意軟件分類綜述:Malware classification and composition analysis: A survey of recent developments 惡意軟件的分類和成分分析:對最新發展的調查
閱讀論文筆記
原文鏈接
1、本調查的主要貢獻是:
- 提出一種新的分類來描述和比較惡意軟件和成分分類和主要發現。
- 設計了一個新的框架來分析現有的惡意軟件分類和組合分析技術。
- 識別和提出與惡意軟件分析相關的開放問題和挑戰。
- 確定了關于該主題的一些趨勢,并提供了關于如何改進現有解決方案以應對新的和持續的挑戰的指導方針。
2、 相關研究:
BZ等人將惡意軟件檢測方法分為三種類型:基于簽名、基于行為和基于啟發式的方法。此外,他們還基于所提出的基于啟發式的方法識別了五類特征:操作碼、API調用、控制流圖、n-grag和混合特征。
Shabtai等人提出的另一項工作,研究如何使用靜態特性檢測惡意軟件。
本文是研究了更多用于惡意軟件分類的特征(靜態和動態特征)。
Ucci等人調查了關于惡意軟件檢測和分析的機器學習方法的文獻。他們將被調查的文章分為三類:目標(預期輸出)、特征和所使用的算法。他們還強調了一系列的問題和挑戰,并確定了新的研究方向。
同樣Sahu MK提出的調查也對基于智能的惡意軟件分類進行了比較分析。特別是,他們報告了與每個基于機器學習的惡意軟件分類技術相關的缺點、優點和問題。
此外,Basu等人研究了依賴于人工智能惡意軟件分類技術的不同工作。特別是,它們創造了五種類型的特性:PI調用圖、字節序列、PE標頭和部分、匯編代碼頻率和系統調用。
此外,Ye等人的[36]還研究了惡意軟件分類過程的許多不同方面。更具體地說,他們發現了一些問題,如漸進式學習和對抗性學習。
最近,Ori等人的[37]調查了關于用于動態惡意軟件分析的技術的文獻,其中包括對每種技術的描述。特別是,他們概述了用于提高動態惡意軟件分析能力的機器學習方法。
與上述工作相比,本文確定了惡意軟件分類和成分分析所面臨的主要問題和挑戰。此外,我們還確定了在該主題上的一些趨勢,并提供了關于如何改進解決方案以應對新的和持續的挑戰的指導方針。
3、惡意軟件分類使用到的特征和算法
圖1顯示了分類方法。本節的其余部分組織如下(根據建議的分類法)。第3.1節描述惡意軟件分析使用的特征,第3.2節討論現有算法。
3.1 Malware analysis features
本小節介紹了用于分析的樣本的特征。在第3.1.1節中,我們展示了我們是如何提取特征的,而在第3.1.2節中,我們展示了考慮到的特征類型。
3.1.1特征提取方法
在本節中,我們將回顧以下三種特征提取方法:靜態方法、動態方法和混合方法。
靜態方法。 靜態特征提取是一種不運行可執行文件的內容中提取特征的方法。靜態特性可以使用文件格式來提取,例如,便攜式可執行文件(PE)和公共對象文件格式(COFF)[12,18,22,25]。靜態特征也可以在不知道任何格式的情況下被提取出來。用這種方法提取的特征可以是字節序列、文件大小、字節熵等 [12,17,20,25]。靜態特征提取方法的優點是它覆蓋了完整的二進制內容。但問題是,靜態特性容易發生打包和多態性,因為大多數靜態提取的特性都來自加密的內容,而不是原始的程序體[40]。
動態方法 。動態特征提取包括通常在隔離環境中運行可執行文件,該環境可以是虛擬機(VM)或模擬器,然后從可執行文件的內存映像或其行為中提取特征。由于具有加殼和多態性的惡意軟件必須展示真正的惡意代碼來實現其目標,因此與靜態特征提取方法相比,動態特征提取對這些惡意軟件技術具有更強的抵抗力[40]。
安德森等人[21,41]使用Xen1和Royal等人[42],Dai等人[19]和Islam等人[22]使用VMWare2創建他們的虛擬機并執行動態分析。[27]等人使用布谷鳥沙箱3,這是一個開源的自動惡意軟件分析系統來提取API調用。其他為殺病毒引擎工作的研究人員使用虛擬機作為殺病毒引擎的一部分來動態提取特征[24,26]。
實際上,仿真器有兩類:全系統仿真器和應用程序級仿真器。全系統仿真器是一種計算機程序,它模擬計算機的每個組件,包括它的內存、處理器、顯卡、硬盤等,目的是運行一個未經修改的操作系統。Qemu4是一個由多個系統[23,40,43]使用的全系統仿真器。考慮到全系統仿真器的耗時,Cesare和Xiang[15]建議使用應用程序級仿真來更有效地破解惡意軟件,以便只實現執行文件所需的部分,包括指令集、API、虛擬內存、線程和進程管理,以及特定于操作系統的結構。
動態特征提取方法的一個問題是,它沒有揭示所有可能的執行路徑[40]。惡意軟件可能有檢測例程來檢查它是在虛擬機或模擬器中執行的。當惡意軟件發現自己在這樣的環境中執行時,它將停止執行,因此動態模型將無法識別出它為惡意軟件。檢測一個可執行文件是否在VM中執行的方法可以從幾篇論文[44,45]中找到。動態方法的另一個問題是,它的執行時間比靜態特征提取要長得多【40】。
混合方法。 該方法通過將靜態特征提取特征與動態特征提取特征相結合,獲得更高的檢出率[39]。
我們的調查顯示,大多數被調查的論文都是基于動態特征提取方法[21,24,46-63]。而其他方法則采用相同的比例,即單獨采用靜態方法[64–83]或混合方法[22、23、41、47、84-86]。
3.1.2 特征類型
在本節中,我們將對惡意軟件分析人員使用的特性進行分類,并解釋每種類型是如何被實際提取和表示的。
1、可打印字符串。 可打印的字符串是一個以空字符結尾的ASCII字符序列。舒爾茨等人。[12]發現,惡意軟件有一些類似的字符串,區別于它,好軟件也有一些常見的字符串,區別于惡意軟件。可打印的字符串表示為二進制特性,其中“1”表示在可執行文件中存在的字符串,而“0”表示它在所有系統中都不存在 [12,22,24,26]。
Schultz等人[12]從PE文件的頭中提取可打印的字符串。提取是直接的,因為標題是純文本格式的。
Dahl等人[24]、Huang和Stokes[26]從內存[24,26]中的文件圖像中提取空終止對象作為可打印字符串。他們的方法的覆蓋范圍比從頭[12]提取可打印字符串要好,但它們可能是一些假陽性結果。
Islam等人[22]使用IDAPro5中的字符串工具從整個文件中提取可打印的字符串。
與其他作品不同,Saxe和Berlin[25]并不將可打印字符串作為二進制特征,而是使用它們的哈希值和字符串長度的對數來創建一個直方圖,并使用直方圖的每個箱子中可打印字符串的計數作為特征。它們將在ASCII代碼范圍內的所有長度為6或更多的字節序列作為可打印的字符串,這也與其他作品略有不同。
從本質上說,大多數惡意軟件的功能并不依賴于可打印的字符串。因此,當惡意軟件創建者發現一些字符串意外地被惡意軟件檢測器使用時,他們可以消除它們,或者即使可打印的字符串是必要的,他們也可以將它們分解成分布在不同位置的字符。因此,可打印的字符串并不是可靠的特性。
2、字節序列(字節代碼)。可執行文件由字節序列(也稱為字節碼)組成。字節序列可以屬于可執行文件的元數據、代碼或數據。如前所述,字節序列是惡意軟件的重要簽名,因為惡意軟件可能共享一些完全相同的公共序列或遵循相同的正則表達式。因此,字節序列也適用于惡意軟件分析系統的特性[12,17,25,41]。
Schultz等人[12]以二進制特征的形式使用雙字符字節序列,他們聲稱字節序列特征是信息最豐富的特征,因為它表示可執行文件中的機器代碼。事實上,這并不是完全正確的,因為一些字節序列來自于元數據或數據部分。即使一個字節序列來自代碼部分,由于在某些架構中的指令具有可變的長度,字節序列也可能不匹配機器代碼。它們的字節序列特性存在維數爆炸的問題,因為有太多不同的雙字節序列,而且它太大,無法容納內存,所以它們只能將字節序列集分成幾個集,并將它們提供給多個本機貝葉斯模型。
為了解決維度爆炸問題,Kolter和Maloof[17]利用信息增益從2.55億個不同的4克字節序列中選擇了前500個信息豐富的4克字節序列作為二進制特征。
與上述兩部作品不同的是,Anderson等人[41]不使用字節序列本身作為特征,而是將字節序列匹配到馬爾可夫模型中,因此他們使用的特征是從一個字節到另一個字節的轉移概率。Chen等人的[25]利用每個1024字節窗口的字節熵和每個字節的出現情況,形成一個直方圖,并將每個軸均勻地分成16個箱子,形成一個256個長度的特征向量。
Nataraj[20]等人將一個文件的整個字節序列轉換為一個圖像,其中每個字節代表一個像素的灰度。他們發現,屬于同一家族的惡意軟件在布局和圖像上顯得非常相似。用于將一維字節序列轉換為二維矩陣的圖像的寬度由文件的大小決定。利用Oliva和托拉爾巴特[87]提出的算法計算了惡意軟件圖像的圖像特征。基于圖像的技術的主要優點是它們對許多類型的混淆[88]具有魯棒性。
字節序列在大多數情況下并不可靠。這是由于指令替換和寄存器重新分配等混淆技術可以分別改變操作碼和操作碼,這意味著機器代碼被改變了。在所有這些工作中,字節碼都是靜態提取的,但通過加殼和多態性,用不同的算法或密鑰加密的主程序主體將改變字節序列。
3、匯編代碼 。機器碼和裝配碼可以通過裝配和拆卸相互翻譯。作為惡意軟件分析的一個特性,匯編代碼比機器代碼有一些優勢。首先,匯編代碼可以被程序員理解,因此作為一種特性,匯編代碼更方便地進行預處理(例如,根據功能進行分類、過濾、截斷等)。作為一個信息更豐富的特性出現。此外,惡意代碼通常通過加殼或多態性進行加密,因此不可能從原始字節序列中獲得它,但是,動態提取的匯編代碼已經被解密,因此它包含了惡意代碼。
Moskovitch等[18]提出裝配代碼可以比機器代碼的惡意軟件分析因為相同的惡意引擎可能位于文件的不同位置,因此可能鏈接到不同的地址內存甚至擾亂稍微通過降低機會和使用操作碼的魯棒性提高。他們通過使用IDAPro解析可執行文件來提取匯編代碼。他們嘗試將每個操作碼n-gram(n=1,2 ,… ,6)的項頻率(TF)和項頻率逆文檔頻率(TF-IDF)作為特征,并使用文檔頻率(DF)、信息增益比或Fisher評分來選擇特征。利用操作碼雙字符的TF值作為Fisher分數過濾的特征,得到了最好的結果。他們的方法的一個缺點是,它仍然容易發生死代碼插入、操作轉換、加殼和多態性。另一個是刪除操作數導致信息丟失,從而可能導致精度的損失。
為了對抗加殼和多態性,Dai等人的[19]在虛擬機中運行惡意軟件,并記錄正在運行的字節碼的序列,這些字節碼將被分解成匯編代碼。它們使用三種雙操作碼組合:塊中的無序操作碼,塊中的有序但不一定是連續的操作碼,塊中的連續操作碼。這樣,它們的特性就更能抵抗死代碼的插入和操作的重新排序。他們使用訓練數據集中一個特征的頻率與一個類之間的關聯作為標準,并應用先驗[89]的一個變體來選擇頂級𝐿特征。盡管無序操作碼和塊內操作碼有序(但不一定是連續操作碼)提高了對死碼插入和操作重排序的抵抗力,但這些特性過于靈活,因此它們也會帶來更多的假陽性情況。
Royal等人。[42]是另一項旨在檢測隱藏且只能動態看到的代碼的工作。他們這樣做的方法是存儲一個可執行文件的靜態代碼,并檢查所執行的每個操作是否都在所存儲的靜態代碼區內。如果不是,那么它就是隱藏代碼的一部分。他們聲稱,如果主惡意軟件引擎都存在,隱藏代碼應該在隱藏代碼中,實驗結果也說明了隱藏代碼提高了ClamAV6和McAfee防病毒的準確性。7
Anderson等人。[21,41]使用從一個操作碼到另一個操作碼的轉換概率作為特征,這與他們如何使用字節序列特征類似。在他們的論文[21]中,他們只是通過在虛擬機中記錄可執行文件的執行來提取匯編代碼,這類似于Royal等人.[42]的使用方式。在他們的第二篇論文[21]中,他們還使用IDAPro來分解可執行文件,并且來自這兩個來源的匯編代碼被用作兩個獨立的特性集。此外,他們還根據其第二篇論文[21]中指令的功能將指令分成幾個粒度的類別,以減少指令替代的影響。在他們的初步實驗中,他們還發現,如果他們使用命令的指令,性能會更差。
Santos等人的[23]分解可執行文件以獲取其匯編代碼,然后使用加權操作碼n-gram頻率作為其特征之一。權重是所有操作碼的信息增益乘以n克的歸一化TF的乘積。
4、API/DLL系統調用。 可執行文件所使用的DLL文件和DLL文件的函數公開了它們所使用的系統服務。可執行調用由它所依賴的DLL文件的函數顯示。因此,可以推斷出它可能打算做什么行為或它將能夠做什么。
Schultz等人[12]通過使用的可執行文件提取DLL文件、DLL文件中的函數以及每個DLL的函數數從元數據中提取DLL文件,以便了解資源如何影響可執行文件的行為以及每個DLL的使用程度。前兩個作為二進制特征,第三個是實值特征。
Bayer等人[40]和Santos等人[23]使用模擬器動態提取對WindowsAPI函數的調用。然后,他們使用這些API函數在執行期間獲取可執行文件的操作,包括I/O活動、注冊表修改活動、進程創建/終止活動、可執行文件的網絡連接活動、自我保護行為、系統信息竊取、執行導致的錯誤以及與Windows服務管理器的交互。
Fredrikson等人[43]也使用一個模擬器來監控系統調用。然后,它們利用系統調用與其參數之間的關系形成一個依賴圖,其中節點是系統調用,邊連接共享某些參數的系統調用。它們將一個行為定義為它的一個子圖,可以用來區分惡意軟件和好軟件的行為將被挖掘并用于檢測惡意軟件。
安德森等人[41]、Huang和Stokes[26]將系統調用分組為高級類別,其中每個類別表示功能相似的系統調用組,如在屏幕上繪制或寫入文件。安德森等人,[41]然后將系統調用組的跟蹤提供給一個馬爾可夫鏈,以便他們使用系統調用的轉移概率作為特征。Huang和Stokes[26]使用這些高級API調用事件作為二進制特性。
Islam等人[22]和Dahl等人[24]通過在虛擬機中運行一個可執行文件來提取窗口API函數調用及其參數。Islam等人[22]將視窗API函數和參數視為單獨的實體,并將每個實體的出現頻率作為其特征。Dahl等人。[24]使用單個系統API調用、一個輸入參數和由三個連續的API函數調用組成的API三克的組合,作為二進制特征,隨后使用互信息進行選擇。
Kolosnjaji[27]等人使用動態惡意軟件分析系統布谷鳥沙箱來提取由一個可執行文件調用的Windows系統調用的序列。他們使用它們的單熱表示,并將系統調用的順序提供給連續的深度學習模型。
與程序集代碼類似,WindowsAPI調用序列也可以被混淆。例如,惡意軟件作者可以使一個可執行文件調用一些無關的API調用,并淹沒他們使用的API調用來實現他們的目的。因此,這個特性在大多數情況下都是不可靠的。
5、控制流程圖 。 控制流圖是表示程序流程的有向圖,其中節點是指令,而兩個節點之間的邊表示兩個指令執行順序的順序。圖中的一個頂點是一個基本的塊,在其中間沒有跳轉或分支指令。一個有向邊表示控制流中的跳躍。在一些論文[15,41]中,控制流圖被用作檢測惡意軟件的特征或簽名。
Cesare和Xiang[15]表示,類似的惡意軟件通常具有類似的高級結構化控制流。他們發現壓縮和加密的數據具有相對較高的熵,所以他們首先使用字節序列的熵來檢測一個可執行文件是否被加殼。如果是這樣,他們將使用一個應用程序級模擬器來提取隱藏的代碼。他們仍然使用字節序列的熵來檢測隱藏代碼提取的完成情況。然后使用推測性分解[90]對二進制文件的內存映像進行分解。最后,他們使用結構化過程從過程的控制流圖中恢復高級結構化控制流,并使用字符串表示它們。表示控制流圖的字符串都被保存為簽名。圖2顯示了控制流圖和簽名字符串之間關系示例。
Anderson等人[41]還發現,多態病毒在改變其控制流圖以避免檢測的同時,構建語義相似的版本并不容易。因此,他們使用控制流圖作為特征。更具體地說,它們使用控制流圖中每個k-graphlet(k個節點的子圖)的出現頻率來表示控制流圖。
為了對抗使用控制流圖的檢測,惡意軟件作者可以使用控制流扁平化和虛假的控制流模糊技術,在不影響功能的情況下改變控制流,從而損害控制流圖特性的有效性。
6、函數。一些論文(例如,Islam等人[22]和Chen等[14])使用函數級特征進行惡意軟件分類。
特別是,Islam等人[22]發現函數長度它包括區分惡意軟件家族的統計有用信息。在獲得每個可執行文件的匯編代碼后,他們通過測量代碼的字節數來計算它們的長度,并使用每個函數長度的出現頻率作為一個特征。然而,顯然,函數長度是對模糊最不魯棒的特性。函數長度可以通過插入死代碼來任意增加,或者通過將它們分割為多個函數來減少。
應該注意的是,兩個語義上彼此相似的函數被認為是彼此的克隆。為此,Chen等人[14]假設屬于同一惡意軟件家族的一些文件共享一些使用克隆關系連接的功能。因此,它們將函數聚類到組中,其中任意兩個函數都可以使用克隆關系直接或間接地連接起來,并從每個組中選擇一個函數作為范例作為簽名。他們使用NiCad[93]來檢測這兩個功能是否相互克隆。然而,使用一個函數來表示一組函數是有問題的。由于相同的函數代代,最新版本看起來可能與原始版本完全不同。如果選擇舊版本作為范例,克隆檢測器可能無法識別出一些未知的新一代它。雖然他們的系統可以在安卓APK文件上工作,但該方法可以直接應用于可執行惡意軟件的分類。
7、其他文件信息。 一些雜項文件屬性可以幫助工程師區分惡意軟件和固軟件,因為它們的平均值或大多數值在兩組之間存在顯著差異。這樣,這些屬性也會被用作特性。它們是文件大小[40,41],退出代碼[40],時間消耗[40],熵[41,94],打包或不打包[41],靜態/動態指令的數量[41],以及控制流圖[41]中的頂點/邊的數量。這些特性可能很有用,但顯然信息量不夠豐富。
8、結論性的評論。 使用上述所有特性的有效性可能會以某種方式降低,或者它們的信息不足。如此多的論文都使用了多種特性。直覺是,任何單一的特征源都可以被混淆以逃避檢測,但在不妨礙[22,41]功能的情況下同時混淆所有特征是極其困難的。
3.2 Malware 分類算法
在上一節中介紹的提取的特征被輸入惡意軟件檢測/分類系統。它們可以分為基于簽名的方法和基于人工智能的方法。
3.2.1.基于簽名的方法
基于簽名的檢測是在大多數抗病毒引擎中使用的最復雜的方法。這些簽名是由人類惡意軟件防御者通過檢查收集到的惡意軟件樣本而創建的。
更具體地說,防病毒引擎通過檢查要分析的文件是否包含惡意軟件簽名來檢測或分類惡意軟件。惡意軟件的簽名可以采用多種格式,包括文件名、文本字符串或字節代碼[12,13]的正則表達式。簽名通常也是對整個文件的哈希關系。應該注意的是,基于簽名的技術只能檢測來自已知的惡意軟件。因此,攻擊者可以利用這些技術,通過使用打包、混淆、多態性和變質性等反分析技術來隱藏惡意軟件的惡意行為來利用這些技術(第6節提供了關于這些技術的更多細節)。因此,該代碼看起來與原始版本非常不同。基于簽名的方法的主要缺點是精度高,但查全率低,二是勞動密集型的方法。
一些工作人員[14–16]通過提出自動簽名生成技術來解決手工簽名制作的問題。簽名的內容可以是視窗系統調用組合、控制流程圖和函數。
3.2.2.基于人工智能的方法
本節討論了基于人工智能的惡意軟件分類方法。這些方法可以分為傳統的機器學習模型、深度學習模型、關聯挖掘、圖挖掘和概念分析,以及簽名創建和搜索方法。現有的基于人工智能的方法也可以根據所使用的學習方法進行分類如下:有監督、無監督或半監督。
在監督惡意軟件分類模型[21-25、46、50、54、55、57-65、67、69、71、72、74、76、80-82、85、95-99],分類算法在標記的數據集上學習,使算法能夠在訓練數據上評估其準確性。相比之下,一個無監督的惡意軟件分類模型[47、49、53、62、69、75、83、84、100-102]提供了未標記的數據,算法試圖通過在沒有指導的情況下提取模式來理解這些數據。半監督的惡意軟件分類模型[68,75,78,103]結合了已標記和未標記的數據。
傳統的機器學習模型。被調查論文使用的最流行的傳統機器學習模型是樸素貝葉斯分類器(NBC) [50,58,60,63–65,81]、基于規則的分類器[46,59,64,81,95,96]、決策樹(DT) [22,23,50,55,58,60,62,65,72,74,80,82,96]、k -最近鄰(K-NN) [22,50,60,62,71,72,96,97]、貝葉斯網絡[23,72,85]、神經網絡(NN) [24,25]、隨機森林(RF)[22,54,58,60,63,67,76,80,98,99]、隱馬爾可夫模型(HMM)[9, 104–106]和支持向量機(SVM)[21–23,50,54,57,58,60–63,65,69, 71,72,76,81, 96]。那些使用傳統機器學習模型的論文通常會嘗試多種機器學習模型。
下面,我們將簡要介紹上述的機器學習模型。
樸素貝葉斯分類器(NBC) 。 一個NBC[107]使用貝葉斯定理來確定屬于一個類的樣本的條件概率,其輸入特征可以用下式形式描述:
其中,𝑥是一個樣本,𝐶𝑖是該樣本屬于𝑖類的概率。它是基于樸素貝葉斯條件獨立的假設,即對于它所屬于的類,所有的特征都是相互獨立的:
其中,𝑥𝑗是𝑥的一個特性。雖然這個假設不成立,但預測結果在許多情況下都是好的,而且結果是可以解釋的,這意味著每個特征的貢獻有多少是可見的。
決策樹(DT) 。DT分類器[108]使用樹狀結構來表示分類過程。DT的內部節點測試特征值,邊緣對應于變量值的選擇。葉節點代表屬于其中的最后一類樣本。樹狀結構是基于信息增益率和基尼指數等當前選擇條件下的每個特征的信息量來構建的。一個DT也是一個可解釋的分類器,一個DT可以被翻譯成if-else-then規則集。
K-最近鄰(KNN)。 KNN[109]是一個基于實例的分類器。該模型用一些距離度量(如歐幾里得、余弦)找到給定樣本的K個最近鄰,并預測它是k個最近鄰類的(加權)多數投票。
支持向量機(SVM) 。 SVM[110]是一種二值分類器,它計算一個超平面,將樣本從邊界最大的兩個類中分離出來。SVM的一個重要特征是,它可以利用核技巧將樣本從原始特征空間映射到高維(甚至無限)特征空間,以進行非線性分類。
貝葉斯網絡(BN)。 BN[111]是一種概率圖形模型,它將變量表示為頂點,將依賴關系表示為有向邊。該圖用于推斷任何變量的概率。
基于規則的分類器。 基于規則的分類[112]是指允許我們使用IF-THEN規則進行預測的任何分類方法。基于規則的分類的一個例子是開膛手[113],它用于建立一組規則來對樣本進行分類,同時最小化錯誤分類的訓練樣本數量的誤差。
神經網絡(NN)。神經網絡[114]是一種受生物啟發的編程范式,它允許計算機從觀測數據中學習。它由一個功能網絡(即參數)組成,它使計算機能夠通過分析新數據來學習,并對自身進行微調。
隨機森林(RF)。射頻分類器[115]從訓練集的子集(隨機選擇)構建一組DTs。然后從樹中聚合投票,以決定測試樣本的最后一個類別。
深度學習模型。 深度學習模型允許我們自動抽象和提取健壯和有用的特征,以實現高效和可靠的惡意軟件分類。這可以使用多層抽象來學習數據[116]的“好”表示。深度學習模型的一個例子是自動編碼器[117],堆疊去噪自動編碼器[116],受限玻爾茲曼機(RBM)[118]。
Dahl等人[24]將他們的179,000個二進制特征應用于深度學習模型。第一層是一個隨機投影層,它將輸入特征映射到一個更低的維空間(4000維)。隨機投影層與正常全連接層之間的差值是投影矩陣的權重不更新。它的條目按照-1、0、1的獨立相同分布進行抽樣。最重要的是,他們應用了1到3個完全連接的層與s型激活函數和一個136路的softmax層作為輸出。他們還嘗試使用高斯-伯努利限制性玻爾茲曼機(RBM)來對隱藏層進行預訓練。不加預訓練的1-隱層模型的效果最好,測試錯誤率為9.53%。他們還發現,隨機投影比主成分分析(PCA)表現得更好。
Saxe和Berlin[25]提出了一個由四個全連接層組成的深度前饋神經網絡,其中前三層的尺寸為1024,然后是一個密集的層來得到輸出。他們將輟學率應用到前三層。前兩層的激活函數為參數整正線性單位(PReLU),在不損失性能的情況下提高收斂速度,第三層的激活函數為s型。他們還使用貝葉斯校準來計算一個可執行文件是惡意軟件的無偏概率。在一個包含431,926個樣本的數據集上,他們獲得了95%的檢出率和0.1%的假陽性率。
Huang和Stokes[26]提出了一種用于多任務訓練的神經網絡。其中一個任務是進行惡意軟件檢測,以預測一個未知的軟件是惡意的還是良性的,另一個任務是預測它是否屬于98個重要的惡意軟件家族之一。Huang和Stokes[26]還使用隨機投影層將維數從50000降到4000,然后他們將4000維數中的每一個歸一化為零均值和單位方差。然后,他們使用4個隱藏層與退出和RELU激活。在它之上是兩個分類任務的兩個單層。最終的損失函數是每個單獨的損失函數的加權和。實驗結果表明,在大多數實驗設置下,多任務學習只會提高惡意軟件的檢測性能,而損害了惡意軟件分類的性能。其中,惡意軟件檢測的最佳結果是0.3577%的測試錯誤,而惡意軟件分類的最佳結果是2.935%的測試錯誤。
Kolosnjaji等人[27]提出了一個卷積神經網絡(CNN)和長短期記憶(LSTM)網絡的組合,使用動態提取的系統調用序列來預測一個可執行文件的家族。它們首先使用兩個卷積層來捕獲連續的API調用之間的相關性,然后應用最大池化來降低維數。輸出序列被輸入到一個LSTM層,以建模API調用的順序依賴關系。然后使用平均池化層從LSTM輸出中提取重要的特征。他們還使用Dropout來防止過擬合和一個軟max層來輸出每個類的概率。他們提出的深度學習模型顯著優于前饋神經網絡、CNN、SVM和隱馬爾可夫模型,在精度上達到85.6%,在召回率上達到89.4%。他們的模型的優點是它可以充分利用系統調用的順序,如果系統調用序列被混淆了,這也可能是一個缺點。他們的模型的一個問題是,他們使用平均池而不是最大池來提取由LSTM產生的最重要的特征是不合理的。
關聯分類器 。 關聯分類器依賴于關聯規則,關聯規則可以用于區分兩個類之間的樣本來執行分類。這是關聯規則挖掘的一種特殊情況,其中只有一個樣本的類可以是結果(a.k.a.一個規則的右邊)。Ye等人[16]提出使用層次關聯分類器(HAC)基于API調用對可執行文件進行分類。關于創建一個關聯分類器,有三種技術:(1)采用fp增長算法找到候選關聯規則(例如,API調用的組合)(2)修剪候選規則基于𝜒2,數據覆蓋,悲觀誤差估計,重要性w.r.t其祖先(3)重組規則:第一排名規則的信心是100的信心支持大小前提(CSA),然后由𝜒2測量剩下的規則。
使用這三種技術,他們創建了一個2級關聯分類器,以檢測由基于簽名的殺毒引擎標記的灰色列表中的惡意軟件。第一級關聯分類器的目的是提高惡意軟件的召回率。它只保留100%置信度的商譽規則和置信度大于預定義的閾值;然后使用規則剪枝技術減少生成的規則并創建分類器;最后使用“最佳第一規則”技術從灰列表中尋找樣本。將被第一關聯分類器標記為惡意軟件的樣本輸入到第二級關聯分類器中,以優化精度。它的工作步驟是:選擇那些對惡意軟件的預測規則有100%信心的樣本,標記為“自信”惡意軟件;將剩余的少數類文件按照預測規則的𝜒2值按降序排序;從剩下的排名列表中選擇第一個k個文件,并將它們標記為“候選”惡意軟件;將其余的文件標記為“深灰色”文件。實驗結果表明,該HAC是有效的。此外,HAC也是一個可解釋的分類器,它可以很容易地表示為簡單的if-then規則。
圖形挖掘和概念分析。 Fredrikson等人[43]提取行為(系統調用及其參數的依賴圖),可以用結構性跳躍挖掘[119]來區分惡意軟件和善意軟件。然后,他們使用這些行為來形成有區別的規范。規范是描述集合的一個或多個子集的一組行為和特征函數。如果軟件匹配至少一個特征子集中的所有行為,那么它就匹配規范。如果一個規范與惡意軟件匹配,但不匹配良性軟件,那么它是完全有區別的。他們使用形式概念分析[120]和模擬退火算法[121]來尋找一個近似的最優規范,該規范的真陽性大于閾值,在所有大于真陽性率的規范中假陽性最低。在測試期間,如果一個程序匹配一個規范,它將被歸類為惡意軟件。所創建的規范可用于檢測未看到的惡意軟件,在961個樣本的數據集上有86%的真陽性率和0個假陽性。
簽名搜索方法。 Cesare和Xiang[15]首先將一個未知的可執行文件中的每個過程的控制流圖轉換為字符串,就像它們創建簽名一樣。每個過程都使用其字符串的長度來分配一個權重:
然后,他們使用BK樹來檢索簽名數據庫中的字符串,這些字符串表示目標文件過程的字符串小于閾值。對于一個特定的惡意軟件,一旦找到一個匹配的圖,這個圖將被忽略,以便在輸入二進制文件中的剩余圖中進行后續搜索。如果一個圖在一個特定的惡意軟件中有多個匹配,并且不確定應該選擇哪個過程作為匹配,則采用貪婪解。選擇加權最多的圖。對于每個具有匹配簽名的惡意軟件,這些簽名的相似度比率:
w是累積起來與過程的權重成比例。最終未知的可執行文件之間的相似性和惡意軟件的數據庫是兩個不對稱的相似性:一個相似性識別多少輸入二進制大約在數據庫惡意軟件,和相似性顯示多少數據庫惡意軟件大約在輸入二進制。如果被檢查的程序與數據庫中的任何惡意軟件的程序相似性等于或超過0.6的閾值,那么它就被認為是一個變體。實驗結果表明,該方法具有86%的檢出率,0假陽性,優于基于商業簽名的抗病毒(AV)的55,基于行為的AV的假陽性率為62-64。因為他們使用對稱相似度作為兩個不對稱相似度的乘積來計算,所以它不能處理不對稱情況。例如,如果一個非常大的未知可執行文件包含了數據庫中惡意軟件樣本的整個程序,但該惡意程序只占其全部內容的1%,那么相似性仍然很小,因此不能預測它是惡意軟件。
Chen等人[14]使用NiCad[93]檢測APK文件是否包含任何作為代表惡意軟件家族簽名的范例函數的克隆函數。如果找到匹配項,則預計該文件將為該惡意軟件家族的一個實例。他們在一個包含來自19個惡意軟件家族的1170個APK文件的數據集上達到了96.88%的準確率。
4、成分分析技術的分類法
本節將介紹惡意軟件組合分析技術的分類法。我們確定了兩個主要的維度,沿著它,被調查的論文可以方便地組織起來。第一個顯示了用于成分分析的步驟。第二個維度確定了分析的目標(即策略)。圖3顯示了所建議的分類法的圖形表示。
4.1 步驟
成分分析允許逆向工程師分析惡意軟件樣本的組成,以了解它們的功能和行為。這反過來又讓工程師可以識別惡意軟件樣本和攻擊者的意圖。此外,它還允許反向工程師根據嚴重程度對惡意軟件進行排序,并允許他們有效地對其資源進行分類。
基本上,成分分析主要有三個主要步驟:拆卸、表示和分類。
4.1.1 拆解
大多數軟件程序是通過編譯的可執行文件交付給用戶的,而不是源代碼。反匯編器使逆向工程師分析沒有源代碼的軟件程序成為可能。從技術上講,解匯編器是一個將機器語言轉換或翻譯成匯編語言的過程。“反匯編程序”的逆操作是“匯編程序”。有許多工具用于此目的(例如,IDAPr8)。
拆卸方法可以分為以下兩類:靜態技術和動態技術。第一類方法對二進制組件進行統計分析,解析二進制文件中的操作碼。第二類方法監控程序的執行軌跡,以識別指令并恢復二進制版本。
動態方法和靜態方法都有優缺點。靜態分析考慮了整個程序,而動態分析只能關注已執行的指令。因此,在適應動態分析時,不容易確保整個可執行文件被訪問。但是,動態分析保證了輸出(即拆卸輸出)只包含實際的指令。
一般來說,靜態分析技術有兩種方法。第一種方法被稱為線性掃描[122]。這種方法從二進制的第一個字節開始,然后開始解碼一條指令。使用線性掃描解匯編器的主要缺點是在程序中嵌入的數據導致的錯誤概率高。第二種方法稱為遞歸遍歷[123],它允許工程師通過遵循程序[15,41]的控制流(CF)來修復“嵌入式數據”的問題。然而,這種方法的問題是,它可能無法成功地分析代碼的各個部分(即函數)。這是由于控制傳輸指令(例如,跳轉)不能靜態地確定。這個問題可以通過使用線性掃描算法來分析代碼[124]中的不可達區域來解決。
4.1.2 表示學習
任何惡意軟件分類和組合分析技術的成功通常取決于數據表示。雖然特定的領域知識可以幫助工程師為可執行文件設計表示和特征向量,但手工特性工程過程沒有考慮特性之間的關系,并定義那些能夠區分可執行文件的獨特模式。
實際上,表示學習是一套方法和/或技術,使系統能夠從原始數據(即匯編代碼)中自動提取惡意軟件分類所需的表示。這個過程取代了手動特性工程,使惡意軟件分類系統能夠學習有用的特性,并集成它們來執行分類。
使用特征學習背后的動機是,組合分析方法通常需要對混淆和包裝等反分析技術具有穩健的輸入。
深度學習方法(例如,堆疊自動編碼器[125],堆疊去噪自動編碼器[116],深度信念網絡[126],……)已知并被認為是提取魯棒特征的(最佳)方法,用于為大規模異構環境構建魯棒的惡意軟件和相似性分析工具。
4.1.3 分類
在分解可執行樣本后,使用裝配代碼函數提供一個表示學習模塊,以獲得魯棒的特征和“良好的”數據表示。然后將函數表示輸入任何分類算法,如樸素貝葉斯分類器(NBC)[64]、基于規則的分類器[64]、決策樹(DT)[65]、k最近鄰(K-NN)[71]、貝葉斯網絡[85]、神經網絡(NN)[24]、隨機森林(RF)[67]、隱馬爾可夫模型(HMM)[127]和支持向量機(SVM)[65]。該分類方法使我們能夠識別功能之間的關系,并考慮到以下三種分析策略:變量分析、相似性分析和家族分析。
變量分析(VA)。VA[46,47,59,79,80,83]使工程師能夠意識到,惡意軟件示例實際上是存儲庫中已知惡意軟件的變體。這一策略讓我們了解惡意軟件已經發展到一段時間的程度。
相似性分析(SA)。 SA[48,49,53,56,128]允許工程師識別惡意軟件示例的哪些部分(即功能)與存儲庫中的已知功能相似。這一策略允許我們只關注新的部分,防止不必要的調查。
家族分析(FA)。FA [22,24,51,55,60–62,70,71,76,97,101,102].允許工程師將未定義的惡意軟件與已定義的族關聯起來。這種策略是在假設來自同一家族的惡意軟件在功能上是相似的。識別它們的困難在于,一些惡意軟件的作者使用反分析技術(例如,混淆、包裝、多態性和變質性)來掩蓋這種相似性。
5、被調查論文的描述
在本節中,我們將描述每一篇被回顧的論文。表1提供了關于每篇論文所使用的算法和特性的信息,并強調了主要的限制。該表還顯示了每個工作的可伸縮性,包括它在存儲庫存在增量更新時工作的能力。最后一列顯示了所提出的分類技術是否對反分析技術具有魯棒性。從表1中可以看出,大多數工作使用一種以上的分類算法來檢測惡意軟件和分類,以保證更準確的結果。在表2中,我們比較了不同的w.r.t方法的主要目標:惡意軟件檢測和相似性分析,家族分析和變異分析。
6、挑戰與問題
基于第5節中解釋的描述,我們在這里討論被調查文章的挑戰和/或問題。
6.1.惡意軟件逃避技術
在本節中,我們將介紹惡意軟件作者用于逃避檢測的常用技術。
6.1.1 混淆
混淆這個術語主要指的是用于創建原始代碼的變體而不影響其功能的技術。混淆的目的通常是隱藏原始代碼的真實邏輯,或逃避基于簽名的檢測器或功能克隆檢測器。幾種常用的混淆技術如下:
- 死代碼插入[13]:插入無用的指令(例如,nop)或插入一些只影響未使用的變量的指令。
- 代碼轉換[13]:更改獨立指令的順序。
- 寄存器重新分配[13]:交換寄存器的使用來存儲特定活動范圍內的數據/地址。
- 指令替換[13]:用等效的指令替換一個指令。
- 控制流平坦[134]:(1)打破函數的身體基本塊(2)把所有基本塊最初在不同的嵌套級別彼此(3)封裝基本塊的選擇性結構(C++開關語句)(4)封裝在一個循環的選擇。
- 虛假控制流[135]:對于一個基本塊,添加一個新的基本塊,其中包含一個不透明的謂詞,然后對原始基本塊進行條件跳轉。
6.1.2 加殼
加殼是一種壓縮/加密可執行文件的技術,其中這些加殼的文件將在運行時被解壓縮/解密。這意味著靜態分析器無法看到真正的代碼,因為它不能運行可執行文件。包裝不僅用于惡意軟件,也用于保護善意軟件方案[15,41]。根據安德森等人[41]的統計,在他們的數據集中47.56%的惡意軟件被加殼, 19.59%的好軟件被加殼。
6.1.3 多態性
多態性也是一種基于加密和解密的技術。一個多態性惡意軟件包含兩部分:多態性引擎和執行惡意功能的真實程序。前者在復制時改變加密算法和密鑰,后者的代碼本身是固定的,但在運行時被前者以不同的方式加密。這樣,整個多態惡意軟件程序在每一代[136]上看起來都會有所不同。
6.1.4 變形
一個變形惡意軟件在復制時重新編程。因此,在每一代中,整個程序體都使用代碼混淆技術對[136]進行修改,而功能保持不變。變質惡意軟件被認為比多態惡意軟件更難編寫。
6.2.對抗性的攻擊和防御
由于最近的研究方向是自動化惡意軟件分析的過程使用機器學習技術,提出的解決方案應該對對抗性的例子,輸入由攻擊者設計欺騙機器學習模型,使它生成錯誤的決策(例如,使惡意軟件分析工具無法檢測惡意代碼)。最近有研究表明,包括深度神經網絡在內的機器學習模型很容易受到敵對例子的攻擊。攻擊者很容易創建“對抗性示例”的[137],通過簡單地延續部分輸入來欺騙機器學習模型。
6.2.1 對抗性攻擊
對抗性樣本是由對輸入變量擾動最小的正常樣本制作的,以在不破壞原始樣本功能的情況下混淆分類器。擾動應該基于損失函數相對于分類器的輸入變量的導數,因為導數顯示了輸入的變化方向,這是最有效的改變輸出。因此,需要一個可微的分類器來創建對抗性的樣本,而深度學習模型只是可微的和有效的分類器。研究表明,為了欺騙一個模型而產生的對抗性樣本可以欺騙一個完全不同的模型[138,139]。因此,隨著深度學習模型被提出為檢測領域的惡意軟件,惡意軟件作者有更好的機會來制作敵對的例子,以逃避任何機器學習模型的檢測。
對制作一個被分類器𝑓錯誤分類的對抗性𝑥?的問題的正式描述是
其中‖?‖可以是任意范數,x是要被攝動的樣本。
Goodfellow等人[140]提出了一種快速梯度符號方法,通過將樣本𝑆的梯度符號與一定的系數相乘來控制擾動的尺度。[141]等人提出了一種正向導數方法,該方法利用其雅可比矩陣評估輸出對每個輸入分量的敏感性,然后基于雅可比矩陣構造對抗性顯著性映射,表明哪些輸入特征將包含在擾動中。
與干擾對抗性圖像樣本相比,干擾惡意軟件樣本有一些限制,因為惡意軟件的大多數功能是離散的,而不是真實值的,功能應該是完整的。因此,需要調整以前的實值特征干擾方法,一些二進制特征不能從“1”更改為“0”,因為“1”意味著該特征存在,并且這個方向的變化可能會破壞該功能。
Grosse等人[28]提出了一種制造對抗性安卓惡意軟件的技術。受[28,141]等人的啟發,[28,141]使用雅可比矩陣來檢查哪些特征最有可能導致將惡意程序預測為好軟件。它們只允許扭曲到不超過20個功能。所有的特性都是二進制特性。為了維護對抗性示例的功能,他們添加了兩個約束條件:(1)只調整與AndroidManifest.xml文件相關的清單特性。這個文件在任何安卓應用程序中都可用;(2),它應該通過添加一行代碼來完成。使用他們的方法,一個最先進的前饋神經網絡,在原始數據集上達到98%的準確率,被63%的對抗性惡意軟件樣本誤導。
6.2.2.對抗性防御
Grosse等人,[28]嘗試了兩種方法來抵御對抗性攻擊。第一種是應用蒸餾[141,142]來對抗對抗性樣品,在某些情況下成功地降低了38.5%的誤分類率。第二種是對抗性訓練[140],它包括在原始數據集上訓練模型,然后在幾個時期的對抗性樣本上只對其再次訓練模型。通過對抗性訓練,誤分類率從73%降低到67%。
Wang等人。[29]通過隨機取消輸入特征來抵御對抗性攻擊。它們的無效類似于退出,因為在這兩種機制中,一些輸入特征都被隨機設置為0。與退出的主要區別在于,模型在測試過程中沒有刪除任何輸入特征,但在無效過程中,一些特征在測試過程中仍然被隨機刪除。具體來說,對于任何數據集中的每個樣本,在高斯分布下采樣一個無效率,并對要下降的維數(特征)進行均勻采樣。從直覺上看,無效化使得它們的體系結構具有不確定性,因此攻擊者無法檢查特征的重要性,因此它們很難檢測和利用分類器的“盲點”。在他們的實驗中,這些特征是被調用的windows系統DLL文件,他們使用基于雅可比矩陣的顯著性映射為每個樣本選取多達10個特征來進行干擾。實驗結果表明,該方法能提高對敵對樣品的抗藥性,最佳抗藥性為64.86%,無效率為10%。然而,他們的方法的一個理論問題是當對抗樣本是跨模型[138,139]。因此,即使無效會損害對手使用該模型來制造對抗樣本的能力,但對手可以使用其他模型(即相同的神經網絡)來制造對抗樣本,這些樣本也可以逃避裝備無效的樣本。因此,沒有理論證據或證據表明無效是否可以提高對其他深度學習模型的對抗樣本的抵抗力。
6.3.效率和可伸縮性
一個實用的惡意軟件搜索引擎可以幫助安全工程師在進行分析時實時獲取惡意軟件的搜索結果。即時反饋為工程師提供正在調查[92]的給定惡意軟件的結構。應該注意的是,可伸縮性是一個重要的因素,因為數據庫中的惡意軟件的數量需要擴大到數百萬個。這也是生產一個可靠的惡意軟件搜索引擎的一個關鍵問題。對于實際應用程序,惡意軟件搜索引擎的效率和可伸縮性應該使用一個大型存儲庫進行評估,以衡量其準確性和延遲。
7、研究方向
上述貢獻有效地解決了文獻中一些有趣的研究空白。但仍有一些問題有待進一步研究和研究。在我們的文獻綜述的基礎上,我們可以進一步探索以下的研究途徑:
7.1.穩健的解決方案
雖然文獻綜述中討論的解決方案通過提取健壯和有用的特征,為可靠的惡意軟件檢測系統(MDS)鋪平了道路,但該解決方案仍然需要減少人際互動。因此,需要一個自動化系統來獲取數據,并自動提取穩健的特征。為此目的,深度學習技術可以成為替代現有特征提取方法的最佳候選方法。該解決方案可以使用不同的深度學習架構(例如,生成對抗網絡、堆疊去噪自動編碼器、受限玻爾茲曼機和變分自動編碼器)進行設計和實現,以實現自動抽象和提取魯棒特征,以顯著增強在異構、變化和噪聲環境下的檢測。
最近,Ding等人[143]提出了一個健壯且準確的組裝克隆搜索平臺Asm2Vec。該平臺使工程師能夠通過區分任何裝配函數,自動學習該函數的向量表示。此外,該平臺還允許工程師共同學習基于裝配代碼[143]的裝配功能的語義關系。這反過來使我們能夠構建有用和健壯的特性,以進行高效和可靠的裝配克隆搜索。提出的學習表示受段落向量分布式記憶模型(PVDM)模型的啟發,該模型用于學習文本段落[144]的向量化表示。PV-DM模型基本上是基于Word2Vec[145],它用于學習單詞的向量表示。這是通過使具有相似意義的單詞能夠映射到向量空間中的相似位置來實現的。例如,“好”和“偉大”彼此接近,而“偉大”和“日本”則更遙遠。由于單詞的分布式向量表示(DVR)的概念,學習單詞的向量表示成為可能,這是一種眾所周知的學習單詞向量的方法。特別是,DVS利用機器學習模型(通常是神經網絡)的力量,通過訓練機器學習模型來預測上下文中其他單詞的一個單詞(即目標單詞)。在預測目標詞的過程中,我們學習了目標詞的向量表示。
PV-DM模型的靈感來自于Word2Vec,它使用了學習單詞向量的想法。在PV-DM模型中,單詞向量和段落向量都被要求從段落[144]中采樣,對目標單詞的預測作出貢獻。這個過程(即,預測目標詞)允許我們學習段落的向量表示。Ding等人[143]利用PV-DM模型的能力來學習基于裝配代碼的裝配函數的向量表示。這是通過將匯編函數(即存儲庫函數)和函數的輸入標記(即指令)映射到唯一向量來實現的。然后訓練機器學習模型來預測給定函數及其上下文中的目標令牌。這個過程使我們能夠學習該函數的向量表示。
事實上,該解決方案不僅能夠容納已知惡意軟件的未知變體,還能夠容納未知惡意軟件的未知變體。這些解決方案也應該能夠對抗對抗性攻擊。雖然一些工作已經解決了這個問題,但這些解決方案大多基于對抗性訓練[146],而且還不夠成熟,不能結合提取魯棒和有用的特征來保護系統免受對抗性例子的影響。因此,該解決方案不僅應該對復雜和有噪聲的數據具有魯棒性,而且還應對對抗性的例子具有魯棒性。
7.2.協作解決方案
計算機和通信系統正變得越來越復雜,越來越容易受到入侵。網絡攻擊也變得越來越復雜,也更難分析和識別。事實上,由于對惡意軟件進化的認識有限,單個MDS識別所有入侵變得越來越困難。最近在入侵檢測和惡意軟件分析方面的工作[147-149]的實驗表明,與傳統的單一MDS相比,當MDS相互協作時,檢測精度可以顯著提高。在協作環境中,每個MDS可以咨詢其他可疑惡意軟件,以提高決策準確性。圖4為合作MDS的一個示例。
最近,Man和Huh[147]和Singh等人[148]設計了一個協作的MDS,它可以從不同的分布式檢測器交換惡意軟件檢測警報。此外,知識還可以在節點之間進行交換。此外,Dermott等人[150]提出了一個在云計算環境中的協作MDS。所提出的框架使用了登普斯特-謝弗證據[151]理論,以結合來自不同的惡意軟件檢測器的決策。接收到的決定將被聚合,以對一個可疑的惡意軟件作出最終決定。這種技術有一個缺點:它的基于集中化的架構,即使用一個可靠的第三方來組合反饋和協調MDS。
事實上,合作性MDS的設計應該考慮以下三個特性(挑戰):可信度、公平性和可持續性。我們所說的可信度,是指MDS應該能夠確保它將與受信任的各方(即MDS)進行咨詢、合作和分享知識。公平地說,我們的意思是,MDS應該能夠保證通過盡量減少與自私的MDS合作的機會來實現互利互利。這有助于給mds提供參與社區的動機。最后,通過可持續性,我們的意思是使MDS能夠主動地對可疑攻擊做出決定,無論是否從咨詢的MDS那里收到了完整的反饋。因此,所提出的解決方案將適用于實時環境,其中mds應該迅速采取關于可疑惡意軟件的決定。
7.3.可持續解決方案
大多數惡意軟件分析工具的威力在很大程度上是基于他們對惡意軟件和危險攻擊的大量知識。事實上,MDS使用的SVM等有監督的機器學習算法嚴重依賴于標記數據來學習如何有效地分類惡意行為和正常行為[152]。然而,獲取關于惡意行為的數據是具有挑戰性和危險的,特別是當我們被要求對生產系統發起真正的攻擊,并將用戶、應用程序和系統置于危險之中時。為了解決這個問題,我們可能需要有一種有效的方法來合成新的惡意軟件和增加我們的訓練數據,以改進基于機器學習的mds。
生成模型如生成對抗網絡(GANs)[153]可以用于生成合成惡意軟件,并通過增強惡意軟件訓練集,提高基于機器學習的MDS的檢測精度。我們鼓勵研究人員調查GANs的使用,它在產生高質量的新合成數據方面顯示出前所未有的能力,以產生惡意軟件變體。特別是,他們需要設計新的算法,以有效地訓練存儲庫中現有的惡意軟件,以便學習如何生成它們的變體。為此,研究人員需要收集大量由不同屬性(漏洞、目標用戶、目標主機等)組成的惡意軟件樣本。從公共領域來的。由于GANs只定義為實值的、連續的數據,而惡意軟件的設計是基于離散的令牌(字節)序列,因此,在原始的GANs理論上應該應用特殊的擴展。例如,我們可能需要將GANs與遞歸神經網絡(RNNs)集成來解決排序數據[154]的問題。此外,為了解決離散數據的問題,我們可能需要在每個分類變量中并行放置一個密集的層,然后激活Gumbel-Softmax和一個連接來得到最終的輸出[155]。
8、結論
在本文中,我們提供了一個全面的調查的出版物,有助于惡意軟件分類和成分分析。在我們的工作中,有四個主要的貢獻。首先,我們提出了一個基于三個維度的評審論文的組織方法:分析的目的(惡意軟件分類或成分分析),從樣本中獲得的特征的類型,以及用于操縱這些特征的算法。其次,我們對現有的惡意軟件分類和組合分析技術進行了比較分析,同時根據建議的分類法構建它們。第三,我們確定了與惡意軟件分類和成分分析相關的主要問題和挑戰。最后,我們確定了所討論的領域中的一些突發主題,如協作惡意軟件分析系統,并提供了關于如何改進解決方案以應對新挑戰的指導方針。
上述貢獻有效地解決了文獻中一些有趣的研究空白。但仍有一些問題有待進一步研究和研究。以下研究途徑可以進一步探索,以實現更好的準確性和有效的解決方案相比,最先進的。第一個途徑是設計合作的MDS來解決關于惡意軟件的知識有限和不完整的問題。通過協作,MDS可以咨詢其他可疑惡意軟件,提高決策的準確性。為此,我們確定了在合作的MDS中應該解決的三個挑戰:可信度、公平性和可持續性。其次,通過從樣本中自動提取魯棒特征,設計魯棒MDS。該解決方案不僅能夠適應已知惡意軟件的未知變體,還能夠適應未知惡意軟件的未知變體。此外,解決方案應該是對抗性攻擊。最后,通過使MDS能夠綜合生成新的惡意代碼和良性代碼,以提高基于機器學習的惡意軟件分類方法的準確性。
總結
以上是生活随笔為你收集整理的基于AI恶意软件分类技术(5)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 为什么很多毕业生逃不过被大型IT培训机构
- 下一篇: ABAC - 基于属性的访问控制 - 复