• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于線程融合特征的Windows惡意代碼檢測與分析

      2020-12-07 08:20:26蘆天亮杜彥輝暴雨軒
      計算機(jī)工程與應(yīng)用 2020年23期
      關(guān)鍵詞:沙箱線程調(diào)用

      周 楊,蘆天亮,杜彥輝,郭 蕊,暴雨軒,李 默

      中國人民公安大學(xué) 警務(wù)信息工程與網(wǎng)絡(luò)安全學(xué)院,北京 100038

      1 引言

      惡意代碼的種類繁多,主要分為幾個大類:勒索病毒、挖礦程序、木馬、蠕蟲病毒、感染型病毒、后門程序、木馬程序等。根據(jù)國家計算機(jī)病毒應(yīng)急處理中心的每月計算機(jī)病毒疫情分析[1],2019年3月發(fā)現(xiàn)新增病毒700余萬個,到5 月升至1 967 余萬個,到8 月更是發(fā)現(xiàn)新增病毒4 791萬個?;ㄖ噶睢⒂嬎銠C(jī)程序模塊化、代碼混淆等技術(shù)的發(fā)展更是大大降低了惡意代碼的制作和傳播成本。但有專家估計,這些檢測到的惡意代碼僅不到網(wǎng)絡(luò)上所有惡意代碼的1/2[2],有超過近50%的惡意代碼,甚至在出現(xiàn)后的三個月內(nèi)仍然無法被檢測出來[3-4]。面對日益強(qiáng)大的惡意代碼生態(tài)鏈,急需更多的研究去分析惡意代碼的本質(zhì)規(guī)律,用最具代表性的特點區(qū)分惡意代碼和正常樣本。

      按照分析原理對惡意代碼分析方法進(jìn)行分類,通常分為動態(tài)分析、靜態(tài)分析及混合式分析。靜態(tài)分析無須運行惡意代碼,在靜態(tài)環(huán)境下借助工具將二進(jìn)制文件進(jìn)行反匯編并對其提取行為數(shù)據(jù),常包括函數(shù)調(diào)用名、文件結(jié)構(gòu)信息、導(dǎo)入表、字符串、控制流等。例如,2014年Shi H B 等人[5]通過提取靜態(tài)鏈接庫信息,以構(gòu)建惡意代碼樣本特征。靜態(tài)分析方法簡明、耗時少,但僅僅只能檢測已經(jīng)識別到的惡意代碼,并且對于惡意代碼混淆、加殼、干擾、變形等方式束手無策,因此靜態(tài)分析存在誤報率高、檢測率低的缺陷。

      動態(tài)分析恰恰能避免這些缺點,動態(tài)分析以一個虛擬環(huán)境真實運行惡意代碼樣本并收集程序執(zhí)行中的所有信息,沙箱是用于此目的典型系統(tǒng)。在動態(tài)方法中生成的常見行為數(shù)據(jù)類型包括系統(tǒng)調(diào)用名稱,上下文中的參數(shù)、環(huán)境變量等。當(dāng)前許多安全平臺及安全專家都使用動態(tài)特征來進(jìn)行惡意代碼的分析與檢測,龔琪等人用APIs序列[6]、API調(diào)用類別特征頻繁度[7]等方法在區(qū)分勒索病毒和正常樣本時都取得了良好的效果。但此類檢測方法耗費大量的計算量及計算時間,并且在描述惡意行為的方面僅針對一類病毒,不具有普適性。

      動靜態(tài)結(jié)合是將動態(tài)特征及靜態(tài)特征結(jié)合作為區(qū)分特征,Damodaran A 等人[8]在 2017 年對比了動態(tài)、靜態(tài)及混合分析三種分析方式的效果發(fā)現(xiàn),基于動靜態(tài)結(jié)合的方法不一定優(yōu)于純動態(tài)分析,因為動靜態(tài)分析產(chǎn)生特征的天然差別難以進(jìn)行交叉檢驗,混淆技術(shù)雖然容易破壞操作碼序列,但如果不加入其他的針對API序列的混淆,很難對API序列產(chǎn)生影響。

      線上惡意代碼共享庫的泛濫,代碼混淆、變形、多態(tài)等技術(shù)的出現(xiàn),使惡意代碼數(shù)量以前所未有的速度暴增,靜態(tài)分析手段已無法應(yīng)對。但即使改變了惡意代碼的句法結(jié)構(gòu),絕大多數(shù)惡意代碼的執(zhí)行都需要基于Microsoft Windows 提供的多種API 接口,方便調(diào)用API以使用來自操作系統(tǒng)的服務(wù)[9],實現(xiàn)其惡意任務(wù),動態(tài)分析手段可以將惡意代碼在虛擬環(huán)境中運行,抓取所有API 調(diào)用信息及參數(shù)。因此應(yīng)對當(dāng)前暴增的多種技術(shù)混淆、變形的惡意代碼環(huán)境,動態(tài)分析技術(shù)顯得更有優(yōu)勢。

      盡管惡意代碼會調(diào)用的API類別與正常程序相同,可是這些API 的調(diào)用順序及它們各自的函數(shù)返回值不同卻表示完全不同的意圖、達(dá)到完全不同的結(jié)果。因此,僅僅關(guān)注全局API 調(diào)用序列是完全不夠的,還要考慮不同API的參數(shù)、順序等因素導(dǎo)致不同的線程完成的功能。由此可見,動態(tài)行為特征的界定取決于所選取的行為特征及對行為特征進(jìn)行的處理。Galal H S等人[9]在2016年提出基于語義的方法使用語義規(guī)則或行為判斷來深入了解惡意代碼行為,給本文提供了思路。本文先在沙箱系統(tǒng)內(nèi)運行可執(zhí)行文件,用Python腳本從.json格式的動態(tài)分析報告中抽取API調(diào)用信息,再以線程為單位將各個函數(shù)APIs以時間序列排序,抽取API在函數(shù)中的調(diào)用時序、返回值等參數(shù),利用統(tǒng)計和計算兩種方法構(gòu)建兩種惡意代碼特征模型。一類統(tǒng)計特征在API宏觀數(shù)量上概括惡意代碼行為與正常樣本的差異;另一類計算特征計算每個API 在線程內(nèi)的調(diào)用情況及各個API 在所屬類別中的TF-IDF 值。將兩類特征向量化后用改進(jìn)的Vec-LR 算法進(jìn)行檢驗,發(fā)現(xiàn)此類特征模型及本文算法在區(qū)別正常樣本及惡意代碼的效果良好,能達(dá)到94.37%,而后又采用不同的樣本集將本文算法與常見殺毒軟件進(jìn)行比較,發(fā)現(xiàn)該模型在檢測未知惡意樣本時仍然表現(xiàn)良好,檢測率在90%以上。

      2 行為特征構(gòu)建

      2.1 行為特征收集

      本文選用的Cuckoo沙箱[10]是一款用Python語言編寫的開源自動化惡意代碼分析系統(tǒng)。它可以將未知、不可信的軟件隔離執(zhí)行。Cuckoo 沙箱通過虛擬網(wǎng)絡(luò)將Host 機(jī) 器 與 Guest 機(jī) 器 連 接 ,Guest 機(jī) 通 過 Cuckoo Agent程序來完成對Cuckoo運行的監(jiān)控,Host機(jī)負(fù)責(zé)運行Cuckoo 主程序、收集分析報告。Cuckoo 可自動將所有未知軟件放在隔離環(huán)境中動態(tài)執(zhí)行,并提取其運行過程中的動態(tài)行為,例如:文件行為、進(jìn)程行為、網(wǎng)絡(luò)行為等,并且Cuckoo 沙箱能夠跟蹤記錄惡意軟件所有的調(diào)用狀況;惡意樣本文件行為:例如讀取文件、下載文件、創(chuàng)建新文件、修改文件或刪除文件等行為;獲取惡意軟件的內(nèi)存鏡像;以PCAP 格式記錄惡意軟件的網(wǎng)絡(luò)流量;在惡意代碼運行過程中還能截取系統(tǒng)的屏幕截圖;獲取執(zhí)行惡意代碼的Guest機(jī)的完整內(nèi)存鏡像等。所有截取到的信息,都會以.json 文件的形式生成報告提取在Host機(jī)器中。惡意代碼樣本大小及功能不一,因此在Cuckoo 沙箱中的運行時間也不盡一致,本文選取的樣本大小在1 KB~10 MB之間,平均運行時間約為210 s。

      2.2 API調(diào)用序列構(gòu)建

      傳統(tǒng)的惡意代碼研究常計算惡意代碼API 種類的調(diào)用頻率,或以全局模式構(gòu)建API 調(diào)用序列,這兩種構(gòu)建方式僅針對一種特征,難以描述惡意代碼的行為,并且以全局模式構(gòu)建API序列,或因數(shù)據(jù)量限制而無法收集足夠多的信息,或因收集信息過多占用過大的空間及時間代價。

      進(jìn)程中的實際運作單位是線程,一個進(jìn)程內(nèi)包含一個或多個線程,且線程是CPU 調(diào)度的最小單位。進(jìn)程中的線程并行執(zhí)行,每條線程都是一條單一順序控制流,一個進(jìn)程可并發(fā)多條線程以執(zhí)行不同的任務(wù)。API調(diào)用順序以全局模式來看僅僅只能記錄API 的調(diào)用情況,而不能刻畫API 調(diào)用序列所完成的任務(wù)。API 調(diào)用均屬于一個函數(shù)線程,以線程為單位提取API 調(diào)用信息,可以提高信息提取數(shù)量級且有一定的分類性。Cuckoo沙箱生成的.json報告中單個API的調(diào)用信息包含該函數(shù)所屬的類別、函數(shù)名稱、函數(shù)操作返回值、函數(shù)運行的系統(tǒng)時間及其所屬線程等關(guān)鍵參數(shù)。

      根據(jù)API所屬線程及時間兩個參數(shù),可以時序地提取每個線程的所有API操作,對于API調(diào)用超過5 000的線程,按順序保留前5 000 次調(diào)用信息,將每個線程的API以系統(tǒng)時間進(jìn)行排列。最終保留的信息如表1所示。

      表1 文件調(diào)用參數(shù)

      2.3 行為特征提取

      若直接使用API 序列[6]作為特征,冗長的序列及序列比對會產(chǎn)生極大的計算量。特征頻繁度[7]計算可以解決數(shù)據(jù)過于龐大導(dǎo)致的計算問題,可樣本中大量打開、關(guān)閉文件等操作的調(diào)用頻繁度很高,而此類API不能代表惡意代碼的惡意行為,將會影響樣本特征區(qū)分度。因此本文將構(gòu)建兩類特征:一類統(tǒng)計特征,以解決大量的序列造成的數(shù)據(jù)量過大的問題,并以統(tǒng)計方式在API調(diào)用總數(shù)上將惡意代碼與正常樣本進(jìn)行區(qū)分;另一類計算特征,將計算API 調(diào)用的參數(shù)作為特征值,并計算每一類API 的TF-IDF 值,以數(shù)值的形式直觀地提高特征區(qū)分性能,借用ONE-HOT一位有效編碼的思想將TF-IDF值計算特征向量化,最后以樣本編號為主鍵合并為Data Frame形成本文的行為特征集。

      2.3.1 構(gòu)建統(tǒng)計特征

      API統(tǒng)計特征能在API總數(shù)上粗略呈現(xiàn)惡意代碼及正常樣本的行為數(shù)量級差異,例如惡意代碼在調(diào)用API頻率、調(diào)用線程數(shù)量、消耗系統(tǒng)空間及調(diào)用參數(shù)等方面與正常樣本均有區(qū)別,統(tǒng)計特征能概括大部分惡意代碼及正常樣本系統(tǒng)操作頻度的不同。統(tǒng)計特征包括API調(diào)用數(shù)量、類別、線程數(shù)量、API返回值等12維統(tǒng)計特征如表2所示。

      表2 統(tǒng)計特征

      2.3.2 構(gòu)建計算特征

      (1)單個API計算特征

      CPU中的最小調(diào)度單位為線程,線程中某類API的調(diào)用頻率、調(diào)用順序及返回值,能概括該線程完成的任務(wù)并反應(yīng)該線程在惡意代碼操作中的重要性,例如某線程50%以上的API 都在進(jìn)行讀取文件目錄及讀取文件的操作,該線程完成的任務(wù)很有可能是遍歷系統(tǒng)文件判斷是否處于虛擬機(jī)環(huán)境并決定下一步的任務(wù)進(jìn)行。API的調(diào)用類別也能作為區(qū)分正常樣本與惡意代碼的依據(jù)之一,例如Wannacry 病毒在生成隨機(jī)加密會話密鑰或公鑰/私鑰對時調(diào)用的CryptGenKey函數(shù),就是正常樣本里很少出現(xiàn)的API 種類。本文中所有正常樣本包含的API種類為310種,惡意代碼為351種。API統(tǒng)計特征函數(shù)返回值為0代表該函數(shù)操作正常完成,因此統(tǒng)計線程中該API 返回值為0 的次數(shù)及返回值為0 的次數(shù)占該API 調(diào)用次數(shù)的比率有助于分析線程內(nèi)操作的執(zhí)行情況及該API在線程內(nèi)的重要程度。根據(jù)2.2節(jié)中構(gòu)建的文件調(diào)用參數(shù),計算得出以線程為單位的單個API計算特征如表3所示。

      表3 API計算特征

      (2)TF-IDF計算特征

      API 對于單個線程或單個樣本的重要程度不足以作為所屬類別樣本的分類依據(jù)。而TF-IDF值可以評估單個API對于一類樣本的重要程度,表示該API的區(qū)分力。TF-IDF的主要思想是:若某一類別API在一類樣本中的調(diào)用頻率高,且在其他類別中調(diào)用頻率低,則判斷此類API具有強(qiáng)區(qū)分能力,適合用于樣本分類。TF-IDF值不論大小均有評判價值,TF-IDF值大則表示此類API在類別區(qū)分中具有強(qiáng)區(qū)分力,反之TF-IDF 值越小則表示區(qū)分力越弱。而TF-IDF 值為0 則表示此類API 未在該樣本中出現(xiàn)。

      TF-IDF:TF*IDF,TF 表示APIi在樣本j中出現(xiàn)的頻率,它可表示為:

      ni,j是該APIi在樣本j中的調(diào)用次數(shù),是樣本j中API的總調(diào)用次數(shù)和。但打開文件、關(guān)閉文件這一類的API,在某些正常樣本中出現(xiàn)的頻數(shù)也很高,就無法將此類API 作為區(qū)分的標(biāo)準(zhǔn),IDF 值正好能篩減這一類API,IDF表示逆向文件詞頻,即如果這一類API在正常及惡意樣本中出現(xiàn)頻率都極高,則該API 的IDF 值極低,反之。它可表示為:

      |D|表示樣本的總數(shù),j表示包含該API的樣本數(shù)目。某類API在一類樣本中高頻調(diào)用,且該類API在整個樣本集合中低頻調(diào)用,可以產(chǎn)生出高權(quán)重的TF-IDF 值。因此,TF-IDF 值的大小可以表示此類API 的重要程度,TF-IDF越大,則表示該API在類別區(qū)分中具有越好的區(qū)分度。

      2.3.3 特征向量編碼

      統(tǒng)計特征將形成12 維向量,計算特征將形成6×m維向量,其中6為表3中的5類計算特征及TF-IDF值,共6類計算特征;m表示所有樣本調(diào)用的API種類數(shù)。將統(tǒng)計特征及計算特征以樣本編號為唯一主鍵進(jìn)行合并,將生成6m+12 維向量作為樣本特征向量。

      3 Vec-LR算法

      LR算法采用sigmoid函數(shù)做分類,由于該函數(shù)值域為(0,1)。因此最基本的LR分類器適合于對二分類(類0,類1)目標(biāo)進(jìn)行分類。函數(shù)形式為:

      由式(3)可見決定函數(shù)值域的關(guān)鍵變量為Z,將Z權(quán)值化代入Logistic函數(shù)中構(gòu)造出預(yù)測函數(shù),為:

      判別新樣本需要計算出一個Z值,經(jīng)典的LR算法使用梯度下降函數(shù),計算出的θ更新過程為:

      式中,i表示樣本序號,j表示屬性序號,α表示步長,該公式將一直被迭代執(zhí)行,直到函數(shù)值收斂。

      LR 算法使用梯度下降函數(shù)進(jìn)行迭代來計算θ更新,需要一個for 語句循環(huán)m次,沒有完全地實現(xiàn)向量化。改進(jìn)的Vec-LR 算法中的Vectorization 向量化使用矩陣計算來代替for 循環(huán)。X矩陣的每一行為一個訓(xùn)練樣本,而每一列為單個樣本不同的特稱取值。下面為向量化過程:

      θ的更新過程可以改為:

      至此α的取值變成了梯度下降的關(guān)鍵點,要確保梯度下降算法正確運行,需要保證θ在每一步迭代中都減小。α的取值判斷準(zhǔn)則是:如果θ變小了表明取值正確,否則減小α的值。

      4 實驗及結(jié)果

      4.1 實驗數(shù)據(jù)及實驗環(huán)境

      本文選取Windows 惡意代碼及正常樣本作為實驗對象,惡意代碼來自全球www.malware-traffic-analysis.net公開網(wǎng)站[11]。共收集4 000多個惡意代碼樣本,其中7類已知及1 類未知樣本;正常樣本數(shù)據(jù)集來自360 官方下載安裝包,根據(jù)樣本大小及使用比例共收集了10類軟件(例如:辦公軟件、驅(qū)動工具、圖形圖像、音頻視頻等,共計1 400 個)在投入沙箱運行之后,經(jīng)過篩選留下1 100個惡意代碼樣本及1 079 個正常樣本的.json 文件,為了保證正常樣本數(shù)量和惡意代碼樣本數(shù)量平均,本文最終保留惡意代碼及正常樣本各1 000個.json文件作為實驗數(shù)據(jù)。正常樣本及惡意樣本的類別及數(shù)量如表4所示。

      表4 實驗中所使用的樣本

      為保證數(shù)據(jù)處理環(huán)境及沙箱運行環(huán)境互不干擾,本文將數(shù)據(jù)分析系統(tǒng)與沙箱環(huán)境系統(tǒng)分別搭在兩臺電腦上,系統(tǒng)環(huán)境參數(shù)如表5。

      表5 實驗環(huán)境

      4.2 實驗結(jié)果

      4.2.1 與常見算法比較

      通過上述特征提取方式,生成特征向量,轉(zhuǎn)化為Data Frame的格式,數(shù)據(jù)為:其中m為特征的維度,N=2 000 為惡意代碼樣本與正常樣本總和,yi為樣本類別,共有0(正常)、1(惡意)兩種。使用本文算法進(jìn)行處理分類,并與SVM、Random Forest、Decision Tree進(jìn)行比較,檢測模型的性能。評估參考值包括檢測的準(zhǔn)確率、召回率、F1 值[12-13]、模型運行時間、分類器ROC曲線及AUC面積。

      從表6中可見,以上四種分類器的準(zhǔn)確率最低值為89.74%,通過計算得平均檢測率為91.9%??梢姳疚牡奶卣鬟x擇方法在惡意代碼與正常樣本的檢測中有良好的效果。其中Vec-LR 算法準(zhǔn)確率最高,達(dá)到94.37%,在召回率、F1 值上,Vec-LR算法均優(yōu)于其他算法,分別達(dá)到92.61%和93.57%。使用向量化代替for 循環(huán)的Vec-LR 算法在時間消耗方面也取得較好成績,為8.82 s??梢姳疚牡哪P瓦x擇在同類分類方法中也具有良好效果。ROC曲線是比較分類器綜合性能優(yōu)劣的直觀表現(xiàn)形式[14]。ROC 曲線越靠近坐標(biāo)左上角則表示分類器的準(zhǔn)確性越高。本文實驗中分類器的ROC曲線如圖1、圖2所示。

      表6 實驗結(jié)果數(shù)據(jù)

      由圖1、2可見通過檢測本文構(gòu)建特征,各算法的綜合效率都較高,而所有算法中Vec-LR 算法效果最佳。ROC曲線的橫坐標(biāo)表示假陽性率(False positive rate),縱坐標(biāo)表示真陽性率(True positive rate),分類器ROC曲線與X軸圍成面積值為AUC,AUC面積值大小表示分類器性能的好壞,AUC 面積是常見的衡量二分類模型優(yōu)劣的指標(biāo)之一,可展示分類器整體性能[15]。表7 是本文實驗中的AUC面積比較。

      圖1 分類器ROC曲線圖

      圖2 分類器ROC曲線局部圖

      表7 實驗結(jié)果ROC曲線AUC值

      AUC面積充分展示了分類器的整體性能,從表7得知 Vec-LR 算法性能最佳,AUC 面積值為 0.985 6,其次為Random Forest。

      4.2.2 與常見殺毒軟件比較

      實驗2另取一組不與實驗1重復(fù)的Windows惡意代碼樣本。計算所有樣本在Virus Total 上的平均檢測率Rˉ ,Rˉ=M/A,其中,A為Virus Total 上所有殺毒軟件的總數(shù),M為殺毒軟件檢測為惡意樣本的計數(shù)。從中取一組M為1 000 的未知類別惡意代碼樣本。其中Rˉ為0.2。將該組樣本使用Vec-LR進(jìn)行檢測,并與殺毒軟件 McAfee、F-Port、ClamAV、Trend、Symantec 進(jìn)行比較。本文算法及市面上各廠商的檢測率結(jié)果如表8 所示。通過對比發(fā)現(xiàn),當(dāng)Rˉ值為0.2即大多數(shù)檢測軟件無法判斷該病毒時,本文算法仍然具有較好的檢測率為92.6%,說明本文算法在應(yīng)對新生或未知惡意代碼的識別上仍優(yōu)于其他軟件。

      表8 與常見殺毒軟件對比實驗結(jié)果

      5 結(jié)束語

      本文在惡意代碼分析方法中選擇了動態(tài)分析方法,使用Cuckoo 沙箱進(jìn)行了細(xì)致的惡意代碼行為捕捉,在特征提取階段,本文以線程為單位,每線程抽取前5 000個API函數(shù),保證每個樣本的特征都在萬級以上。特征處理階段,本文采用統(tǒng)計特征及計算特征兩類特征以最小代價捕捉惡意代碼特征。在計算特征里,本文還引用在自然語言處理性能較優(yōu)的TF-IDF 值幫助概括每個API的區(qū)分能力。在分類器的構(gòu)建和選擇上,本文選擇適用于二分類的LR算法,并用Vectorization向量化進(jìn)行了改進(jìn),實驗的最后本文實驗獲得了較好的效果。比起之前的模型,本文在檢測惡意代碼及未知樣本中的檢測率均有提升。不足之處在于前期的沙箱運行及惡意代碼特征抽取階段耗費大量的時間。

      基于本文的實驗結(jié)果,將繼續(xù)細(xì)化強(qiáng)化改進(jìn)本文的抽取提取方式。后期將嘗試在本文基礎(chǔ)上對樣本進(jìn)行多分類的訓(xùn)練,進(jìn)行深度學(xué)習(xí)算法的引入,降低實驗的時間復(fù)雜度,進(jìn)一步提高實驗準(zhǔn)確率。

      猜你喜歡
      沙箱線程調(diào)用
      核電項目物項調(diào)用管理的應(yīng)用研究
      LabWindows/CVI下基于ActiveX技術(shù)的Excel調(diào)用
      巧用沙箱檢測文件安全
      淺談linux多線程協(xié)作
      基于系統(tǒng)調(diào)用的惡意軟件檢測技術(shù)研究
      基于函數(shù)注入的沙箱攔截識別方法
      基于多安全機(jī)制的 Linux 應(yīng)用沙箱的設(shè)計與實現(xiàn)
      利用RFC技術(shù)實現(xiàn)SAP系統(tǒng)接口通信
      Linux線程實現(xiàn)技術(shù)研究
      巧用“沙箱” 看片兒不中毒
      辽宁省| 新泰市| 云龙县| 江口县| 定远县| 乐安县| 元朗区| 吉林市| 青神县| 南陵县| 天柱县| 锦州市| 秀山| 忻州市| 长葛市| 子长县| 临城县| 兴海县| 西盟| 阳高县| 通州市| 福州市| 崇义县| 宁远县| 金沙县| 镇赉县| 鹤岗市| 曲阜市| 濮阳县| 荥阳市| 封丘县| 滁州市| 安图县| 开鲁县| 辉县市| 县级市| 长垣县| 隆昌县| 莲花县| 紫云| 赤水市|