GPS Hacking 在过去几年的安全会议上一直都是很受关注的议题. 但每每由于内容太过学术化, 所需设备成本过高. 让许多感兴趣的朋友苦于没法入门. 直到GPS-SDR-SIM 这类开源项目的出现, 跟王康大牛在今年Blackhat Europe 2015 上的主题演讲. 完全打开了GPS 的神秘面纱. 让小伙伴能够真正过一把GPS Hacking 的瘾.php
想必你们对于研究GPS的神器, 软件无线电SDR都略有所闻. 但早期设备USRP价格昂贵. 直到你们发现了神奇的电视棒 RTL-SDR. 前阵子彷佛人人都喜欢用它来看大"灰机". 不过由于硬件上的限制,电视棒只能用来收取数据. 而 HackRF 跟 BladeRF 因其支持收发数据, 而价格又比USRP 便宜许多. 便成了当下热衷玩无线的朋友们的首选. 固然HackRF 跟 BladeRF之间也在所支持的频率, 采样率上有所不一样. 最重要的一点BladeRF是全双工哦. 如下是几款SDR 设备之间的对比图, 你们能够根据具体须要选购.html
GPS系统简介git
GPS 系统自己很是复杂, 涉及到卫星通讯等各个领域. 这里只是简单介绍一下. 咱们一般所说的 GPS 全球定位系统是由美国国防部建造完成. 目前在太空中共有31颗卫星在同时运做. 通常咱们须要至少4颗卫星来完成三角定位. GPS卫星同时发送民用L1和军用L2两种无线信号. 咱们一般使用的是没有加密的L1民用 1575.42MHz 的超高频波段.github
GPS 信号里包含了3种经常使用信息.安全
Pseudorandom code: 简单的ID 码, 用来识别每颗卫星.bash
Ephemeris data: 包含卫星的运行状态, 时间日期等信息. 这在经过卫星来定位起到很是重要的做用.微信
Almanac data: 包含有每颗卫星的轨道信息,以及卫星在某个特定时段将出现的具体位置.dom
1.1 在Ubuntu 14.04.3 中安装 BladeRF 工具工具
安装 header 文件测试
安装 BladeRF 固件 & FPGA 镜像
完成后可在/usr/share/nuand/BladeRF/
下找到hostedX40.rbf
跟bladerf_fw.img
文件. 这时即可将BladeRF插入USB接口.一般系统会自动载入FPGA 镜像.也能够经过命令行bladerf_cli -l /路径/hostedX40.rbf
手动载入. 在成功载入后,BladeRF主板上的3 个LED 小灯便会亮起, 同时咱们能够加-p
参数来进一步验证系统安装成功.
1.2 GPS-SDR-SIM 安装
1
2
3
|
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.
随后 gps-sdr-sim 会自动生成带有经纬度信息的数据文件. 咱们即可以经过 bladerf_cli 来发送伪造的GPS 数据.
1.3 GPS-SDR-SIM 运行时间问题
在实际测试过程当中汪汪发现, 默认状况下GPS模拟器只能连续工做5分钟左右. 经过查看源代码后, 咱们能够发现这是由于程序默认设置致使. 在程序设计之初为了节省硬盘空间, 默认只生成了300秒左右的数据. 咱们能够经过改动参数来延長工做時間. 但须要注意的是仅仅延長到15分鐘,數據即可達到5G大小.
汪汪在这里跟分享几个实际的测试案例. 感兴趣的朋友也能够自行测试下.
2.1 微信周边妹子
据说许多程序猿由于平时工做紧张, 性格腼腆. 很难有机会跟心中的女神接触. 而微信中”附近的人”则解决了此类问题. 你们只要坐在家中打开GPS定位, 即可跟周边的心仪女神 Say Hello 啦. 但美中不足的是范围仅限几十千米内. 那么对某些胸怀天下, 万花丛中过, 片叶不沾身的大神来讲未免太有局限性了. 这里汪汪给你们带来第一个GPS 信号伪造案例 -- 微信”附近”妹子.
据说前阵子在海南三亚有个美女扎堆的活动, 汪汪非常好奇都是啥样的美女呢..让咱们来查下附近的人吧. 哦..在没发送伪造的GPS坐标前,只能找到汪汪所在城市的妹子.
在开始发送伪造的GPS坐标5分钟后, 汪汪终于如愿以偿找到了三亚附近妹子 :)
哈哈..汪汪必须感叹下..真的是技术宅改变命运啊...
2.2 Nike+ 计步数伪造
不少喜欢研究移动安全的朋友必定看过蒸米发过的一篇文章 "利用Android Hook进行微信运动做弊".(感兴趣的朋友能够移步观看http://drops.wooyun.org/tips/8416). 文中他提到了经过利用Android Hook进行计步做弊, 跟朋友圈里的好友PK运动量. 但该方法须要手机root后,安装相关做弊插件来实现. 对于其余计步类软件,还须要对插件进行相关改动. 这里测试目标为 Nike+ Running. 先来看段视频. 由于完成所有攻击效果须要必定时间, 因此本视频作了加速处理.
http://player.youku.com/player.php/sid/XMTQwMzAxMTk4OA==/v.swf
经过GPS-SDR-SIM的主页, 咱们能够得知伪造的的GPS经纬度数据能够是静态, 也能够是动态模式的. 为了成功模拟出运动轨迹, 咱们须要伪造动态模式的GPS经纬度数据. 能够经过如下参数来完成.
1
|
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 信号伪造攻击的效果是很明显的.
经过以上几个案例, 相信你们对GPS 信号伪造有了必定程度的了解. 但就GPS系统自己而言, 这是一个很是好玩又很深的领域. 市面上的GPS 相关产品也总类繁多, 每款产品对GPS 欺骗攻击的反应也各不相同. 你们能够发挥下想象力玩出新花样.
最后要感谢 osqzss; 王康和无数 GNURadio 爱好者们的无私分享. 正由于有了他们,咱们才能够更好的体验软件无线电的无穷魅力. 推荐你们围观 GPS-SDR-SIM 的项目主页和王康在黑帽大会上的演讲稿. 拥有HackRF设备的朋友也能够看看lxj616写的“劫持GPS定位&劫持WIFI定位”.