• 沒有找到結果。

3.1 動機及問題描述

在逆向工程之後,我們要將程式的原始碼先切分成許多 basic blocks,再經過 Androguard的文法轉換表轉換成一組字串來代表這個程式的所有特性。我們在參考的 Androguard工具中發現其文法轉換表,有幾個參數是沒有用到的,也有些參數我們覺得 可以用更好的方式去表示。在擷取特性的時候,我們希望能夠在固定的長度字串(4-gram) 中,包含更多的訊息,因此我們會將一些多餘的訊息濾除,並且將原本長度為2的參數 改為長度為1的參數(因為其實只有一個參數)。

產生字串之後就是要建立向量的基底,然後再將字串轉換成向量。參考的論文中所 提到的,將惡意軟體跟正常程式中出現次數前500多的這些子字串,當作程式的特性來 建立基底,我們覺得應該有更好的做法,而不是直觀的取出現次數最多的當作特性。我 們覺得應該要觀察正常程式跟惡意軟體之間的子字串出現次數的差距大小,而不是只統 計哪個特性出現比較多次就比較重要。我們覺得在正常程式跟惡意軟體之間的子字串出 現次數差距越大,表示這種特性,比較能夠區分出是正常程式,或是惡意軟體。

有了基底之後,我們可以進一步建立程式的特徵向量。向量在數學上有很多優點,

可以計算距離,可以計算角度,也可以計算平均值、變異數等數學統計特性。我們覺得 應該可以用一些數學特性來表示程式,並不完全要使用相似度的方法來跟資料庫之中程 式的向量做比較。我們覺得若是能夠找到一種模型來描述這個向量,那我們能夠更正確 地去代表這個程式的特性,可以減少比對的複雜跟時間。

17

3.2 系統設計

我們發現若是使用向量的曼哈頓距離(Manhattan distance),可以將許多相似(相 似度大於或等於臨界值)的程式分群,但也有可能分到不相似(相似度小於臨界值)的程 式而曼哈頓距離卻很相似(圖 3.1)。但我們可以確定的是,如果這兩個程式很相似,那 它們的曼哈頓距離會很相似(圖 3.1),即曼哈頓距離的值會收斂在一個範圍之中。而這 個範圍的最大值以及最小值會跟這一群程式彼此之間的2種相似度有關,我們會定義一 種新的相似度,曼哈頓距離相似度,主要是要計算程式之間曼哈頓距離的相似程度,並 且會跟原本參考的論文中定義的相似度做連結。利用兩種相似度之間的關係找到每一群 曼哈頓距離的範圍最大值與最小值,然後可以做成預先濾波器,使得偵測時在建立完向 量之後,先經過曼哈頓距離預先濾波器,這時會判斷向量落在哪一群曼哈頓距離範圍 內,然後去那一群之中搜尋。因此我們也需要先建立每一群曼哈頓距離範圍之中的二進 位樹,在判斷完是哪一群之後就可以去那一個特定的樹做搜尋了。因此我們在實現曼哈 頓距離預先濾波器的時候,必須要確定每一群曼哈頓距離的範圍最大值與最小值,以及 每一群之中所包含的成員有哪些惡意軟體,然後將這些成員依照vantage point tree的 方法建立成二進位樹。

所有程式

程式相似度高的一群程式 曼哈頓相似度高的一群程式

圖3.1 曼哈頓距離相似度跟程式相似度的關係

18

所以我們主要的設計是透過偵測的程式特徵向量的曼哈頓距離,先濾除掉與偵測的程式 曼哈頓相似度低的程式,但是不濾除程式相似度高(大於或等於臨界值)的那些程式。在 整個偵測系統中,大部分跟第二章所提的架構相同,有幾個不同的地方分別為(1)q-gram 資訊擷取、(2)刪減基底的方法、(3)曼哈頓距離預先濾波器、(4)依照曼哈頓距離區分 的二進位樹。因此我們在接下來的小節,會注重在這幾個不同的地方,其他相同的地方 就不再詳加說明,圖 3.2 為系統架構圖。

圖3.2 系統架構圖

19

相關文件