楊萍 趙冰 舒輝
摘 要:據(jù)統(tǒng)計(jì),在大量的惡意代碼中,有相當(dāng)大的一部分屬于誘騙型的惡意代碼,它們通常使用與常用軟件相似的圖標(biāo)來(lái)偽裝自己,通過(guò)誘騙點(diǎn)擊達(dá)到傳播和攻擊的目的。針對(duì)這類誘騙型的惡意代碼,鑒于傳統(tǒng)的基于代碼和行為特征的惡意代碼檢測(cè)方法存在的效率低、代價(jià)高等問(wèn)題,提出了一種新的惡意代碼檢測(cè)方法。首先,提取可移植的執(zhí)行體(PE)文件圖標(biāo)資源信息并利用圖像哈希算法進(jìn)行圖標(biāo)相似性分析;然后,提取PE文件導(dǎo)入表信息并利用模糊哈希算法進(jìn)行行為相似性分析;最后,采用聚類和局部敏感哈希的算法進(jìn)行圖標(biāo)匹配,設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)輕量級(jí)的惡意代碼快速檢測(cè)工具。實(shí)驗(yàn)結(jié)果表明,該工具對(duì)惡意代碼具有很好的檢測(cè)效果。
關(guān)鍵詞:圖標(biāo)相似性;哈希算法;導(dǎo)入表比對(duì);局部敏感哈希;惡意代碼檢測(cè)
中圖分類號(hào): TP309
文獻(xiàn)標(biāo)志碼:A
Abstract: According to statistics, a large part of large amount of malicious codes belong to deceptive malicious codes. They usually use icons which are similar to those icons commonly used softwares to disguise themselves and deceive users to click to achieve the purpose of communication and attack. Aiming at solving the problems of low efficiency and high cost of traditional malicious code detection methods based on code and behavior characteristics on the deceptive malicious codes, a new malicious code detection method was proposed. Firstly, Portable Executable (PE) file icon resource information was extracted and icon similarity analysis was performed by image hash algorithm. Then, the PE file import table information was extracted and a fuzzy hash algorithm was used for behavior similarity analysis. Finally, clustering and local sensitive hash algorithms were adopted to realize icon matching, designing and implementing a lightweight and rapid malicious code detection tool. The experimental results show that the designed tool has a good detection effect on malicious code.
Key words: icon similarity; hash algorithm; import table comparison; local sensitive hash; malicious code detection
0 引言
隨著互聯(lián)網(wǎng)的迅猛發(fā)展,娛樂(lè)、辦公等應(yīng)用軟件不斷增長(zhǎng)的同時(shí),也出現(xiàn)了許多惡意代碼,這些惡意代碼在互聯(lián)網(wǎng)上傳播十分迅速,且危害性極大。比如,勒索病毒是一種近年來(lái)愈發(fā)流行的惡意代碼,這些病毒會(huì)加密鎖定被感染的計(jì)算機(jī)上的用戶資源和資產(chǎn),要求受害者支付贖金后才提供解密服務(wù),否則相關(guān)資源將永遠(yuǎn)無(wú)法恢復(fù)。據(jù)統(tǒng)計(jì),在大量的惡意代碼中,有相當(dāng)大的一部分屬于誘騙型的惡意代碼,其通常使用與WORD等常用軟件相似的圖標(biāo)來(lái)簡(jiǎn)單地偽裝自己,進(jìn)而誘騙用戶去點(diǎn)擊。在點(diǎn)擊運(yùn)行之后,此類惡意代碼則進(jìn)行一系列的竊密、勒索等操作,使用戶的信息資產(chǎn)面臨嚴(yán)重的風(fēng)險(xiǎn)。因此,開(kāi)展基于圖標(biāo)相似性分析的惡意代碼檢測(cè)方法的研究,對(duì)于惡意代碼的檢測(cè)工作具有重要的現(xiàn)實(shí)意義。
惡意代碼[1]也稱為惡意軟件,是指運(yùn)行在計(jì)算機(jī)上,使系統(tǒng)按照攻擊者意愿執(zhí)行任務(wù)的一組指令。傳統(tǒng)的惡意代碼分析方法[2-3]主要分為靜態(tài)分析方法和動(dòng)態(tài)分析方法。靜態(tài)分析方法是指在不執(zhí)行程序的情況下,對(duì)程序進(jìn)行反匯編、反編譯等,然后再進(jìn)行分析,分析方法主要有靜態(tài)源代碼分析、靜態(tài)反匯編分析、反編譯分析;動(dòng)態(tài)分析方法是指利用程序調(diào)試工具對(duì)惡意代碼進(jìn)行跟蹤,觀察惡意代碼執(zhí)行過(guò)程,剖析惡意代碼的工作機(jī)理并驗(yàn)證靜態(tài)分析結(jié)果,分析方法主要有系統(tǒng)調(diào)用行為分析方法和啟發(fā)式掃描技術(shù)。但是,傳統(tǒng)的基于代碼和行為特征的惡意代碼檢測(cè)方法往往需要經(jīng)過(guò)繁瑣的步驟,耗費(fèi)大量的時(shí)間才能達(dá)到較好的效果。
本文主要針對(duì)此類誘騙型的惡意代碼展開(kāi)研究,鑒于傳統(tǒng)的基于代碼和行為特征的惡意代碼檢測(cè)方法所存在的效率低、代價(jià)高等問(wèn)題,提出了一種新的惡意代碼檢測(cè)方法,在圖標(biāo)資源相似性分析和導(dǎo)入表相似性分析的惡意代碼檢測(cè)方法結(jié)合的基礎(chǔ)上,采用聚類和局部敏感哈希的算法進(jìn)行圖標(biāo)匹配,設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)輕量級(jí)的惡意代碼快速檢測(cè)工具。
1 相關(guān)工作
近年來(lái),在惡意代碼檢測(cè)領(lǐng)域提出了一種基于圖標(biāo)相似性分析的新思路。Silva等[4]提出了一種利用機(jī)器學(xué)習(xí)的方法,從圖標(biāo)中提取信息來(lái)提高檢測(cè)惡意代碼檢測(cè)的精度。該方法包括兩個(gè)步驟:1)提取圖標(biāo)特征使用匯總統(tǒng)計(jì)(Summary Statistics) [5]、方向梯度直方圖(Histogram Of Gradient, HOG)[6]和一個(gè)卷積自動(dòng)編碼器[7];2)根據(jù)提取的圖標(biāo)特征對(duì)圖標(biāo)進(jìn)行聚類。通過(guò)機(jī)器學(xué)習(xí)的方法對(duì)公開(kāi)的數(shù)據(jù)進(jìn)行了大量的實(shí)驗(yàn),實(shí)驗(yàn)結(jié)果表明該方法可以顯著地提高惡意軟件預(yù)測(cè)模型的有效性。實(shí)驗(yàn)表明,在預(yù)測(cè)模型中使用圖標(biāo)簇時(shí),平均精度增加了10%,但并未給出一種有效的行為分析方法。文獻(xiàn)[8]提出了一種基于應(yīng)用程序圖標(biāo)的移動(dòng)終端惡意代碼檢測(cè)方法及系統(tǒng),具體步驟是:首先,對(duì)應(yīng)用程序的安裝包進(jìn)行分析,將該應(yīng)用程序的圖標(biāo)提取出;然后,從該應(yīng)用程序代碼文件中提取系統(tǒng)應(yīng)用程序編程接口 (Application Programming Interface, API)函數(shù),將該應(yīng)用程序的圖標(biāo)與應(yīng)用圖標(biāo)功能規(guī)則庫(kù)相對(duì)應(yīng),從而檢索到與此圖標(biāo)對(duì)應(yīng)的功能規(guī)則,將該應(yīng)用程序調(diào)用的API函數(shù)與該圖標(biāo)對(duì)應(yīng)的功能規(guī)則相比對(duì),如果一致,則為正常的應(yīng)用程序,否則為惡意的應(yīng)用程序。但是,該項(xiàng)技術(shù)尚不成熟,并未得到普及。該思路的創(chuàng)新點(diǎn)在于從圖標(biāo)出發(fā),利用了惡意代碼使用與正常軟件相似的圖標(biāo)來(lái)偽裝自己的這一特征,進(jìn)行惡意代碼檢測(cè),極大地提高了惡意代碼檢測(cè)效率和精度。然而,現(xiàn)階段基于圖標(biāo)相似性分析的惡意代碼檢測(cè)相關(guān)研究成果較少,無(wú)論是研究的深度還是廣度都有待于進(jìn)一步提升。
本文主要采用了圖像哈希算法進(jìn)行圖標(biāo)相似性比對(duì)。目前,圖像的匹配算法[9]主要包括三類:基于灰度相關(guān)的匹配方法[10]、基于特征的匹配方法[11]和基于模型的匹配方法[12]。隨著互聯(lián)網(wǎng)上圖片的泛濫,一種快速和有效的圖像匹配技術(shù)顯得愈發(fā)重要。在20世紀(jì)90年代末,圖像哈希[13]技術(shù)誕生了。該方法廣泛應(yīng)用于“以圖識(shí)圖”的圖像檢索技術(shù)中,且國(guó)內(nèi)外許多搜索引擎都使用了這項(xiàng)技術(shù),如Google、百度等。另外,在行為相似性比對(duì)方面,采用模糊哈希[14-15]的方法進(jìn)行導(dǎo)入表比對(duì)。它是一種快速、準(zhǔn)確、實(shí)用的行為分析方法,目前在惡意代碼檢測(cè)方面取得了很好的效果。與傳統(tǒng)的基于代碼和行為特征的方法相比,模糊哈希效率更高,它能快速地發(fā)現(xiàn)兩個(gè)可移植的執(zhí)行體 (Portable Executable, PE)文件的相似關(guān)系并計(jì)算其相似度;與傳統(tǒng)的單純API序列比較的方法相比,模糊哈希算法更為精確,它是計(jì)算兩個(gè)序列之間的相似度,某一位的改變都能給出一個(gè)準(zhǔn)確的數(shù)值。隨著檢測(cè)工具常規(guī)圖標(biāo)庫(kù)的不斷擴(kuò)大,為了避免圖標(biāo)的逐一比對(duì),采用聚類[16]和局部敏感哈希[17]結(jié)合的算法對(duì)常用圖標(biāo)庫(kù)進(jìn)行分類、管理來(lái)提高圖標(biāo)匹配速度和檢測(cè)工具的效率。
因此,本文的主要工作包括:1)解析PE文件結(jié)構(gòu),從PE文件中提取圖標(biāo)資源和導(dǎo)入表信息;2)研究各種圖像相似性比對(duì)算法的原理與特點(diǎn),通過(guò)設(shè)計(jì)并進(jìn)行實(shí)驗(yàn),選取dhash(difference hashing)算法作為本文圖標(biāo)相似性比對(duì)的算法;3)采用基于內(nèi)容分割的模糊哈希算法對(duì)兩個(gè)PE文件的導(dǎo)入表信息進(jìn)行相似性比對(duì);4)設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)輕量級(jí)的惡意代碼檢測(cè)工具,該工具由樣本信息提取模塊、常規(guī)信息庫(kù)和惡意代碼檢測(cè)模塊構(gòu)成,并通過(guò)對(duì)樣例的測(cè)試與分析,驗(yàn)證了該工具的有效性。
2 基于圖標(biāo)相似性分析的惡意代碼檢測(cè)方法
本文旨在設(shè)計(jì)并實(shí)現(xiàn)一種輕量級(jí)的惡意代碼快速識(shí)別工具。因此,首先通過(guò)實(shí)驗(yàn)驗(yàn)證,選取dhash算法作為本文的圖標(biāo)相似性比對(duì)算法,其次,采用模糊哈希算法對(duì)提取的導(dǎo)入表信息進(jìn)行比對(duì)。
2.1 總體思路
檢測(cè)工具的總體設(shè)計(jì)思路如圖1所示,從總體上包含三大模塊:樣本信息提取模塊、常規(guī)信息庫(kù)的構(gòu)建,以及惡意性檢測(cè)模塊。整個(gè)檢測(cè)工具采用python語(yǔ)言實(shí)現(xiàn),下面分別闡述各個(gè)功能模塊的具體實(shí)現(xiàn)過(guò)程以及檢測(cè)工具的整體流程。
2.1.1 各模塊實(shí)現(xiàn)
樣本信息提取模塊對(duì)傳入的待測(cè)樣本進(jìn)行PE結(jié)構(gòu)解析,提取出其圖標(biāo)資源信息與導(dǎo)入表中的API函數(shù)信息,作為下一步惡意性檢測(cè)的信息輸入。在實(shí)現(xiàn)過(guò)程中,本文采用python的第三方模塊Pefile對(duì)PE結(jié)構(gòu)進(jìn)行解析,在此基礎(chǔ)上提取出所需信息。圖標(biāo)資源的提取過(guò)程封裝為ExtractIcon類,導(dǎo)入表信息的提取直接封裝為GetPEIAT函數(shù)。
常規(guī)信息庫(kù)是指圖標(biāo)dhash特征值與API模糊哈希特征值所構(gòu)成的庫(kù),是惡意性檢測(cè)的信息參照。具體構(gòu)建流程如下:1)收集Windows平臺(tái)下常用軟件的可執(zhí)行程序,包括WORD.exe、QQ.exe和Chrome.exe等,其中WORD等應(yīng)用程序的圖標(biāo)在惡意代碼中應(yīng)用極為廣泛,對(duì)普通用戶而言具有極強(qiáng)的誘騙性。2)對(duì)10萬(wàn)個(gè)常規(guī)軟件,首先進(jìn)行圖標(biāo)資源信息和導(dǎo)入表API信息的提取,提取的方式與樣本信息提取模塊的功能設(shè)計(jì)相同。3)利用dhash計(jì)算各圖標(biāo)資源的圖標(biāo)哈希值,利用模糊哈希算法計(jì)算各導(dǎo)入表API的模糊哈希值,并按照〈文件名稱,圖標(biāo)哈希值,導(dǎo)入表模糊哈希值〉的結(jié)構(gòu)組織成信息庫(kù),常規(guī)信息庫(kù)采用簡(jiǎn)單的文本方式存儲(chǔ)。
圖標(biāo)資源的哈希值計(jì)算在PE文件解析的基礎(chǔ)上,采用python的第三方模塊imagehash完成,imagehash提供了ahash(average hashing)、dhash、whash(wavelet hashing)等多種哈希函數(shù)功能接口,能夠快速地完成所需功能。導(dǎo)入表的提取以PE文件解析為基礎(chǔ),提取出導(dǎo)入表信息存為文本文件后,采用python第三方模塊ssdeep,通過(guò)其接口函數(shù)ssdeep.hash_from_file(file_path)能夠直接完成對(duì)特定文件的模糊哈希計(jì)算。
惡意性檢測(cè)模塊以常規(guī)信息庫(kù)為依據(jù),對(duì)輸入的待測(cè)樣本信息分別進(jìn)行圖標(biāo)相似性分析和行為相似性分析,并輸出對(duì)樣本惡意性的判定結(jié)果。
2.1.2 整體流程
惡意性檢測(cè)的整體流程如圖2所示。
對(duì)提取的樣本圖標(biāo)信息進(jìn)行dhash相似性分析,從常規(guī)信息庫(kù)中檢索是否存在與之相似的常規(guī)軟件,相似性判定的方式為比較兩個(gè)dhash數(shù)值間的漢明距離。本文中漢明距離的閾值IconHashThreshold設(shè)定為10,即在漢明距離小于等于10條件下,兩個(gè)圖標(biāo)是相似的,漢明距離超過(guò)10則認(rèn)為兩個(gè)圖標(biāo)是不相似的。
當(dāng)判定樣本圖標(biāo)與常規(guī)信息庫(kù)中某個(gè)常規(guī)軟件的圖標(biāo)不相似時(shí),則認(rèn)為無(wú)法檢測(cè)該樣本的惡意性;如果存在相似性,則進(jìn)一步進(jìn)行導(dǎo)入表相似性分析,通過(guò)比較樣本與該常規(guī)軟件的導(dǎo)入表模糊哈希特征值,來(lái)實(shí)現(xiàn)對(duì)行為差異性的判定。
2.2 主要方法
2.2.1 圖標(biāo)相似性比對(duì)方法
ahash[18],即平均哈希算法。一張圖片包含高頻和低頻的部分,對(duì)處理后的灰度圖像計(jì)算平均值。phash(perception hashing)[18],即感知哈希算法。phash算法利用的是離散余弦變換(Discrete Cosine Transform, DCT)。ahash算法太過(guò)嚴(yán)格,比較適合搜索縮略圖,在實(shí)際圖像比對(duì)中不如phash算法精確。dhash[18],即差異哈希算法。dhash算法在相鄰像素之間起作用,并在比較左側(cè)和右側(cè)兩個(gè)像素的亮度后對(duì)整個(gè)圖像進(jìn)行采樣。此算法的具體步驟是:首先,將圖片縮小為9×8,72個(gè)像素值;其次,將其轉(zhuǎn)化為灰度圖,將縮放后的圖片轉(zhuǎn)換為256階灰度;然后,計(jì)算平均值,再計(jì)算每一行中左右兩個(gè)像素的差值,每行8個(gè),共8行生成64個(gè)值;隨后,得到信息指紋,如果左邊的像素比右邊的像素亮,則記為1,否則為0;最后,計(jì)算兩張圖片形成指紋的漢明距離,即可得知它們相似度。whash[18],即小波散列哈希算法。whash將phash的DCT替換為離散小波變換 (Discrete Wavelet Transform, DWT)。DWT是在傅里葉變換的基礎(chǔ)上發(fā)展起來(lái)的,它是一種空間或時(shí)間和頻率之間的局部變換,通過(guò)放大、縮小和移動(dòng)等變換可對(duì)所得數(shù)據(jù)進(jìn)行多尺度的細(xì)節(jié)分析,所以能夠從數(shù)據(jù)中提取有效信息。
2.2.2 行為相似性比對(duì)方法
在行為相似性比對(duì)中,采用模糊哈希的方法。模糊哈希算法是一種簡(jiǎn)單、快速的行為分析方法,已被廣泛用于以簡(jiǎn)單識(shí)別為目的的領(lǐng)域。一般的哈希算法具有精確匹配的特性,無(wú)法判斷內(nèi)容稍有不同的同類文件,這對(duì)于惡意代碼檢測(cè)是非常不利的。模糊哈希算法與模糊邏輯搜索很像,它可以尋找相似但不完全相同的文件,即所謂的同源性文件。模糊哈希的原理是先對(duì)文件進(jìn)行分塊,計(jì)算每一塊的哈希值,然后將得到的一系列的哈希值利用比較函數(shù)與其他哈希值進(jìn)行比較,來(lái)確定相似程度,因此,僅僅某一部分變化了只會(huì)導(dǎo)致某一或幾個(gè)分塊的哈希值發(fā)生變化,而其他分塊的哈希值不發(fā)生變化。模糊哈希的算法的主要步驟:首先,使用一個(gè)弱哈希計(jì)算文件的局部?jī)?nèi)容,在特定條件下對(duì)文件進(jìn)行分析;其次,使用一個(gè)強(qiáng)哈希對(duì)文件每片計(jì)算哈希值;然后,將這些值連接起來(lái),與分片一起構(gòu)成一個(gè)模糊哈希值;最后,使用一個(gè)字符串相似性比對(duì)算法判斷兩個(gè)模糊哈希值的相似度。
在本文中,利用模糊哈希的方法快速比對(duì)導(dǎo)入表的相似度,具體實(shí)現(xiàn)方法是先將PE文件的導(dǎo)入表信息提取出來(lái),再將導(dǎo)入表信息按首字母排序后生成兩個(gè)文本文件,計(jì)算兩個(gè)文本文件的模糊哈希值,最后利用ssdeep提供的compare函數(shù)計(jì)算匹配度,即兩個(gè)PE文件導(dǎo)入表的相似度。為驗(yàn)證此方法的有效性,實(shí)驗(yàn)設(shè)計(jì)如下:
但是,在實(shí)際情況中,進(jìn)行行為相似性比對(duì)時(shí)會(huì)遇到諸多問(wèn)題。面對(duì)一些特殊情況的樣本,如一些壓縮自解壓文件,壓縮后會(huì)表現(xiàn)出來(lái)一些壓縮軟件的圖標(biāo),對(duì)于這類樣本,本工具可能存在誤判問(wèn)題。設(shè)計(jì)了如下實(shí)驗(yàn),將pycharm、QQ、Wechat、WORD通過(guò)WinRAR創(chuàng)建它們的自解壓文件,如圖5所示。常規(guī)信息庫(kù)如表4所示,將它們作為測(cè)試樣本輸入工具進(jìn)行測(cè)試,測(cè)試結(jié)果為四個(gè)自解壓文件均具有惡意性。自解壓過(guò)程使得四個(gè)文件的導(dǎo)入表信息完全相同,如表5所示。這也引出了一個(gè)新的問(wèn)題,對(duì)于一些自解壓文件或者加殼的文件,在檢測(cè)前需要對(duì)樣本進(jìn)行預(yù)處理如脫殼使之成為普通樣本,然后進(jìn)行檢測(cè),這也是下一步工作研究的內(nèi)容之一。表6為QQ.sfx樣本的檢測(cè)過(guò)程信息。
大多數(shù)軟件都存在不同版本的現(xiàn)象,比如當(dāng)對(duì)使用WORD圖標(biāo)的軟件進(jìn)行檢測(cè)時(shí),即使該軟件是正常軟件,但由于其版本與常規(guī)信息庫(kù)中的WORD版本不一致,因而導(dǎo)致誤判。由于不同版本的正常軟件行為存在差異,于是進(jìn)行如下研究。以下是對(duì)WORD各版本進(jìn)行導(dǎo)入表提取,觀察API函數(shù)調(diào)用情況并采用模糊哈希計(jì)算相似度。實(shí)驗(yàn)結(jié)果表明,以上各種版本W(wǎng)ORD.exe的導(dǎo)入表API在內(nèi)容與數(shù)量上均差異不大,這也意味著兩者在功能、行為上很相似。但是,不同版本W(wǎng)ORD導(dǎo)入表信息所計(jì)算出模糊哈希值的相似度并不高,如表7所示。于是,針對(duì)正常軟件多版本的引起的誤判問(wèn)題,本文采取以下解決方案。首先,在常規(guī)信息庫(kù)的收集過(guò)程中,盡可能收集同一軟件的多個(gè)版本。然后,在圖標(biāo)相似性達(dá)到要求的情況下,進(jìn)行導(dǎo)入表相似性比對(duì),只要與其中一個(gè)版本的導(dǎo)入表相似度達(dá)到60,就認(rèn)為該輸入軟件為正常軟件;如果與所有版本的導(dǎo)入表相似低于60,則認(rèn)為該軟件為惡意軟件。
2.3 基于LSH的圖標(biāo)相似性匹配算法
2.3.1 算法基本思想
隨著檢測(cè)工具圖標(biāo)庫(kù)的不斷擴(kuò)大,每當(dāng)檢測(cè)惡意樣本時(shí),如果將圖標(biāo)與圖標(biāo)庫(kù)的所有圖標(biāo)進(jìn)行逐一比對(duì),效率非常低。LSH(Locality Sensitive Hashing)實(shí)現(xiàn)了快速地從海量的高維數(shù)據(jù)集合中找到與某個(gè)數(shù)據(jù)最相似的一個(gè)數(shù)據(jù)或多個(gè)數(shù)據(jù),是一種針對(duì)海量高維數(shù)據(jù)的快速最近鄰查找算法,非常適合對(duì)種類繁多且海量的圖標(biāo)進(jìn)行相似性比對(duì)。為了提高檢測(cè)工具的效率,采用K-means算法[19]對(duì)圖標(biāo)進(jìn)行聚類[17],形成一個(gè)高維向量作為一個(gè)dhash值的描述,然后利用局部敏感哈希算法進(jìn)行索引查詢,實(shí)現(xiàn)對(duì)檢測(cè)工具圖標(biāo)庫(kù)進(jìn)行分類、管理,從而提高圖標(biāo)的匹配速度,進(jìn)而提高檢測(cè)工具的檢測(cè)效率。
表格(有表名)
表7 不同版本W(wǎng)ORD的模糊哈希相似度
Tab. 7 Fuzzy hash similarity of different versions of WORD
版本2012201420152016
2012100715441
2014—1005841
2015——10047
2016———100
定義1 局部敏感哈希[18]。將一族hash函數(shù)H={h:S→U}稱為是(r1,r2,p1,p2)敏感的,如果對(duì)于任意H中的函數(shù)h,滿足以下兩個(gè)條件:
1)如果d(O1,O2) 2)如果d(O1,O2)>r2,那么Pr[h(O1)=h(O2)]≤p2。 其中:O1,O2∈S,表示兩個(gè)具有多維屬性的數(shù)據(jù)對(duì)象;d(O1,O2)為兩個(gè)對(duì)象的相異程度。 2.3.2 算法主要步驟 首先,計(jì)算10萬(wàn)個(gè)圖標(biāo)dhash特征值,隨后,選取合適的LSH hash函數(shù)將每一個(gè)dhash特征值映射到Hash table,Hash table的尺度受圖標(biāo)數(shù)量、種類的影響。該算法在本文中大致實(shí)現(xiàn)過(guò)程如圖6所示。 圖片 圖6 Hash table構(gòu)造過(guò)程 Fig. 6 Process of generating Hash table LSH針對(duì)不同的距離度量空間需要不同的算法,主要包括了Hamming距離、Euclidean距離、Jaccard 系數(shù)、余弦相似度。在本文中,擬選用P-stable hash[20]的算法。 首先,構(gòu)造p-stable分布LSH函數(shù)族,提出了如下hash函數(shù)族: ha,b(v)=(a·v+b)/r 式中:b∈(0,r),是一個(gè)隨機(jī)數(shù);r是直線的分段長(zhǎng)度;hash函數(shù)族的函數(shù)是依據(jù)a、b的不同建立的。選取合適的r值,能夠使得ρ=ln(1/p1)ln(1/p2)盡可能地小,r的取值要根據(jù)實(shí)際情況設(shè)定。具體依據(jù)為:先確定r1、r2的取值,然后選擇合適的r,使得p1、p2都達(dá)到要求。 其次,構(gòu)造hash table。按照減少漏報(bào)率[19]和誤報(bào)率[20]提供的算法,進(jìn)行hash table的構(gòu)造。 先設(shè)計(jì)兩個(gè)hash函數(shù):H1、H2,將一個(gè)由k個(gè)數(shù)組成的整數(shù)向量映射到hash table的某一個(gè)位上,其中size是hash table的長(zhǎng)度。 H1(x1,x2,…,xk)=((∑ki=1rixi)mod C)mod size H2 (x1, x2 ,…,xk )=(∑ki=1r′ixi)mod C H1:Zk→{0,1,2,…,C}。C=232-5,是一個(gè)大素?cái)?shù)。這兩個(gè)函數(shù)具體的算法如下,其中,ri、r′i 是兩個(gè)隨機(jī)整數(shù)。H2計(jì)算的結(jié)果成為一個(gè)數(shù)據(jù)向量的“指紋”,它是由數(shù)據(jù)向量的k個(gè)hash值計(jì)算得到的,而H1相當(dāng)于是數(shù)據(jù)向量的指紋在hash table中的索引。 首先,將一個(gè)dhash的描述經(jīng)過(guò)LSH函數(shù)變換,LSH函數(shù)為隨機(jī)選取L組函數(shù)組gi(·),每個(gè)函數(shù)組都由k個(gè)隨機(jī)選取的函數(shù){g1(·),g2(·),…,gL(·)}構(gòu)成,其中L個(gè)函數(shù)組之間不一定是一樣的。然后,形成一個(gè)整型向量(x1,x2,…,xk),通過(guò)H1、H2變換得到索引信息,現(xiàn)在這L組函數(shù)分別對(duì)數(shù)據(jù)處理,只要有一組完全相等,就認(rèn)為兩條數(shù)據(jù)是相近的。此算法運(yùn)用到檢測(cè)工具的具體查詢過(guò)程如圖7所示。 3 實(shí)驗(yàn)與結(jié)果分析 3.1 實(shí)驗(yàn)設(shè)置 為驗(yàn)證本文工具對(duì)于欺騙性的惡意代碼具有很好的檢測(cè)效果,本文設(shè)計(jì)了三個(gè)實(shí)驗(yàn):1)輸入疑似正常圖標(biāo)的惡意樣本11364個(gè),對(duì)檢測(cè)工具進(jìn)行測(cè)試;2)輸入疑似正常圖標(biāo)的惡意樣本1136個(gè)和正常軟件1136個(gè),對(duì)檢測(cè)工具進(jìn)行測(cè)試;3)輸入與實(shí)驗(yàn)2相同的樣本集,對(duì)不分析圖標(biāo)信息僅采用模糊哈希進(jìn)行行為檢測(cè)的方法進(jìn)行測(cè)試。本文實(shí)驗(yàn)的環(huán)境為Windows 7 x64旗艦版、Python2.7 (32b),使用Pefile的版本為2017.11.5,Imagehash版本為4.0,Ssdeep的版本為2.14.1。本文選取不同的樣本集進(jìn)行實(shí)驗(yàn),結(jié)合常規(guī)信息庫(kù)中的10萬(wàn)條記錄,輸入到惡意代碼檢測(cè)工具中,對(duì)實(shí)驗(yàn)結(jié)果進(jìn)行統(tǒng)計(jì)分析,然后對(duì)具體樣例進(jìn)行分析,證明了本文可以有效實(shí)現(xiàn)對(duì)圖標(biāo)資源的匹配和導(dǎo)入表的匹配,在此基礎(chǔ)上實(shí)現(xiàn)對(duì)可執(zhí)行程序惡意性的判定。 3.2 實(shí)驗(yàn)過(guò)程與結(jié)果 3.2.1 實(shí)驗(yàn)1 為驗(yàn)證檢測(cè)工具對(duì)真惡意代碼是否具有很好的檢測(cè)效果,對(duì)海量的惡意代碼樣本作預(yù)處理,篩選出具有此類特征的惡意代碼作為測(cè)試樣本。由于實(shí)驗(yàn)規(guī)模太小,因此,本文增加了惡意代碼樣本的數(shù)量,在VirusShare網(wǎng)站上下載了十萬(wàn)個(gè)惡意代碼,從中篩選出疑似正常圖標(biāo)的惡意樣本11364個(gè),并在相同的測(cè)試環(huán)境下,輸入檢測(cè)工具進(jìn)行測(cè)試,測(cè)試結(jié)果如表8所示。 3.2.2 實(shí)驗(yàn)2 為了進(jìn)一步說(shuō)明檢測(cè)工具的有效性,設(shè)計(jì)了實(shí)驗(yàn)2,輸入1136個(gè)疑似正常圖標(biāo)的惡意樣本,以及從360寶庫(kù)中收集的1136個(gè)正常軟件,并對(duì)惡意樣本和正常軟件作標(biāo)記加以區(qū)分,在相同的測(cè)試環(huán)境下,輸入檢測(cè)工具進(jìn)行測(cè)試,測(cè)試結(jié)果如表9所示,類別結(jié)果如表10所示 3.2.3 實(shí)驗(yàn)3 為驗(yàn)證利用圖標(biāo)與行為分析相結(jié)合的方法進(jìn)行惡意代碼檢測(cè),比僅對(duì)行為信息進(jìn)行分析的方法具有更好的檢測(cè)效果,設(shè)計(jì)實(shí)驗(yàn)3,與實(shí)驗(yàn)2進(jìn)行對(duì)比,輸入與實(shí)驗(yàn)2相同的樣本集,對(duì)不利用圖標(biāo)信息僅采用模糊哈希進(jìn)行行為檢測(cè)的方法進(jìn)行測(cè)試,測(cè)試結(jié)果如表11所示,類別結(jié)果如表12所示。 3.3 樣例分析 以上對(duì)三個(gè)實(shí)驗(yàn)結(jié)果的統(tǒng)計(jì)分析,說(shuō)明該工具總體上已實(shí)現(xiàn)基本功能,下面對(duì)實(shí)驗(yàn)1中的樣例進(jìn)一步分析。 例如,樣本1的檢測(cè)過(guò)程信息如表13所示。首先,通過(guò)圖標(biāo)相似性比對(duì),發(fā)現(xiàn)該樣本與常規(guī)信息庫(kù)中LEViewer.exe和WinRAR.exe存在圖標(biāo)匹配,其漢明距離分別為9和0。然后,進(jìn)一步通過(guò)導(dǎo)入表模糊哈希匹配發(fā)現(xiàn)其匹配度均為0,說(shuō)明該樣本與正??蓤?zhí)行程序的導(dǎo)入表差別極大,因此判定為存在惡意性。 在檢測(cè)結(jié)果中,有1643個(gè)樣本沒(méi)有從常規(guī)信息庫(kù)中匹配出圖標(biāo)信息,這主要由兩方面因素決定:其一,常規(guī)信息庫(kù)中的記錄數(shù)量。各種不同正常應(yīng)用程序收集得越多,測(cè)試樣本圖標(biāo)匹配的成功率就越高。其二,圖標(biāo)哈希閾值IconHashThreshold的取值。顯然當(dāng)IconHashThreshold的取值越大,對(duì)于各種不同變換的圖標(biāo)匹配成功度越高,但另一方面也可能會(huì)導(dǎo)致無(wú)關(guān)圖標(biāo)的匹配。通過(guò)實(shí)驗(yàn)與分析,驗(yàn)證了本文工具可以有效實(shí)現(xiàn)對(duì)圖標(biāo)資源的匹配和導(dǎo)入表的匹配,在此基礎(chǔ)上實(shí)現(xiàn)了對(duì)可執(zhí)行程序惡意性的判定。常規(guī)信息庫(kù)中收集的正常程序信息數(shù)量、圖標(biāo)哈希閾值和導(dǎo)入表模糊哈希閾值等因素,對(duì)檢測(cè)效果具有重要影響。下一步工作可以進(jìn)一步收集更多的正常程序,豐富常規(guī)信息庫(kù),進(jìn)而提高檢測(cè)工具的能力。 在采用聚類和LSH算法后,將常規(guī)信息庫(kù)中10萬(wàn)條記錄分成50個(gè)分類,每個(gè)分類包括2000條記錄。將使用了此算法后的測(cè)試結(jié)果與未使用此算法比較,發(fā)現(xiàn)準(zhǔn)確率明顯提高,匹配時(shí)間縮短,效率提高。但是針對(duì)此算法的實(shí)驗(yàn),數(shù)據(jù)集不夠全面,評(píng)價(jià)指標(biāo)不夠科學(xué),難以可靠地表明此算法的有效性,因此有待進(jìn)一步深入研究。 4 結(jié)語(yǔ) 首先,本文介紹了惡意代碼檢測(cè)技術(shù)的研究背景及研究意義,對(duì)惡意代碼種類、分析和檢測(cè)方法進(jìn)行了概述,介紹了國(guó)內(nèi)外在基于圖標(biāo)資源相似性分析的惡意代碼檢測(cè)方面的研究現(xiàn)狀;然后,介紹了工具的總體結(jié)構(gòu)設(shè)計(jì),以及兩種主要方法——圖標(biāo)相似性比對(duì)方法和模糊哈希的行為相似性的快速比較方法;最后,設(shè)計(jì)了三個(gè)實(shí)驗(yàn)對(duì)工具進(jìn)行測(cè)試,并對(duì)實(shí)驗(yàn)結(jié)果進(jìn)行統(tǒng)計(jì)分析。從實(shí)驗(yàn)結(jié)果可以看出,本文主要有以下兩個(gè)方面創(chuàng)新:1)從圖標(biāo)入手進(jìn)行惡意代碼檢測(cè),大幅度縮小了檢測(cè)開(kāi)銷,提高了檢測(cè)效率;2)采用圖像哈希進(jìn)行圖標(biāo)相似性比對(duì),采用模糊哈希進(jìn)行行為相似性比對(duì),設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)輕量級(jí)的惡意代碼快速檢測(cè)工具。 目前的研究還存在許多待解決的問(wèn)題:1)該工具只能對(duì)一般情況的惡意軟件進(jìn)行快速檢測(cè),面對(duì)一些特殊情況的樣本,如一些壓縮自解壓文件,壓縮后會(huì)表現(xiàn)出來(lái)一些壓縮軟件的圖標(biāo),仍然存在誤判問(wèn)題;2)常規(guī)信息庫(kù)需要大量的不同版本的正常軟件,下一步工作將采用機(jī)器學(xué)習(xí)的方法對(duì)常規(guī)信息庫(kù)的正常軟件進(jìn)行訓(xùn)練,進(jìn)而提高比對(duì)的精度。由于本文從圖標(biāo)入手,旨在實(shí)現(xiàn)一種輕量級(jí)的快速惡意代碼檢測(cè)工具,因此該工具針對(duì)的對(duì)象是欺騙型惡意代碼,對(duì)于一般的惡意代碼不具有很好的檢測(cè)效果,而且能達(dá)到相對(duì)較好的預(yù)處理效果,若此類惡意軟件采用與正常軟件高度類似的API表現(xiàn),則仍然需要進(jìn)一步復(fù)雜的行為分析。 參考文獻(xiàn) (References) [1] 徐嬋.基于行為的惡意軟件自動(dòng)分類方法的研究[D].湘潭:湘潭大學(xué),2014:7-9.(XU C. Research on automatic classification method of behavior-based malware [D]. Xiangtan: Xiangtan University, 2014: 7-9.) [2] 王毅,唐勇,盧澤新,等.惡意代碼聚類中的特征選取研究[J].信息網(wǎng)絡(luò)安全,2016,16(9):64-68.(WANG Y, TANG Y, LU Z X, et al. Research on features selection in malicious clustering [J]. Netinfo Security, 2016, 16(9): 64-68.) [3] 蔡林,陳鐵明.Android移動(dòng)惡意代碼檢測(cè)的研究概述與展望[J].信息網(wǎng)絡(luò)安全,2016,16(9):218-222.(CAI L, CHEN T M. Research review and outlook on Android mobile malware detection [J]. Netinfo Security, 2016, 16(9): 218-222.) [4] SILVA P, AKHAVAN-MASOULEH S, LI L. Improving malware detection accuracy by extracting icon information [C]// MIPR 2018: Proceedings of the 2018 IEEE Conference on Multimedia Information Processing and Retrieval. Piscataway, NJ: IEEE, 2018: 408-411. [5] 王文,芮國(guó)勝,王曉東,等.圖像多尺度統(tǒng)計(jì)模型綜述[J].中國(guó)圖象圖形學(xué)報(bào),2007,12(6):961-969.(WANG W, RUI G S, WANG X D, et al. A review of multiscale statistical image models [J]. Journal of Image and Graphics, 2007, 12(6): 961-969.) [6] 傅紅普,鄒北驥.方向梯度直方圖及其擴(kuò)展[J].計(jì)算機(jī)工程,2013,39(5):212-217.(FU H P, ZOU B W. Histogram of oriented gradient and its extension [J]. Computer Engineering, 2013, 39(5): 212-217.) [7] 張定會(huì),江平,單俊濤.卷積碼的神經(jīng)網(wǎng)絡(luò)編碼方法[J].數(shù)據(jù)通信,2011(4):33-34,39.(ZHANG D H, JIANG P, SHAN J T. Neural network coding method for convolutional codes [J]. Data Communications, 2011(4): 33-34, 39.) [8] 潘宣辰,肖新光.基于應(yīng)用圖標(biāo)的移動(dòng)終端惡意代碼檢測(cè)方法及系統(tǒng):CN 103902906 A[P].2014-07-02.(PAN X C, XIAO X G. Mobile terminal malicious code detection method and system based on application icon: CN 103902906 A [P]. 2014-07-02.) [9] 王立新,劉彤宇,李陽(yáng).SSDA圖像匹配算法的研究及實(shí)現(xiàn)[J].光電技術(shù)應(yīng)用,2005,20(3):53-55.(WANG L X, LIU T Y, LI Y. Research and implementation of SSDA [J]. Electro-Optic Technology Application, 2005, 20(3): 53-55.) [10] 李強(qiáng),張鈸.一種基于圖像灰度的快速匹配算法[J].軟件學(xué)報(bào),2006,17(2):216-222.(LI Q, ZHANG B. A fast matching algorithm based on image gray value [J]. Journal of Software, 2006, 17(2): 216-222.) [11] 陳磊.圖像配準(zhǔn)中基于特征提取和匹配的方法研究[D].長(zhǎng)春:吉林大學(xué),2016:1-2.(CHEN L. Research of image registration based on feature extraction and matching method [D]. Changchun: Jilin University, 2016: 1-2.) [12] 楊薇.基于模型的圖像變形及應(yīng)用[D].無(wú)錫:江南大學(xué),2013:32-44.(YANG W. Research on the technology and application of image deformation based on the model [D]. Wuxi: Jiangnan University, 2013: 32-44.) [13] 曾勇.圖像感知哈希算法及應(yīng)用[D].杭州:浙江理工大學(xué),2012:3-9.(ZENG Y. Image perceptual hashing algorithm and application [D]. Hangzhou: Zhejiang Sci-Tech University, 2012: 3-9.) [14] 肖梓航,李柏松,肖新光.基于模糊哈希算法的惡意代碼檢測(cè)系統(tǒng)及方法:CN 102811213A[P].2012-12-05.(XIAO Z H, LI B S, XIAO X G. Malicious code detection system and method based on fuzzy hash algorithm: CN 102811213A [P]. 2012-12-05.) [15] 吳悠漾,孟祥兆,田穎.基于模糊哈希的惡意代碼檢測(cè)[J].信息系統(tǒng)工程,2017(1):62.(WU Y Y, MENG X Z, TIAN Y. Malicious code detection based on fuzzy hash [J]. China CIO News, 2017(1): 62.) [16] 伍育紅.聚類算法綜述[J].計(jì)算機(jī)科學(xué),2015,42(S1):491-499.(WU Y H. General overview on clustering algorithms [J]. Computer Science, 2015, 42(S1): 491-499.) [17] 史世澤.局部敏感哈希算法的研究[D].西安:西安電子科技大學(xué),2013:5-9.(SHI S Z. Research on the locality sensitive hashing [D]. Xian: Xidian University, 2013: 5-9.) [18] 葉衛(wèi)國(guó),韓水華.基于內(nèi)容的圖像Hash算法及其性能評(píng)估[J].東南大學(xué)學(xué)報(bào)(自然科學(xué)版),2007,37(S1):109-113.(YE W G, HAN S H. Performance evaluation for content-based image authentication [J]. Journal of Southeast University (Natural Science Edition), 2007, 37(S1): 109-113.) [19] 喬端瑞.基于K-means算法及層次聚類算法的研究與應(yīng)用[D].長(zhǎng)春:吉林大學(xué),2016:5-17.(QIAO D R. Research and application based on K-means algorithm and hierarchical clustering algorithm [D]. Changchun: Jilin University, 2016: 5-17.) [20] DATAR M, IMMORLICA N, INDYK P, et al. Locality-sensitive hashing scheme based on p-stable distributions [C]// SCG 2004: Proceedings of the 2004 Twentieth Annual Symposium on Computational Geometry. New York: ACM, 2004: 253-262.