機(jī)器學(xué)習(xí)服務(wù)提取圖片的特征向量">使用SAP Leonardo上的機(jī)器學(xué)習(xí)服務(wù)提取圖片的特征向量
951
2022-05-29
前一篇文章普及了機(jī)器學(xué)習(xí)在安全領(lǐng)域的應(yīng)用,并復(fù)現(xiàn)一個(gè)基于機(jī)器學(xué)習(xí)(邏輯回歸)的惡意請(qǐng)求識(shí)別。這篇文章將詳細(xì)分享基于機(jī)器學(xué)習(xí)的惡意代碼檢測(cè)技術(shù),主要參考鄭師兄的視頻總結(jié),包括機(jī)器學(xué)習(xí)概述與算法舉例、基于機(jī)器學(xué)習(xí)方法的惡意代碼檢測(cè)、機(jī)器學(xué)習(xí)算法在工業(yè)界的應(yīng)用。同時(shí),我再結(jié)合自己的經(jīng)驗(yàn)進(jìn)行擴(kuò)充,詳細(xì)分享了基于機(jī)器學(xué)習(xí)的惡意代碼檢測(cè)技術(shù),基礎(chǔ)性文章,希望對(duì)您有所幫助~
文章目錄
一.機(jī)器學(xué)習(xí)概述與算法舉例
1.機(jī)器學(xué)習(xí)概念
2.機(jī)器學(xué)習(xí)算法舉例
3.特征工程-特征選取與設(shè)計(jì)
二.基于機(jī)器學(xué)習(xí)方法的惡意代碼檢測(cè)
(1) 特征種類
(2) 常見算法
1.惡意代碼的靜態(tài)動(dòng)態(tài)檢測(cè)
2.靜態(tài)特征設(shè)計(jì)舉例
3.經(jīng)典的圖片特征舉例
4.動(dòng)態(tài)特征設(shè)計(jì)舉例
5.深度學(xué)習(xí)靜態(tài)檢測(cè)舉例
6.優(yōu)缺點(diǎn)
7.靜態(tài)分析和動(dòng)態(tài)分析對(duì)比
三.機(jī)器學(xué)習(xí)算法在工業(yè)界的應(yīng)用
四.總結(jié)
前文推薦(華為云):
[當(dāng)人工智能遇上安全] 1.人工智能真的安全嗎?浙大團(tuán)隊(duì)外灘大會(huì)分享AI對(duì)抗樣本技術(shù)
[當(dāng)人工智能遇上安全] 2.清華張超老師 - GreyOne: Discover Vulnerabilities with Data Flow Sensitive Fuzzing
[當(dāng)人工智能遇上安全] 3.安全領(lǐng)域中的機(jī)器學(xué)習(xí)及機(jī)器學(xué)習(xí)惡意請(qǐng)求識(shí)別案例分享
[當(dāng)人工智能遇上安全] 4.基于機(jī)器學(xué)習(xí)的惡意代碼檢測(cè)技術(shù)詳解
https://github.com/eastmountyxz/AI-Security-Paper
隨著互聯(lián)網(wǎng)的繁榮,現(xiàn)階段的惡意代碼也呈現(xiàn)出快速發(fā)展的趨勢(shì),主要表現(xiàn)為變種數(shù)量多、傳播速度快、影響范圍廣。在這樣的形勢(shì)下,傳統(tǒng)的惡意代碼檢測(cè)方法已經(jīng)無法滿足人們對(duì)惡意代碼檢測(cè)的要求。比如基于簽名特征碼的惡意代碼檢測(cè),這種方法收集已知的惡意代碼,以一種固定的方式生成特定的簽名,維護(hù)這樣的簽名庫(kù),當(dāng)有新的檢測(cè)任務(wù)時(shí),通過在簽名庫(kù)中檢索匹配的方法進(jìn)行檢測(cè)。暫且不說更新、維護(hù)簽名庫(kù)的過程需要耗費(fèi)大量的人力物力,惡意代碼編寫者僅僅通過混淆、壓縮、加殼等簡(jiǎn)單的變種方式便可繞過這樣的檢測(cè)機(jī)制。
為了應(yīng)對(duì)上面的問題,基于機(jī)器學(xué)習(xí)的惡意代碼檢測(cè)方法一直是學(xué)界研究的熱點(diǎn)。由于機(jī)器學(xué)習(xí)算法可以挖掘輸入特征之間更深層次的聯(lián)系,更加充分地利用惡意代碼的信息,因此基于機(jī)器學(xué)習(xí)的惡意代碼檢測(cè)往往表現(xiàn)出較高的準(zhǔn)確率,并且一定程度上可以對(duì)未知的惡意代碼實(shí)現(xiàn)自動(dòng)化的分析。下面讓我們開始進(jìn)行系統(tǒng)的介紹吧~
一.機(jī)器學(xué)習(xí)概述與算法舉例
1.機(jī)器學(xué)習(xí)概念
首先介紹下機(jī)器學(xué)習(xí)的基本概念,如下圖所示,往分類模型中輸入某個(gè)樣本特征,分類模型輸出一個(gè)分類結(jié)果。這就是一個(gè)標(biāo)準(zhǔn)的機(jī)器學(xué)習(xí)檢測(cè)流程。機(jī)器學(xué)習(xí)技術(shù)主要研究的就是如何構(gòu)建中間的分類模型,如何構(gòu)造一組參數(shù)、構(gòu)建一個(gè)分類方法,通過訓(xùn)練得到模型與參數(shù),讓它在部署后能夠預(yù)測(cè)一個(gè)正確的結(jié)果。
訓(xùn)練是迭代樣本與標(biāo)簽對(duì)的過程,如數(shù)學(xué)表達(dá)式 y=f(x) ,x表示輸入的樣本特征向量,y表示標(biāo)簽結(jié)果,使用(x,y)對(duì)f進(jìn)行一個(gè)擬合的操作,不斷迭代減小 y’ 和 y 的誤差,使得在下次遇到待測(cè)樣本x時(shí)輸出一致的結(jié)果。該過程也稱為學(xué)習(xí)的過程。
構(gòu)造分類方法
構(gòu)造分類方法是機(jī)器學(xué)習(xí)中比較重要的知識(shí),如何設(shè)計(jì)一種分類模型將f(x)表達(dá)出來。比如:
超平面(SVM)
在二維坐標(biāo)軸中,可以設(shè)計(jì)一條直線將空間內(nèi)分布的散點(diǎn)區(qū)分開來,如下圖所示。
softmax
另外一種方法是構(gòu)造類別概率輸出(softmax),比如歸一化處理得到A+B=1,最后看A和B的概率,誰的概率大就屬于哪一類,該方法廣泛使用于神經(jīng)網(wǎng)絡(luò)的最后結(jié)果計(jì)算中。
2.機(jī)器學(xué)習(xí)算法舉例
(1) 支持向量機(jī)(SVM)
首先存在很多訓(xùn)練數(shù)據(jù)點(diǎn),包括直線上方和下方兩個(gè)簇,支持向量機(jī)的方法是尋找這兩個(gè)簇分類的超平面。如何尋找這個(gè)超平面呢?支持向量機(jī)先求解每個(gè)簇離對(duì)面最近的點(diǎn),然后通過擬合方法計(jì)算出兩邊簇的邊界,最終計(jì)算出中間的平面,其基本思路就是這樣,而這些點(diǎn)就是支持向量。支持向量機(jī)往往用來處理超高維的問題,也不一定是類似直線的平面,也可能是圓形的分類邊界。
(3) 深度卷積神經(jīng)網(wǎng)絡(luò)
普通的神經(jīng)網(wǎng)絡(luò)通常只包括一個(gè)隱藏層,當(dāng)超出之后可以稱為深度神經(jīng)網(wǎng)絡(luò)。現(xiàn)在比較流行的包括CNN、RNN、RCNN、GRU、LSTM、BiLSTM、Attention等等。其中,卷積神經(jīng)網(wǎng)絡(luò)常用于處理圖片,應(yīng)用了卷積技術(shù)、池化技術(shù),降低圖片維度得到很好的結(jié)果。
深度神經(jīng)網(wǎng)絡(luò)是深度學(xué)習(xí)中模型,它主要的一個(gè)特點(diǎn)是將特征提取的過程放入到真?zhèn)€訓(xùn)練中,之前對(duì)于圖片問題是采用手工特征,而CNN讓在訓(xùn)練中得到最優(yōu)的特征提取。
3.特征工程-特征選取與設(shè)計(jì)
上面介紹了機(jī)器學(xué)習(xí)和深度學(xué)習(xí)方法,但是這些方法往往是該研究領(lǐng)域的學(xué)者所提出,而在惡意代碼檢測(cè)中,往往我們的主要工作量是一些特征的提取和特征的設(shè)計(jì),這里面涉及一個(gè)特征工程的概念。
特征工程:選取特征,設(shè)計(jì)特征的過程。
例如,在路邊預(yù)測(cè)一個(gè)人是否是學(xué)生,假設(shè)我們不能去詢問,只能通過外表去預(yù)測(cè)他是否是一個(gè)學(xué)生,包括:年齡(低于15歲就是學(xué)生)、性別(不影響學(xué)生)、衣著(穿著活潑年輕的可能是學(xué)生,如果穿著西裝可能性就小)等等,然后根據(jù)這些特征輸入機(jī)器學(xué)習(xí)模型,從而判斷是否是學(xué)生。
在這些特征中,顯然有些特征是非常重要的,比如年齡和衣著。數(shù)據(jù)和特征決定了機(jī)器學(xué)習(xí)的上限,而模型和算法只是逼近這個(gè)上限,所以如何選取特征是機(jī)器學(xué)習(xí)的一個(gè)關(guān)鍵性因素。再比如淘寶的推薦系統(tǒng),購(gòu)買電腦推薦鼠標(biāo)、鍵盤等。
當(dāng)然,上面僅僅是一個(gè)比較簡(jiǎn)單的問題,當(dāng)我們推廣到惡意代碼檢測(cè)等復(fù)雜問題時(shí),如果不了解這個(gè)領(lǐng)域,可能就會(huì)導(dǎo)致模型的結(jié)果不理想。
特征設(shè)計(jì)——人臉識(shí)別
局部二值特征(Local Binary Pattern),再舉一個(gè)人臉識(shí)別例子,深度學(xué)習(xí)出來之前,圖片分類都是使用一些特征算子提取特征的。比如存在一個(gè)3x3的窗口,我們?nèi)¢撝?,比5小的窗口置為0,其他的置為1,然后順時(shí)針轉(zhuǎn)換為一個(gè)8位的二進(jìn)制數(shù)字,對(duì)應(yīng)的十進(jìn)制就是19。顯然,LBP特征進(jìn)行了一個(gè)降維的操作,左邊的圖片顯示了人臉識(shí)別不應(yīng)該受光照影響,不同光照的圖片進(jìn)行LBP特征提取后,顯示結(jié)果都一樣。
《統(tǒng)計(jì)學(xué)習(xí)方法》李航,數(shù)學(xué)理論較多
《機(jī)器學(xué)習(xí)》周志華,西瓜書,較通俗透徹
《Deep Learning》Ian Goodfellow,花書,深度學(xué)習(xí)內(nèi)容全面
《精通特征工程》結(jié)合惡意代碼特征學(xué)習(xí),包括如何向量化
二.基于機(jī)器學(xué)習(xí)方法的惡意代碼檢測(cè)
1.惡意代碼的靜態(tài)動(dòng)態(tài)檢測(cè)
(1) 特征種類
首先,特征種類如果按照惡意代碼是否在用戶環(huán)境或仿真環(huán)境中運(yùn)行,可以劃分為靜態(tài)特征和動(dòng)態(tài)特征。
靜態(tài)特征:?沒有真實(shí)運(yùn)行的特征
–
字節(jié)碼
:二進(jìn)制代碼轉(zhuǎn)換成了字節(jié)碼,比較原始的一種特征,沒有進(jìn)行任何處理
–
IAT表
:PE結(jié)構(gòu)中比較重要的部分,聲明了一些函數(shù)及所在位置,便于程序執(zhí)行時(shí)導(dǎo)入,表和功能比較相關(guān)
–
Android權(quán)限表
:如果你的APP聲明了一些功能用不到的權(quán)限,可能存在惡意目的,如手機(jī)信息
–
可打印字符
:將二進(jìn)制代碼轉(zhuǎn)換為ASCII碼,進(jìn)行相關(guān)統(tǒng)計(jì)
–
IDA反匯編跳轉(zhuǎn)塊
:IDA工具調(diào)試時(shí)的跳轉(zhuǎn)塊,對(duì)其進(jìn)行處理作為序列數(shù)據(jù)或圖數(shù)據(jù)
動(dòng)態(tài)特征:?相當(dāng)于靜態(tài)特征更耗時(shí),它要真正去執(zhí)行代碼
–
API調(diào)用關(guān)系
:比較明顯的特征,調(diào)用了哪些API,表述對(duì)應(yīng)的功能
–
控制流圖
:軟件工程中比較常用,機(jī)器學(xué)習(xí)將其表示成向量,從而進(jìn)行分類
–
數(shù)據(jù)流圖
:軟件工程中比較常用,機(jī)器學(xué)習(xí)將其表示成向量,從而進(jìn)行分類
舉一個(gè)簡(jiǎn)單的控制流圖(Control Flow Graph, CFG)示例。
if (x < y) { y = 0; x = x + 1; } else { x = y; }
(2) 常見算法
普通機(jī)器學(xué)習(xí)方法和深度學(xué)習(xí)方法的區(qū)別是,普通機(jī)器學(xué)習(xí)方法的參數(shù)比較少,相對(duì)計(jì)算量較小。
普通機(jī)器學(xué)習(xí)方法(SVM支持向量機(jī)、RF隨機(jī)森林、NB樸素貝葉斯)
深度神經(jīng)網(wǎng)絡(luò)(Deep Neural Network)
卷積神經(jīng)網(wǎng)絡(luò)(Convolution Neural Network)
長(zhǎng)短時(shí)記憶網(wǎng)絡(luò)(Long Short-Term Memory Network)
針對(duì)序列模型進(jìn)行建模,包含上下文依賴關(guān)系,比如“我 是 一名 大學(xué)生”中的“我”和“是”前后出現(xiàn)的條件概率更高。廣泛應(yīng)用于文本分類、語(yǔ)音識(shí)別中,同樣適用于惡意代碼檢測(cè)。
圖卷積網(wǎng)絡(luò) (Graph Convolution Network)
比較新興的方法,將卷積應(yīng)用到圖領(lǐng)域,圖這種數(shù)據(jù)類型比較通用,非圖數(shù)據(jù)比較容易轉(zhuǎn)換成圖數(shù)據(jù),CCF論文中也已經(jīng)應(yīng)用到惡意代碼檢測(cè)中。。
2.靜態(tài)特征設(shè)計(jì)舉例
首先分享一個(gè)靜態(tài)特征的例子,該篇文章發(fā)表在2015年,是一篇CCF C類會(huì)議文章。
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
文章的主要方法流程如下所示:
該模型包含三個(gè)步驟:
特征抽取
使用了四種特征
特征抽取輸入到深度神經(jīng)網(wǎng)絡(luò)
包含兩層隱含層的深度神經(jīng)網(wǎng)絡(luò)
分?jǐn)?shù)校正
特征抽取
特征提取包括以下四種特征:
字節(jié)-熵對(duì)統(tǒng)計(jì)特征:統(tǒng)計(jì)滑動(dòng)窗口的(字節(jié),熵)對(duì)個(gè)數(shù)
在下圖中,假設(shè)白框是一個(gè)二進(jìn)制文件,其中紅色框W是滑動(dòng)窗口,二進(jìn)制文件如果有100KB大小,每個(gè)滑動(dòng)窗口是1024字節(jié),那么滑動(dòng)100次可以將整個(gè)二進(jìn)制文件掃描完。如果對(duì)窗口內(nèi)的數(shù)值進(jìn)行計(jì)算,首先計(jì)算它的熵值,熵是信息論的概念(下圖中的E),它描述了一個(gè)數(shù)組的隨機(jī)性,熵越大其隨機(jī)性越大。在圖中,每一個(gè)滑動(dòng)窗口都有固定的熵值,包含了1024字節(jié),標(biāo)記為(Bi,Ewi),最后滑動(dòng)得到100x1024的字節(jié)熵對(duì)。
統(tǒng)計(jì)最后滑動(dòng)得到100x1024的字節(jié)熵對(duì)個(gè)數(shù),得到如下圖所示的二維直方圖結(jié)果,橫坐標(biāo)是熵值最小值到最大值的范圍,縱坐標(biāo)是一個(gè)字節(jié)轉(zhuǎn)換成10進(jìn)制的范圍0-256,最終得到字節(jié)熵對(duì)分布的范圍,再將16x16維的二維數(shù)組轉(zhuǎn)換成1x256維的特征向量。
PE頭IAT特征:hashDLL文件名與函數(shù)名為[0-255)范圍
第二種特征是PE頭IAT特征。它的計(jì)算工程是將PE頭的IAT表里面的文件名和函數(shù)名hash到0到255范圍,如果某個(gè)文件出現(xiàn)某個(gè)函數(shù),就將該位置為1,當(dāng)然每位對(duì)應(yīng)表示的函數(shù)是固定的,最終得到256數(shù)組。
可打印字符:統(tǒng)計(jì)ASCII碼的個(gè)數(shù)特征
可打印字符和字節(jié)熵對(duì)比較相似,這里推薦大家閱讀原文。
PE元信息:將PE信息抽取出來組成256維數(shù)組,例如編譯時(shí)間戳
PE元信息是將PE信息的數(shù)值型信息抽取出來,組成256維數(shù)組,每一個(gè)數(shù)組的位置表示了一個(gè)固定的信息種類,再信息種類將對(duì)應(yīng)的信息填入到元素的位置,比如編譯時(shí)間戳。
總共有上述四種特征,然后進(jìn)行拼接得到4*256=1024維的數(shù)組,這個(gè)數(shù)組就代表一個(gè)樣本的特征向量。假設(shè)有10000個(gè)樣本,就有對(duì)應(yīng)10000個(gè)特征向量。
得到特征向量之后,就開始進(jìn)行模型的訓(xùn)練和測(cè)試,一般機(jī)器學(xué)習(xí)任務(wù)事先都有一個(gè)數(shù)據(jù)集,并且會(huì)分為訓(xùn)練數(shù)據(jù)集和測(cè)試數(shù)據(jù)集,按照4比1或9比1的比例進(jìn)行隨機(jī)劃分。訓(xùn)練會(huì)將數(shù)據(jù)集和標(biāo)簽對(duì)輸入得到惡意和非惡意的結(jié)果,再輸入測(cè)試集得到最終結(jié)果。
下面是衡量機(jī)器學(xué)習(xí)模型的性能指標(biāo),首先是一幅混淆矩陣的圖表,真實(shí)類別中1代表惡意樣本,0代表非惡意樣本,預(yù)測(cè)類別也包括1和0,然后結(jié)果分為:
TP:本身是惡意樣本,并且預(yù)測(cè)識(shí)別為惡意樣本
FP:本身是惡意樣本,然而預(yù)測(cè)識(shí)別為非惡意樣本,這是誤分類的情況
FN:本身是非惡意樣本,然而預(yù)測(cè)識(shí)別為惡意樣本,這是誤分類的情況
TN:本身是非惡意樣本,并且預(yù)測(cè)識(shí)別為非惡意樣本
然后是Accuracy(準(zhǔn)確率)、Precision(查準(zhǔn)率)、Recall(查全率)、F1等評(píng)價(jià)指標(biāo)。
通常Accuracy是一個(gè)評(píng)價(jià)惡意代碼分類的重要指標(biāo),但本文選擇的是AUC指標(biāo),為什么呢?
假設(shè)我們模型的效果非常差,它會(huì)將所有本測(cè)試樣本標(biāo)記為惡意樣本,這樣我有兩個(gè)數(shù)據(jù)集,一個(gè)樣本包括100個(gè)數(shù)據(jù)(99個(gè)惡意樣本、1個(gè)非惡意樣本),另一個(gè)樣本包括50個(gè)數(shù)據(jù)(50個(gè)惡意樣本、50個(gè)非惡意樣本),如果我單純的計(jì)算ACC,第一個(gè)樣本的結(jié)構(gòu)是0.99,顯然不符合客觀的描述,不能用來評(píng)價(jià)性能高低的,并且這種情況是很容易產(chǎn)生的。所以論文中廣泛采用AUC指標(biāo)。
AUC指標(biāo)包括TPRate和FPRate,然后得到一個(gè)點(diǎn),并計(jì)算曲線以下所包圍的面積即為AUC指標(biāo)。其中,TPRate表示分類器識(shí)別出正樣本數(shù)量占所有正樣本數(shù)量的比值,F(xiàn)PRate表示負(fù)樣本數(shù)量站所有負(fù)樣本數(shù)量的比值。舉個(gè)例子,我們?nèi)鼍W(wǎng)打魚,一網(wǎng)下去,網(wǎng)中好魚的數(shù)量占池子中所有好魚的數(shù)量就是TPRate,而FPRate表示一網(wǎng)下去,壞魚的數(shù)量占整個(gè)池子中所有壞魚的數(shù)量比例,當(dāng)然FPRate越小越好。最好的結(jié)果就是TPRate為1,而FPRate為0,此時(shí)全部分類預(yù)測(cè)正確。
該論文測(cè)試了六種特征集合,其計(jì)算的TPR和AUC值如下所示。
3.經(jīng)典的圖片特征舉例
下面介紹另一種比較新興經(jīng)典的方法,就是圖片特征。但一些安全界的人士會(huì)認(rèn)為這種特征不太好,但其方法還是比較新穎的。
它的基本方法是按照每8位一個(gè)像素點(diǎn)將惡意軟件的二進(jìn)制文件轉(zhuǎn)換為灰度圖片,圖片通常分為R、G、B通道,每個(gè)8位像素點(diǎn)表示2^8,最終每隔8位生成一個(gè)像素點(diǎn)從而轉(zhuǎn)換為如下圖所示的灰度圖片。圖片分別為Obfuscator_ACY家族、Lolipop家族、ramnit家族惡意軟件樣例,這些樣例由微軟kaggle比賽公布的數(shù)據(jù)生成。
4.動(dòng)態(tài)特征設(shè)計(jì)舉例
接下來分享一個(gè)動(dòng)態(tài)特征的例子,該篇文章發(fā)表在2016年,文章的會(huì)議一般,但比較有代表性。
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文件進(jìn)入后,直接進(jìn)入Cuckoo沙箱中,它是一個(gè)開源沙箱,在學(xué)術(shù)論文中提取動(dòng)態(tài)特征比較通用;接著進(jìn)行進(jìn)行預(yù)處理操作,將文本轉(zhuǎn)換成向量表示的形式,比如提取了200個(gè)動(dòng)態(tài)特征,可以使用200維向量表示,每個(gè)數(shù)組的位置表示對(duì)應(yīng)API,再將所得到的序列輸入卷積神經(jīng)網(wǎng)絡(luò)LSTM進(jìn)行分類,最終得到家族分類的結(jié)構(gòu)。
Cuckoo沙箱
LSTM
下圖展示了實(shí)驗(yàn)的結(jié)構(gòu),其指標(biāo)是高于單純的神經(jīng)網(wǎng)絡(luò)和卷積網(wǎng)絡(luò)的效果更好,這是一篇比較基礎(chǔ)的文章。
5.深度學(xué)習(xí)靜態(tài)檢測(cè)舉例
下面再看一個(gè)深度學(xué)習(xí)靜態(tài)檢測(cè)的文章。
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.
這篇文章是火眼公司的兩名員工發(fā)布的,所使用的也是靜態(tài)檢測(cè)特征,其流程如下所示。
首先,原始的字節(jié)碼特征直接輸入一個(gè)Byte Embedding層(詞嵌入),對(duì)單個(gè)元素進(jìn)行向量化處理,將字節(jié)碼中的每個(gè)字節(jié)表示成一個(gè)固定長(zhǎng)度的向量,從而更好地將字節(jié)標(biāo)記在一個(gè)空間維度中。詞嵌入技術(shù)廣泛應(yīng)用于自然語(yǔ)言處理領(lǐng)域,比如“女人”和“女王”關(guān)系比較緊密,這篇文章的目的也是想要在惡意代碼中達(dá)到類似的效果。
然后將矩陣輸入到卷積和池化層中,比如存在一個(gè)100K字節(jié)的二進(jìn)制文件,得到100102410矩陣輸入卷積神經(jīng)網(wǎng)絡(luò)中,最后通過全連接層完成惡意和非惡意的分類任務(wù)。
Fireeye使用了三個(gè)數(shù)據(jù)集進(jìn)行訓(xùn)練和測(cè)試,其訓(xùn)練的模型分類效果結(jié)果如下表所示,博客Small、Baseline、Baseline+Dropout模型,其網(wǎng)絡(luò)結(jié)構(gòu)是一樣的,其中Small表示使用小的數(shù)據(jù)集,Baseline表示使用大的數(shù)據(jù)集,Dropout表示對(duì)訓(xùn)練好的神經(jīng)網(wǎng)絡(luò)中隨機(jī)丟棄一些神經(jīng)元,從而抑制過擬合現(xiàn)象,也是比較常用的深度學(xué)習(xí)技術(shù)。
這篇文章的重點(diǎn)是對(duì)深度學(xué)習(xí)的解釋性,就是解釋深度學(xué)習(xí)是否能學(xué)習(xí)到惡意軟件的本質(zhì)特性。下圖展示了不同特征對(duì)于分類結(jié)果的影響,橫坐標(biāo)是Offset偏移,通常用Offset記錄字節(jié),從0到右邊也對(duì)應(yīng)文件大小,前面可能就是PE頭,中間有各種段。
它的橫縱坐標(biāo)分別表示了某些特征對(duì)于惡意性分類比較重要,還是非惡意性比較重要。如果它的校驗(yàn)和(CheckSum)是0,就對(duì)惡意性分類比較重要,這表示深度學(xué)習(xí)并沒有學(xué)習(xí)到惡意軟件為什么是惡意的,只是通過統(tǒng)計(jì)學(xué)去發(fā)現(xiàn)惡意軟件和非惡意軟件差別最大部分,以此進(jìn)行數(shù)據(jù)建模。
深度學(xué)習(xí)進(jìn)行惡意軟件檢測(cè)的問題:沒有學(xué)習(xí)到惡意和非惡意特征,而是學(xué)習(xí)到區(qū)別的統(tǒng)計(jì)差異,而這種差異如果被黑客利用是可以被規(guī)避的。
6.優(yōu)缺點(diǎn)
靜態(tài)特征
優(yōu)點(diǎn)
特征提取速度快
特征種類豐富,可以組合多種特征向量
缺點(diǎn)
易受加殼、加密、混淆干擾
無法防范無文件攻擊,難以反映惡意軟件行為的惡意性
動(dòng)態(tài)特征
優(yōu)點(diǎn)
提供惡意軟件的動(dòng)作,調(diào)用API
規(guī)避一些靜態(tài)的混淆對(duì)抗方法
缺點(diǎn)
反虛擬化,延時(shí)觸發(fā)等技術(shù)的對(duì)抗
測(cè)試時(shí)間較長(zhǎng),單個(gè)樣本2-3分鐘(Cuckoo)
最后給出推薦資料:
404notfound實(shí)驗(yàn)室總結(jié)的AI在安全領(lǐng)域應(yīng)用
https://github.com/404notf0und/AI-for-Security-Learning
malware data science書籍
https://www.amazon.com/Malware-Data-Science-Detection-Attribution-ebook/dp/B077X1V9SY
7.靜態(tài)分析和動(dòng)態(tài)分析對(duì)比
惡意代碼的檢測(cè)本質(zhì)上是一個(gè)分類問題,即把待檢測(cè)樣本區(qū)分成惡意或合法的程序。基于機(jī)器學(xué)習(xí)算法的惡意代碼檢測(cè)技術(shù)步驟大致可歸結(jié)為如下范式:
采集大量的惡意代碼樣本以及正常的程序樣本作為訓(xùn)練樣本;
對(duì)訓(xùn)練樣本進(jìn)行預(yù)處理,提取特征;
進(jìn)一步選取用于訓(xùn)練的數(shù)據(jù)特征;
選擇合適的機(jī)器學(xué)習(xí)算法訓(xùn)練分類模型;
通過訓(xùn)練后的分類模型對(duì)未知樣本進(jìn)行檢測(cè)。
深度學(xué)習(xí)作為機(jī)器學(xué)習(xí)的一個(gè)分支,由于其可以實(shí)現(xiàn)自動(dòng)化的特征提取,近些年來在處理較大數(shù)據(jù)量的應(yīng)用場(chǎng)景,如計(jì)算機(jī)視覺、語(yǔ)音識(shí)別、自然語(yǔ)言處理時(shí)可以取得優(yōu)于傳統(tǒng)機(jī)器學(xué)習(xí)算法的效果。隨著深度學(xué)習(xí)在圖像處理等領(lǐng)域取得巨大的成功,許多人將深度學(xué)習(xí)的方法應(yīng)用到惡意軟件檢測(cè)上來并取得了很好的成果。實(shí)際上就是用深度神經(jīng)網(wǎng)絡(luò)代替上面步驟中的人為的進(jìn)一步特征提取和傳統(tǒng)機(jī)器學(xué)習(xí)算法。根據(jù)步驟中對(duì)訓(xùn)練樣本進(jìn)行預(yù)處理的方式,可以將檢測(cè)分為靜態(tài)分析與動(dòng)態(tài)分析:
靜態(tài)分析不運(yùn)行待檢測(cè)代碼,而是通過直接對(duì)程序(如反匯編后的代碼)進(jìn)行統(tǒng)計(jì)分析得到數(shù)據(jù)特征
動(dòng)態(tài)分析則在虛擬機(jī)或沙箱中執(zhí)行程序,獲取程序執(zhí)行過程中所產(chǎn)生的數(shù)據(jù)(如行為特征、網(wǎng)絡(luò)特征),進(jìn)行檢測(cè)和判斷。
(1) 靜態(tài)分析
一般來說,在絕大部分情形下我們無法得到惡意程序的源代碼。因此,常用的靜態(tài)特征包括程序的二進(jìn)制文件、從使用IDA Pro等工具進(jìn)行反匯編得到的匯編代碼中提取的匯編指令、函數(shù)調(diào)用等信息,另外基于字符串和基于API調(diào)用序列的特征也是比較常見的。文獻(xiàn)[i]提出一種對(duì)PE文件的惡意程序檢測(cè)方法,提取PE文件四個(gè)類型的特征:字節(jié)頻率、二元字符頻率、PE Import Table以及PE元數(shù)據(jù)特征,采用包含兩個(gè)隱藏層的DNN作為分類模型,但是為了提取長(zhǎng)度固定的輸入數(shù)據(jù),他們丟棄了PE文件中的大部分信息。文獻(xiàn)[ii]使用CNN作為分類器,通過API調(diào)用序列來檢測(cè)惡意軟件,其準(zhǔn)確率達(dá)到99.4%,遠(yuǎn)高于傳統(tǒng)的機(jī)器學(xué)習(xí)算法。然而,當(dāng)惡意代碼存在混淆或加殼等情形時(shí),對(duì)所選取的靜態(tài)特征具有較大的影響,因此靜態(tài)分析技術(shù)本身具有一定的局限性。
(2) 動(dòng)態(tài)分析
利用虛擬機(jī)或沙箱執(zhí)行待測(cè)程序,監(jiān)控并收集程序運(yùn)行時(shí)顯現(xiàn)的行為特征,并根據(jù)這些較為高級(jí)的特征數(shù)據(jù)實(shí)現(xiàn)惡意代碼的分類。一般來講,行為特征主要包括以下幾個(gè)方面:文件的操作行為;注冊(cè)表鍵值的操作行為;動(dòng)態(tài)鏈接庫(kù)的加載行為;進(jìn)程訪問的操作行為;系統(tǒng)服務(wù)行為;網(wǎng)絡(luò)訪問請(qǐng)求;API調(diào)用。文獻(xiàn)[iii]通過API調(diào)用序列記錄進(jìn)程行為,使用RNN提取特征向量,隨后將其轉(zhuǎn)化為特征圖像使用CNN進(jìn)行進(jìn)一步的特征提取,提取其可能包含的局部特征并進(jìn)行分類。文獻(xiàn)[iv]提出了一個(gè)基于動(dòng)態(tài)分析的2層架構(gòu)的惡意軟件檢測(cè)系統(tǒng):第1層是RNN,用于學(xué)習(xí)API事件的特征表示;第2層是邏輯回歸分類器,對(duì)RNN學(xué)習(xí)的特征進(jìn)行分類,然而這種方法的誤報(bào)率較高。文獻(xiàn)[v]提出了用LSTM和GRU代替?zhèn)鹘y(tǒng)RNN進(jìn)行特征的提取,并提出了使用CNN的字符級(jí)別的檢測(cè)方案。文獻(xiàn)[vi]提出在惡意軟件運(yùn)行的初期對(duì)其進(jìn)行惡意行為的預(yù)測(cè),他們使用RNN進(jìn)行PE文件檢測(cè),根據(jù)惡意代碼前4秒的運(yùn)行行為,RNN對(duì)惡意軟件的預(yù)測(cè)準(zhǔn)確率是91%,隨著觀察的運(yùn)行時(shí)間的增長(zhǎng),RNN的預(yù)測(cè)準(zhǔn)確率也隨之提高。可以看到,相對(duì)于靜態(tài)分析,動(dòng)態(tài)分析的過程更加復(fù)雜耗時(shí),相對(duì)而言采用了較高層次的特征,因此可解釋性也較差。
在網(wǎng)絡(luò)攻擊趨于精細(xì)化、惡意代碼日新月異的今天,基于深度學(xué)習(xí)算法的惡意代碼檢測(cè)中越來越受到學(xué)術(shù)界和眾多安全廠商的關(guān)注。但這種檢測(cè)技術(shù)在現(xiàn)實(shí)應(yīng)用中還有很多尚未解決的問題。例如上面提到的靜態(tài)分析與動(dòng)態(tài)分析存在的不足,現(xiàn)在發(fā)展的主流方向是將靜態(tài)、動(dòng)態(tài)分析技術(shù)進(jìn)行結(jié)合,使用相同樣本的不同層面的特征相對(duì)獨(dú)立地訓(xùn)練多個(gè)分類器,然后進(jìn)行集成,以彌補(bǔ)彼此的不足之處。
除此之外,深度學(xué)習(xí)算法的可解釋性也是制約其發(fā)展的一個(gè)問題,當(dāng)前的分類模型一般情況下作為黑盒被加以使用,其結(jié)果無法為安全人員進(jìn)一步分析溯源提供指導(dǎo)。我們常說攻防是息息相關(guān)的,螺旋上升的狀態(tài)。既然存在基于深度學(xué)習(xí)的惡意代碼檢測(cè)技術(shù),那么自然也有基于深度學(xué)習(xí)的或者是針對(duì)深度學(xué)習(xí)的惡意代碼檢測(cè)繞過技術(shù),這也是近年來研究的熱點(diǎn)問題,那么如何提高模型的穩(wěn)健性,防止這些定制化的干擾項(xiàng)對(duì)我們的深度學(xué)習(xí)算法產(chǎn)生不利的影響,對(duì)抗生成網(wǎng)絡(luò)的提出或許可以給出答案。
三.機(jī)器學(xué)習(xí)算法在工業(yè)界的應(yīng)用
首先普及一個(gè)概念——NGAV。NGAV(Next-Gen AntiVirus)是下一代反病毒軟件簡(jiǎn)稱,它是一些廠商提出來的新的病毒檢測(cè)概念,旨在用新技術(shù)彌補(bǔ)傳統(tǒng)惡意軟件檢測(cè)的短板。
多家殺毒引擎廠商將機(jī)器學(xué)習(xí)視作NGAV的重要技術(shù),包括McAfee[11], Vmware[9], CrowdStrike[10], Avast[6]
越來越多的廠商開始關(guān)注機(jī)器學(xué)習(xí)技術(shù),并發(fā)表相關(guān)的研究(卡巴斯基[7],火眼[8]),火眼還是用機(jī)器學(xué)習(xí)技術(shù)對(duì)APT進(jìn)行分析(組織相似度溯源)
越來越多的安全廠商將機(jī)器學(xué)習(xí)視為反病毒軟件的一個(gè)關(guān)鍵技術(shù),但需要注意,NGAV并不是一個(gè)清晰的定義,你沒法去界定一個(gè)反病毒軟件是上一代產(chǎn)品還是下一代產(chǎn)品。衡量反病毒軟件的性能只有對(duì)惡意軟件的檢測(cè)率、計(jì)算消耗、誤報(bào)率等,我們只是從現(xiàn)狀分析得到越來越多安全領(lǐng)域結(jié)合了機(jī)器學(xué)習(xí)。
作為安全從業(yè)人員或科研人員,機(jī)器學(xué)習(xí)技術(shù)也是我們必須要關(guān)注的一個(gè)技術(shù)。
機(jī)器學(xué)習(xí)算法需要解決的問題如下:
算力問題
機(jī)器學(xué)習(xí)和深度學(xué)習(xí)算法需要大量的算力,如果我們?cè)诒镜夭渴疬€需要GPU的支持,這樣就帶來了一個(gè)硬件配置問題,所以如何減小模型的size及提升模型的檢測(cè)能力是一個(gè)關(guān)鍵性的問題。
大規(guī)模的特征數(shù)據(jù)
特征對(duì)于分類訓(xùn)練非常關(guān)鍵,如何抽取這些數(shù)據(jù)特征呢?
訓(xùn)練的模型是可解釋的
這個(gè)問題可以說是機(jī)器學(xué)習(xí)算法和深度學(xué)習(xí)算法在反病毒軟件應(yīng)用中最關(guān)鍵的一個(gè)問題,病毒的對(duì)抗是黑客與安全從業(yè)人員的對(duì)抗的前線,如果我們訓(xùn)練的模型是不可解釋的,那么一旦被黑客發(fā)現(xiàn)某些規(guī)則存在的弱點(diǎn),他們就可以針對(duì)這些弱點(diǎn)設(shè)計(jì)免殺方法,從而繞過造成重大安全隱患。另一方面,如果機(jī)器學(xué)習(xí)算法是不可解釋黑盒的,用戶他也是不可接受的,難以起到保護(hù)重要。
誤報(bào)需要維持極度的低水平
誤報(bào)是反病毒軟件用戶體驗(yàn)的一個(gè)重要指標(biāo),傳統(tǒng)的特征碼技術(shù)、主動(dòng)防御技術(shù)都具有誤報(bào)低的特性,而機(jī)器學(xué)習(xí)是一個(gè)預(yù)測(cè)技術(shù),會(huì)存在一些誤報(bào),如何避免這些誤報(bào)并且提高檢測(cè)的查全率也是重要的問題。
優(yōu)點(diǎn):速度快,消耗計(jì)算資源少
只需要將特征碼提取出來,上傳至云端進(jìn)行檢測(cè);相對(duì)于機(jī)器學(xué)習(xí)大量的矩陣計(jì)算,其計(jì)算資源消耗少。
缺點(diǎn):容易繞過,對(duì)于未知惡意軟件檢出率低
使用加殼、加密、混淆容易繞過,對(duì)于未知軟件不知道其特征碼,只能通過啟發(fā)式方法、主動(dòng)防御濟(jì)寧檢測(cè),相對(duì)于機(jī)器學(xué)習(xí)檢測(cè)率要低。
(2) 機(jī)器學(xué)習(xí)方法
優(yōu)點(diǎn):能夠建立專家難以發(fā)現(xiàn)的規(guī)則與特征
發(fā)現(xiàn)的規(guī)則和特征很可能是統(tǒng)計(jì)學(xué)特征,而不是惡意和非惡意的特征,所以這些特征很容易被黑客進(jìn)行規(guī)避,這既是優(yōu)點(diǎn)也是缺點(diǎn),雖然有缺陷,但也能發(fā)現(xiàn)惡意樣本的關(guān)聯(lián)和行為。
缺點(diǎn):資源消耗大,面臨漂移問題,需要不斷更新參數(shù)
四.總結(jié)
寫到這里,這篇文章就介紹完畢,希望對(duì)您有所幫助,最后進(jìn)行簡(jiǎn)單的總結(jié):
機(jī)器學(xué)習(xí)方法與傳統(tǒng)方法不是取代與被取代的關(guān)系,而是相互補(bǔ)充,好的防御系統(tǒng)往往是多種技術(shù)方法的組合。
機(jī)器學(xué)習(xí)的檢測(cè)方法研究還不充分,安全領(lǐng)域的專有瓶頸與人工智能研究的共有瓶頸均存在、
機(jī)器學(xué)習(xí)算法本身也面對(duì)一些攻擊方法的威脅,比如對(duì)應(yīng)抗本。
對(duì)抗樣本指的是一個(gè)經(jīng)過微小調(diào)整就可以讓機(jī)器學(xué)習(xí)算法輸出錯(cuò)誤結(jié)果的輸入樣本。在圖像識(shí)別中,可以理解為原來被一個(gè)卷積神經(jīng)網(wǎng)絡(luò)(CNN)分類為一個(gè)類(比如“熊貓”)的圖片,經(jīng)過非常細(xì)微甚至人眼無法察覺的改動(dòng)后,突然被誤分成另一個(gè)類(比如“長(zhǎng)臂猿”)。再比如無人駕駛的模型如果被攻擊,Stop標(biāo)志可能被汽車識(shí)別為直行、轉(zhuǎn)彎。
《珈國(guó)情》
明月千里兩相思,
清風(fēng)縷縷寄離愁。
燕歸珞珈花已謝,
情滿景逸映深秋。
最感恩的永遠(yuǎn)是家人的支持,知道為啥而來,知道要做啥,知道努力才能回去。夜已深,雖然笨,但還得奮斗。
2022年加油,感恩能與大家在華為云遇見!
希望能與大家一起在華為云社區(qū)共同成長(zhǎng)。原文地址:https://blog.csdn.net/Eastmount/article/details/120421043
(By:娜璋之家 Eastmount 2022-02-22 夜于貴陽(yáng))
參考文獻(xiàn):
[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] https://www.kaggle.com/c/malware-classification
[3] https://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]https://www.avast.com/technology/malware-detection-and-blocking
[7] https://media.kaspersky.com/en/enterprise-security/Kaspersky-Lab-Whitepaper-Machine-Learning.pdf
[8] https://www.fireeye.com/blog/threat-research/2019/03/clustering-and-associating-attacker-activity-at-scale.html
[9] https://www.carbonblack.com/resources/definitions/what-is-next-generation-antivirus/
[10] https://www.crowdstrike.com/epp-101/next-generation-antivirus-ngav/
[11] https://www.mcafee.com/enterprise/en-us/security-awareness/endpoint/what-is-next-gen-endpoint-protection.html
[12] 重點(diǎn)推薦:https://mooc.study.163.com/learn/1000003014?share=2&shareId=1000001005
[13] 重點(diǎn)推薦: 《軟件安全之惡意代碼機(jī)理與防護(hù)》WHU
其他論文:
[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.
機(jī)器學(xué)習(xí) 神經(jīng)網(wǎng)絡(luò)
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。