不同于安卓的開源生態,iOS一直秉承著安全性更高的閉源生態,系統中的硬件、軟件和服務會經過嚴格審核和測試,來保障安全性與穩定性。
據FairGurd觀察,雖然iOS系統具備一定的安全性,但并非沒有漏洞,如市面上常見的作弊手段——iOS越獄。
iOS越獄工具Unc0ver
iOS越獄是指通過軟件或硬件漏洞,移除或繞過蘋果在iOS設備上的操作系統限制,從而獲得設備的最高權限。
設備越獄后,用戶可以通過獲取的最高權限,安裝 Cydia 管理器等軟件,從而繞過 App Store 安裝各種未審核的插件、外掛,來修改系統文件,甚至訪問系統級別的API。
Cydia管理器
而具體到游戲作弊場景,外掛作者可以對游戲程序砸殼用于逆向分析,也可以利用 substrate 對游戲邏輯進行 hook 從而制作出各種游戲外掛。
這些游戲外掛程序可以被其他越獄玩家直接安裝,也可以通過 Cydia 管理器進行分發。鑒于用戶使用越獄設備可能帶來不良影響,所以很多游戲都會檢測設備是否越獄。
常見的越獄檢測手段有:檢查越獄文件和目錄、檢查權限、檢查Sandbox等,可以通過這些維度來判斷設備是否處于越獄狀態,但這其中也存在一些問題。
常見的iOS越獄檢測手段
如:在檢查越獄文件和目錄時,通常會檢查 /Application/Cydia.app 是否存在,但如果一臺越獄設備未使用 Cydia 商店,就會造成漏報。
還有一種情況,如果一臺設備使用了不完美越獄,并使用了 Cydia 商店,設備重啟后會恢復到未越獄狀態,但 /Application/Cydia.app 依然存在,這種情況下就會造成誤報。
其他情況下,作弊者可以使用反越獄檢測插件來躲避檢測。常見的插件有HideJB/abapass/fyjb 等。
這些插件對系統接口層做了許多 hook,能夠過濾所有與越獄相關的字符串,從而使得應用層無法正常檢測。
HideJB操作界面
此外,FairGuard收集并分析了大量反越獄檢測插件,總結了一些它們繞過越獄檢測的常用手段:
-
Hook NSFileManager 的 fileExistsAtPath,過濾越獄相關字符串。
-
偽造進程模塊列表,防止越獄相關模塊被檢測。
-
Hook stat / access / lstat 等 c 層 api, 過濾越獄相關文件。
-
對 app 代碼中的 svc 匯編代碼進行 patch hook, 隱藏越獄相關文件。
針對iOS端面臨的越獄難題,FairGuard在分析了大量反越獄插件的基礎上,針對性地開發了越獄檢測模塊及配套的安全功能,并接入多款熱門游戲并驗證了出色的保護能力。
反越獄保護
采用獨家檢測技術,做到精準識別不誤報,會根據多種運行時信息綜合判斷,對未知反越獄插件/越獄方式做檢測,針對反越獄插件做處理,不漏報。
反調試保護
雙重防護,先使用ptrace、syscall、sysctl、異常等檢測方式,再對防護代碼進行加密保護,效果更佳。
反重簽名保護
精準校驗包體內簽名,使用加固時存儲的簽名,與運行時獲取的簽名進行對比。
反修改器保護
在代碼對抗防護階段,FairGuard提供本地檢測代碼,并保護其有效性。
此外,FairGuard研發了在線特征更新檢測功能,獲取樣本后可第一時間下發特征,用最短的時間保護App的安全性。