狗汪汪玩轉無線電 -- GPS Hacking (上)

wyzsk發表於2020-08-19
作者: Kevin2600 · 2015/12/09 10:12

0x00 序


GPS Hacking 在過去幾年的安全會議上一直都是很受關注的議題. 但往往因為內容太過學術化, 所需裝置成本太高. 讓許多感興趣的朋友苦於無法入門. 直到GPS-SDR-SIM 這類開源專案的出現, 跟王康大牛在今年Blackhat Europe 2015 上的主題演講. 徹底開啟了GPS 的神秘面紗. 讓小夥伴可以真正過一把GPS Hacking 的癮.

想必大家對於研究GPS的神器, 軟體無線電SDR都略有所聞. 但早期裝置USRP價格昂貴. 直到大家發現了神奇的電視棒 RTL-SDR. 前陣子似乎人人都喜歡用它來看大"灰機". 不過因為硬體上的限制,電視棒只能用來收取資料. 而 HackRF 跟 BladeRF 因其支援收發資料, 而價格又比USRP 便宜許多. 便成了當下熱衷玩無線的朋友們的首選. 當然HackRF 跟 BladeRF之間也在所支援的頻率, 取樣率上有所不同. 最重要的一點BladeRF是全雙工哦. 以下是幾款SDR 裝置之間的對比圖, 大家可以根據具體需要選購.

p1

GPS系統簡介

GPS 系統本身非常複雜, 涉及到衛星通訊等各個領域. 這裡只是簡單介紹一下. 我們通常所說的 GPS 全球定位系統是由美國國防部建造完成. 目前在太空中共有31顆衛星在同時運作. 一般我們需要至少4顆衛星來完成三角定位. GPS衛星同時傳送民用L1和軍用L2兩種無線訊號. 我們通常使用的是沒有加密的L1民用 1575.42MHz 的超高頻波段.

GPS 訊號裡包含了3種常用資訊.

Pseudorandom code: 簡單的ID 碼, 用來識別每顆衛星.

Ephemeris data: 包含衛星的執行狀態, 時間日期等資訊. 這在透過衛星來定位起到非常重要的作用.

Almanac data: 包含有每顆衛星的軌道資訊,以及衛星在某個特定時段將出現的具體位置.

p2

0x01 BladeRF GPS 訊號偽造步驟


1.1 在Ubuntu 14.04.3 中安裝 BladeRF 工具

p3

安裝 header 檔案

p4

安裝 BladeRF 韌體 & FPGA 映象

p5

完成後可在/usr/share/nuand/BladeRF/下找到hostedX40.rbfbladerf_fw.img檔案. 這時便可將BladeRF插入USB介面.通常系統會自動載入FPGA 映象.也可以透過命令列bladerf_cli -l /路徑/hostedX40.rbf手動載入. 在成功載入後,BladeRF主機板上的3 個LED 小燈便會亮起, 同時我們可以加-p引數來進一步驗證系統安裝成功.

p6

1.2 GPS-SDR-SIM 安裝

#!bash
git clone https://github.com/osqzss/gps-sdr-sim.git 
cd gps-sdr-sim  
gcc gpssim.c -lm -O3 -o gps-sdr-sim

設定經緯度並生成資料樣本. 注意這裡 I/Q基帶訊號資料為16.

p7

隨後 gps-sdr-sim 會自動生成帶有經緯度資訊的資料檔案. 我們便可以透過 bladerf_cli 來傳送偽造的GPS 資料.

p8

1.3 GPS-SDR-SIM 執行時間問題

在實際測試過程中汪汪發現, 預設情況下GPS模擬器只能連續工作5分鐘左右. 透過檢視原始碼後, 我們可以發現這是因為程式預設設定導致. 在程式設計之初為了節省硬碟空間, 預設只生成了300秒左右的資料. 我們可以透過改動引數來延長工作時間. 但需要注意的是僅僅延長到15分鐘,資料便可達到5G大小.

p9

0x02 GPS訊號偽造實戰


汪汪在這裡跟分享幾個實際的測試案例. 感興趣的朋友也可以自行測試下.

2.1 微信周邊妹子

聽說許多程式猿因為平時工作緊張, 性格靦腆. 很難有機會跟心中的女神接觸. 而微信中”附近的人”則解決了此類問題. 大家只要坐在家中開啟GPS定位, 便可跟周邊的心儀女神 Say Hello 啦. 但美中不足的是範圍僅限幾十公里內. 那麼對某些胸懷天下, 萬花叢中過, 片葉不沾身的大神來說未免太有侷限性了. 這裡汪汪給大家帶來第一個GPS 訊號偽造案例 -- 微信”附近”妹子.

聽說前陣子在海南三亞有個美女扎堆的活動, 汪汪很是好奇都是啥樣的美女呢..讓我們來查下附近的人吧. 哦..在沒傳送偽造的GPS座標前,只能找到汪汪所在城市的妹子.

p10

p11

在開始傳送偽造的GPS座標5分鐘後, 汪汪終於如願以償找到了三亞附近妹子 :)

哈哈..汪汪必須感嘆下..真的是技術宅改變命運啊...

p12

2.2 Nike+ 計步數偽造

很多喜歡研究移動安全的朋友一定看過蒸米發過的一篇文章 "利用Android Hook進行微信運動作弊".(感興趣的朋友可以移步觀看/tips/?id=8416). 文中他提到了透過利用Android Hook進行計步作弊, 跟朋友圈裡的好友PK運動量. 但該方法需要手機root後,安裝相關作弊外掛來實現. 對於其他計步類軟體,還需要對外掛進行相關改動. 這裡測試目標為 Nike+ Running. 先來看段影片. 因為完成全部攻擊效果需要一定時間, 所以本影片做了加速處理.

p13

http://player.youku.com/player.php/sid/XMTQwMzAxMTk4OA==/v.swf

透過GPS-SDR-SIM的主頁, 我們可以得知偽造的的GPS經緯度資料可以是靜態, 也可以是動態模式的. 為了成功模擬出運動軌跡, 我們需要偽造動態模式的GPS經緯度資料. 可以透過以下引數來完成.

#!bash
gps-sdr-sim -e brdc3540.14n -u circle.csv -b 16

大家可以看到透過直接對GPS訊號進行偽造, 成功欺騙了Nike+ 這類計步器APP. 即使在被窩裡躺著,也可以跑第一哦. 當然汪汪還是希望大家可以真的跑起來, 享受運動的快樂.

2.3 偽造訊號範圍測試

從前面幾個實驗可以知道, 透過軟體模擬訊號, GPS接收裝置在短距離內的效果是非常明顯的. 那麼在較大範圍內GPS接收裝置的效果如何呢?實際的有效距離又是多遠呢?當然這跟裝置的輸出功率, 天線增益, 以及附近其他訊號干擾程度有關. 所以這裡汪汪只是做個簡單的室內測試. 大家還是要以實際情況為準. 請先看這段測試影片.

http://player.youku.com/player.php/sid/XMTQwMzAwNzMxNg==/v.swf

從影片可以看到在這個直線距離大概為25米, 中間無任何障礙物的走廊裡成功改變了GPS 接收裝置的經緯度. 通常真實的GPS 訊號從2萬千米的高空下到地面已經非常微弱, 因此在室內幾乎檢測不到訊號. 所以在室內GPS 訊號偽造攻擊的效果是很明顯的.

p14

0x03 總結


透過以上幾個案例, 相信大家對GPS 訊號偽造有了一定程度的瞭解. 但就GPS系統本身而言, 這是一個非常好玩又很深的領域. 市面上的GPS 相關產品也總類繁多, 每款產品對GPS 欺騙攻擊的反應也各不相同. 大家可以發揮下想象力玩出新花樣.

最後要感謝 osqzss; 王康和無數 GNURadio 愛好者們的無私分享. 正因為有了他們,我們才可以更好的體驗軟體無線電的無窮魅力. 推薦大家圍觀 GPS-SDR-SIM 的專案主頁和王康在黑帽大會上的演講稿. 擁有HackRF裝置的朋友也可以看看lxj616寫的“劫持GPS定位&劫持WIFI定位”.

0x04 參考文獻

本文章來源於烏雲知識庫,此映象為了方便大家學習研究,文章版權歸烏雲知識庫!

相關文章