Android N如何限制重置密碼以遏制勒索軟件
Android N安全特性概覽
AndroidN即Android7.0,代號“牛軋糖”,是Google于2016年7月份推出的最新版智能手機操作系統。AndroidN帶來了諸多新特性與功能,它們將對系統整體性能進行提升,特別對安全性進行了強化。
圖1給出了AndroidN帶來的主要變更,一方面,AndroidN對部分原有功能進行了優化,如應用程序編譯、電池與內存管理、通知功能、無障礙功能等;另一方面,AndroidN也引入了諸多新特性,如多窗口支持與VulkanAPI等。
圖1Android N主要行為變更
AndroidN的諸多新特性歸根結底是為了增強系統安全性、提升用戶體驗。為了應對層出不窮的惡意木馬和不斷完善Android系統安全機制,Google還對Android系統的安全性進行了諸多優化,這些優化主要涉及系統權限、應用間文件共享以及Androidfor Work三方面的內容:
1.系統權限變更
棄用GET_ACCOUNTS權限。AndroidN之前,開發者通過AccountManager的getAccounts()方法獲取設備上賬戶信息之前必須保證已申請GET_ACCOUNTS權限;而AndroidN棄用了該權限,開發者可以在不申請GET_ACCOUNTS的情況下訪問設備上的賬戶信息。
新增OPEN_EXTERNAL_DIRECTORY行為。與原先申請WRITE_EXTERNAL_STORAGE權限后即可寫外部存儲不同的是,在AndroidN中,開發者首先需要通過該Action在外部存儲中申請創建一個可寫目錄,方可對外部存儲進行寫操作,這種方式進一步加強外部存儲的安全性能。
2.應用間文件共享
應用私有目錄被限制訪問(0700),文件所有者將無法通過設置私有文件訪問模式為MODE_WORLD_READABLE與MODE_WORLD_WRITEABLE來開放私有文件的讀寫權限;此外,通過file:///URI也將無法訪問到應用包之外的路徑;同時DownloadManager將不能通過文件名來共享私有文件的信息。若要在應用間共享文件,開發者可以發送一項content://URI,并授權URI的臨時訪問權限。進行此授權的最簡單方式是使用FileProvider類。這一改變有效確保了共享文件的安全問題。
3.Android for Work
主要涉及證書安裝、重置密碼、二級用戶管理以及設備標識符訪問權限的變更;
除了上述三個方面外,AndroidN還引入了新的開機驗證機制,在設備開機時首先會驗證系統文件完整性,一旦檢測到系統文件被篡改(或者是引導鏡像存在被修改的痕跡),則禁止系統啟動或限定部分功能(實際上在AndroidM時代,系統也會進行完整性檢查,但AndroidM在檢測到系統被篡改時只是以彈窗形式提醒用戶,而不會采取進一步措施)。AndroidN的新開機驗證機制將直接影響到設備Root的困難程度,因為在Root過程中通常以修改系統文件的方式來提升用戶權限。從這個角度來看,新的開機驗證機制在某種程度上提高了系統的安全性。
AndroidN在用戶層與系統層上的安全機制調整增強了設備的安全性。在系統層面,通過限制對私有文件的訪問,強化了應用間的隔離效果,進一步保護了應用程序私有數據的安全;在用戶層面,通過嚴控證書安裝流程、限制重置密碼等操作來降低由非法證書、鎖屏勒索類木馬帶來的威脅。
我們以Androidfor Work對鎖屏勒索類木馬發展趨勢產生的影響為例來深入分析安全新特性。
鎖屏勒索類木馬現狀
鎖屏勒索類木馬是讓Android用戶頭疼的惡性問題之一,網絡上也頻頻爆出Android用戶遭遇各類鎖屏勒索的新聞及其引發的相關討論。
圖2Android鎖屏勒索問題頻現
Android手機鎖屏勒索類木馬主要是通過操作用戶開機密碼從而強制鎖定用戶手機,使得用戶無法正常使用手機,并以此威脅用戶進行付費解鎖,用戶只需按照惡意軟件的提示進行指定操作。從技術角度看,鎖屏勒索類木馬主要利用了特殊懸浮窗、Activity劫持、屏蔽虛擬按鍵、設置手機PIN碼和修改系統文件等方式以達到強制多屏的效果。
2016年前三個季度捕獲鎖屏勒索類木馬11.1萬余個,與2015年同季度對比發現,2016年一季度呈現出爆發式增長,同比增長767%;2016年二季度同比增長360%;2016年三季度同比增長56%,如圖3所示。由圖4可以看到,直接與重置密碼相關的鎖屏勒索類木馬在這類木馬中占了很大比重。這既足以反映出鎖屏勒索類木馬已成為Android安全的重災區,也表現出重置密碼是這類木馬的最常采用的手段,同時這類木馬展現的巨大利益誘惑吸引著大量的木馬作者,無形中給廣大用戶帶來了巨大的安全隱患。
圖32015和2016年同季度Android鎖屏勒索類木馬數量對比
圖4鎖屏勒索木馬中設置鎖屏密碼勒索木馬占比
重置密碼特性變更
圖5給出了一個Android手機上的鎖屏勒索類木馬示例,可以看出木馬運行后首先會要求獲取設備管理權限,用戶按要求激活設備管理器后則會發現手機立刻被強制鎖屏,并且鎖屏界面出現了“提示性”語句,用戶根據“提示性”信息向指定賬戶支付一定金額后才能取得新密碼解鎖進入手機桌面。
圖5Android鎖屏勒索木馬示例
1.鎖屏勒索類木馬實現重置密碼
Android N之前,通過操作設備管理器可以很容易地實現重置密碼,只需調用設備管理器DevicePolicyManager提供的resetPassword(Stringpassword, int flags)接口,其中password為新的密碼。圖6所示為勒索木馬重置密碼的代碼:首先需要為設備管理器添加reset-password動作,然后只要監聽到用戶激活設備管理器便立即調用resetPassword接口進行重置密碼進而鎖定用戶的手機,如圖6所示。
圖6勒索軟件示例代碼
2.Android N中的resetPassword接口
與Android N之前版本可任意設置或重置設備密碼不同的是,AndroidN中明確規定,第三方應用開發者只能使用DevicePolicyManager.resetPassword為無密碼設備設置初始密碼,而不能重置或清除已有的設備密碼。
若設備當前沒有密碼,如圖7( 左)所示,此時可以調用resetPassword方法成功設置鎖屏密碼,如圖7(右)。
圖7成功設置密碼
若設備已有密碼,當嘗試調用resetPassword方法重置鎖屏密碼時,系統會拋出SecurityException異常,并提示“Admincannot change current password”,如圖8所示。
圖8修改已有密碼失敗
從上述內容可以看到,AndroidN中對于resetPasswordAPI所添加的限制能阻止木馬對已有鎖屏密碼的重置,從而使得部分勒索軟件失效。
小結
1.在Android N中,鎖屏勒索類木馬只能利用系統提供的重置密碼API來設置設備的初始密碼,而不能用來修改已有密碼,這也就意味著那些從不設鎖屏密碼的用戶仍然會處在危險之中,由此可見用戶養成主動設置鎖屏密碼等良好習慣對提高設備安全性而言非常重要;
2.由于在針對Android N以下版本的鎖屏勒索類木馬中,重置密碼相關的木馬占比較大,因此AndroidN對該API的使用限制將會大幅縮小鎖屏勒索類木馬的影響范圍;
3.面對此種對重置密碼功能的限定,鎖屏勒索類木馬可能會另辟蹊徑,比如結合偽裝、誘導等其他手段來擾亂用戶正常使用設備,以達到敲詐勒索的目的。對此我們會繼續關注,讓用戶更安全地使用手機。