張東,張堯,劉剛,宋桂香
?
基于機(jī)器學(xué)習(xí)算法的主機(jī)惡意代碼檢測(cè)技術(shù)研究
張東,張堯,劉剛,宋桂香
(浪潮電子信息產(chǎn)業(yè)股份有限公司,北京100085)
對(duì)機(jī)器學(xué)習(xí)算法下主機(jī)惡意代碼檢測(cè)的主流技術(shù)途徑進(jìn)行了研究,分別針對(duì)靜態(tài)、動(dòng)態(tài)這2種分析模式下的檢測(cè)方案進(jìn)行了討論,涵蓋了惡意代碼樣本采集、特征提取與選擇、機(jī)器學(xué)習(xí)算法分類模型的建立等要點(diǎn)。對(duì)機(jī)器學(xué)習(xí)算法下惡意代碼檢測(cè)的未來工作與挑戰(zhàn)進(jìn)行了梳理。為下一代惡意代碼檢測(cè)技術(shù)的設(shè)計(jì)和優(yōu)化提供了重要的參考。
惡意代碼檢測(cè);機(jī)器學(xué)習(xí);靜態(tài)分析;動(dòng)態(tài)分析;分類模型
隨著互聯(lián)網(wǎng)的繁榮和發(fā)展,包括虛擬化、軟件定義網(wǎng)絡(luò)、物聯(lián)網(wǎng)在內(nèi)的新興技術(shù)逐步得到應(yīng)用,進(jìn)一步加速了萬物互聯(lián)的步伐。同時(shí),海量的核心數(shù)據(jù)和網(wǎng)絡(luò)應(yīng)用也不斷向云端、數(shù)據(jù)中心等關(guān)鍵信基礎(chǔ)設(shè)施整合和遷移,主機(jī)安全也因此成為網(wǎng)絡(luò)攻防戰(zhàn)的焦點(diǎn)。惡意代碼是指運(yùn)行在目標(biāo)主機(jī)中,按照攻擊者所規(guī)定邏輯執(zhí)行的指令,其類別包括計(jì)算機(jī)病毒、蠕蟲、木馬、僵尸網(wǎng)絡(luò)、勒索軟件等。惡意代碼攻擊可以竊取核心數(shù)據(jù)和敏感信息,甚至對(duì)計(jì)算機(jī)系統(tǒng)和網(wǎng)絡(luò)造成破壞,是當(dāng)今網(wǎng)絡(luò)安全的最大威脅之一[1,2]。
現(xiàn)階段,惡意代碼呈現(xiàn)變種數(shù)量多、傳播速度快、影響范圍廣的特點(diǎn)。尤其需要注意的是,惡意代碼常針對(duì)新型漏洞(如零日漏洞)進(jìn)行設(shè)計(jì),是敵手發(fā)動(dòng)高級(jí)持續(xù)性威脅(APT,advanced persistent threat)[3]的主要技術(shù)手段。而傳統(tǒng)的惡意代碼檢測(cè)方法,如基于簽名特征碼(signature)的檢測(cè)和基于啟發(fā)式規(guī)則(heuristic)的檢測(cè),在應(yīng)對(duì)數(shù)量繁多的未知惡意代碼時(shí),正面臨越來越大的挑戰(zhàn):簽名特征碼檢測(cè)方法通過維護(hù)一個(gè)已知的惡意代碼庫(kù),將待檢測(cè)代碼樣本的特征碼與惡意代碼庫(kù)中的特征碼進(jìn)行比對(duì),如果特征碼出現(xiàn)匹配,則樣本為惡意代碼。該方法需要耗費(fèi)大量的人力、物力對(duì)惡意代碼進(jìn)行研究并要求用戶及時(shí)更新惡意代碼庫(kù),檢測(cè)效率和效果越來越力不從心,并且很難有效抵御未知惡意代碼;另外,啟發(fā)式規(guī)則檢測(cè)方法通過專業(yè)的分析人員對(duì)現(xiàn)有的惡意代碼進(jìn)行規(guī)則提取,并依照提取出的規(guī)則對(duì)代碼樣本進(jìn)行檢測(cè)。但面對(duì)現(xiàn)階段惡意代碼爆炸式的增長(zhǎng)趨勢(shì),僅依賴人工進(jìn)行惡意代碼分析,在實(shí)施上變得愈發(fā)困難。
為了應(yīng)對(duì)上述挑戰(zhàn),機(jī)器學(xué)習(xí)算法下的惡意代碼檢測(cè)思想被提出?;跈C(jī)器學(xué)習(xí)算法的防護(hù)技術(shù)為實(shí)現(xiàn)高準(zhǔn)確率、自動(dòng)化的未知惡意代碼檢測(cè)提供了行之有效的技術(shù)途徑,已逐漸成為業(yè)內(nèi)研究的熱點(diǎn)。本文圍繞機(jī)器學(xué)習(xí)算法下的主機(jī)惡意代碼檢測(cè),系統(tǒng)地梳理和探討該方向的主流技術(shù)途徑與解決方案。
根據(jù)Cohen[4]對(duì)惡意代碼的研究結(jié)果,可知惡意代碼檢測(cè)的本質(zhì)是一個(gè)分類問題,即把待檢測(cè)樣本區(qū)分成惡意或合法的程序。因此機(jī)器學(xué)習(xí)算法驅(qū)動(dòng)下的主機(jī)惡意代碼檢測(cè)技術(shù),其核心步驟為:1) 采集數(shù)量充分的惡意代碼樣本;2) 對(duì)樣本進(jìn)行有效的數(shù)據(jù)處理,提取特征;3) 進(jìn)一步選取用于分類的主要數(shù)據(jù)特征;4) 結(jié)合機(jī)器學(xué)習(xí)算法的訓(xùn)練,建立分類模型;5) 通過訓(xùn)練后的分類模型對(duì)未知樣本進(jìn)行檢測(cè)。如圖1所示,根據(jù)檢測(cè)過程中樣本數(shù)據(jù)采集角度的不同,可以將檢測(cè)分為靜態(tài)分析與動(dòng)態(tài)分析:靜態(tài)分析不運(yùn)行待檢測(cè)程序,而是通過程序(如反匯編后的代碼)進(jìn)行分析得到數(shù)據(jù)特征,而動(dòng)態(tài)分析在虛擬機(jī)或仿真器中執(zhí)行程序,并獲取程序執(zhí)行過程中所產(chǎn)生的數(shù)據(jù)(如行為特征),進(jìn)行檢測(cè)和判斷。
惡意代碼樣本的有效采集是進(jìn)行代碼分析工作的基礎(chǔ)。當(dāng)結(jié)合機(jī)器學(xué)習(xí)算法進(jìn)行檢測(cè)時(shí),只有通過充分的樣本數(shù)據(jù)訓(xùn)練,分類模型才能更準(zhǔn)確地實(shí)現(xiàn)檢測(cè)功能。一般來講,惡意代碼樣本的獲取途徑有如下幾種。
1) 用戶端采樣:這是大多數(shù)殺毒軟件廠商的主要獲取方法,使用殺毒軟件的終端用戶將惡意代碼樣本上傳至廠商,該方法具有較好的實(shí)時(shí)性,但安全廠商的樣本數(shù)據(jù)往往選擇不對(duì)外開放,很難直接獲取。
2) 公開的網(wǎng)絡(luò)數(shù)據(jù)庫(kù):如VirusBulletin[5]、Open Malware[6]、VX Heavens[7]等,但相比惡意代碼的更新速度,現(xiàn)階段公開在線樣本系統(tǒng)較有限,且站點(diǎn)存在隱蔽性不足、易遭到攻擊的問題。因此,建立威脅情報(bào)的共享機(jī)制,日益突顯出其重要性。
3) 其他技術(shù)途徑:通過蜜罐(如Nepenthes蜜罐[8])等捕獲工具進(jìn)行搜集,即設(shè)計(jì)一個(gè)專門的具有脆弱性的系統(tǒng),誘導(dǎo)攻擊者進(jìn)行攻擊進(jìn)而得到惡意代碼樣本。一些木馬和網(wǎng)絡(luò)后門等也可以通過垃圾郵件陷阱或安全論壇(如卡飯論壇[9])的方式得到。不過,上述技術(shù)途徑的捕獲樣本規(guī)模較有限。
為了提取惡意代碼的靜態(tài)特征,往往需要先對(duì)程序代碼進(jìn)行逆向分析。常用的工具包括IDA Pro[10]、Hopper、OllyDbg等,其中,IDA Pro是交互式的反匯編器,它不僅可以產(chǎn)生惡意程序的匯編代碼,也具有識(shí)別函數(shù)塊、獲取輸入函數(shù)、描述函數(shù)流程圖等功能。
3.1 樣本特征的提取
1) 基于序列的特征類型
基于序列的特征類型在樣本特征的提取上應(yīng)用最為廣泛,其代表技術(shù)為元語法模型(-gram)。-gram假定個(gè)出現(xiàn)的詞只與之前出現(xiàn)的?1個(gè)詞相關(guān),其中,代表一個(gè)特征序列的長(zhǎng)度。如果考慮一個(gè)長(zhǎng)為的詞組集合,則元語法模型會(huì)通過滑動(dòng)窗口的形式,將詞組劃分為?+1個(gè)特征序列。例如,當(dāng)3-gram被應(yīng)用在詞集{PUSH, SUB, SAL, AND, DIV, LDS, POP}上(此時(shí)=7)時(shí),如圖2所示,會(huì)得到5個(gè)特征序列,每個(gè)序列包含3個(gè)詞元。
在詞元的選擇上,Abou-Assaleh等[11]首先提出了基于字節(jié)(Byte)序列的特征提取框架,并使用近鄰分類方法實(shí)現(xiàn)了惡意代碼的有效檢測(cè)。此外,Kolter[12]和Moskovitch[13]等也分別對(duì)基于字節(jié)的-gram方法進(jìn)行了測(cè)試和評(píng)估。另一類詞元選擇方式是基于操作碼(Opcode)的,Opcode是描述程序執(zhí)行操作的機(jī)器語言指令,相對(duì)于字節(jié)序列來講,具有更強(qiáng)的實(shí)際意義和可靠性,結(jié)合Opcode的特征提取可以更好地表征惡意代碼。文獻(xiàn)[14]基于Opcode序列完成了對(duì)惡意代碼進(jìn)化的追蹤。Siddiqui等[15]結(jié)合操作碼序列的方式,通過神經(jīng)網(wǎng)絡(luò)、決策樹等分類算法,實(shí)現(xiàn)了98.4%的檢測(cè)準(zhǔn)確率。Moskovitch等[16]進(jìn)一步使用超過3×104個(gè)文件的測(cè)試集,對(duì)基于Opcode序列的5種不同分類器進(jìn)行評(píng)估,對(duì)惡意代碼的檢測(cè)準(zhǔn)確率高達(dá)99%。
2) 基于字符串的特征類型
另一種特征類型的提取方式是基于程序代碼中的可輸出字符串[17,18],因?yàn)榭奢敵鲎址谀撤N程度上反映了待測(cè)程序的意圖。例如,從代碼中的“https://..”字符串可以推測(cè)程序的網(wǎng)絡(luò)連接意圖;而包含目錄路徑的字符串則說明程序可能嘗試讀取用戶文檔或注冊(cè)表信息等。文獻(xiàn)[18]選取了可執(zhí)行文件中100個(gè)可輸出字符串,以此為特征訓(xùn)練基于支持向量機(jī)的分類器,實(shí)現(xiàn)了99.38%的準(zhǔn)確率。與基于序列的特征類型相比,代碼中的字符串?dāng)?shù)量有限,因此提取的特征集具有較少的維度,在計(jì)算成本上可以實(shí)現(xiàn)有效的控制。
3) 基于API調(diào)用的特征類型
程序?qū)?yīng)用程序編程接口(API,application programming interface)調(diào)用也可以作為特征類型。文獻(xiàn)[19]對(duì)API調(diào)用進(jìn)行了討論,指出程序PE(portable executable)文件頭中的API信息不具有準(zhǔn)確性,因?yàn)閻阂獯a會(huì)在PE文件頭中夾雜錯(cuò)誤的API信息。Ding等[19]對(duì)反匯編后的代碼進(jìn)行API調(diào)用分析,利用惡意代碼和合法代碼應(yīng)用程序編程接口分布的差異性提取了基于API調(diào)用的程序特征。文獻(xiàn)[20]將代碼中的API調(diào)用序列轉(zhuǎn)化為對(duì)應(yīng)的馬爾可夫(Markov)鏈,有向圖中邊的權(quán)重表示調(diào)用API的狀態(tài)轉(zhuǎn)移概率。通過基于Markov鏈的特征提取,實(shí)現(xiàn)了對(duì)未知惡意軟件的有效分類。
3.2 樣本特征的選取
由于提取的數(shù)據(jù)特征常包含冗余信息,容易引起過度擬合問題,本節(jié)對(duì)數(shù)據(jù)特征選取的主要方法進(jìn)行介紹,其種類主要包括信息增益(IG,information gain)、增益率(GR,gainratio)、文檔頻率(DF,document frequency)、主成分分析(PCA,principal component analysis)等。
信息增益使用信息熵度量特征使用與否而導(dǎo)致的信息量差異。式(1)給出了樣本集合信息熵(基于子集合,如對(duì)集合的一個(gè)分類)的計(jì)算方式。
式(2)為信息增益的計(jì)算方法。
(2)
()度量了在特征的基礎(chǔ)上對(duì)樣本進(jìn)行劃分后,樣本信息熵的減少量,其中,()是特征的值域,S是中特征上值等于的樣本集合。對(duì)于計(jì)算結(jié)果,信息增益越顯著的特征屬性越重要,在選擇時(shí)具有更強(qiáng)的傾向性。
然而,信息增益方法會(huì)讓取值過多的特征擁有過大優(yōu)勢(shì)。增益率方法結(jié)合了特征在樣本數(shù)據(jù)分類中的影響,起到了降低上述偏差的作用。如式(3)和式(4)所示,S是包含個(gè)值的特征分割樣本而形成的子集,(,)是關(guān)于特征各值的熵。因此,對(duì)于信息增益相近的特征1和2,分組能力顯著(即較?。┑奶卣鲿?huì)被優(yōu)先選擇。
(4)
文檔頻率方法統(tǒng)計(jì)某特征項(xiàng)在樣本集中的出現(xiàn)頻率,并設(shè)定一個(gè)門限值,選取在文本中出現(xiàn)頻率超過門限值的特征項(xiàng)。且與IG和GR不同,DF不需要大量的先驗(yàn)信息,且原理簡(jiǎn)單,計(jì)算效率高,因此在實(shí)現(xiàn)上常與其他方法(如IG方法)一起使用,以提升特征選取的準(zhǔn)確度[19]。
主成分分析也是一類常見的特征選取方法,在靜態(tài)、動(dòng)態(tài)分析中常被用于實(shí)現(xiàn)對(duì)樣本數(shù)據(jù)的降維[20]。PCA通過線性變換,將原始數(shù)據(jù)投射到新的坐標(biāo)系下,并通過新空間中最大線性無關(guān)組對(duì)數(shù)據(jù)樣本進(jìn)行表達(dá),該線性無關(guān)組特征值的空間坐標(biāo)即PCA方法所選取的特征。與IG、DF等方法不同,PCA使用變換后的特征,而非原始特征的子集。
惡意代碼的靜態(tài)分析技術(shù),在應(yīng)對(duì)代碼混淆或加殼等情形時(shí),具有一定的局限性。為了保證代碼評(píng)估的準(zhǔn)確性,動(dòng)態(tài)分析技術(shù)利用虛擬機(jī)或仿真器執(zhí)行待測(cè)程序,監(jiān)控并收集程序運(yùn)行時(shí)顯現(xiàn)的行為特征,并根據(jù)特征數(shù)據(jù)實(shí)現(xiàn)惡意代碼的分類。
4.1 行為特征的提取
沙箱技術(shù)是收集行為特征的重要技術(shù)途徑,許多安全公司提供了Web版的沙箱接口,用以對(duì)上傳的程序樣本進(jìn)行動(dòng)態(tài)分析,生成行為分析報(bào)告。目前常見的沙箱工具有Anubis、Joe Sandbox、Cuckoo Sandbox、CWSandbox等。
動(dòng)態(tài)分析的重點(diǎn)是對(duì)監(jiān)控行為的類型進(jìn)行合理選擇。一般來講,基于行為分析的方案主要考察程序運(yùn)行過程中所涉及的以下方面:1) 系統(tǒng)文件的改變,如創(chuàng)建或修改文件;2) 注冊(cè)表鍵值的操作行為;3) 動(dòng)態(tài)鏈接庫(kù)(DLL,dynamic link library)的加載情況;4) 進(jìn)程訪問的情況;5) 系統(tǒng)服務(wù)行為,如開啟、創(chuàng)建或刪除服務(wù);6) 網(wǎng)絡(luò)訪問情況;7) 應(yīng)用程序編程接口(API)的調(diào)用。此外,一些解決方案[21]還對(duì)程序調(diào)用函數(shù)的數(shù)據(jù)信息進(jìn)行分析,這時(shí)污點(diǎn)標(biāo)簽設(shè)置方法常被結(jié)合使用。
文獻(xiàn)[22,23]結(jié)合行為報(bào)告的分析結(jié)果,對(duì)惡意代碼的行為特征進(jìn)行識(shí)別,借助機(jī)器學(xué)習(xí)算法對(duì)可執(zhí)行文件進(jìn)行分類。楊軼等[24]通過分析污點(diǎn)傳播的過程,識(shí)別不同的惡意代碼行為間控制指令和數(shù)據(jù)的依賴關(guān)系,從而比較惡意代碼的相似性。Imran等[25]通過隱馬爾可夫模型對(duì)待測(cè)樣本的動(dòng)態(tài)行為特征進(jìn)行描述,并借助機(jī)器學(xué)習(xí)算法實(shí)現(xiàn)分類。Anderson等[26]則通過動(dòng)態(tài)方式搜集程序指令序列,進(jìn)而生成基于馬爾可夫鏈的有向圖。根據(jù)組合圖核方法,得到指令序列圖的相似性矩陣,最終使用支持向量機(jī)對(duì)惡意代碼進(jìn)行判定,檢測(cè)準(zhǔn)確率達(dá)到96.41%。
4.2 行為特征的選取
許多沙箱工具,如Anubis和CWSandbox的輸出格式為文本或可擴(kuò)展標(biāo)記語言(XML,extensible markup language),這兩類格式更適用于小規(guī)模樣本的人工分析。具體來說,文本格式報(bào)告對(duì)行為特征的刻畫過于簡(jiǎn)單,粒度較粗,一些重要的行為不再可見;而XML格式下的分析報(bào)告表述又過于繁冗,不便于開展自動(dòng)化分析。為了高效處理行為分析數(shù)據(jù),Trinius等[27]提出基于惡意軟件指令集(MIST,malware instruction set)的行為數(shù)據(jù)描述方法,常被用來對(duì)其他格式(如XML格式)的行為報(bào)告進(jìn)行轉(zhuǎn)換,從而達(dá)到在行為數(shù)據(jù)中選取主要特征的目的。
MIST將程序行為的監(jiān)控結(jié)果描述為一系列指令,其中每個(gè)線程和進(jìn)程的執(zhí)行流被分組在一個(gè)連續(xù)的報(bào)告中。每條指令都對(duì)應(yīng)監(jiān)控到的一個(gè)系統(tǒng)調(diào)用(system call)及其調(diào)用到的參數(shù)(argument),指令以短數(shù)值的方式予以標(biāo)識(shí)。此外,系統(tǒng)調(diào)用的具體參數(shù)被分隔在不同等級(jí)的塊中,反映不同程度的行為粒度。
如圖3所示,CATEGORY表示系統(tǒng)調(diào)用的類別,而OPERATION對(duì)應(yīng)某個(gè)特定的系統(tǒng)調(diào)用。如‘12 0a’代表類別Winsock(12)和對(duì)應(yīng)的系統(tǒng)調(diào)用connect_socket(0a)。ARGBLOCK1~ ARGBLOCK代表各個(gè)參數(shù),在參數(shù)塊的編排上,低級(jí)別參數(shù)塊編碼相對(duì)穩(wěn)定的、具備高區(qū)分度的屬性(如產(chǎn)生新文件的目錄),而高級(jí)別參數(shù)塊包含更易變化的“噪聲”屬性(如生成的文件名稱)。MIST指令序列結(jié)構(gòu)確保在少數(shù)指令不同的情況下,不同的惡意代碼變種可以被迅速識(shí)別。
MIST報(bào)告可以進(jìn)一步通過向量空間模型(VSM,vector space model)進(jìn)行向量化,生成可用于機(jī)器學(xué)習(xí)算法分類的數(shù)據(jù)。在特征項(xiàng)和特征項(xiàng)權(quán)重的計(jì)算上,可運(yùn)用詞袋模型(BOW,bag of words)。詞袋模型的示例如下,假設(shè)有下述2個(gè)文件。
1) Samuel detected a malware. I detected the malware too.
2) The malware was detected by us.
基于上述2個(gè)文件,可以構(gòu)建一個(gè)詞匯表。
詞匯表={1.“Samuel”,2.“detected”,3.“a”,4.“malware”,5.“I”,6.“the”,7.“too”,8.“was”,9.“by”,10.“us”}。這個(gè)詞匯表一共包含10個(gè)不同的單詞,利用索引號(hào),上面2個(gè)文件可分別用10維向量表示(向量中元素為詞表單詞在文件中出現(xiàn)的頻率)。
1) [1,2,1,2,1,1,1,0,0,0]
2) [0,l,0,1,0,1,0,1,1,1]
利用詞袋模型,經(jīng)過MIST處理后的指令語句將作為VSM模型中的特征項(xiàng),指令的出現(xiàn)頻率即為特征項(xiàng)的權(quán)重,以建立惡意代碼的向量空間數(shù)據(jù),這樣就可以利用機(jī)器學(xué)習(xí)算法(如支持向量機(jī))進(jìn)行惡意代碼的分類。
惡意代碼進(jìn)行靜態(tài)、動(dòng)態(tài)分析后得到的特征數(shù)據(jù),可以作為機(jī)器學(xué)習(xí)算法訓(xùn)練的輸入,產(chǎn)生相應(yīng)的惡意代碼分類器。本節(jié)對(duì)常見的算法,如近鄰(KNN,nearest neighbor)[11]、支持向量機(jī)(SVM,support vector machine)[26]、樸素貝葉斯(Na?ve Bayes)[16]、決策樹(DT,decision tree)[15]、隨機(jī)森林(RF,randomforest)[20],以及深度學(xué)習(xí)算法(如卷積神經(jīng)網(wǎng)絡(luò)(CNN,convolutional neural network))[28,29]進(jìn)行介紹。
KNN算法是最直觀的機(jī)器學(xué)習(xí)算法之一,樣本的分類由距樣本點(diǎn)最近的個(gè)鄰居決定,個(gè)鄰居中大多數(shù)節(jié)點(diǎn)所在的類別即為分類結(jié)果。惡意代碼檢測(cè)常用到二分分類,這時(shí)一個(gè)有效方式是將設(shè)置為奇數(shù),有利于避免出現(xiàn)距離相同的兩類節(jié)點(diǎn)。距離計(jì)算上,習(xí)慣使用的方式包括Euclidean距離和Manhattan距離。KNN的一大優(yōu)勢(shì)是支持“增進(jìn)式學(xué)習(xí)”,即訓(xùn)練集的新增樣本可以作為增量進(jìn)行訓(xùn)練,不需要重新對(duì)模型進(jìn)行重訓(xùn)練。
SVM算法嘗試找尋一個(gè)線性超平面進(jìn)行二分分類,如圖4所示,該平面距離兩類樣本(兩條虛線)的距離相同,通過超平面可以將樣本進(jìn)行劃分。其中,虛線是通過支持向量的方式構(gòu)建的。SVM和KNN算法在處理規(guī)模較小的樣本時(shí)較為有效,但隨著數(shù)據(jù)集的增加,SVM和KNN的計(jì)算成本均較大。
樸素貝葉斯是計(jì)算復(fù)雜度較低的分類方法,該方法基于貝葉斯定理,并默認(rèn)特征之間相互獨(dú)立。當(dāng)某樣本具有個(gè)特征,總共類別數(shù)量為時(shí),樸素貝葉斯分類器分別計(jì)算每個(gè)分類的后驗(yàn)概率,如式(5)所示,算法根據(jù)計(jì)算結(jié)果選擇概率最大的分類。
決策樹算法是另一類重要的機(jī)器學(xué)習(xí)算法,分類器以樹結(jié)構(gòu)的形式表達(dá),樹的中間節(jié)點(diǎn)(包括根節(jié)點(diǎn))是不同的特征,從根節(jié)點(diǎn)往下逐一匹配,判斷得到的葉子節(jié)點(diǎn)即為分類結(jié)果。一般可以通過啟發(fā)式貪心搜索獲得最小的決策樹,其實(shí)現(xiàn)方式之一是利用信息增益方法對(duì)數(shù)據(jù)集進(jìn)行劃分。
隨機(jī)森林算法是由一系列決策樹構(gòu)成的分類器,森林中每棵樹都由一部分獨(dú)立取樣的數(shù)據(jù)樣本進(jìn)行訓(xùn)練,待測(cè)樣本在每棵樹中進(jìn)行判斷,所有輸出中頻次最高的分類即為RF算法的判斷結(jié)果。DT和RF分類算法的優(yōu)勢(shì)在于特征的類型可以不一致,因此能夠結(jié)合多類特征(字符串特征、序列特征等)進(jìn)行判斷。
深度學(xué)習(xí)框架下包含多類算法,其中卷積神經(jīng)網(wǎng)絡(luò)是一個(gè)多層的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),由卷積層、次抽樣層和全連接層組成,卷積層和次抽樣層在中間層重復(fù)出現(xiàn),全連接層在底層用于輸出分類結(jié)果。CNN的訓(xùn)練一般借助反向傳播BP算法,BP算法通過正向數(shù)據(jù)流和反向誤差信號(hào)這2個(gè)傳播過程,逐步調(diào)整各層的函數(shù)參數(shù)。雖然可以提供不錯(cuò)的分類效果,但CNN訓(xùn)練過程相對(duì)比較復(fù)雜[28]。此外,深度學(xué)習(xí)算法也可用于惡意代碼的特征提取。在文獻(xiàn)[29]中,Huang等使用微軟提供的目前為止最大的樣本集(4.5×106個(gè)文件),利用深度學(xué)習(xí)框架構(gòu)造惡意軟件的有效分類工具M(jìn)tNet。此外,由文獻(xiàn)[29]可知,就惡意代碼檢測(cè)的效果來說,訓(xùn)練層數(shù)的增加并不能顯著提升檢測(cè)率和誤判率(1~2層時(shí),即可實(shí)現(xiàn)較優(yōu)檢測(cè))。
在網(wǎng)絡(luò)攻擊日益復(fù)雜、惡意代碼層出不窮的今天,機(jī)器學(xué)習(xí)算法在惡意代碼檢測(cè)中的應(yīng)用逐漸受到學(xué)術(shù)界和眾多安全廠商的重視。本文對(duì)基于機(jī)器學(xué)習(xí)算法惡意代碼檢測(cè)的技術(shù)方法和主流方案進(jìn)行了梳理和討論,這一工作將為新型主機(jī)惡意代碼檢測(cè)技術(shù)的設(shè)計(jì)和實(shí)現(xiàn)提供重要參考。但該領(lǐng)域仍屬于發(fā)展階段,還存在著許多未來工作和挑戰(zhàn),對(duì)其歸納如下。
1) 靜態(tài)分析檢測(cè)速度快、系統(tǒng)資源占用少,但隨著代碼混淆、加殼等反檢測(cè)技術(shù)的發(fā)展,靜態(tài)分析的準(zhǔn)確性受到一定程度的限制。動(dòng)態(tài)分析技術(shù)需要運(yùn)行被測(cè)代碼,在效率上存在局限性。一個(gè)主流的發(fā)展方向是將靜態(tài)、動(dòng)態(tài)分析技術(shù)進(jìn)行有效結(jié)合,全方位地對(duì)待測(cè)代碼進(jìn)行評(píng)估。
2) 機(jī)器學(xué)習(xí)算法可以提供高準(zhǔn)確率的惡意代碼分類,但分類器一般作為黑盒機(jī)制被加以使用,安全人員缺乏對(duì)結(jié)果的理解。結(jié)果往往在不質(zhì)疑分類器性質(zhì)的情況下直接被使用,因此分類結(jié)果受經(jīng)驗(yàn)閾值和數(shù)據(jù)特征的影響,出現(xiàn)一定傾向性。研究傳統(tǒng)量化分析(如準(zhǔn)確率、誤報(bào)率)之外的統(tǒng)計(jì)學(xué)方法,如可信度(credibility),科學(xué)地評(píng)價(jià)和比較底層的機(jī)器學(xué)習(xí)算法,是未來一項(xiàng)重要的研究工作。
3) 在考慮敵手視角時(shí),如果攻擊者也通過機(jī)器學(xué)習(xí)技術(shù)優(yōu)化惡意代碼的設(shè)計(jì),對(duì)攻擊目標(biāo)畫像并實(shí)現(xiàn)精準(zhǔn)攻擊,該如何應(yīng)對(duì)?同時(shí),又該如何保證機(jī)器學(xué)習(xí)引擎不被攻擊者“投毒”,防止出現(xiàn)干擾項(xiàng)致使訓(xùn)練出錯(cuò)產(chǎn)生誤判,這些都是需要進(jìn)一步研究和思考的問題。
[1] 國(guó)家互聯(lián)網(wǎng)應(yīng)急中心. 2015年中國(guó)互聯(lián)網(wǎng)網(wǎng)絡(luò)安全報(bào)告[EB/OL]. http://www.cert.org.cn/publish/main/upload/File/2015annualreport.pdf.
CNCERT/CC. 2015 China cyber security report[EB/OL]. http:// www.cert.org.cn/publish/main/upload/File/2015annualreport.pdf.
[2] ZHANG Y, WANG X, PERRIG A, et al. Tumbler: adaptable link access in the bots-infested Internet[J].Computer Networks, 2016, 105: 180-193.
[3] 360威脅情報(bào)中心. 2016中國(guó)高級(jí)持續(xù)性威脅(APT)研究報(bào)告[EB/OL].http://zt.#/1101061855.php?dtid=1101062514&did= 490274251.
360 Threat Intelligence Center. 2016 China APT research report[EB/OL]. http://zt.#/1101061855.php?dtid=1101062514&did= 490274251.
[4] COHEN P. Models of practical defenses against computer viruses[J]. Computers & Security,1989, 8(2):149-160.
[5] VirusBulletin[EB/OL]. https://www.virusbulletin.com/resources/ wildlists/.
[6] Open Malware[EB/OL]. http://www.offensivecomputing.net/.
[7] VX Heavens[EB/OL]. http://vxheaven.org/.
[8] BAECHER P, KOETTER M, HOLZ T, et al. The nepenthes platform: an efficient approach to collect malware[C]//The International Symposium on Recent Advances in Intrusion Detection (RAID). 2006:165-184.
[9] 卡飯論壇[EB/OL]. http://bbs.kafan.cn.
Kaspersky Forum [EB/OL]. http://bbs.kafan.cn.
[10] HEX-RAYS SA. IDA pro introduction[EB/OL]. http://www. hex-rays. com/products.shtml/.
[11] ABOU-ASSALEH T, CERCONE N, KESELJ V, et al. N-gram-based detection of new malicious code[C]//The 28th Annual International Computer Software and Applications Conference (COMPSAC). 2004:41-42.
[12] KOLTER J Z, MALOOF M A. Learning to detect and classify malicious executables in the wild[J]. The Journal of Machine Learning Research, 2006(7):2721-2744.
[13] MOSKOVITCH R, STOPEL D, FEHER C, et al. Unknown malcode detection via text categorization and the imbalance problem[C]//IEEE International Conference on Intelligence and Security Informatics (ISI). 2008:156-161.
[14] KARIM M E, WALENSTEIN A, LAKHOTIA A, et al. Malware phylogeny generation using permutations of code[J]. Journal in Computer Virology, 2005,1(1/2):13-23.
[15] SIDDIQUI M, WANG M C, LEE J. Data mining methods for malware detection using instruction sequences[C]//The Artificial Intelligence and Applications (AIA). 2008.
[16] MOSKOVITCH R, FEHER C, TZACHAR N, et al. Unknown malcode detection using opcode representation[C]//European Conference on Intelligence and Security Informatics(EuroISI). 2008: 204-215.
[17] SCHULTZ M G, ESKIN E, ZADOK F, et al. Data mining methods for detection of new malicious executables[C]//IEEE Symposium on Security and Privacy (S&P). 2001:38-49.
[18] LAI Y. A feature selection for malicious detection[C]//The 9th International Conference on Software Engineering, Artificial Intelligence, Networking, and Parallel/Distributed Computing. 2008: 365-370.
[19] DING Y, YUAN X, TANG K, et al. A fast malware detection algo-rithm based on objective-oriented association mining[J]. Computers &Security, 2013, 39:315-324.
[20] MARICONTI E, ONWUZURIKE L, ANDRIOTIS P, et al. MA-MADROID: detecting android malware by building Markov chains of behavioral models[C]//The Symposium on Network and Distributed System Security (NDSS). 2017.
[21] SCHWARTZ E J, AVGERINOS T, BRUMLEY D. All you ever wanted to know about dynamic taint analysis and forward symbolic execution (but might have been afraid to ask)[C]//IEEE Symposium on Security and Privacy (S&P). 2010:317-331.
[22] CHRISTODORESCU M, JHA S, KRUEGEL C. Mining specifications of malicious behavior[C]//The 1st India Software Engineering Conference. 2008:5-14.
[23] RIECK K, HOLZ T, WILLEMS C, et al. Learning and classification of malware behavior[C]//The International Conference on Detection of Intrusions and Malware, and Vulnerability Assessment (DIMVA). 2008:108-125.
[24] 楊軼, 蘇璞睿, 應(yīng)凌云, 等. 基于行為依賴特征的惡意代碼相似性比較方法[J]. 軟件學(xué)報(bào), 2011, 22(10): 2438-2453.
YANG Y, SU P, YING L, et al. Dependency-based malware similarity comparison method[J]. Journal of Software, 2011, 22(10): 2438-2453.
[25] IMRAN M, AFZAL M T, QADIR M A. Malware classification using dynamic features and hidden markov model[J]. Journal of Intelligent & Fuzzy Systems, 2016, 31(2):837-847.
[26] ANDERSON B, QUIST D, NEIL J, et al. Graph-based malware detection using dynamic analysis[J]. Journal in Computer Virolo-gy, 2011, 7(4): 247-258.
[27] TRINIUS P, WILLEMS C, HOLZ T, et al. A malware instruction set for behavior-based analysis[C]//The 5th GI Conference on Sicherheit, Schutz und Zuverl assigkeit. 2010:205-216.
[28] 楊曄. 基于行為的惡意代碼檢測(cè)方法研究[D]. 西安: 西安電子科技大學(xué), 2015.
YANG Y. Research on detection method of malware based on behavior[D]. Xi’an: Xidian University, 2015.
[29] HUANG W, STOKES J W. MtNet: a multi-task neural network for dynamic malware classification[C]//The International Conference on Detection of Intrusions and Malware, and Vulnerability Assessment(DIMVA). 2016: 399-418.
Research on host malcode detection using machine learning
ZHANG Dong, ZHANG Yao, LIU Gang, SONG Gui-xiang
(Inspur Electronic Information Industry Co.,Ltd, Beijing 100085, China)
Main trends of host malcode detection using machine learning were focused on, and two categories of detection models(namely static analysis and dynamic analysis) were well discussed. Moreover, the critical stages such as malcode samples collection, feature extraction and selection, the construction of machine learning classifiers were considered fully. At last, some future work and challenges in this field were listed. The work can serve as a practical reference for establishing next-generation malcode detection techniques.
malcode detection, machine learning, static analysis, dynamic analysis, classification model
TP309
A
10.11959/j.issn.2096-109x.2017.00179
張東(1974-),男,山東威海人,浪潮電子信息產(chǎn)業(yè)股份有限公司高級(jí)工程師,主要研究方向?yàn)橄到y(tǒng)軟件安全。
張堯(1988-),男,湖北襄陽人,博士,浪潮電子信息產(chǎn)業(yè)股份有限公司研究員,主要研究方向?yàn)榫W(wǎng)絡(luò)安全、主機(jī)系統(tǒng)安全與應(yīng)用密碼學(xué)。
劉剛(1979-),男,四川德陽人,碩士,浪潮電子信息產(chǎn)業(yè)股份有限公司工程師,主要研究方向?yàn)椴僮飨到y(tǒng)安全、可信計(jì)算與云安全。
宋桂香(1978-),女,山東鄆城人,浪潮電子信息產(chǎn)業(yè)股份有限公司工程師,主要研究方向?yàn)榘踩珳y(cè)評(píng)。
2017-06-12;
2017-07-02。
張堯,zhangyaobj@inspur.com