阿里巴巴發佈手機定位高危漏洞


阿里巴巴發佈手機定位高危漏洞

全球“氾濫”的智能手機也正在改變人們的生活習慣,用導航軟件規劃我們的出行路徑,用外賣軟件購買周邊的美食....,而在這些高頻軟件的背後都有個共同的“幕後英雄”- 位置服務,這個位置服務通過一系列的技術手段來保證用戶可以實時可靠的獲取自己的座標位置,而這一系列技術手段中最關鍵的兩個就是GPS衛星定位和WIFI/基站定位,而在位置服務消費環節上,像高德或者百度這樣的平臺廠商會提供一層封裝好的位置SDK,應用開發者直接使用這些SDK進行應用開發,由於相關內容的專業性,對於應用開發者和終端用戶基本不會對這些信息進行再次安全性校驗,殊不知這兩種看似“高大上”的技術其實存在較大的安全漏洞,而且通過簡單的工具組合就可以實現完全非接觸的位置欺詐,讓你的手機失靈。阿里巴巴移動安全團隊針對該漏洞發佈了一篇名為《 Time and Position Spoofing with Open Source Projects 》的論文詳細敘述了相關的漏洞以及實現欺騙的方法。


阿里巴巴發佈手機定位高危漏洞

1.GPS定位原理

在介紹GPS欺詐的實現原理之前,首先簡單介紹一下GPS定位的基本原理,我們在地球上的位置可以用(x, y, z)來表示,這個位置是未知的,也是我們希望獲得的。如果有一個座標(x1, y1, z1)已知的位置A(實際上就是衛星),我們就可以簡單的從位置A播發一個信號,這個信號可以是光、聲波、電磁波,而GPS系統選擇的是電磁波作為信號,它的傳播速度用c表示,然後我們試著去測量信號從衛星發出到手機接收到的時間間隔τ1,這樣我們就可以得到這樣的一個方程:

阿里巴巴發佈手機定位高危漏洞

這個時候就需要各位看官拿出壓箱底的數學知識來了,很顯然我們通過這樣的一個等式是無法求出三個未知量的,理論上我們還需要另外兩個位置已知的衛星位置來構建另外兩個等式,從而通過三個等式來計算三個未知量:

阿里巴巴發佈手機定位高危漏洞

是不是你以為這樣就OK了,我前面說了這這只是理論上的,在工程上還是有問題的,就是這個時間間隔τ,這個τ理論上是可以使用接受機的時間 t1 減去衛星信號發送時的時間 t2 就可以獲得的,但是衛星上使用的是價格昂貴的原子鐘進行計時,但是手機使用的計時工具顯然是廉價的,所以通過這樣的方法得到的時間間隔τ和真實的信號傳播時間是不一致的,存在一個系統性的偏差 ∆t ,這樣在工程上就引入了一個新的變量,上面的定位方程就會變成:

阿里巴巴發佈手機定位高危漏洞

這樣我們為了得到我們的最終位置就需要求取四個未知數,這樣我們就需要再增加一個位置已知的衛星參與方程求解,所以這也就是衛星定位必須至少同時收到四顆衛星信號的原因。

阿里巴巴發佈手機定位高危漏洞

對於GPS來說,它同時發送民用L1和軍用L2兩種無線信號. 我們通常使用的是沒有加密的L1民用 1575.42MHz 的超高頻波段,那衛星是如何讓手機知道它的位置座標的呢?這就需要介紹一下廣播星曆數據,廣播星曆文件中包含衛星每天的星曆信息,星曆提供了每顆衛星的精確座標,這樣手機就可以通過這些已知位置(xi(t), yi(t), zi(t))通過上面的方程計算手機的位置了。

知道這些信息之後是不是我們就可以使用同樣的頻率去播發和定位信號一樣格式的信息從而欺騙手機呢?顯然是可以的,基於這個思路這就得可以到接下來GPS欺騙的方法。

2.GPS欺詐實現

  • 偽造信號

我們可以下載到歸檔的廣播星曆數據。

ftp://cddis. gsfc.nasa.gov/gnss/data/daily/

那如何通過這些數據偽造我們需要的星曆文件呢,這個時候就需要一個開源軟件平臺和一個硬件平臺,GPS-SDR-SIM和 HackRF(淘寶價格800左右)

通過如下命令,就可以將星曆

$./gps-sdr-sim -e brdc3540.14n -l 29.643598,91.101319,100 -b 8

隨後 gps-sdr-sim 會自動生成帶有經緯度信息的數據文件. 我們便可以通過HackRF通過 1575.42MHz 這個頻率來重複發送偽造的GPS 數據

$ hackrf_transfer -t gpssim.bin -f 1575420000 -s 2600000 -a 1 -x 0 -R

  • 欺詐效果

如下使用iPhone在北京實際定位的效果

阿里巴巴發佈手機定位高危漏洞

阿里巴巴發佈手機定位高危漏洞

3.WIFI定位原理

由於在室內或者遮擋嚴重的區域是沒辦法收到衛星信號,像蘋果地圖, 谷歌地圖, 百度地圖通常會使用WIFI信號來改善定位的效果,WIFI信號定位的原理比較簡單,手機無線芯片組通過WIFI信號的強弱來估算手機與周圍WIFI熱點的距離,這樣同樣通過類似GPS一樣的原理藉助搜索到熱點的名字和信號的強度就可以估算出手機的位置了。那熱點的位置又是哪兒來的呢?其實這就是來自於手機的用戶,對於這些定位軟件在定位的時候同時也會上傳自己的位置數據,通過這些位置和信號強度自然是可以估算出熱點的位置的,這樣就會造成平臺使用的人越多,它估算出來的熱點位置越準確,那麼在使用WIFI定位的時候精度也會更高。衛星用星曆數據來標識衛星,那WIFI熱點如何進行唯一區分呢?答案就是 SSID and BSSID. SSID (Service Set IDentification) 就是我們所有WIFI信號時候看到WIFI列表中的名字. BSSID (Basic Service Set Identification) 是熱點MAC地址,和上面同樣的原理,我們是不是可以通過播發偽造的熱點信號從而欺騙手機使用錯誤的熱點進行位置計算,這樣就可以導致相應的位置偏差。

4.WIFI欺詐實現

我們可以使用Linux系統使用"iw"工具來收集地點A附件的熱點信息,這樣我們可以得到地點A的熱點列表:

阿里巴巴發佈手機定位高危漏洞

然後我們到地點B,使用 MDK3工具進行偽造信號的發送,對於手機掃描到這些偽造的WIFI列表後,自然就會把位置定到位置A,如下:

阿里巴巴發佈手機定位高危漏洞

阿里巴巴發佈手機定位高危漏洞

根據作者的介紹,上述技術內容已經提交到了相關的廠商,但是廠商的水平良莠不齊,對於終端用戶以及應用開發者,在使用位置信息時候最好進行交叉驗證,同時也要保持警惕,技術可以造福百姓,同樣也可以犯罪作惡,這要取決於使用的人。


分享到:


相關文章: