• 沒有找到結果。

三、 系統設計

3.1 系統原理

在 MalCatcher 中我們採用了監控了隱私資料存取的行為,稱為 private data leakage operation,以及網路封包洩漏隱私資料的行為,稱為 network leakage operation 為主要依據,希望透過這些行為能讓 Malcatcher 有效地偵測出惡意程式 行為,系統架構圖如圖 3,我們修改了 Android 4.0.3 CyanogenMod 系統原始碼,

加入了必要的監控記錄函式,並且運行在 Android 模擬器上,這些監控記錄的函式 主要是在記錄 private data leakage operation,並且我們在系統中安裝了 snort,網 路封包監控軟體,用來監控網路封包,主要是監控記錄 network leakage operation,

同時我們在 Linux 環境下利用 shell script 實現自動化導入 APP 進入模擬器執行,

執行完成會從模擬器中取出 private data leakage operation 以及 network leakage operation 的記錄檔,得到這些記錄檔後透過另一個由 shell script 寫成的程式將記 錄檔轉換為 Weka 此一統計分析軟體可以接受的格式檔案。

在接下來的部分為分別對 private data leakage operation 以及 network leakage operation 兩部分行為作定義以及說明選擇監控這些行為的原由為何。

7

圖 3 MalCatcher 系統架構圖

Snort

Android 模擬器

NetworkMonito r (APP)

修改過的 Android framework

MalCatcher

Analyzed Result

Setting snort rule

8

3.1.1 Private Data Leakage Operation

根據 Yajin Zhou,以及 Xuxian Jiang[12]研究指出,惡意程式的目的大致上分為 兩大類,分別是 financial charge、personal information stealing。

(1)Financial Charge 惡意程式攻擊的目的其中一個就是從使用者手機獲取 利益、金錢,其中最常見的辦法就是透過使用者手機發送小額付費簡訊至特定的號 碼。能使得 Android 手機達成這樣的攻擊目的的方法主要就是透過 Android

framework 提供的 sendTextMessage API,它能允許任一的 APP 只要宣告使用了特 定的權限(也就是 android.permission.SEND_SMS),之後再透過呼叫

sendTextMessage 就可使得 APP 在使用者不知情的情況下寄送簡訊。

(2)Personal Information Stealing 由於使用者越來越依賴手機,漸漸地將個人 許多的隱私資料存放在手機上,因此許多惡意程式會竊取手機上的隱私資料,如 IMEI、IMSI、SIM 卡序號、手機號碼、通訊錄名單、簡訊內容、目前位置等。

Android 系統在版本不斷的更新之下,先前版本的漏洞已經逐漸被修復,對於 Android 系統的一鍵 ROOT 程式的實現也越來越困難,因此惡意程式想透過一鍵 ROOT 程式來背景地將受感染的使用者手機完成 ROOT 來取得 super user 權限已經 越來越困難了,如此一來惡意程式所能執行的動作大大地受限於 Android 系統的權 限管理機制,因此惡意程式宣告使用哪些權限的趨勢對於我們未來的惡意程式偵測 有很大的幫助。

9

4 惡意程式權限宣告趨勢對照(來源: [12])

圖 4 是惡意程式與正常 APP 各別有 1260 個樣本數統計出來前 20 名最常被宣 告使用權限的趨勢對照圖,我們可以看出來相較於正常 APP 的權限宣告趨勢,有 幾個存取隱私資料的權限是較常被惡意程式宣告使用,如 READ_PHONE_STATE、

SEND_SMS、WRITE_SMS、READ_CONTACTS 等在相同樣本數的情況下,宣告 使用的次數卻相差相當大,從這點我們可以推斷單一惡意程式平均宣告使用的權限 數量可能高出單一正常 APP 很多,由此可見,大部分的惡意程式都會存取使用者 手機中的隱私資料,並且很有可能同時存取多種不同類型的隱私資料。

宣告使用某一權限並不能代表 APP 真的去使用到相對應的功能,有可能是因 為 APP 開發者對於某一特定功能使用不夠了解或是 Android 的文件不夠詳細導致開 發者宣告了多餘的權限。在 Adrienne Porter Felt 等人[14]的研究中就有指出,通常 一個 APP 宣告使用了某一權限而在程式碼中卻找不到相對應的功能使用,這種情 況通常可能是因為開發者不夠了解或是文件說明不夠清楚所導致。

因此我們認為單純透過 APP 宣告的權限並不能真正地確實描述出其 APP 的行 為,所以我們監控實際真正會存取隱私資料的 API,如此一來任何 APP 當需要存取

10

隱私資料的時候我們就能確實記錄到 APP 真正的行為,而我們將監控這些存取隱 私資料的 API 的記錄,稱為 private data leakage operation。

3.1.2 Network Leakage Operation

考慮到一般正常 APP 也有可能存取使用者的隱私資料,而且也可能同時存取 多種不同的隱私資料類型,但是可能只限於本地手機端作運用而沒有經由網路傳送 出去或是可能只傳出少許的隱私資料,若只單純以 private data leakage operation 來偵測惡意程式的話,我們推測會有很大的機率對於上述這類型的正常 APP 判斷 成為惡意程式。

然而惡意程式存取了許多的隱私資料,那攻擊者想要取得這些資料的唯一途徑 就是經由網路傳出,因此為了避免可能會存取許多隱私資料但是不會經由網路傳出 或是少許資料傳出的正常 APP 被誤判為惡意程式,MalCatcher 同時監控了網路封 包內容是否含有使用者隱私資料,我們將 APP 經由網路傳出使用者隱私資料的行 為稱為 network leakage operation。

透過 private data leakage operation 以及 network leakage operation,我們 希望 MalCatcher 偵測惡意程式能有不錯的判斷準確度,詳細監控了那些隱私資料的 存取以及網路傳出如表 1,其中底線代表是屬於 network leakage operation,其餘 的則是代表 private data leakage operation。

Private data leakage operations &

Network leakage operations

說明

ACCESS_LOCATION 讀取手機目前的地理位置

11

CONTACT_NET 將通訊錄由網路送出

CONTACT_READ 讀取手機通訊錄

IMEI_NET 將 IMEI 碼由網路送出

IMEI_READ 讀取手機 IMEI 碼

IMSI_NET 將 IMSI 碼由網路送出

IMSI_READ 讀取手機 IMSI 碼

ISO_NET 將 ISO country code 由網路送出

ISO_READ 讀取手機 ISO country code

PHONE_NUMBER_NET 將手機本身的電話號碼由網路送出

PHONE_NUMBER_READ 讀取手機本身的電話號碼

SIM_NET 將 SIM 卡的序列號由網路送出

SIM_READ 讀取手機的 SIM 卡的序列號

SMS_NET 將手機中的簡訊內容由網路送出

SMS_READ 讀取手機中的簡訊內容

12

SMS_SEND 使用發送簡訊功能

1 private data leakage 以及 network leakage operation 列表

相關文件