• 沒有找到結果。

我們在第三章的 3.2 (1)q-gram 資訊擷取已經介紹過如何在一個有限的長度內 去擷取有效的資訊,因此我們首先要來比較在使用我們的方法擷取資訊前後的差 別。我們先在各個網站上面下載 apk 檔案,然後送至 virustotal 上面去確認其為 正常程式或為惡意程式,其中 virustotal 為一個集合眾多知名防毒公司的線上掃 毒,可以上傳檔案得到這些防毒軟體的掃描結果,我們將所有防毒軟體都認定是正 常的程式當作我們的正常程式資料庫,而 1/2 以上的防毒軟體認定是惡意程式的程 式當作我們的惡意程式資料庫。圖 4.1 為一檢測的例子,此 apk 在 42 個防毒軟體 中,有被 26 個檢測到為惡意程式,因此我們將其放入惡意程式資料庫。

圖 4.1 virustotal 檢測範例

41

我們總共挑選 368 個正常程式當作正常程式資料庫,400 個惡意程式當作惡意 程式資料庫。並且我們挑選其中 146 個來測試跟正常程式之間的相似度關係,其中 這 146 個彼此相似度皆不為 1,即它們為皆不相同的惡意程式。我們測試這些惡意 程式跟正常程式之間的相似度分布,並且比較使用擷取資訊方法的前後差別。

擷取前後 相似度範圍

擷取前相似度分布 擷取後相似度分布

相似度0 12317 14692 0相似度0.1 14152 15514 0.1相似度0.2 7208 8570 0.2相似度0.3 5744 7430 0.3相似度0.4 5424 5152 0.4相似度0.5 4670 1915 0.5相似度0.6 3177 378 0.6相似度0.7 900 61 0.7相似度0.8 119 10 0.8相似度0.9 13 6 0.9相似度1.0 4 0

表 4.1 擷取資訊前後相似度分布

在正常的程式跟惡意的程式之間,理論上相似度要越低越好,亦即在相似度低 的地方要分布多一點,在相似度高的地方要分布少一點,我們可以從表 4.1 中發 現,在使用我們的方法擷取有用的資訊之後,已經沒有分布在相似度 0.9 以上,並 且在相似度 0.3-1.0 之間皆變得較少,而 0.3 以下的變得較多,因此使用擷取資訊 的方法有讓相似度的計算變得更為準確。我們也可以進一步得知當臨界值設為不同 數值的時候,兩者之間的誤判率差異,如下表 4.2。

42

擷取前後 臨界值

擷取前誤判個數/全部 個數(誤判率)

擷取後誤判個數/全部 個數(誤判率)

0 366/368(99.46%) 363/368(98.64%) 0.1 365/368(99.18%) 353/368(95.92%) 0.2 362/368(98.37%) 341/368(92.66%) 0.3 355/368(96.47%) 297/368(80.71%) 0.4 332/368(90.22%) 228/368(61.96%) 0.5 285/368(77.45%) 136/368(36.96%) 0.6 190/368(51.63%) 39/368(10.60%) 0.7 58/368(15.76%) 5/368(1.36%) 0.8 5/368(1.36%) 2/368(0.54%) 0.9 2/368(0.54%) 0/368(0.00%)

表 4.2 臨界值設定跟誤判率差異

其中誤判個數為在 368 個正常程式中,被誤判成惡意程式的情況,亦即只要有 一個惡意程式跟其相似度大於或等於臨界值,則此正常程式為誤判,誤判率即為在 368 個正常程式中被誤判成惡意程式的比率。在擷取完有效的資訊以後,由於基底 的個數很多,但是其實有很多基底沒有很重要(不太影響相似度),所以我們在第三 章的 3.2(2)有提出刪減基底的方法,我們要將在惡意程式跟正常程式中基底出現次 數差異較大的基底保留下來,而將基底出現次數差異較小的基底刪去。我們先在表 4.3 展示我們所統計的基底出現次數的差異大小。

最小值 最大值

差異個數 0 40229076 表 4.3 基底出現次數的差異統計

43

在表 4.3 中,我們可以發現基底出現次數的差異變化很大,從最小的 0 到最大 的 40229076,所以我們的目標是刪除掉那些差異較小的基底,可以使得利用剩下 來的基底去建立特徵向量不會影響表 4.2 所列的誤判個數(誤判率)。我們將在下面 表 4.4 中展示刪減基底後的誤判個數跟基底個數的關係。(在此先假定我們的臨界 值設定在 0.7,亦即誤判個數為 5 個。) 我們每一次的試驗的基底個數,若是遇到 非整數情形,則取整數部分。我們一直採用二分法並且觀察其是否有達到誤判率要 求,並且每次試驗的基底個數會是最近一次達到誤判率要求的個數和最近一次沒有 達到誤判率要求的個數的平均值;舉個例子,663=[442(X)+884(O)]/2。

試驗次數 基底個數 誤判個數 達到誤判率要求

(O/X)

第 1 次 1768 5 O

第 2 次 884 5 O

第 3 次 442 7 X

第 4 次 663 5 O

第 5 次 552 5 O

第 6 次 497 6 X

第 7 次 524 5 O

第 8 次 511 5 O

第 9 次 504 6 X

第 10 次 507 5 O

第 11 次 505 6 X

第 12 次 506 6 X

表 4.4 刪減基底測試誤判個數跟基底個數

在這 12 次的試驗中,其中第一次試驗為全部基底的個數,因此誤判個數會跟 表 4.2 所列的相同,從第 2 次試驗開始,逐次將差異較小的基底刪去,若是沒有達

44

到誤判率要求,則下一次試驗將增加一些(其中差異較大的)被刪去的基底回來,若 是有達到要求,則跟最近一次沒有達到要求的基底個數取平均值,進行下一次試 驗,一直重複做直到找到基底個數最少且滿足誤判率要求才停止。在此試驗臨界值 設定為 0.7,最終的基底個數為 507,亦即使用這些差異較大的前 507 個基底當作 特徵向量的基底,所計算的誤判率結果會跟原始的 1768 個基底相同,且 507 為最 少且符合誤判率要求的基底個數。當然基底個數 507 這個值並不是一個定值,會隨 著臨界值制定的不同,或是誤判率所要求的不同而改變。我們另外去做了參考論文 所說的使用基底出現次數最多的當作特徵向量的基底,並且一樣找到符合誤判率要 求的最少基底個數為 503 個,這也許能夠用說明,那些在惡意程式跟正常程式中基 底出現次數差異較大的基底,會大約等於那些出現次數比較多的基底,亦即出現次 數越多的基底越有可能差異越大。

我們做了基底給予不同比重的測試,目標是希望能夠找一組分配不同基底的不 同比重,使得在相同條件下的誤判率能夠比原本更低。我們的想法是既然每個基底 在正常程式中及惡意程式中的差異有大有小,那如果我們將基底給予不同的比重,

可能可以讓相似度的計算更能區分正常程式跟惡意程式,在上面的測試中,我們發 現那些差異較大的基底也是恰為那些出現次數較多的基底,所以我們這邊會使用出 現次數來做為比重給予大小的依據。我們覺得有兩個因素會影響基底的比重,第一 個因素是基底在多少個程式中有出現過,即基底的普遍性高不高,我們覺得出現在 越多個程式中的這種基底會比出現在少數程式中的基底來的重要;第二個因素是基 底在所有程式中累積出現次數,代表說這種基底通常都會出現比較多次,因此在距 離的計算中,應該要佔較小的比重。舉例說明,若是有兩種基底累積出現次數不同,

且它們在距離另一個向量的這兩種基底下都同樣是 1(出現次數差 1),則我們必須 將累積出現次數較多的那個基底給予較小的比重(例如 0.5),將累積次數較少的基 底給予較大的比重(例如 0.6)。因此我們定義我們基底的比重是跟其出現在多少個

45 0 363/368(98.64%) 359/368(97.55%) 0.1 353/368(95.92%) 298/368(80.98%) 0.2 341/368(92.66%) 249/368(67.66%) 0.3 297/368(80.71%) 139/368(37.77%) 0.4 228/368(61.96%) 54/368(14.67%) 0.5 136/368(36.96%) 236/368(6.25%) 0.6 39/368(10.60%) 7/368(1.90%) 0.7 5/368(1.36%) 2/368(0.54%)

46

兩者誤判率相同(0.54%),我們想要觀察在惡意程式資料庫中彼此之間的相似度關 係,我們發現在分配基底比重之後,在新的相似度算法下相同的惡意程式會有更多 的程式跟其相似度高於 0.7,比原本尚未分配基底比重的相似度算法,能找到更多 相似度高於臨界值的程式。我們在 146 個惡意程式所組成的資料庫中,其中有 17 個程式在使用分配基底比重後,可以找到更多相似度高於臨界值的程式,129 個程 式找到個數相同,0 個程式找到個數更少。因此可以確定我們的分配基底比重的方 法,可以在相同誤判率的條件下,偵測到更多的變種;或者可以確定在偵測到相同 的變種的條件下,我們的方法誤判率會較低(較不易將正常程式判定為惡意程式)。

我們在第三章有提到使用曼哈頓距離預先濾波器來濾除在資料庫中較不相似的程 式,並事先建立好每個區域中的惡意程式成員,事先建立二進位樹在偵測時做搜尋 用。因此在偵測時我們需要做計算曼哈頓的距離的值並且判斷在哪個區域中然後在 去那個區域中事先建立好的二進位樹做搜尋。我們測試我們的時間包含計算曼哈頓 距離跟判斷區域以及搜尋到最相似的程式所花費的時間,並跟原論文的方法中在整 個二近位樹中搜尋最相似的程式去做比較,我們分別測試 500、1000、2000、5000 個受偵測程式(虛擬創造的特徵向量),去比較我們方法跟原論文方法的時間,在建 立特徵向量的時間先假定相同,因為有很多種方法可以從 apk 建立特徵向量,我們 假設是使用相同的方法去建立特徵向量,去比較不同處所花費的時間。

47

圖4.2 偵測時間比較(不含建立向量時間)

在圖4.2中,我們可以發現我們的方法較為省時,我們的測試環境是在只有使用146 個惡意程式的資料庫,因為惡意程式更新速度很快,所以資料庫中的程式會越來越多,

需要搜尋的程式也會跟著增加,若是不能根據其向量的特性去分配其資料庫中部份的程 式去搜尋,每次都搜尋全部的程式,則搜尋的時間問題會隨著資料庫中程式增加而越來 越嚴重。

受偵測程式數量 花費時間(秒)

48

第五章

結論

我們在利用 q-gram 擷取資訊時,提出有效率的擷取資訊方法,使得誤判率下 降。我們也提出了刪減基底的方法,可以在誤判率不變的情況下使用最少的基底,

去建立特徵向量。我們提出每種基底應分配不同的比重,如此計算出的相似度將可 以更能區分惡意程式跟正常程式間的差別,並且在維持相同的誤判率下能夠偵測更 多的變種,或是能夠在相同的偵測能力下擁有較小的誤判率。我們也提出使用曼哈 頓距離預先濾波器的方法,能夠事先建立不同曼哈頓距離區域的二進位樹,由惡意 程式資料庫中的程式所組成,能夠讓偵測時只需要去特定的區域中搜尋,不須搜尋 整個資料庫中的程式。

我們也提出了使用數學模型來建立程式特性的想法,我們覺得若是未來能夠在 向量中找到某些變數或是某種統計值會影響這些惡意程式跟正常程式的特性,能夠 提升預先濾波器的效能,使得剩下來要去做搜尋的程式又更少了,若能做到大部分

我們也提出了使用數學模型來建立程式特性的想法,我們覺得若是未來能夠在 向量中找到某些變數或是某種統計值會影響這些惡意程式跟正常程式的特性,能夠 提升預先濾波器的效能,使得剩下來要去做搜尋的程式又更少了,若能做到大部分

相關文件