劫持GPS定位&劫持WIFI定位
0x00 概述
在剛剛舉行的Black Hat Europe 2015大會上,來自阿里移動安全的Wang Kang & Shuhua Chen & Aimin Pan 展示了劫持GPS定位以及劫持WIFI定位的技術
於是我用朋友的Hackrf試了一下
0x01 GPS劫持步驟
在Ubuntu 15.10中安裝gnuradio以及hackrf工具
apt-get install gnuradio gr-osmosdr hackrf
請注意,這裡目前無法使用kali的hackrf軟體包,因為需要-R選項來進行repeat,而kali暫時沒有更新hackrf軟體包至最新
編譯開源的gps模擬工具
git clone https://github.com/osqzss/gps-sdr-sim.git
cd gps-sdr-sim
make
設定經緯度並生成資料樣本
./gps-sdr-sim -e brdc3540.14n -l 30.286502,120.032669,100
然後插上Hackrf,開始偽造GPS訊號
hackrf_transfer -t gpssim.bin -f 1575420000 -s 2600000 -a 1 -x 0 -R
測試時發現由於Hackrf本身做工問題,只能堅持連續工作5分鐘,之後噪聲過大導致訊雜比無法滿足GPS定位的要求,所以大家在測試時一定要等到準備完畢再插上Hackrf,執行命令後立即檢視效果
效果如圖所示:
所有的衛星GPS都是偽造出來的,因此也比較整齊,不夠整齊是因為山寨的Hackrf硬體原因
這裡的座標我隨便定的,定在吉林省了,上文中給出的座標是杭州
0x02 WIFI定位劫持步驟
安裝aircrack系列工具
apt-get install aircrack-ng -y
安裝mdk3
wget ftp://ftp.hu.debian.org/pub/linux/distributions/gentoo/distfiles/mdk3-v6.tar.bz2
tar -jxvf mdk3-v6.tar.bz2
cd mdk3-v6
這裡需要修改一下Makefile
-lpthread 改成 -pthread
之後再編譯安裝
make
make install
把以下內容儲存為wifi-mdk3.awk
$1 == "BSS" {
MAC = $2
wifi[MAC]["enc"] = "Open"
}
$1 == "SSID:" {
wifi[MAC]["SSID"] = $2
}
$1 == "freq:" {
wifi[MAC]["freq"] = $NF
}
$1 == "signal:" {
wifi[MAC]["sig"] = $2 " " $3
}
$1 == "WPA:" {
wifi[MAC]["enc"] = "WPA"
}
$1 == "WEP:" {
wifi[MAC]["enc"] = "WEP"
}
END {
for (BSSID in wifi) {
printf "%s %s\n",BSSID,wifi[BSSID]["SSID"]
}
}
然後掃描wifi(wlan0為無線網路卡interface,我自己的是wlp3s0)
sudo iw wlan0 scan |awk -f wifi-mdk3.awk > result.txt
然後是帶著電腦換個沒有WIFI的地方,因為要偽造WIFI定位,在自己的地點偽造自己沒有效果……而如果身邊的真實WIFI過多則會干擾偽造的可信度
開啟無線網路卡的monitor模式,wlan0是無限網路卡的interface
sudo airmon-ng check kill
sudo airmon-ng start wlan0
然後用mdk3偽造剛才iw scan到ssid 的訊號,wlan0-mon是用airmon-ng開出的monitor interface
sudo mdk3 wlan0-mon b -v result.txt
如果身邊沒有其他的WIFI,偽造開始之後就可以欺騙WIFI定位了,不過如果身邊有其他正常WIFI時,一般情況下很難偽造成功
0x03 GPS定位與劫持原理
這裡是用Hackrf偽造的GPS訊號
以下翻譯內容摘自https://www.blackhat.com/docs/eu-15/materials/eu-15-Kang-Is-Your-Timespace-Safe-Time-And-Position-Spoofing-Opensourcely-wp.pdf 有刪減
1) GPS定位原理
首先,讓我們明確我們的需求。我們想要知道的是我們的位置座標(x,y,z),如果從一個已知座標(x1,y1,z1)的點A(這個點在現實情況下是衛星)廣播一個訊號,比如說光和聲音或者電磁波,然後我們試著去測量訊號傳送至到達的時間差τ1(在gps系統中我們用的是電磁波,我們知道它的速度),然後我們就能得出下面的等式:
這個等式有3個未知變數,因此單單一個等式解不出來,我們可以再加兩個已知位置的點(衛星),我們把它們記作(x2,y2,z2) 和 (x3,y3,z3),然後就是下面的方程組
現在我們就能解出我們的位置(x,y,z)了
但在工程應用中這樣還不夠。為了測量電磁波傳送至到達的時間差τ1,需要在電磁波傳送的時候寫一個時間戳t1,然後是衛星上的時鐘時間參考值,當訊號到達我們這裡時,我們提取出時間戳t1,然後計算t1和當地時間t2的差值來計算時間差τ1。然而當地時間和衛星時間並不是同步的,會出現一個時間偏移量∆t1,所以這個時間偏移量也要被考慮進去,於是修正後的方程式如下所示:
譯者注:所以有4個變數,就需要4個衛星來創造4個等式啦,以下高等數學內容略,以上內容說明我們需要偽造至少4顆衛星的訊號才能使gps定位
2) GPS訊號幀:GPS訊號幀的結構如圖所示:
GPS訊號的位元率為50 bps。GPS衛星在不同的頻率和幅度上廣播GPS訊號,民用最常用的是L1 訊號。
GPS訊號的強度非常弱,大約在 -130 dBm 左右,並且大多數GPS接收器在室內不起作用,這就使得GPS訊號可以輕易地被嗅探或偽造,至少攻擊者不用為了蓋過真實的衛星訊號去發射大功率訊號了
3) BRSC 資料:BRSC(廣播星曆資料)檔案包含了每天獨特的GPS衛星ephemeris資料,Ephemeris資料提供了每顆衛星確切的位置資訊(xi(t),yi(t),zi(t)),所以接收者就可以以此計算位置資料。你可以以RINEX (與接收器無關的互動格式)格式從ftp://cddis. gsfc.nasa.gov/gnss/data/daily/下載BRDC檔案
這些檔案按照如下格式命名(如下表所示):
舉個例子:‘brdc3540.14n’意味著2014年的12月20號
譯者注:之後是介紹開源專案以及各種sdr平臺的使用,由於我只有hackrf,所以把自己用hackrf實際測試的過程和結果放在了0x01部分,如果您有其他sdr平臺,請參照原作者文章進行實際測試
0x04 WIFI定位劫持原理
由於GPS定位在室內無法使用,各種定位平臺廠商比如蘋果地圖、谷歌地圖、百度地圖通常會使用WIFI訊號來幫助使用者獲得更好的定位
原理很簡單,手機的無線晶片可以提供周圍熱點的掃描結果,最能用來定位的關鍵資訊是SSID和BSSID,SSID是熱點的名稱,而BSSID則是AP的MAC地址。定位平臺廠商蒐集SSID及BSSID和GPS資料一起存入他們的資料庫,有些時候資訊蒐集是透過終端使用者的手機來實現的,比如在蘋果的位置服務問答上寫著:
“相反,我們維護了一個在您當前位置附近Wi-Fi熱點和基站的資料庫,其中一些可能離你的iPhone一百多英里遠,來幫助你的iPhone快速準確地計算出當前的位置。如果只用手機GPS來做衛星定位,最多可能會用到幾分鐘的時間。 iPhone可以縮短這個時間,在短短的幾秒鐘內透過使用Wi-Fi熱點和基站資料快速定位到第二顆GPS衛星,甚至只使用Wi-Fi熱點和基站資料進行三角測量來獲取其位置,尤其是GPS不可用(如室內或地下室)的時候特別有用。這些計算使用的是由數以千萬計的iPhone傳送的匿名和加密的附近的Wi-Fi熱點和基站的地理標記位置,以產生Wi-Fi熱點和基站資料的資料庫。 ”
所以,我們要是偽造一些SSID和BSSID會發生什麼呢?最簡單的方式當然是手動掃描出一堆熱點的信心,然後買一大堆路由器來偽造出這些熱點,但是這麼弄難度有些大,所以我們需要一個更好的辦法。
譯者注:就是偽造一堆SSID名稱和MAC地址,然後這個列表上傳到地圖資料庫作對比,然後就偽造定位了,原文下面是具體的iw scan和mdk3的介紹,就不全部翻譯了,經本人實際測試的過程和結果如前文0x02所示
譯者再注:要想偽造成功,你偽造出的SSID必須要遠遠多於正常SSID數目,也就是說你在一個能夠WIFI定位的地方要想偽造定位基本不可能成功,因為身邊正常的SSID太多了,不過你仍然可以透過手機WIFI連線選單看到我們偽造出的SSID名稱,能看到名稱就說明實驗原理成功了
0x05 參考文獻&致謝
《Time and Position Spoofing with Open Source Projects》 Kang Wang ,Shuhua Chen ,Aimin Pan
1 Dong L. IF GPS signal simulator development and verification[M]. National Library of Canada= Bibliothque nationale du Canada, 2005.
2 Akos, D. M. (1997), A Software Radio Approach To Global Navigation Satellite System Receiver Design, Dissertation, Ohio University.
3 Kaplan, E. D. (1996), Understanding GPS, Principles and Applications, Boston: Artech House, Inc.
4 https://play.google.com/store/apps/details?id=com.chartcross.gpstest
5 http://www.pseudocode.info/post/50127404555/ beacons-beacons-everywhere-using-mdk3-for-ssid
6 https://github.com/osqzss/gps-sdr-sim
7 https://en.wikipedia.org/wiki/Global Positioning System
8 https://en.wikipedia.org/wiki/GPS signals
相關文章
- GPS定位2018-11-17
- win10如何使用gps定位_win10怎麼使用gps定位2020-03-28Win10
- Java socket 獲取gps定位2024-07-09Java
- 域名劫持 dns,域名劫持,dns劫持是什麼,瞭解域名劫持2020-10-28DNS
- 流量劫持,分析為什麼會流量劫持,流量劫持危害大麼2020-10-24
- 小米8雙頻GPS評測 雙頻GPS和單頻GPS定位的區別2018-06-06
- 輕鬆gps定位:AnyGo最新啟用版中文2023-10-10Go
- dns劫持,dns劫持是什麼,該怎麼去預防dns劫持2020-10-21DNS
- 流量劫持攻擊之鏈路劫持剖析2020-08-19
- 什麼是流量劫持,如何防止流量劫持2020-12-12
- DNS劫持 DNS汙染 介紹、dns 劫持 汙染2020-11-25DNS
- GPS、基站、IP定位的區別及其應用方向2022-07-19
- 什麼是DNS劫持?如何應對DNS劫持?2021-09-22DNS
- http網路劫持與DNS劫持原理及預防2019-04-12HTTPDNS
- 流量劫持是什麼?流量劫持的手法有哪些?2023-03-16
- dns劫持伺服器搭建、DNS劫持原理與操作2020-12-02DNS伺服器
- 能否劫持網站流量、網站流量劫持的方法2020-11-27網站
- 頁面劫持,頁面劫持,如果被頁面劫持了該怎麼去解決,方法分享2020-10-26
- app安全:如何應對介面劫持、介面劫持如何檢測2020-12-01APP
- pr劫持的原理及操作例項、pr劫持的原理2020-12-03
- dns劫持怎麼解決 dns劫持的解決方法2020-11-29DNS
- DNS原理及劫持問題、dns劫持怎麼解決2020-12-19DNS
- JSON劫持漏洞分析2018-05-17JSON
- DNS劫持與DNS汙染是什麼意思、dns劫持和汙染2020-12-03DNS
- 高德網路定位之“移動WiFi識別”2019-07-24WiFi
- iOS 地圖定位 定位2018-12-20iOS地圖
- 車載多感測器融合定位方案:GPS +IMU+MM2019-08-20
- DNS劫持是怎麼回事?DNS劫持如何預防?(國科雲)2024-01-11DNS
- 什麼是DNS劫持?如何讓你的網站免遭DNS劫持?2022-01-14DNS網站
- 怎麼檢測dns是否遭受劫持、dns遭受劫持怎麼做2020-12-05DNS
- 網頁被劫持什麼?防止頁面劫持方法介紹2020-12-31網頁
- 子域名劫持漏洞的挖掘指南、子域名劫持怎麼檢測2020-12-14
- Istio 流量劫持過程2020-05-29
- Json hijacking/Json劫持漏洞2020-08-19JSON
- 深入解析DLL劫持漏洞2020-08-19
- 也談鏈路劫持2020-08-19
- DLL劫持並使用MinHook2024-11-03Hook
- DNS劫持和DNS汙染2022-05-17DNS