在這一小節我們針對不同行為監控之間的比較以及不同機器學習演算法之間 的比較這兩大部分作分析與討論,從中觀察 MalCatcher 在不同的行為監控以及不同 的機器學習演算法下訓練出來的效果會有什麼樣不同。
5.6.1 不同行為監控之間比較
以 total accuracy 來看,單純看 system call 的判斷準確度大約 6~7 成左右,雖 然有一定程度可以偵測出惡意程式,但是還是有很大的改善空間,這也代表了正常 APP 和惡意程式的 system call 的執行行為有些相似,無法很有效地利用機器學習 演算法訓練 MalCatcher。
另一方面,在大部分的機器學習演算法下,單純看 system call 的判斷準確度還 比單純看 private data leakage operation 要好,這代表著惡意程式跟正常 APP 存取 隱私資料的行為的相似度超過我們的預期,也間接地證明了先前推測可能發生的問 題,也就是存取很多的隱私資料並不代表就是惡意程式,許多正常 APP 也常常會 去存取隱私資料,因此單純透過 private data leakage operation 的監控來偵測惡意程 式是不可行的,有非常大的機率會造成誤判。
透過 network leakage operation 的監控來偵測惡意程式的效果相較前面所提到 的兩個方法要好上許多,基本上都可以達到約 9 成的判斷準確度。這也證實了我們 先前的推測,也就是若攻擊者想取得使用者儲存在手機上的隱私資料則必須透過網 路將這些隱私資料傳出取得。
因為惡意程式的攻擊目的有些並不一定只想竊取使用者儲存在手機中的隱私 資料,也有可能想透過背景地替使用者寄送小額付費簡訊至特定的收費號碼來取得 利益等,因此我們也嘗試著同時監控 private data leakage operation 以及 network leakage operation 的行為偵測惡意程式來查看是否有更進一步地改善判斷的準確度,
我們得到的實驗結果也顯示了同時監控這兩種行為的效果又更加地改善了判斷準
48
確度,使得 MalCatcher 最高能達到約 9 成 3 的準確度。
另外,上述有提到單純看 system call 的效果雖然不是很好但是還是有一定的判 斷準確度,所以我們試著結合判斷效果較好的 network leakage operation 來查看是 否能改善監控 system call 行為的判斷準確度,我們的實驗結果也顯示了確實大大地 改善了單純監控 system call 行為的判斷準確度,由原本 6~7 成的準確度提升到了 7~8 成接近 9 成的準確度,甚至在特定的機器學習演算法終能達到 9 成 3 的準確度,
由此可見,network leakage operation 的行為監控在偵測惡意程式中扮演著非常重 要的角色。
雖然 system call 加上 network operation 的行為在特定演算法下能達到比 private data leakage 加上 network leakage operation 的效果好,但是 private data leakage operation 中包含的特徵行為總共有 9 個,而 system call 中包含的特徵行為共有 216 個,需監控的特徵行為數量相差非常多,這可能會在造成在執行機器學習演算法分 析上的時間效率變慢,因此我們建議在利用 private data leakage operation 加上 network leakage operation 的行為來偵測惡意程式就已足夠。
5.6.2 不同機器學習演算法之間比較
在 NaiveBayes 演算法下,由於 NaiveBayes 演算法必須每個特徵行為事件必須 互相獨立、互不相干的才能發揮其演算法的效果,不管在 system call 或是 private data leakage operation 或是 network leakage operation 這些監控行為中,每個特徵行為之 間的相依性不高,因此在 NaiveBayes 演算法下表現出來的判斷準確度相較其他演 算法不會比較差。
在 REPTree 演算法下,因為 REPTree 演算法透過所有的特徵行為資訊建立了決 策樹之後,會進行 reduced error pruning 的動作將一些不會改善甚至惡化分類結果 的 subtree 刪除掉,使得在不會降低判斷準確度的情況下大大地縮小了決策樹的大 小,同時達到了執行效率以及判斷準確度的提升,因此跟其他演算法相較之下有著 較好的判斷準確度。
49
在 KNN 演算法下(其中 K 在我們實驗中設定為 5),判斷準確度也相當地不錯, 法找出一個適合的 hyper plane 來將這兩類的樣本分開,因此造成訓練 MalCatcher 偵測惡意程式的效果在某些監控行為中不是很好。
另外,我們也同時使用了 Adaboost 演算法來試著強化 NaiveBayes、REPTree、
KNN 等演算法來看是否能再更進一步的提高各演算法的判斷準確度,Adaboost 中 我們設定為共有 10 個回合,每個回合的數據集合採重新採樣(Re-sampling)機制,
然而 Adaboost 對於演算法的優化效果沒有很好,除了在 network leakage operation 中對於 REPTree 演算法有較顯著的改善效果之外,對於其他演算法的改善有限甚至
5.6.3 ROC Curve
ROC Curve 是一可以用來清楚明瞭地看出一個系統最後訓練出來的判斷效果的 方法,它是一利用 true positive rate(y 軸)以及 false positive rate(x 軸)組成的 二維線性圖,其中 ROC Curve 下方面積越大就代表著訓練出來的效果越好,這是因為若 當系統的 false positive rate 越低時,系統的 ture positive rate 能夠越高的話,
代表著系統的誤判率會越低,也就代表著系統的判斷效果越好。因此我們利用 ROC Curve 來觀察比較 MalCatcher 和 Crowdroid 兩者利用 Adaboost + Reptree 演算法訓練出來的 效果好壞,如圖 20、圖 21。
從下面兩張圖中我們可以很明顯地看出來,MalCatcher 的 ROC Curve 下方面積 比 Crowdroid 的 ROC Curve 的下方面積大了許多,並且 MalCatcher 能夠在 false positive rate 很低的情況下達到相當高的 true positive rate,由此可知我們的系統 MalCatcher 偵測惡意程式的能力比 Crowdroid 來得要好,並且判斷準確度相當地高。
51
圖 20 MalCatcher 的 ROC Curve
圖 21 Crowdroid 的 ROC Curve
52