5.1實驗方案
通過以上章節,本文闡述了目前Android平台上的惡意軟體以“隱私竊取”和“惡意計費”類為主,本研究課題存取控制的目標也正是阻止惡意軟體“隱私竊取”和“惡意計費”的行為,因此,本實驗方案選取良性軟體和惡意軟體,分別針對撥打到電話、傳送簡訊、連網、訪問sd卡、訪問通訊錄、查看簡訊行為進行測試和分析。測試案例選取百度通訊錄、360通訊錄、酷狗音樂、DroidDream,實驗環境為Ubuntu10.04和Android4.0模擬器以及相應的goldfish核心。
5.2實驗過程
1. 測試360通訊錄
360通訊錄既可以打電話也可以發簡訊,因此為360通訊錄分配“game”角色,由於“game”角色不能打電話、發簡訊,因此,當開啟360通訊錄時,如果這些功能都不能使用則符合預期結果。測試如下所示:
圖5.1360通訊錄測試1-不能查看簡訊和通訊錄
2. 測試百度通訊錄
百度通訊錄功能和360通訊錄相似,在此,為百度通訊錄分配“contact”角色,那麼如果它能夠打電話和發簡訊,則符合預期效果。測試如下所示:
3. 測試酷狗音樂
酷狗音樂是可以讀取sd卡音樂檔案進行播放,為此,給酷狗音樂分配“mediaplayer”角色,但不把它設定讀寫sd卡角色,那麼如果它不能播放sd卡音樂檔案則符合預期效果。測試如下:
4. 測試DroidDream—Advanced File Manager和Super Ringtone Maker
DroidDream[18]是一款著名的Android平台上的惡意軟體,它的最大特徵之一是後台連網,泄露使用者隱私。Advanced File Manager和SuperRingtone Marker是DroidDream系列的兩款款惡意軟體,前者它用於檔案管理,可以訪問sd卡,後者用於鈴聲製作程式,可以訪問Internet。建立角色“Malware”,並只給該角色一個訪問網路攝影機的許可權,將“Malware”角色指派給AdvancedFile Manager和Super Ringtone
Maker。測試如下:
5.3實驗分析
1. 360通訊錄測試分析
由於為360通訊錄分配了“game”角色,而此角色關聯的smack規則已經禁止擔任“game”角色的App撥打到電話、傳送簡訊、訪問通訊錄等行為,因此無法用360通訊錄查看通訊錄、簡訊等內容。為使用“adb shell”查看/smack/load裡內容:
圖5.8Android模擬器啟動後smack/load中的smack規則
360通訊錄的uid為10034,從可以看出smack規則“10034 1001 -”已經禁止它與radio進程通訊,因此360通訊錄不能傳送簡訊。若使用360通訊錄傳送簡訊,360通訊錄會提示“發送失敗”的資訊,查看Android的logcat會有如下的資訊:
從可以看出,smack標籤是“10034”的360通訊錄進程無法在BinderDriver中與radio通訊,那麼360通訊錄進程就無法實現發簡訊。
當使用者在鍵盤上輸入不是通訊錄裡號碼時,出現撥號結束的畫面,這是因為本課題已經對radio進行存取控制,撥打或發送不是通訊錄中號碼的打電話和發簡訊的行為都被阻止。當撥打到電話時,出現了撥號介面,這是因為儘管“10034 1001 -”被寫入/smack/load檔案,但此時撥號的Activity是運行在1001進程,如果使用smackload工具在/smack/load寫下smack規則“1001 _ -”,那麼撥號介面的讀秒行為終止,電話無法撥打。這是因為本課題在IPC中加了存取控制,而打電話是radio和rild進程在binder中通訊,而rild(radiointerface
layer daemon)進程的安全性標籤是“_”,因此如果有“1001 _ -”這樣的規則,radio和rild無法通訊,那麼撥號過程終止。如果使用者不給“game”撥打到電話的許可權,那麼360仍然無法撥號,這是由於架構層的RBAC機制起了作用,它會在開啟撥號的Activity之前對此Activity按照uid和申請的許可權進行許可權檢查,如果此組件沒有撥打到電話許可權,那麼撥號的Activity不會出現。
2. 百度通訊錄測試分析
百度通訊錄的uid為10037,通訊錄進程的uid為10000,因為/smack/load有規則“10037 10000 rwxa”,所以在百度通訊錄中使用者可以看到通訊錄。由於181不是通訊錄裡的號碼,所以用百度通訊錄向這個號碼傳送簡訊會失敗,號碼666是通訊錄裡的號碼,所以用百度通訊錄向這個號碼傳送簡訊會成功。
3. 酷狗音樂測試分析
由於sd卡裡檔案都被打上了“sdcard”安全性標籤,而酷狗音樂沒有被分配讀寫sd卡角色,因此,酷狗音樂無法開啟sd卡裡的音樂。
4. DroidDream測試分析
由於“Malware”角色只有一個訪問網路攝影機的許可權,因此擔任“Malware”角色的App除了能夠使用網路攝影機,不能使用其它許可權。從測試結果可以看出:使用File Manager查看sd卡裡檔案長度都是0B,這說明了File Manager不能訪問sd卡。同樣,Super Ringtone Maker軟體有一個功能是搜尋互連網,而這個功能也不能用了,架構層的RBAC已經把相應的許可權拒絕了,以下為“adb logcat”裡內容:
系統評估
1. 功能評估
通過以上實驗驗證,本系統不僅能夠通過定製角色限制許可權,而且使用smack規則對核心的進程實施了強制存取控制,因此本系統能夠保護使用者隱私資料和阻止“惡意計費”等行為,下表將國外典型的Android安全強化技術成果與本系統進行了功能對比:
表5.1 國外典型技術成果與本系統功能對比
|
安全性原則可定製 |
限制許可權 |
核心加固 |
上下文支援 |
阻止提權攻擊 |
CRePE |
是 |
是 |
否 |
是 |
否 |
Apex |
是 |
是 |
否 |
是 |
否 |
SEAndroid |
是 |
是 |
是 |
否 |
是 |
本系統 |
是 |
是 |
是 |
否 |
否 |
CRePE和Apex的安全機制共同特點是基於Android許可權檢查機制,因此,它們的安全機制都可以被惡意軟體利用Android系統漏洞或者使用Linux系統調用而直接繞過,本課題不僅在Android許可權基礎上實現了RBAC,而且使用了Smack模組實現了對Linux進程的控制,因此,本系統比CRePE和Apex具備更高的安全性。SEAndroid是一個“重量級”的Android安全增強系統,它要求智能手機配置較高,不太適合普通Android手機使用者,而本系統採用的輕量級存取控制模組Smack作為Android核心存取控制機制,由於Smack對Android系統效能損耗很小,因此,本系統比SEAndroid在效能上有優勢,雖然本系統有著以上優點,但本系統也有一些缺陷:
第一,本系統的一部分存取控制是基於Zygote模組,但Zygote不會重複“fork”相同uid的進程,因此,當使用者在定製安全性原則時,本系統的強制存取控制未必及時生效,比如當某個App被啟動後,它的進程一直會存在,而不會被Zygote重複“fork”,因此這個App的smack規則不會被更新,只有讓模擬器重啟,Zygote進程重新裝載smack安全性原則;
第二,本系統沒有考慮到上下文環境,使用者在制定安全性原則時,會出現“要麼容許,要麼拒絕”這種情況,因此,本系統下一步工作就是將上下文考慮進來;
第三,本系統的存取控制對特權進程失效。由於Smack安全模組不能阻止Linux超級使用者或進程一切行為,因此,當Android手機被“root”後,本系統的存取控制將失效;
第四,本系統沒有考慮審計。審計是保障電腦系統安全的重要手段,Smack核心本身就提供了審計功能,如果本系統在此基礎上設計入侵檢測模組,那麼Android系統的安全性將進一步增強。