使用bladeRF进行GPS欺骗
枫糖甜酒 发表于 北京 安全工具 1379浏览 · 2024-01-31 04:45

简介

BladeRF 是一款软件定义无线电(SDR)平台,由Nuand公司开发。它是一个高性能、可编程的设备,使用户能够发送和接收无线电频率信号。SDR技术允许用户通过软件来控制无线电通信的各个方面,而不是传统的硬件方法

刚好手边有一块BladeRF的板子,尝试实现对手机和车机的GPS欺骗攻击

GPS简介

GPS(全球定位系统)是一种基于卫星导航的定位技术,通过使用一组卫星在空间中确定接收器的位置
运行于宇宙空间的GPS卫星,每一个都在时刻不停地通过卫星信号向全世界广播自己的当前位置坐标信息,在发送位置的同时还会附上自己的时间戳,GPS接收器收到卫星GPS数据的时候,根据时间戳和光速可以算出自己和卫星的直线距离。
理论上来说,三维空间中 三对卫星GPS数据就可以确定一个点了,但是现实中要确定一个点至少需要四颗卫星,多出来的一颗卫星就是用于消除和减少误差的,保证定位有效

环境搭建

bladeRF设备识别

这里使用kali搭建环境(尝试了在windows下运行,虽然能识别到bladeRF设备,但是运行起来还是有奇奇怪怪的问题,如果还是想自己尝试一下windows环境的话可以参考官方文档 - https://github.com/Nuand/bladeRF/wiki/Getting-Started%3A-Windows

参考官方文档 - https://github.com/Nuand/bladeRF/wiki/Getting-Started%3A-Linux

先将虚拟机的USB调整成USB3.1

安装BladeRF工具

$ sudo add-apt-repository ppa:nuandllc/bladerf 
$ sudo apt-get update 
$ sudo apt-get installbladerf

安装header文件

$ sudo apt-get install libbladerf-dev

安装bladeRF固件和FPGA镜像,自行选择

$ sudo apt-get installbladerf-firmware-fx3 # 适用于所有型号bladeRF的固件
$ sudo apt-get installbladerf-fpga-hostedx40 # 适用于bladeRF x40 
$ sudo apt-get installbladerf-fpga-hostedx115 # 适用于bladeRF x115 
$ sudo apt-get 安装bladerf-fpga-hostedxa4 # 适用于bladeRF 2.0 Micro A4 
$ sudo apt-get installbladerf-fpga-hostedxa9 # 适用于bladeRF 2.0 Micro A9

安装依赖(这个一定要安装,至少usb的那两个要安装,不然会识别不到设备

sudo apt-get install libusb-1.0-0-dev libusb-1.0-0 build-essential cmake libncurses5-dev libtecla1 libtecla-dev pkg-config git wget

一切就绪之后,插上设备,使用命令就可以看到脸上的bladeRF了

bladeRF-cli -p

生成GPS数据

我们利用bladeRF来收发GPS数据,GPS数据的来源需要使用gps-sdr-sim - https://github.com/osqzss/gps-sdr-sim工具来静态生成

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

在谷歌在线地图上面选择一个坐标,我这里选择澳门葡京娱乐场,经纬度为 22.18982545839303, 113.544124355456

使用项目源码中自带的卫星星历生成GPS数据,生成澳门新葡京的固定坐标数据

./gps-sdr-sim -e brdc0010.22n -l 22.18982545839303,113.544124355456,100 -b 16


这里的gpssim.bin文件就是模拟生成的GPS数据

GPS欺骗

手机静态GPS欺骗

bladeRF进入交互模式

# bladeRF-cli -i
bladeRF> set frequency tx1 1575.42M

  TX1 Frequency: 1575419998 Hz (Range: [47000000, 6000000000])

bladeRF> set samplerate tx1 2.6M

  Setting TX1 sample rate - req:   2600000 0/1Hz, actual:   2600000 0/1Hz

bladeRF> set bandwidth tx1 2.5M

  TX1 Bandwidth:   2500000 Hz (Range: [200000, 56000000])

bladeRF> tx config file=gpssim.bin format=bin channel=1
bladeRF> tx start
bladeRF> tx wait


AOSP(Android 10)手机打开GPS Test这个软件,因为它是仅GPS的,所以纯纯被欺骗

虽然有一点点的偏差(可能是我用的星历比较老),但可以看出来GPS已经被欺骗了(本来在室内环境下不能识别到卫星信号)

联网状态下定位欺骗

联网状态下能实现定位欺骗吗

测试之前我觉得是不能的
手机联网状态下高德竟然也可以被欺骗....原因可能是多样的,比如我这个测试机没有手机卡,Android版本比较低等等

使用

动态GPS欺骗

在在线网址上画路径 - https://earth.google.com/

导出为KML,接着将kml格式数据导入SatGEN,生成MNEA格式文件

生成内容如下

使用gps-sdr-sim生成轨迹数据

./gps-sdr-sim -e brdc0010.22n -g KMLoutput.txt -b 16


最后按照之前的方法使用bladeRF-cli进行欺骗即可,打开高德地图可以看到正在按照我们之前的路线行进,欺骗成功

参考链接

0 条评论
某人
表情
可输入 255