Apple 官方的iOS App Store一直以來都以嚴格的代碼審查著稱,這項強制性的措施已經成為iOS安全生態系統中確保iOS用戶的隱私和安全的一項重要機制。但是近期有安全人員發現,有一款APP成功繞過了Apple的代碼審查機制。這款APP在App Store中的名稱為“開心日常英語(HappyDaily English)”,目前Apple已經刪除了該款APP。這是一個針對中國大陸iOS用戶的非常復雜的、第三方應用商店客戶端,并且已經發現了企業簽名版本。
研究人員暫時還未發現該軟件的任何惡意功能,因此將其歸為Riskware(風險軟件),并命名為ZergHelper。
圖一 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的安裝界面,如圖二右。
圖二 官網上的引導和App Store中的安裝界面
原始的Happy DailyEnglish是開源的,并且以工程名HappyEnglishSentences8k托管在OSChina網站。ZergHelper的作者重新編輯,并且嵌入了就有風險的代碼。項目的內部名稱為XYFactory,應用的內部名稱為AppStore_4.0.1。
如果用戶使用桌面瀏覽器或任何平臺的iTunes客戶端瀏覽該應用程序,它的名稱為“開心日常英語”,但是一旦在iPhone或iPad上安裝,就會變成“XY助手”,就想Info.plist配置文件中的CFBundleDisplayName值,如圖三。分析表明,作者在向Apple以Web表單的形式提交應用時,輸入了不同的名稱,并且Apple的代碼審查并沒有發現不一致。
圖三 ZergHelper名稱的不一致
當應用啟動時,會立刻連接到[.]xyzs.com,并且根據HTTP請求的返回結果提供不同的功能,如圖四。如果IP地址位于中國以外的地區,網頁就會返回404-not-found錯誤。在這種情況下,該應用只會顯示一個英語學習頁面,如圖五左。
圖四 根據HTTP的返回結果提供不同的功能
圖五 不同地區的使用顯示不同的界面
如果審查員不在中國,這種方法會使他們認為這是一個合法的應用,如果在中國也沒有關系,作者可以在審查期間關閉網站,審查員同樣看不到它的實際功能。
對于位于中國的用戶,它會顯示不同的用戶界面,如圖五右。它會引導安裝兩個用于“解決穩定性問題”的配置文件。但實際情況下是安裝了設備的Enrollment challenge(用于向相關的MDM系統注冊設備)和web clip如圖六。這些配置文件使用xyzs.com的證書簽名,該證書由Go Daddy Secure Certificate Authority在2015年12月2日簽發。
圖六 安裝的兩個配置文件
該應用可以直接在設備上安裝大量應用和游戲,它包含熱門應用、熱門游戲、和排名應用等頁面,類似于App Store,如圖七。唯一的區別是,ZergHelper提供的應用都是免費的,也就是說,這些都是合法應用的盜版。
圖七 主界面與App Store的對比
在設置標簽中,對于使用iOSpre-9.0版本的用戶,可以輸入Apple ID和密碼,ZergHelper會記住該密碼。在界面下方,有一個“沒有Apple ID,免費領取一個”的按鈕,如圖八。目前研究人員尚不清楚這些Apple ID的來源。
圖八 設置標簽
在未越獄的設備上創建第三方應用商店的新方法
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客戶端。
圖九 通過模擬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實施了逆向工程,分析出了這部分代碼。
圖十 登錄Apple服務器
圖十一 獲取開發證書
通過使用該開發證書,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文件,還會打開本地端口在線安裝應用。該功能可能是專門用于使用私有證書簽名的應用。
圖十二 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運行時調用多個方法。
圖十三 Lua文件
Apple不允許iOS應用動態加載新代碼或動態升級。這是降低一些漏洞和惡意軟件風險的十分有效的安全機制。但是wax框架提供了一種繞過該機制的方法。
動態代碼加載是惡意軟件隱藏真實功能的十分經典的方法。近幾年,出現了許多可以提供Objective-C運行時的腳本(JavaScript,Lua等)接口的iOS SDK,在這類語言中寫入代碼十分容易,但是分析和檢測則十分困難。
緩解
Apple已經于2月20日刪除了該應用。對于已經安裝的用戶,建議立即刪除,并檢查iOS設備上的配置文件(設置-通用-配置文件和設備管理),如果存在xyzs.com網站的任意配置文件,請立即刪除。