ZergHelper:成功繞過iOS App Store的代碼審查的風險軟件

jopen 8年前發布 | 15K 次閱讀 App Store ZergHelper

ZergHelper:成功繞過iOS App Store的代碼審查的風險軟件

Apple 官方的 iOS App Store 一直以來都以嚴格的代碼審查著稱,這項強制性的措施已經成為 iOS 安全生態系統中確保 iOS 用戶的隱私和安全的一項重要機制。但是近期有安全人員發現,有一款 APP 成功繞過了 Apple 的代碼審查機制。這款 APP 在 App Store 中的名稱為“開心日常英語(HappyDaily English)”,目前 Apple 已經刪除了該款 APP。這是一個針對中國大陸 iOS 用戶的非常復雜的、第三方應用商店客戶端,并且已經發現了企業簽名版本。

研究人員暫時還未發現該軟件的任何惡意功能,因此將其歸為 Riskware(風險軟件),并命名為 ZergHelper。

ZergHelper:成功繞過iOS App Store的代碼審查的風險軟件

圖一 AppStore 中的“開心日常英語”

ZergHelper 中存在以下安全風險:

偽造 App Store,提供沒有安全保障的 iOS 應用

濫用企業證書和個人證書簽名和分發應用,其中可能包含未審查的代碼,或濫用私有 API

要求用戶輸入 AppleID,并為用戶提供 Apple ID,可能使用這些 ID 登陸 Apple 服務器,并在后臺執行操作

創造者試圖通過動態更新代碼擴展其功能,可能會繞過 iOS 安全限制

使用敏感并且具有風險的技術,這些技術可能會被惡意軟件用于攻擊 iOS 生態系統

ZergHelper 已經通過了 Apple 的代碼審查,它通過在不同的地理位置執行不同的操作來實現這一功能。在中國以外的地區,它就是一個英語學習軟件,然而當在中國使用該軟件時,它真正的功能就顯現出來。

2015 年 10 月 30 日,ZergHelper 在 App Store 上架,但是,直到 2016 年 2 月 19 日,它的隱藏功能才被人發現。隨后,蘋果在其 App Store 中刪除了該軟件。ZergHelper 的主要功能是提供一個包含盜版和崩潰的 iOS 應用和游戲的 App Store。它由中國的一家公司開發,其主要產品為 XY Helper,ZergHelper 是 XY Helper 的未越獄版本和“official App Store”版本。

除了濫用企業證書,ZergHelper 使用了一些新技術在未越獄的設備上安裝軟件,它實現了 Apple iTunes 的基于 Windows 的版本,用于登錄、購買和下載應用。同時還實現了 Xcode IDE 的功能,可以自動生成免費的開發證書,這意味著攻擊者已經可以分析 Apple 的專有協議和 8 個月前才公布的開發計劃。ZergHelper 還會將一些 ID 分享給用戶。

ZergHelper 的代碼十分復雜,并且目前尚不清楚它是否會盜取賬戶信息,并將其發回服務器。不過,可以確定的是,它確實會向服務器發送設備信息,用于靜態追蹤,它的作者似乎嘗試使用 Lua 變成語言使其更加具有擴展性。根據對 ZergHelper 使用的框架的分析,它的代碼可以在不需要 Apple 進一步審查的情況下進行更新。

目前已經確定超過 50 個 ZergHelper 應用使用企業證書,并且使用不同的渠道進行傳播。

ZergHelper 的傳播和功能

ZergHelper 使用以下方式進行安裝:如果 iOS 用戶在中國訪問 XYHelper 的官方網站,頁面首部的廣告標題會提示用戶可以去 App Store 安裝他們的產品 XY Apple Helper,如圖二左。點擊確定按鈕后,官方 App Store 會自動打開,并且會顯示 Happy Daily English 的安裝界面,如圖二右。

ZergHelper:成功繞過iOS App Store的代碼審查的風險軟件

圖二官網上的引導和 App Store 中的安裝界面

原始的 Happy DailyEnglish 是開源的,并且以工程名 HappyEnglishSentences8k 托管在 OSChina 網站。ZergHelper 的作者重新編輯,并且嵌入了就有風險的代碼。項目的內部名稱為 XYFactory,應用的內部名稱為 AppStore_4.0.1。

如果用戶使用桌面瀏覽器或任何平臺的 iTunes 客戶端瀏覽該應用程序,它的名稱為“開心日常英語”,但是一旦在 iPhone 或 iPad 上安裝,就會變成“XY 助手”,就想 Info.plist 配置文件中的 CFBundleDisplayName 值,如圖三。分析表明,作者在向 Apple 以 Web 表單的形式提交應用時,輸入了不同的名稱,并且 Apple 的代碼審查并沒有發現不一致。

ZergHelper:成功繞過iOS App Store的代碼審查的風險軟件

圖三 ZergHelper 名稱的不一致

當應用啟動時,會立刻連接到[.]xyzs.com,并且根據 HTTP 請求的返回結果提供不同的功能,如圖四。如果 IP 地址位于中國以外的地區,網頁就會返回 404-not-found 錯誤。在這種情況下,該應用只會顯示一個英語學習頁面,如圖五左。

ZergHelper:成功繞過iOS App Store的代碼審查的風險軟件

圖四根據 HTTP 的返回結果提供不同的功能

ZergHelper:成功繞過iOS App Store的代碼審查的風險軟件

圖五不同地區的使用顯示不同的界面

如果審查員不在中國,這種方法會使他們認為這是一個合法的應用,如果在中國也沒有關系,作者可以在審查期間關閉網站,審查員同樣看不到它的實際功能。

對于位于中國的用戶,它會顯示不同的用戶界面,如圖五右。它會引導安裝兩個用于“解決穩定性問題”的配置文件。但實際情況下是安裝了設備的 Enrollment challenge(用于向相關的 MDM 系統注冊設備)和 web clip 如圖六。這些配置文件使用 xyzs.com 的證書簽名,該證書由 Go Daddy Secure Certificate Authority 在 2015 年 12 月 2 日簽發。

ZergHelper:成功繞過iOS App Store的代碼審查的風險軟件

圖六安裝的兩個配置文件

該應用可以直接在設備上安裝大量應用和游戲,它包含熱門應用、熱門游戲、和排名應用等頁面,類似于 App Store,如圖七。唯一的區別是,ZergHelper 提供的應用都是免費的,也就是說,這些都是合法應用的盜版。

ZergHelper:成功繞過iOS App Store的代碼審查的風險軟件

圖七主界面與 App Store 的對比

在設置標簽中,對于使用 iOSpre-9.0 版本的用戶,可以輸入 Apple ID 和密碼,ZergHelper 會記住該密碼。在界面下方,有一個“沒有 Apple ID,免費領取一個”的按鈕,如圖八。目前研究人員尚不清楚這些 Apple ID 的來源。

ZergHelper:成功繞過iOS App Store的代碼審查的風險軟件

圖八設置標簽

在未越獄的設備上創建第三方應用商店的新方法

ZergHelper 使用一種新方法在未越獄的設備上創建第三方應用商店,他們可以用于傳播盜版的或者有問題的 iOS 應用。其中包含兩個通過 App Store 審查的新方法。

假冒 iTunes 客戶端

ZergHelper 實現了 PC 上的 iTunes 客戶端與 Apple AppStore 服務器之間的協議,應用程序具體可以實現以下功能:

l  登錄 App Store,緩存認證數據,注銷賬戶

l  點擊服務條款

l  獲取其他應用的信息

l  購買應用,如圖九

l  下載購買的應用

當與 Apple 服務器通信時,ZergHelper 使用如下用戶代理:

l  iTunes/12.0.1(Windows; Microsoft Windows 7 x64 Business Edition iTunes/12.0.1)(Windows;Microsoft Windows 7 x64 Business Edition)

因此 ZergHelper 試圖充當 Windows 7 平臺上的 iTunes12.0.1 客戶端。

ZergHelper:成功繞過iOS App Store的代碼審查的風險軟件

圖九通過模擬 iTunes 協議購買應用

目前還不太清楚 ZergHelper 如何使用這些功能,它們可能用于用戶提供的 Apple ID,也可能是該應用提供的免費 Apple ID。

模擬 Xcode 申請私有開發證書

在未越獄的設備上安裝應用時,ZergHelper 使用了非常巧妙的方法濫用免費的私有開發證書。

以前,Apple 只為付年費的注冊人員提供 iOS 開發證書。開發人員想要簽名應用并保證其在物理設備上正常運行必須使用該證書。從 2015 年 6 月,Apple 提供了一個新機制:擁有 Apple ID 的人都可以免費獲取證書。該功能嵌入了 Xcode  7.0 版本中,并且目前為止,Xcode 是使用該方法的唯一官方平臺。

然而,ZergHelper 可以冒充 Xcode,從 Apple 的認證服務器獲取免費的私有開發證書。由于 Apple 并沒有公布 Xcode 實現該過程的原理,研究人員分析可能是有人對 Xcode 實施了逆向工程,分析出了這部分代碼。

ZergHelper:成功繞過iOS App Store的代碼審查的風險軟件

圖十登錄 Apple 服務器

ZergHelper:成功繞過iOS App Store的代碼審查的風險軟件

圖十一獲取開發證書

通過使用該開發證書,ZergHelper 可以簽名 iOS 設備上的應用并安裝。在分析 ZergHelper 時,發現有人販賣以下源代碼:

l  通過互換手機和電腦上的協議自動注冊 Apple ID

l  提供用于“輔助工具”的 PC 端的應用數字版權管理認證

l  使用 Apple ID 自動生成私有的開發證書

從 PC 端授權盜版軟件

對于從 ZergHelper 服務器下載的盜版軟件,它要求用戶借助 XY Helper Windows 版本將設備與 PC 連接,研究人員沒有對其 Windows 版本進行逆向功能,但是猜想這一操作的目的是使用 Windows 版本冒充 iTunes,使 iOS 設備認為其已經經過 PC 端的認證。

濫用企業證書

ZergHelper 使用了一種 iOS 惡意軟件慣用的技術濫用企業證書。這類應用使用“install in a second”進行標記,并且使用 itms-service 協議進行安裝。與之前的惡意軟件的不同點在于,ZergHelper 不僅從 C2 服務器下載 itms-service plist 文件,還會打開本地端口在線安裝應用。該功能可能是專門用于使用私有證書簽名的應用。

ZergHelper:成功繞過iOS App Store的代碼審查的風險軟件

圖十二 PLIST 文件

潛在的安全風險1、Apple 代碼審查

之前就有一些惡意軟件(FindAndCall)或 POC 應用(Jekyll)成功進入 AppStore,最近的例子是 XcodeGhost 和 InstaAgent。與這些相比,ZergHelper 中使用更多的用戶界面和明顯的可疑代碼特征。Apple 通常不披露任何審查員如何檢查應用程序的技術細節,但是 ZergHelper 仍然使用了一下方法可以繞過蘋果審查員審查。

2、企業證書

從 WireLurker 開始,就有許多惡意軟件使用企業證書在 iOS 上進行安裝,這類問題最大的風險在于企業證書和私有 API 的結合。YiSpecter 和 Youmi 就是使用私有 API 收集私有信息的惡意軟件。ZergHelper 甚至是自動生成免費的私有證書。這類情況十分危險,因為這可能成為濫用證書的未來攻擊的第一步。

3、Apple ID

在 iOS 工具的地下市場,AppleID 扮演著越來越重要的角色。最近幾個月,有研究人員發現竊取 Apple ID 的惡意軟件(KeyRaider)、從中獲利的惡意軟件(AppBuyer)、共享 ID 的惡意軟件(YiSpecter)。ZergHelper 的功能也依賴于有效的 Apple ID,它可以為用戶提供免費的 Apple ID,并且這些 ID 的來源未知。

4、代碼動態加載

Apple 要求每一個在 AppStore 上更新的應用都接受再次審核。對于 ZergHelper,再次審核增加了其暴露的風險。其作者使用了一種腳本語言解決該問題。

ZergHelper 使用名為 wax(使用 Lua 腳本編寫原始 iPhone 應用的框架)的開源項目。在該應用中,存在一個只包含兩個函數的 XYLib.lua 文件。當應用首次啟動時,會加載并執行該 Lua 文件,通過 wax 庫,該腳本會在 Objective-C 運行時調用多個方法。

ZergHelper:成功繞過iOS App Store的代碼審查的風險軟件

圖十三 Lua 文件

Apple 不允許 iOS 應用動態加載新代碼或動態升級。這是降低一些漏洞和惡意軟件風險的十分有效的安全機制。但是 wax 框架提供了一種繞過該機制的方法。

動態代碼加載是惡意軟件隱藏真實功能的十分經典的方法。近幾年,出現了許多可以提供 Objective-C 運行時的腳本(JavaScript,Lua 等)接口的 iOS SDK,在這類語言中寫入代碼十分容易,但是分析和檢測則十分困難。

緩解

Apple 已經于 2 月 20 日刪除了該應用。對于已經安裝的用戶,建議立即刪除,并檢查 iOS 設備上的配置文件(設置-通用-配置文件和設備管理),如果存在 xyzs.com 網站的任意配置文件,請立即刪除。

原文地址:paloaltonetworks,作者:Claud Xiao,vul_wish 編譯

來自: cnBeta

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!