虛擬化世界入門—第一部分

作者:Egidijus Lileika,資深安全研究員

 

本研究旨在了解應用程式虛擬化作為攻擊媒介的潛在風險。研究測試了十幾個虛擬化應用程式在常規使用場景和作為駭客工具時的表現。此外,還評估了適用於所有測試虛擬化應用程式的「Android 應用程式保護」解決方案的緩解效果。請繼續閱讀本系列的第一部分。

面向“普通”最終用戶的虛擬化應用程序

大多數針對「普通」用戶的虛擬化應用程式都可以從 Google Play 應用程式商店下載。這些應用程式的下載量已達數億次。其中最受歡迎的應用程式之一是 Parallel Space。這些應用程式的主要目標用戶是擁有多個應用程式帳戶(例如社交媒體應用程式)的用戶。虛擬化應用程式允許使用者同時執行相同應用程式的多個實例,無需登出並登入其他帳戶。一些虛擬化應用程式標榜自己具有隱私增強功能。安裝在虛擬空間中的應用程式通常(但不總是)會以某種方式與常規 Android 系統隔離。

虛擬化應用程式作為威脅行為者工具

使用者群體的另一端是威脅行為者。虛擬化技術可用於多種用途。虛擬化的主要優勢之一是,虛擬化應用程式擁有比目標應用程式更高的進程權限,從而允許虛擬化應用程式與目標應用程式自由互動。虛擬化透過某種方式繞過了 Android 的安全模型,在虛擬化應用的沙箱中創造了一個更寬鬆的環境。許多類型的虛擬化應用程式提供「偽 root」存取權和由 Xposed 等 hook 框架提供的 hook 服務。所有這些都可以在未 root 的手機上實現——這意味著惡意活動可以在已驗證的裝置上執行。

虛擬化環境為以下惡意活動提供了可能性:

  • 遊戲中的作弊行為: 像 GameGuardian 這樣的軟體在虛擬化環境中運行,幾乎可以實現它在已 root 的裝置上能做的所有事情。
  • 鉤子: VirtualXposed 等虛擬化軟體允許將 Xposed 模組注入到虛擬化應用程式中,從而改變其行為。例如,VirtualXposed 可用於繞過 YouTube 應用程式中的廣告。
  • 偽造的root權限: 某些虛擬化應用程式會提供虛假的「超級使用者」存取權限,以便運行具有更高權限的軟體。例如,可以使用虛假的 root 使用者在未 root 的裝置上執行 Frida 伺服器。
  • 虛擬位置: 大多數虛擬化應用程式都提供位置欺騙服務。這對於繞過基於地理位置的驗證或在像 Pokémon Go 這樣基於地理位置的遊戲中作弊尤其有用。
  • 動態分析: 一些流行的虛擬化應用程式是開源的,可以透過自訂插件進行修改。使用者可以透過插件動態地檢測虛擬化應用程序,觀察應用程式行為,並捕獲網路流量。

圖 1 各個虛擬空間在 GameGuardian 使用者中的受歡迎程度

圖 1 – GameGuardian 使用者對各個虛擬空間的受歡迎程度

虛擬化應用程式類別

應用虛擬化是一個廣泛的概念。應用虛擬化可以透過多種方式實現,不一定需要虛擬化 Android 系統。應用虛擬化是一個很好的術語,它概括了在非標準環境下運行應用程式的概念。以下列舉幾種應用虛擬化的不同方式:

工作概況隔離

一些虛擬化應用程式透過建立獨立的工作設定檔並將虛擬化應用程式隔離在其中來實現虛擬化。工作設定檔是安卓裝置上的一種設置,用於將「工作」應用程式和資料與個人應用程式和資料分開。工作設定檔位於設備的一個獨立區域,與系統的其他部分隔離。使用工作設定檔隔離應用程式並非總是好事,因為在普通使用者空間運行的潛在惡意應用程式(即使擁有 root 權限)可能無法被偵測到,因為被隔離在工作設定檔中的應用程式只能看到相同工作設定檔中的應用程式。例如,一些遊戲威脅攻擊者正在濫用這種攻擊策略,他們在擁有 root 權限的裝置上使用 GameGuardian,並在隔離的工作設定檔中執行目標應用程式。 「Island」應用程式是一款在 Google Play 商店中免費提供的應用程式,可讓使用者複製特定應用程式。 「Island」應用程式也是「工作設定檔隔離」的典型例子。

克隆和重新打包

另一種虛擬化應用程式透過複製或重新打包目標應用程式來實現虛擬化。通常,這個過程很簡單。基本原理是,這些應用程式會被複製,然後將其套件名稱修改為某種唯一的套件名稱。為了繞過各種檢查和驗證,這類虛擬化應用程式會注入自己的程式碼,修補或鉤住負責取得套件名稱和簽章的方法,以及其他一些方法,使目標應用程式誤以為自己是原始應用。由於應用程式 ID 已更改,原始應用程式和複製應用程式可以共存於同一 Android 系統上。這種虛擬化方式速度最快,因為它沒有虛擬化開銷。 AppCloner 應用程式就是這類應用的一個例子。 AppCloner 也可在 Google Play 商店免費下載。

應用程式主機

「應用宿主」是另一種虛擬化技術。應用宿主透過將目標應用程式載入到自身並運行來實現虛擬化。這是一種相對簡單的應用虛擬化方法,但也存在一些限制。例如,這類應用宿主通常一次只能執行一個應用實例,或同時執行的應用數量非常有限。一些採用這種策略的虛擬化技術以SDK的形式發布,允許使用者為特定應用創建具有特定功能的自訂宿主應用程式。此類SDK也為使用鉤子框架以及透過插樁進行應用動態分析提供了可能。 VirtualApk和Phantom就是這種虛擬化方法的典型例子。

整個安卓系統虛擬化

一些虛擬化應用能夠虛擬化整個安卓系統。其中一些甚至可以從任何 ROM(唯讀記憶體)鏡像啟動整個安卓系統。這種虛擬化方式速度最慢,但功能最強大,因為它實際上模擬了整個安卓手機。自訂 ROM 映像或檔案可以被修改、自訂,甚至可以透過 Magisk 等工具取得 root 權限。虛擬化的應用幾乎無法與外部安卓系統交互,也無法了解其內部正在發生的事情。這種虛擬化技術可以在看似正常的虛擬安卓系統上運行目標應用,而無需 root 權限。然而,原始安卓系統可能已被 root,並運行額外的動態分析軟體來篡改虛擬化的應用。 Twoyi 是一款非常受歡迎的能夠虛擬化整個安卓系統的應用程式。

部分安卓運行時虛擬化

最後,一些虛擬化應用可以實現部分安卓系統虛擬化。通常,這類虛擬化應用會使用代理和虛擬進程來重建安卓系統的大部分內容。由於在虛擬化應用程式與系統其餘部分通訊期間,需要攔截和修補許多數據,因此鉤子(hooking)是此類虛擬化技術中非常重要的一部分。此外,這種方法在不同的安卓版本和不同的安卓設備廠商之間維護起來也比較複雜。通常,這種虛擬化方法會有穩定性問題。然而,部分安卓運行時虛擬化技術是最強大的虛擬化技術之一:一個實現良好的部分安卓運行時虛擬化可以完全無法被偵測到。 VirtualApp 是目前最著名的部分安卓運行時虛擬化方案之一。

虛擬化應用值得信賴嗎?

如前所述,Google Play 應用程式商店中眾多虛擬化應用程式聲稱能夠提升隱私保護,讓一般用戶誤以為虛擬化技術可以改善用戶隱私。然而,這種說法值得懷疑。虛擬化應用與系統其他部分隔離,確實可以提升隱私保護。但是,虛擬化應用程式對虛擬化的應用程式擁有的權限遠高於安卓系統上安裝的任何其他第三方應用。因此,無法保證虛擬化應用程式不會利用這些權限來竊取使用者的個人資訊。

大多數虛擬化應用程式都充斥著廣告。有些甚至會在虛擬化應用程式中註入額外的廣告軟體程式碼。未經用戶同意,幾乎有無數種東西可以被注入到虛擬化應用程式中。

此外,使用虛擬化軟體可能違反虛擬化應用程式的使用條款,這意味著使用虛擬化軟體可能會導致帳戶被封鎖。

 

請繼續閱讀本部落格系列的第二部分,以了解更多資訊。 點擊此處。

你可能還喜歡