免越獄虛擬定位外掛的除錯小記與檢測方案
前言
因為工作關係最近需要分析一款windows上的虛擬定位外掛給出一個檢測方案,有趣之處在於這款外掛它既不需要蘋果裝置越獄又不需要安裝APP就可以欺騙iOS APP的GPS定位功能,本篇文章僅為記錄調戲它的過程。
初探

初始在拿到了這樣一個軟體前,通過一些交流了解軟體使用流程大體有了些許猜測。因為曾經從事過某iOS助手的建設工作,當時因為產品需要去逆向了iTunes操作蘋果裝置的各個功能如何實現,我對於利用usb來操縱蘋果裝置相對熟悉。果不其然的在目錄中發現了幾個熟悉的名字“iMobileDevice-net.dll”、“libimobiledevice.dll”,也證實了我對其技術原理的猜想。
這幾個庫來源於老外開源的一套逆向iTunes後整合的基礎庫libimobiledevice,因為重點並不是如何實現一個iOS助手在這個問題上也就不展開討論了,不過多一句嘴這套庫商用還存在一些問題(最起碼當年時是這樣的)想商用的注意排坑。
直奔主題
在我的印象中是不記得iTunes中有過類似的服務,因為輕車熟路所以也可以繞過分析的路途直奔主題了。

"com.apple.dt.simulatelocation"這是個服務名並去查了一下這個服務的作用。蘋果在Xcode 6、iOS 8.0開始提供了一個為裝置模擬GPS位置的除錯功能,其原理是通過usb獲取裝置控制代碼後開啟裝置內的服務("com.apple.dt.simulatelocation")再通過固定座標或GPX檔案進行位置模擬。

掩耳盜鈴
在根目錄下有一個drivers目錄,裡面有著一些內建的支援iOS版本資料夾,在其中有兩個檔案,檔名分別“inject.dmg”、“inject.dmg.signature”。
如果感覺很眼熟那麼就沒錯,你可以通過“/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport/”這個目錄來找到更多相同的檔案。
行為特徵
很可惜的是我通過查閱開發文件以閱讀底層開原始碼,沒有發現有公開的API可以進行服務的檢測,而一些會造成變化的檔案目錄屬於沙箱許可權以外的範圍。
通過分析及行為測試可以發現,可以通過3點異常去檢測行為異常:
- 正常獲取gps時LocationManager回撥函式會被觸發多次,模擬後僅觸發一次。
- 正常獲取不論是4g還是wifi來計算都需要響應時間,模擬後回撥是立即返回。
- simulate location模擬的資料僅模擬longitude和latitude,不涉及altitude、course、speed。
檢測方法
- 回撥呼叫次數
- 函式響應時間
- altitude、course、speed
- 其他感測器元素輔助校驗,例如:Accelerometer、Gyroscope、Pedometer
附錄
-
libimobiledevice
https://github.com/libimobiledevice/libimobiledevice
BTW:如果看文章的同學知道什麼其他的奇技淫巧歡迎交流指教。
宣告:本文來自安全內參,版權歸作者所有。文章內容僅代表作者獨立觀點,不代表安全內參立場,轉載目的在於傳遞更多資訊。如需轉載,請聯絡原作者獲取授權。