詳解基於機器學習的惡意程式碼檢測技術

摘要:由於機器學習演算法可以挖掘輸入特徵之間更深層次的聯繫,更加充分地利用惡意程式碼的資訊,因此基於機器學習的惡意程式碼檢測往往表現出較高的準確率,並且一定程度上可以對未知的惡意程式碼實現自動化的分析。

本文分享自華為雲社區《[當人工智慧遇上安全] 4.基於機器學習的惡意程式碼檢測技術詳解》,作者: eastmount。

隨著互聯網的繁榮,現階段的惡意程式碼也呈現出快速發展的趨勢,主要表現為變種數量多、傳播速度快、影響範圍廣。在這樣的形勢下,傳統的惡意程式碼檢測方法已經無法滿足人們對惡意程式碼檢測的要求。比如基於簽名特徵碼的惡意程式碼檢測,這種方法收集已知的惡意程式碼,以一種固定的方式生成特定的簽名,維護這樣的簽名庫,當有新的檢測任務時,通過在簽名庫中檢索匹配的方法進行檢測。暫且不說更新、維護簽名庫的過程需要耗費大量的人力物力,惡意程式碼編寫者僅僅通過混淆、壓縮、加殼等簡單的變種方式便可繞過這樣的檢測機制。

為了應對上面的問題,基於機器學習的惡意程式碼檢測方法一直是學界研究的熱點。由於機器學習演算法可以挖掘輸入特徵之間更深層次的聯繫,更加充分地利用惡意程式碼的資訊,因此基於機器學習的惡意程式碼檢測往往表現出較高的準確率,並且一定程度上可以對未知的惡意程式碼實現自動化的分析。下面讓我們開始進行系統的介紹吧~

一.機器學習概述與演算法舉例

1.機器學習概念

首先介紹下機器學習的基本概念,如下圖所示,往分類模型中輸入某個樣本特徵,分類模型輸出一個分類結果。這就是一個標準的機器學習檢測流程。機器學習技術主要研究的就是如何構建中間的分類模型,如何構造一組參數、構建一個分類方法,通過訓練得到模型與參數,讓它在部署後能夠預測一個正確的結果。

在這裡插入圖片描述

訓練是迭代樣本與標籤對的過程,如數學表達式 y=f(x) ,x表示輸入的樣本特徵向量,y表示標籤結果,使用(x,y)對f進行一個擬合的操作,不斷迭代減小 y』 和 y 的誤差,使得在下次遇到待測樣本x時輸出一致的結果。該過程也稱為學習的過程。

構造分類方法

構造分類方法是機器學習中比較重要的知識,如何設計一種分類模型將f(x)表達出來。比如:

  • 超平面(SVM)
    在二維坐標軸中,可以設計一條直線將空間內分布的散點區分開來,如下圖所示。
  • softmax
    另外一種方法是構造類別概率輸出(softmax),比如歸一化處理得到A+B=1,最後看A和B的概率,誰的概率大就屬於哪一類,該方法廣泛使用於神經網路的最後結果計算中。

在這裡插入圖片描述

 

2.機器學習演算法舉例

作者之前Python系列分享過非常多的機器學習演算法知識,也推薦大家去學習:機器學習系列文章(共48篇)

(1) 支援向量機(SVM)

首先存在很多訓練數據點,包括直線上方和下方兩個簇,支援向量機的方法是尋找這兩個簇分類的超平面。如何尋找這個超平面呢?支援向量機先求解每個簇離對面最近的點,然後通過擬合方法計算出兩邊簇的邊界,最終計算出中間的平面,其基本思路就是這樣,而這些點就是支援向量。支援向量機往往用來處理超高維的問題,也不一定是類似直線的平面,也可能是圓形的分類邊界。

在這裡插入圖片描述

(2) 神經網路(Neural Network)

神經網路基本網路結構如下圖所示,包括三個常用層:輸入層、隱藏層、輸出層。在神經網路中,最基本的單位是人工神經元,其基本原理是將輸入乘以一個權重,然後將結果相加進行激活,最後得到一個概率的輸出,其輸出結果誰大就預測為對應的結果。推薦作者的文章:神經網路和機器學習基礎入門分享

在這裡插入圖片描述

(3) 深度卷積神經網路

普通的神經網路通常只包括一個隱藏層,當超出之後可以稱為深度神經網路。現在比較流行的包括CNN、RNN、RCNN、GRU、LSTM、BiLSTM、Attention等等。其中,卷積神經網路常用於處理圖片,應用了卷積技術、池化技術,降低圖片維度得到很好的結果。

在這裡插入圖片描述

如上圖所示,將手寫數字「3」(32×32個像素)預測為最終的數字0-9的結果。模型首先使用了6個卷積核,對原始圖片進行固定的計算,如下5×5的影像卷積操作後變成了 3×3 的影像。其原理是將特徵提取的過程放至神經網路中訓練,從而得到比較好的分類結果。卷積之後進行了一個2×2的下取樣過程,將圖片進一步變小(14×14),接著降維處理,一般採用平均池化或最大池化實現,選定一個固定區域,求取該區域的平均值或最大值,然後將向量進行組合,得到一個全連接網路,最終完成分類任務。
參考作者前文:[Python人工智慧] 四.神經網路和深度學習入門知識

在這裡插入圖片描述

深度神經網路是深度學習中模型,它主要的一個特點是將特徵提取的過程放入到真箇訓練中,之前對於圖片問題是採用手工特徵,而CNN讓在訓練中得到最優的特徵提取。

在這裡插入圖片描述

 

3.特徵工程-特徵選取與設計

上面介紹了機器學習和深度學習方法,但是這些方法往往是該研究領域的學者所提出,而在惡意程式碼檢測中,往往我們的主要工作量是一些特徵的提取和特徵的設計,這裡面涉及一個特徵工程的概念。

特徵工程:選取特徵,設計特徵的過程。

例如,在路邊預測一個人是否是學生,假設我們不能去詢問,只能通過外表去預測他是否是一個學生,包括:年齡(低於15歲就是學生)、性別(不影響學生)、衣著(穿著活潑年輕的可能是學生,如果穿著西裝可能性就小)等等,然後根據這些特徵輸入機器學習模型,從而判斷是否是學生。

在這些特徵中,顯然有些特徵是非常重要的,比如年齡和衣著。數據和特徵決定了機器學習的上限,而模型和演算法只是逼近這個上限,所以如何選取特徵是機器學習的一個關鍵性因素。再比如淘寶的推薦系統,購買電腦推薦滑鼠、鍵盤等。

當然,上面僅僅是一個比較簡單的問題,當我們推廣到惡意程式碼檢測等複雜問題時,如果不了解這個領域,可能就會導致模型的結果不理想。

在這裡插入圖片描述

 
特徵設計——人臉識別

局部二值特徵(Local Binary Pattern),再舉一個人臉識別例子,深度學習出來之前,圖片分類都是使用一些特徵運算元提取特徵的。比如存在一個3×3的窗口,我們取閾值5,比5小的窗口置為0,其他的置為1,然後順時針轉換為一個8位的二進位數字,對應的十進位就是19。顯然,LBP特徵進行了一個降維的操作,左邊的圖片顯示了人臉識別不應該受光照影響,不同光照的圖片進行LBP特徵提取後,顯示結果都一樣。

在這裡插入圖片描述

該部分的最後,作者也推薦一些書籍供大家學習。

  • 《統計學習方法》李航,數學理論較多
  • 《機器學習》周志華,西瓜書,較通俗透徹
  • 《Deep Learning》Ian Goodfellow,花書,深度學習內容全面
  • 《精通特徵工程》結合惡意程式碼特徵學習,包括如何向量化

再看看我的桌面,這些都是作者最近看的一些安全、AI類書籍,希望也您喜歡~

在這裡插入圖片描述

 

二.基於機器學習方法的惡意程式碼檢測

1.惡意程式碼的靜態動態檢測

(1) 特徵種類

首先,特徵種類如果按照惡意程式碼是否在用戶環境或模擬環境中運行,可以劃分為靜態特徵和動態特徵。

  • 靜態特徵: 沒有真實運行的特徵
    – 位元組碼:二進位程式碼轉換成了位元組碼,比較原始的一種特徵,沒有進行任何處理
    – IAT表:PE結構中比較重要的部分,聲明了一些函數及所在位置,便於程式執行時導入,表和功能比較相關
    – Android許可權表:如果你的APP聲明了一些功能用不到的許可權,可能存在惡意目的,如手機資訊
    – 可列印字元:將二進位程式碼轉換為ASCII碼,進行相關統計
    – IDA反彙編跳轉塊:IDA工具調試時的跳轉塊,對其進行處理作為序列數據或圖數據

在這裡插入圖片描述

  • 動態特徵: 相當於靜態特徵更耗時,它要真正去執行程式碼
    – API調用關係:比較明顯的特徵,調用了哪些API,表述對應的功能
    – 控制流圖:軟體工程中比較常用,機器學習將其表示成向量,從而進行分類
    – 數據流圖:軟體工程中比較常用,機器學習將其表示成向量,從而進行分類

舉一個簡單的控制流圖(Control Flow Graph, CFG)示例。

if (x < y)
{
   y = 0;
   x = x + 1;
}
else
{
   x = y;
}

在這裡插入圖片描述

(2) 常見演算法

普通機器學習方法和深度學習方法的區別是,普通機器學習方法的參數比較少,相對計算量較小。

  • 普通機器學習方法(SVM支援向量機、RF隨機森林、NB樸素貝葉斯)
  • 深度神經網路(Deep Neural Network)
  • 卷積神經網路(Convolution Neural Network)
  • 長短時記憶網路(Long Short-Term Memory Network)
    針對序列模型進行建模,包含上下文依賴關係,比如「我 是 一名 大學生」中的「我」和「是」前後出現的條件概率更高。廣泛應用於文本分類、語音識別中,同樣適用於惡意程式碼檢測。
  • 圖卷積網路 (Graph Convolution Network)
    比較新興的方法,將卷積應用到圖領域,圖這種數據類型比較通用,非圖數據比較容易轉換成圖數據,CCF論文中也已經應用到惡意程式碼檢測中。。
 

2.靜態特徵設計舉例

首先分享一個靜態特徵的例子,該篇文章發表在2015年,是一篇CCF C類會議文章。

  • Saxe J,Berlin K. Deep neural network based malware detection using two dimensional binary program features[C] // 2015 10th International Conference on Malicious and Unwanted Software(MALWARE). IEEE, 2015: 11-20

在這裡插入圖片描述

文章的主要方法流程如下所示:

在這裡插入圖片描述

該模型包含三個步驟:

  • 特徵抽取
    使用了四種特徵
  • 特徵抽取輸入到深度神經網路
    包含兩層隱含層的深度神經網路
  • 分數校正

特徵抽取
特徵提取包括以下四種特徵:

在這裡插入圖片描述

  • 位元組-熵對統計特徵:統計滑動窗口的(位元組,熵)對個數
    在下圖中,假設白框是一個二進位文件,其中紅色框W是滑動窗口,二進位文件如果有100KB大小,每個滑動窗口是1024位元組,那麼滑動100次可以將整個二進位文件掃描完。如果對窗口內的數值進行計算,首先計算它的熵值,熵是資訊理論的概念(下圖中的E),它描述了一個數組的隨機性,熵越大其隨機性越大。在圖中,每一個滑動窗口都有固定的熵值,包含了1024位元組,標記為(Bi,Ewi),最後滑動得到100×1024的位元組熵對。

    在這裡插入圖片描述
    統計最後滑動得到100×1024的位元組熵對個數,得到如下圖所示的二維直方圖結果,橫坐標是熵值最小值到最大值的範圍,縱坐標是一個位元組轉換成10進位的範圍0-256,最終得到位元組熵對分布的範圍,再將16×16維的二維數組轉換成1×256維的特徵向量。
    在這裡插入圖片描述

  • PE頭IAT特徵:hashDLL文件名與函數名為[0-255)範圍
    第二種特徵是PE頭IAT特徵。它的計算工程是將PE頭的IAT表裡面的文件名和函數名hash到0到255範圍,如果某個文件出現某個函數,就將該位置為1,當然每位對應表示的函數是固定的,最終得到256數組。

  • 可列印字元:統計ASCII碼的個數特徵
    可列印字元和位元組熵對比較相似,這裡推薦大家閱讀原文。

  • PE元資訊:將PE資訊抽取出來組成256維數組,例如編譯時間戳
    PE元資訊是將PE資訊的數值型資訊抽取出來,組成256維數組,每一個數組的位置表示了一個固定的資訊種類,再資訊種類將對應的資訊填入到元素的位置,比如編譯時間戳。

總共有上述四種特徵,然後進行拼接得到4*256=1024維的數組,這個數組就代表一個樣本的特徵向量。假設有10000個樣本,就有對應10000個特徵向量。

在這裡插入圖片描述

得到特徵向量之後,就開始進行模型的訓練和測試,一般機器學習任務事先都有一個數據集,並且會分為訓練數據集和測試數據集,按照4比1或9比1的比例進行隨機劃分。訓練會將數據集和標籤對輸入得到惡意和非惡意的結果,再輸入測試集得到最終結果。

在這裡插入圖片描述

下面是衡量機器學習模型的性能指標,首先是一幅混淆矩陣的圖表,真實類別中1代表惡意樣本,0代表非惡意樣本,預測類別也包括1和0,然後結果分為:

  • TP:本身是惡意樣本,並且預測識別為惡意樣本
  • FP:本身是惡意樣本,然而預測識別為非惡意樣本,這是誤分類的情況
  • FN:本身是非惡意樣本,然而預測識別為惡意樣本,這是誤分類的情況
  • TN:本身是非惡意樣本,並且預測識別為非惡意樣本

然後是Accuracy(準確率)、Precision(查准率)、Recall(查全率)、F1等評價指標。

在這裡插入圖片描述

通常Accuracy是一個評價惡意程式碼分類的重要指標,但本文選擇的是AUC指標,為什麼呢?
假設我們模型的效果非常差,它會將所有本測試樣本標記為惡意樣本,這樣我有兩個數據集,一個樣本包括100個數據(99個惡意樣本、1個非惡意樣本),另一個樣本包括50個數據(50個惡意樣本、50個非惡意樣本),如果我單純的計算ACC,第一個樣本的結構是0.99,顯然不符合客觀的描述,不能用來評價性能高低的,並且這種情況是很容易產生的。所以論文中廣泛採用AUC指標。

在這裡插入圖片描述

AUC指標包括TPRate和FPRate,然後得到一個點,並計算曲線以下所包圍的面積即為AUC指標。其中,TPRate表示分類器識別出正樣本數量占所有正樣本數量的比值,FPRate表示負樣本數量站所有負樣本數量的比值。舉個例子,我們撒網打魚,一網下去,網中好魚的數量占池子中所有好魚的數量就是TPRate,而FPRate表示一網下去,壞魚的數量占整個池子中所有壞魚的數量比例,當然FPRate越小越好。最好的結果就是TPRate為1,而FPRate為0,此時全部分類預測正確。

在這裡插入圖片描述

該論文測試了六種特徵集合,其計算的TPR和AUC值如下所示。

在這裡插入圖片描述

 

3.經典的圖片特徵舉例

下面介紹另一種比較新興經典的方法,就是圖片特徵。但一些安全界的人士會認為這種特徵不太好,但其方法還是比較新穎的。

它的基本方法是按照每8位一個像素點將惡意軟體的二進位文件轉換為灰度圖片,圖片通常分為R、G、B通道,每個8位像素點表示2^8,最終每隔8位生成一個像素點從而轉換為如下圖所示的灰度圖片。圖片分別為Obfuscator_ACY家族、Lolipop家族、ramnit家族惡意軟體樣例,這些樣例由微軟kaggle比賽公布的數據生成。

這是因為對於某些惡意樣本作者來說,他只是使用方法簡單的修改特徵碼,從而每個家族的圖片比較相似,最終得到了較好的結果。

在這裡插入圖片描述

 

4.動態特徵設計舉例

接下來分享一個動態特徵的例子,該篇文章發表在2016年,文章的會議一般,但比較有代表性。

  • Kolosnjaji B,Zarras A,Webster G,et al. Deep learning for classification of malware system call sequences[C] // Australasian Joint Conference on Artificial Intelligence. Springer,Cham,2016:137-149.

下圖展示了該方法的整體流程圖。PE文件進入後,直接進入Cuckoo沙箱中,它是一個開源沙箱,在學術論文中提取動態特徵比較通用;接著進行進行預處理操作,將文本轉換成向量表示的形式,比如提取了200個動態特徵,可以使用200維向量表示,每個數組的位置表示對應API,再將所得到的序列輸入卷積神經網路LSTM進行分類,最終得到家族分類的結構。

  • Cuckoo沙箱
  • LSTM

在這裡插入圖片描述

在這裡插入圖片描述

下圖展示了實驗的結構,其指標是高於單純的神經網路和卷積網路的效果更好,這是一篇比較基礎的文章。

在這裡插入圖片描述

 

5.深度學習靜態檢測舉例

下面再看一個深度學習靜態檢測的文章。

  • Coull S E,Gardner C. Activation Analysis of Byte-Based Deep Neural Network for Malware Classification[C] // 2019 IEEE Security and Privacy Workshops(SPW). IEEE,2019:21-27.

這篇文章是火眼公司的兩名員工發布的,所使用的也是靜態檢測特徵,其流程如下所示。

  • 首先,原始的位元組碼特徵直接輸入一個Byte Embedding層(詞嵌入),對單個元素進行向量化處理,將位元組碼中的每個位元組表示成一個固定長度的向量,從而更好地將位元組標記在一個空間維度中。詞嵌入技術廣泛應用於自然語言處理領域,比如「女人」和「女王」關係比較緊密,這篇文章的目的也是想要在惡意程式碼中達到類似的效果。
  • 然後將矩陣輸入到卷積和池化層中,比如存在一個100K位元組的二進位文件,得到100102410矩陣輸入卷積神經網路中,最後通過全連接層完成惡意和非惡意的分類任務。

在這裡插入圖片描述

Fireeye使用了三個數據集進行訓練和測試,其訓練的模型分類效果結果如下表所示,部落格Small、Baseline、Baseline+Dropout模型,其網路結構是一樣的,其中Small表示使用小的數據集,Baseline表示使用大的數據集,Dropout表示對訓練好的神經網路中隨機丟棄一些神經元,從而抑制過擬合現象,也是比較常用的深度學習技術。

在這裡插入圖片描述

這篇文章的重點是對深度學習的解釋性,就是解釋深度學習是否能學習到惡意軟體的本質特性。下圖展示了不同特徵對於分類結果的影響,橫坐標是Offset偏移,通常用Offset記錄位元組,從0到右邊也對應文件大小,前面可能就是PE頭,中間有各種段。

它的橫縱坐標分別表示了某些特徵對於惡意性分類比較重要,還是非惡意性比較重要。如果它的校驗和(CheckSum)是0,就對惡意性分類比較重要,這表示深度學習並沒有學習到惡意軟體為什麼是惡意的,只是通過統計學去發現惡意軟體和非惡意軟體差別最大部分,以此進行數據建模。

深度學習進行惡意軟體檢測的問題:沒有學習到惡意和非惡意特徵,而是學習到區別的統計差異,而這種差異如果被黑客利用是可以被規避的。

在這裡插入圖片描述

 

6.優缺點

靜態特徵

  • 優點
    特徵提取速度快
    特徵種類豐富,可以組合多種特徵向量
  • 缺點
    易受加殼、加密、混淆干擾
    無法防範無文件攻擊,難以反映惡意軟體行為的惡意性

動態特徵

  • 優點
    提供惡意軟體的動作,調用API
    規避一些靜態的混淆對抗方法
  • 缺點
    反虛擬化,延時觸發等技術的對抗
    測試時間較長,單個樣本2-3分鐘(Cuckoo)

最後給出推薦資料:

 

7.靜態分析和動態分析對比

下面簡單總結靜態分析和動態分析與深度學習結合的知識,該部分內容源自文章:深度學習在惡意程式碼檢測 – mbgxbz,在此感謝作者,覺得非常棒,故引用至此!謝謝~

惡意程式碼的檢測本質上是一個分類問題,即把待檢測樣本區分成惡意或合法的程式。基於機器學習演算法的惡意程式碼檢測技術步驟大致可歸結為如下範式:

  • 採集大量的惡意程式碼樣本以及正常的程式樣本作為訓練樣本;
  • 對訓練樣本進行預處理,提取特徵;
  • 進一步選取用於訓練的數據特徵;
  • 選擇合適的機器學習演算法訓練分類模型;
  • 通過訓練後的分類模型對未知樣本進行檢測。

深度學習作為機器學習的一個分支,由於其可以實現自動化的特徵提取,近些年來在處理較大數據量的應用場景,如電腦視覺、語音識別、自然語言處理時可以取得優於傳統機器學習演算法的效果。隨著深度學習在影像處理等領域取得巨大的成功,許多人將深度學習的方法應用到惡意軟體檢測上來並取得了很好的成果。實際上就是用深度神經網路代替上面步驟中的人為的進一步特徵提取和傳統機器學習演算法。根據步驟中對訓練樣本進行預處理的方式,可以將檢測分為靜態分析與動態分析:

  • 靜態分析不運行待檢測程式碼,而是通過直接對程式(如反彙編後的程式碼)進行統計分析得到數據特徵
  • 動態分析則在虛擬機或沙箱中執行程式,獲取程式執行過程中所產生的數據(如行為特徵、網路特徵),進行檢測和判斷。

(1) 靜態分析

一般來說,在絕大部分情形下我們無法得到惡意程式的源程式碼。因此,常用的靜態特徵包括程式的二進位文件、從使用IDA Pro等工具進行反彙編得到的彙編程式碼中提取的彙編指令、函數調用等資訊,另外基於字元串和基於API調用序列的特徵也是比較常見的。文獻[i]提出一種對PE文件的惡意程式檢測方法,提取PE文件四個類型的特徵:位元組頻率、二元字元頻率、PE Import Table以及PE元數據特徵,採用包含兩個隱藏層的DNN作為分類模型,但是為了提取長度固定的輸入數據,他們丟棄了PE文件中的大部分資訊。文獻[ii]使用CNN作為分類器,通過API調用序列來檢測惡意軟體,其準確率達到99.4%,遠高於傳統的機器學習演算法。然而,當惡意程式碼存在混淆或加殼等情形時,對所選取的靜態特徵具有較大的影響,因此靜態分析技術本身具有一定的局限性。

(2) 動態分析

利用虛擬機或沙箱執行待測程式,監控並收集程式運行時顯現的行為特徵,並根據這些較為高級的特徵數據實現惡意程式碼的分類。一般來講,行為特徵主要包括以下幾個方面:文件的操作行為;註冊表鍵值的操作行為;動態鏈接庫的載入行為;進程訪問的操作行為;系統服務行為;網路訪問請求;API調用。文獻[iii]通過API調用序列記錄進程行為,使用RNN提取特徵向量,隨後將其轉化為特徵影像使用CNN進行進一步的特徵提取,提取其可能包含的局部特徵並進行分類。文獻[iv]提出了一個基於動態分析的2層架構的惡意軟體檢測系統:第1層是RNN,用於學習API事件的特徵表示;第2層是邏輯回歸分類器,對RNN學習的特徵進行分類,然而這種方法的誤報率較高。文獻[v]提出了用LSTM和GRU代替傳統RNN進行特徵的提取,並提出了使用CNN的字元級別的檢測方案。文獻[vi]提出在惡意軟體運行的初期對其進行惡意行為的預測,他們使用RNN進行PE文件檢測,根據惡意程式碼前4秒的運行行為,RNN對惡意軟體的預測準確率是91%,隨著觀察的運行時間的增長,RNN的預測準確率也隨之提高。可以看到,相對於靜態分析,動態分析的過程更加複雜耗時,相對而言採用了較高層次的特徵,因此可解釋性也較差。

在網路攻擊趨於精細化、惡意程式碼日新月異的今天,基於深度學習演算法的惡意程式碼檢測中越來越受到學術界和眾多安全廠商的關注。但這種檢測技術在現實應用中還有很多尚未解決的問題。例如上面提到的靜態分析與動態分析存在的不足,現在發展的主流方向是將靜態、動態分析技術進行結合,使用相同樣本的不同層面的特徵相對獨立地訓練多個分類器,然後進行集成,以彌補彼此的不足之處。

除此之外,深度學習演算法的可解釋性也是制約其發展的一個問題,當前的分類模型一般情況下作為黑盒被加以使用,其結果無法為安全人員進一步分析溯源提供指導。我們常說攻防是息息相關的,螺旋上升的狀態。既然存在基於深度學習的惡意程式碼檢測技術,那麼自然也有基於深度學習的或者是針對深度學習的惡意程式碼檢測繞過技術,這也是近年來研究的熱點問題,那麼如何提高模型的穩健性,防止這些訂製化的干擾項對我們的深度學習演算法產生不利的影響,對抗生成網路的提出或許可以給出答案。

 

三.機器學習演算法在工業界的應用

首先普及一個概念——NGAV。NGAV(Next-Gen AntiVirus)是下一代反病毒軟體簡稱,它是一些廠商提出來的新的病毒檢測概念,旨在用新技術彌補傳統惡意軟體檢測的短板。

  • 多家殺毒引擎廠商將機器學習視作NGAV的重要技術,包括McAfee[11], Vmware[9], CrowdStrike[10], Avast[6]
  • 越來越多的廠商開始關注機器學習技術,並發表相關的研究(卡巴斯基[7],火眼[8]),火眼還是用機器學習技術對APT進行分析(組織相似度溯源)

越來越多的安全廠商將機器學習視為反病毒軟體的一個關鍵技術,但需要注意,NGAV並不是一個清晰的定義,你沒法去界定一個反病毒軟體是上一代產品還是下一代產品。衡量反病毒軟體的性能只有對惡意軟體的檢測率、計算消耗、誤報率等,我們只是從現狀分析得到越來越多安全領域結合了機器學習。

作為安全從業人員或科研人員,機器學習技術也是我們必須要關注的一個技術。

在這裡插入圖片描述

機器學習演算法需要解決的問題如下:

  • 算力問題
    機器學習和深度學習演算法需要大量的算力,如果我們在本地部署還需要GPU的支援,這樣就帶來了一個硬體配置問題,所以如何減小模型的size及提升模型的檢測能力是一個關鍵性的問題。

  • 大規模的特徵數據
    特徵對於分類訓練非常關鍵,如何抽取這些數據特徵呢?

  • 訓練的模型是可解釋的
    這個問題可以說是機器學習演算法和深度學習演算法在反病毒軟體應用中最關鍵的一個問題,病毒的對抗是黑客與安全從業人員的對抗的前線,如果我們訓練的模型是不可解釋的,那麼一旦被黑客發現某些規則存在的弱點,他們就可以針對這些弱點設計免殺方法,從而繞過造成重大安全隱患。另一方面,如果機器學習演算法是不可解釋黑盒的,用戶他也是不可接受的,難以起到保護重要。

  • 誤報需要維持極度的低水平
    誤報是反病毒軟體用戶體驗的一個重要指標,傳統的特徵碼技術、主動防禦技術都具有誤報低的特性,而機器學習是一個預測技術,會存在一些誤報,如何避免這些誤報並且提高檢測的查全率也是重要的問題。

  • 演算法需要根據惡意軟體作者的變化快速適應新的檢測特徵
    這也是關鍵性問題,在機器學習模型應用中,惡意軟體是不斷變化的,而機器學習演算法部署到本地中,它的參數是不變的,所以在長時間的惡意演化中其模型或參數不再適用,其檢測結果會有影響。目前,雲沙箱、在線更新病毒庫特徵是一些解決方法。最後作者總結下機器學習演算法的優勢,具體如下:

(1) 傳統方法

  • 優點:速度快,消耗計算資源少
    只需要將特徵碼提取出來,上傳至雲端進行檢測;相對於機器學習大量的矩陣計算,其計算資源消耗少。
  • 缺點:容易繞過,對於未知惡意軟體檢出率低
    使用加殼、加密、混淆容易繞過,對於未知軟體不知道其特徵碼,只能通過啟發式方法、主動防禦濟寧檢測,相對於機器學習檢測率要低。

(2) 機器學習方法

  • 優點:能夠建立專家難以發現的規則與特徵
    發現的規則和特徵很可能是統計學特徵,而不是惡意和非惡意的特徵,所以這些特徵很容易被黑客進行規避,這既是優點也是缺點,雖然有缺陷,但也能發現惡意樣本的關聯和行為。
  • 缺點:資源消耗大,面臨漂移問題,需要不斷更新參數
 

四.總結

寫到這裡,這篇文章就介紹完畢,希望對您有所幫助,最後進行簡單的總結:

  • 機器學習方法與傳統方法不是取代與被取代的關係,而是相互補充,好的防禦系統往往是多種技術方法的組合。
  • 機器學習的檢測方法研究還不充分,安全領域的專有瓶頸與人工智慧研究的共有瓶頸均存在、
  • 機器學習演算法本身也面對一些攻擊方法的威脅,比如對應抗本。

對抗樣本指的是一個經過微小調整就可以讓機器學習演算法輸出錯誤結果的輸入樣本。在影像識別中,可以理解為原來被一個卷積神經網路(CNN)分類為一個類(比如「熊貓」)的圖片,經過非常細微甚至人眼無法察覺的改動後,突然被誤分成另一個類(比如「長臂猿」)。再比如無人駕駛的模型如果被攻擊,Stop標誌可能被汽車識別為直行、轉彎。

在這裡插入圖片描述
在這裡插入圖片描述

參考文獻:

  • [1] Saxe J, Berlin K. Deep neural network based malware detection using two dimensional binary program features[C]//2015 10th International Conference on Malicious and Unwanted Software (MALWARE). IEEE, 2015: 11-20.
  • [2] //www.kaggle.com/c/malware-classification
  • [3] //www.fireeye.com/blog/threat-research/2018/12/what-are-deep-neural-networks-learning-about-malware.html
  • [4]Kolosnjaji B, Zarras A, Webster G, et al. Deep learning for classification of malware system call sequences[C]//Australasian Joint Conference on Artificial Intelligence. Springer, Cham, 2016: 137-149.
  • [5] Wüchner T, Cisłak A, Ochoa M, et al. Leveraging compression-based graph mining for behavior-based malware detection[J]. IEEE Transactions on Dependable and Secure Computing, 2017, 16(1): 99-112.
  • [6]//www.avast.com/technology/malware-detection-and-blocking
  • [7] //media.kaspersky.com/en/enterprise-security/Kaspersky-Lab-Whitepaper-Machine-Learning.pdf
  • [8] //www.fireeye.com/blog/threat-research/2019/03/clustering-and-associating-attacker-activity-at-scale.html
  • [9] //www.carbonblack.com/resources/definitions/what-is-next-generation-antivirus/
  • [10] //www.crowdstrike.com/epp-101/next-generation-antivirus-ngav/
  • [11] //www.mcafee.com/enterprise/en-us/security-awareness/endpoint/what-is-next-gen-endpoint-protection.html
  • [12] 重點推薦://mooc.study.163.com/learn/1000003014?share=2&shareId=1000001005
  • [13] 重點推薦: 《軟體安全之惡意程式碼機理與防護》WHU
  • [14] 師兄的分享及作者學習和實踐經驗

其他論文:

  • [i] Saxe, J., & Berlin, K. (2015, October). Deep neural network-based malware detection using two-dimensional binary program features. In 2015 10th International Conference on Malicious and Unwanted Software (MALWARE) (pp. 11-20). IEEE.
  • [ii] Nix, R., & Zhang, J. (2017, May). Classification of Android apps and malware using deep neural networks. In 2017 International joint conference on neural networks (IJCNN) (pp. 1871-1878). IEEE.
  • [iii] Tobiyama, S., Yamaguchi, Y., Shimada, H., Ikuse, T., & Yagi, T. (2016, June). Malware detection with deep neural network using process behavior. In 2016 IEEE 40th Annual Computer Software and Applications Conference (COMPSAC) (Vol. 2, pp. 577-582). IEEE.
  • [iv] Pascanu, R., Stokes, J. W., Sanossian, H., Marinescu, M., & Thomas, A. (2015, April). Malware classification with recurrent networks. In 2015 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP) (pp. 1916-1920). IEEE.
  • [v] Athiwaratkun, B., & Stokes, J. W. (2017, March). Malware classification with LSTM and GRU language models and a character-level CNN. In 2017 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP) (pp. 2482-2486). IEEE.
  • [vi] Athiwaratkun, B., & Stokes, J. W. (2017, March). Malware classification with LSTM and GRU language models and a character-level CNN. In 2017 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP) (pp. 2482-2486). IEEE.

 

點擊關注,第一時間了解華為雲新鮮技術~