一種海量惡意樣本同源性判定方法及系統(tǒng)的制作方法
【專利摘要】本發(fā)明公開了一種海量惡意樣本同源性判定方法及系統(tǒng),包括:對惡意樣本進行反編譯得到smali文件并提取類名和方法名;以類名和方法名的組合作為特征維度計算各惡意樣本的simhash指紋;基于MapReduce模式計算各惡意樣本的simhash指紋之間的海明距離;判定海明距離小于等于預設閾值的惡意樣本屬于同源樣本;其中,所述類名為程序代碼中抽象對象的名稱,所述方法名為程序代碼中抽象對象中包含的函數(shù)名。本發(fā)明所述技術方案能夠有效針對大規(guī)模樣本進行同源性分析處理,不僅縮短了處理時間,而且提高了同源性判定的準確性。
【專利說明】
一種海量惡意樣本同源性判定方法及系統(tǒng)
技術領域
[0001]本發(fā)明涉及信息安全技術領域,尤其涉及一種海量惡意樣本同源性判定方法及系統(tǒng)。
【背景技術】
[0002]最早在2011年,卡巴斯基在其分析報告中指出,以震網(wǎng)和毒區(qū)兩個攻擊病毒中包含一部分相同代碼為依據(jù),推斷它們來自同一編寫者,從此拉開了惡意代碼同源性檢測與判定的序幕。但是早期的檢測方法是以大量人工分析為基礎,分析效率低,工作周期較長;隨后,美國Charles River Analysistics公司基于語言學和計算機逆向工程等技術,開發(fā)了惡意代碼分析系統(tǒng),通過追溯代碼演化發(fā)掘惡意代碼樣本之間的同源性,但該方法是基于情報分析平臺palantir建立的,無法滿足一般應用條件。2012年,官強、劉星基于惡意代碼的靜態(tài)特征分別提出同源性自動判定技術,但是他們的方法均未考慮到加殼惡意樣本的處理。2013年,美國曼迪昂特公司提出利用惡意代碼特征追蹤攻擊源頭的方法分析同源性,但是該分析需要先對目標進行長期跟蹤,分析周期較長。2015年,康緋提出基于行為特征相似性分析惡意代碼的同源性,但其并沒有考慮行為特征的上下文環(huán)境,即將不同環(huán)境下的同一行為視為具有相同的特征和目的,顯然不甚合理。同年,張永錚提出基于調(diào)用習慣的惡意代碼自動化同源判定方法,但該方法在解析代碼的方法調(diào)用鏈上時間復雜度較高,不適用于分析海量惡意代碼。
[0003]綜上所述,現(xiàn)有方法存在如下缺陷:
1、較早的同源性分析方法都是建立在對捕獲樣本深入的人工分析基礎之上,因此需要投入較大的人力和時間;
2、未考慮到加殼樣本,技術缺乏通用性;
3、現(xiàn)行方法中,均沒有適用于海量惡意代碼樣本同源性判定的技術。
【發(fā)明內(nèi)容】
[0004]本發(fā)明所述的技術方案通過計算各惡意樣本的simhash指紋,并且利用MapReduce模式計算各惡意樣本間的海明距離,不僅能夠縮短處理大規(guī)模惡意樣本所需的時間,而且提高了同源性判定的準確性。
[0005]本發(fā)明采用如下方法來實現(xiàn):一種海量惡意樣本同源性判定方法,包括:
對惡意樣本進行反編譯得到smali文件并提取類名和方法名;
以類名和方法名的組合作為特征維度計算各惡意樣本的simhash指紋;
基于MapReduce模式計算各惡意樣本的simhash指紋之間的海明距離;
判定海明距離小于等于預設閾值的惡意樣本屬于同源樣本;
其中,所述類名為程序代碼中抽象對象的名稱,所述方法名為程序代碼中抽象對象中包含的函數(shù)名。
[0006]進一步地,所述以類名和方法名的組合作為特征維度計算各惡意樣本的simhash指紋為:
以類名和方法名的組合作為特征維度;
計算惡意樣本中所有特征維度的MD5值;
對所有MD5值進行加權、累加和降維操作后生成該惡意樣本唯一標識的64位simhash指紋。
[0007]上述方法中,所述基于MapReduce模式計算各惡意樣本的simhash指紋之間的海明距離為:
對各惡意樣本的simhash指紋進行分塊操作;
將各分塊作為key,將simhash指紋本身作為value進行存儲;
對同一分塊位的key進行聚合處理;
以聚合處理后得到的simhash兩兩組合為key,進行去重處理;
計算去重處理后的simhash兩兩組合的海明距離。
[0008]更進一步地,所述判定海明距離小于等于預設閾值的惡意樣本屬于同源樣本為:基于K-means算法對海明距離小于等于3的惡意樣本進行聚類處理并判定屬于同源樣本。
[0009]其中,所述提取類名和方法名之前還包括:剔除預先收集的第三方庫和加殼樣本包名。
[0010]本發(fā)明可以采用如下系統(tǒng)來實現(xiàn):一種海量惡意樣本同源性判定系統(tǒng),包括:
反編譯模塊,用于對惡意樣本進行反編譯得到smali文件并提取類名和方法名; simhash指紋生成模塊,用于以類名和方法名的組合作為特征維度計算各惡意樣本的
s imhash 指紋;
海明距離計算模塊,用于基于MapReduce模式計算各惡意樣本的simhash指紋之間的海明距離;
同源樣本判定模塊,用于判定海明距離小于等于預設閾值的惡意樣本屬于同源樣本;其中,所述類名為程序代碼中抽象對象的名稱,所述方法名為程序代碼中抽象對象中包含的函數(shù)名。
[0011 ]進一步地,所述s imhash指紋生成模塊,具體用于:
以類名和方法名的組合作為特征維度;
計算惡意樣本中所有特征維度的MD5值;
對所有MD5值進行加權、累加和降維操作后生成該惡意樣本唯一標識的64位simhash指紋。
[0012]上述系統(tǒng)中,所述海明距離計算模塊,具體用于:
對各惡意樣本的simhash指紋進行分塊操作;
將各分塊作為key,將simhash指紋本身作為value進行存儲;
對同一分塊位的key進行聚合處理;
以聚合處理后得到的simhash兩兩組合為key,進行去重處理;
計算去重處理后的simhash兩兩組合的海明距離。
[00?3]更進一步地,所述同源樣本判定模塊,具體用于:基于K-means算法對海明距離小于等于3的惡意樣本進行聚類處理并判定屬于同源樣本。
[0014]其中,所述提取類名和方法名之前還包括:剔除預先收集的第三方庫和加殼樣本包名。
[0015]綜上,本發(fā)明給出一種海量惡意樣本同源性判定方法及系統(tǒng),通過提取反編譯后文件的類名和方法名,并以類名和方法名組合為一個特征維度,進而計算各惡意樣本的simhash指紋;基于MapReduce模式計算各惡意樣本的simhash指紋之間的海明距離;最終判定海明距離小于等于預設閾值的惡意樣本屬于同源樣本。
[0016]有益效果為:本發(fā)明所述技術方案通過提取類名和方法名,并以類名加方法名作為惡意樣本的特征維度,從而從本質(zhì)上揭示了惡意樣本的內(nèi)部特征,進而提升了同源性判定的準確性;同時,本發(fā)明所述技術方案基于MapReduce模式進行并行計算,通過分塊、聚合、去重等操作,最終極大縮減了海明距離的計算量,從而有效提升了同源性判定的效率。
【附圖說明】
[0017]為了更清楚地說明本發(fā)明的技術方案,下面將對實施例中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明中記載的一些實施例,對于本領域普通技術人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0018]圖1為本發(fā)明提供的一種海量惡意樣本同源性判定方法實施例流程圖;
圖2為本發(fā)明提供的一種海量惡意樣本同源性判定系統(tǒng)實施例結構圖。
【具體實施方式】
[0019]本發(fā)明給出了一種海量惡意樣本同源性判定方法及系統(tǒng)實施例,為了使本技術領域的人員更好地理解本發(fā)明實施例中的技術方案,并使本發(fā)明的上述目的、特征和優(yōu)點能夠更加明顯易懂,下面結合附圖對本發(fā)明中技術方案作進一步詳細的說明:
本發(fā)明首先提供了一種海量惡意樣本同源性判定方法實施例,如圖1所示,包括:
SlOl對惡意樣本進行反編譯得到smali文件并提取類名和方法名;
S102以類名和方法名的組合作為特征維度計算各惡意樣本的simhash指紋;其中,各惡意樣本中包含多個類名和方法名組合;所述一個特征維度為一組類名和方法名組合成的字符串;
S103基于MapReduce模式計算各惡意樣本的simhash指紋之間的海明距離;
S104判定海明距離小于等于預設閾值的惡意樣本屬于同源樣本;
其中,所述類名為程序代碼中抽象對象的名稱,所述方法名為程序代碼中抽象對象中包含的函數(shù)名。
[0020]優(yōu)選地,所述以類名和方法名的組合作為特征維度計算各惡意樣本的simhash指紋為:
以類名和方法名的組合作為特征維度;
計算惡意樣本中所有特征維度的MD5值;
對所有MD5值進行加權、累加和降維操作后生成該惡意樣本唯一標識的64位simhash指紋。
[0021 ] 上述方法實施例中,所述基于MapReduce模式計算各惡意樣本的simhash指紋之間的海明距離為:
對各惡意樣本的simhash指紋進行分塊操作; 將各分塊作為key,將simhash指紋本身作為value進行存儲;
對同一分塊位的key進行聚合處理;
以聚合處理后得到的simhash兩兩組合為key,進行去重處理;
計算去重處理后的simhash兩兩組合的海明距離。
[0022]例如:該例子目的在于解釋說明上述實施例,其simhash取值并不真實; simhash I: 1000 1110 1001 0010;
simhash 2: 1000 1010 1001 0010;
將上述simhash指紋各分成四塊;分塊的目的是減少計算量,如果某一對應塊相同,才將該s imhash組合計算海明距離;
將同一分塊位的key進行聚合處理:
第一次聚合:針對第一個分塊,發(fā)現(xiàn)都是1000,將這個組合保留下來;
第二次聚合:針對第二個分塊,發(fā)現(xiàn)都是不一樣,不保留;
第三次聚合:針對第三個分塊,發(fā)現(xiàn)都是1001,保留;
第四次聚合:針對第四個人快,發(fā)現(xiàn)都是0010,保留;
對聚合處理后得到的simhash兩兩組合進行去重處理:聚合處理后得到需要計算海明距離的s imhash保留了三組,但是這三組都是simhashl和simhash2,去重后只保留一組;最后,計算去重處理后的simhash兩兩組合的海明距離。
[0023]其中,經(jīng)過大量的人工分析和對比發(fā)現(xiàn),若海明距離大于15時,則惡意樣本間的關聯(lián)性極低,因此為了快速高效的計算惡意樣本間的相似性關系,對所生成的simhash指紋進行K+1分塊操作,其中K〈16;這樣就避免了計算海明距離大于K的情況出現(xiàn),極大縮減了數(shù)據(jù)計算量。
[0024]更優(yōu)選地,所述判定海明距離小于等于預設閾值的惡意樣本屬于同源樣本為:基于K-means算法對海明距離小于等于3的惡意樣本進行聚類處理并判定屬于同源樣本。信息安全工作者經(jīng)過大量的分析和驗證,認為海明距離在[0,3]的惡意樣本應該屬于同源樣本。
[0025]其中,所述提取類名和方法名之前還包括:剔除預先收集的第三方庫和加殼樣本包名。例如:第三方庫為Android/support/v4 ;加殼樣本包名為qihoo ;
本發(fā)明還提供了一種海量惡意樣本同源性判定系統(tǒng)實施例,如圖2所示,包括:
反編譯模塊201,用于對惡意樣本進行反編譯得到smali文件并提取類名和方法名;simhash指紋生成模塊202,用于以類名和方法名的組合作為特征維度計算各惡意樣本的s imhash指紋;
海明距離計算模塊203,用于基于MapReduce模式計算各惡意樣本的simhash指紋之間的海明距離;
同源樣本判定模塊204,用于判定海明距離小于等于預設閾值的惡意樣本屬于同源樣本;
其中,所述類名為程序代碼中抽象對象的名稱,所述方法名為程序代碼中抽象對象中包含的函數(shù)名。
[0026]優(yōu)選地,所述simhash指紋生成模塊,具體用于:
以類名和方法名的組合作為特征維度;
計算惡意樣本中所有特征維度的MD5值; 對所有MD5值進行加權、累加和降維操作后生成該惡意樣本唯一標識的64位simhash指紋。
[0027]上述系統(tǒng)實施例中,所述海明距離計算模塊,具體用于:
對各惡意樣本的simhash指紋進行分塊操作;
將各分塊作為key,將simhash指紋本身作為value進行存儲;
對同一分塊位的key進行聚合處理;
以聚合處理后得到的simhash兩兩組合為key,進行去重處理;
計算去重處理后的simhash兩兩組合的海明距離。
[0028]更優(yōu)選地,所述同源樣本判定模塊,具體用于:基于K-means算法對海明距離小于等于3的惡意樣本進行聚類處理并判定屬于同源樣本。
[0029]其中,所述提取類名和方法名之前還包括:剔除預先收集的第三方庫和加殼樣本包名。
[0030]上述實施例均采用遞進的方式描述,各個實施例之間相同或相似的部分互相參見即可,每個實施例重點說明的都是與其他實施例的不同之處。上述方法實施例和系統(tǒng)實施例中相關之處互相參加即可。
[0031]如上所述,上述實施例給出了一種海量惡意樣本同源性判定方法及系統(tǒng)實施例,通過對惡意樣本進行反編譯得到smali文件并提取類名和方法名,其中將類名和方法名作為一個特征維度,計算各惡意樣本的simhash指紋,基于MapReduce模式計算各惡意樣本的simhash指紋之間的海明距離,最后判定海明距離小于等于預設閾值的惡意樣本屬于同源樣本。
[0032]綜上,上述所述實施例通過提取惡意樣本的類名和方法名并生成simhash指紋,該simhash指紋不僅唯一標識對應的惡意樣本,并且能夠準確揭示惡意樣本的內(nèi)部特征,使得最終的同源性判定結果更加真實可信;其次,上述實施例利用MapReduce模式計算各惡意樣本的simhash指紋之間的海明距離,大幅度縮減了計算量,提升了同源性判定的效率。
[0033]以上實施例用以說明而非限制本發(fā)明的技術方案。不脫離本發(fā)明精神和范圍的任何修改或局部替換,均應涵蓋在本發(fā)明的權利要求范圍當中。
【主權項】
1.一種海量惡意樣本同源性判定方法,其特征在于,包括: 對惡意樣本進行反編譯得到smali文件并提取類名和方法名; 以類名和方法名的組合作為特征維度計算各惡意樣本的simhash指紋; 基于MapReduce模式計算各惡意樣本的simhash指紋之間的海明距離; 判定海明距離小于等于預設閾值的惡意樣本屬于同源樣本; 其中,所述類名為程序代碼中抽象對象的名稱,所述方法名為程序代碼中抽象對象中包含的函數(shù)名。2.如權利要求1所述的方法,其特征在于,所述以類名和方法名的組合作為特征維度計算各惡意樣本的simhash指紋為: 以類名和方法名的組合作為特征維度; 計算惡意樣本中所有特征維度的MD5值; 對所有MD5值進行加權、累加和降維操作后生成該惡意樣本唯一標識的64位simhash指紋。3.如權利要求1或2所述的方法,其特征在于,所述基于MapReduce模式計算各惡意樣本的s imhash指紋之間的海明距離為: 對各惡意樣本的simhash指紋進行分塊操作; 將各分塊作為key,將simhash指紋本身作為value進行存儲; 對同一分塊位的key進行聚合處理; 以聚合處理后得到的simhash兩兩組合為key,進行去重處理; 計算去重處理后的simhash兩兩組合的海明距離。4.如權利要求3所述的方法,其特征在于,所述判定海明距離小于等于預設閾值的惡意樣本屬于同源樣本為:基于K-means算法對海明距離小于等于3的惡意樣本進行聚類處理并判定屬于同源樣本。5.如權利要求4所述的方法,其特征在于,所述提取類名和方法名之前還包括:剔除預先收集的第三方庫和加殼樣本包名。6.一種海量惡意樣本同源性判定系統(tǒng),其特征在于,包括: 反編譯模塊,用于對惡意樣本進行反編譯得到smali文件并提取類名和方法名;simhash指紋生成模塊,用于以類名和方法名的組合作為特征維度計算各惡意樣本的s imhash 指紋; 海明距離計算模塊,用于基于MapReduce模式計算各惡意樣本的simhash指紋之間的海明距離; 同源樣本判定模塊,用于判定海明距離小于等于預設閾值的惡意樣本屬于同源樣本;其中,所述類名為程序代碼中抽象對象的名稱,所述方法名為程序代碼中抽象對象中包含的函數(shù)名。7.如權利要求6所述的系統(tǒng),其特征在于,所述simhash指紋生成模塊,具體用于: 以類名和方法名的組合作為特征維度; 計算惡意樣本中所有特征維度的MD5值; 對所有MD5值進行加權、累加和降維操作后生成該惡意樣本唯一標識的64位simhash指紋。8.如權利要求6或7所述的系統(tǒng),其特征在于,所述海明距離計算模塊,具體用于: 對各惡意樣本的simhash指紋進行分塊操作; 將各分塊作為key,將simhash指紋本身作為value進行存儲; 對同一分塊位的key進行聚合處理; 以聚合處理后得到的simhash兩兩組合為key,進行去重處理; 計算去重處理后的simhash兩兩組合的海明距離。9.如權利要求8所述的系統(tǒng),其特征在于,所述同源樣本判定模塊,具體用于:基于K-means算法對海明距離小于等于3的惡意樣本進行聚類處理并判定屬于同源樣本。10.如權利要求9所述的系統(tǒng),其特征在于,所述提取類名和方法名之前還包括:剔除預先收集的第三方庫和加殼樣本包名。
【文檔編號】G06F21/56GK105989287SQ201511012015
【公開日】2016年10月5日
【申請日】2015年12月30日
【發(fā)明人】何源浩, 孫巖, 潘宣辰
【申請人】武漢安天信息技術有限責任公司