在电影中,我们经常看到黑客通过计算机进行射频信号重放攻击以解锁汽车的桥段。然而,这种情节是否在现实中存在呢?本文旨在探讨利用HackRF进行射频信号重放攻击的技术原理,同时深入探讨该技术可能存在的安全风险,以便读者了解这一潜在的安全威胁。
汽车钥匙现状
在录制车钥匙射频信号之前需要先确定其频率,目前汽车钥匙遥控信号使用的载波频率主要是315MHz和433MHz,称为低频款子机,北美主要使用315MHz,欧洲和日本主要使用433MHz,我国则是两种都在用。当然,也有一些使用更高频率的868MHz(欧洲),915MHz(北美),称为高频款子机。
获取汽车钥匙载波频率
获取汽车钥匙的载波频率一般有三种方法:
GQRX
GQRX是一个基于GNURadio和Qt架构开发的一个开源的SDR软件,官网地址为gqrx.dk。GQRX支持许多可用的SDR硬件,包括Airspy,Funcube Dongles,rtl-sdr,HackRF和USRP设备。
安装方法:
# MACOS安装方法
brew install --cask gqrx
# ubuntu安装方法
sudo apt update
sudo apt install gqrx-sdr
使用频谱分析仪识别信号频率,可以使用GQRX监听,寻找波峰。
1、首先把hackrf连接通过USB连接电脑,hackrf设备如下图所示,使用命令hackrf_info
确认hackrf成功连接。
hackrf工具安装方法:
# MACOS
brew install hackrf
# Ubuntu
sudo apt-get install hackrf libhackrf-dev libhackrf0 gnuradio-dev gr-osmosdr gqrx-sdr gnuradio
2、然后使用命令gqrx
命令启动GQRX,选择对应HackRF设备,即可接受对应频率信号:
FCC编码查询
任何具备无线发射频率的设备都会通过FCC认证 ,其中FCC里面包含了设备的载波频率、产品名称、商标、型号等。一般FCC ID值都会在产品的背面,具体根据实际情况判断。
拆开车钥匙在里面找到FCC ID值,并在fcc.io上查询对应频率。
根据FCC ID查询到的频率为315.0 MHz:
汽车钥匙背面信息
一般汽车钥匙背面也会包含载波频率,如下图所示,载波频率为433.0MHz。
信号录制、分析、重放攻击
一旦确定了所需的频率,我们就可以开始录制、分析和重放射频信号。本文向大家介绍几款广泛使用的射频信号处理工具,其中包括urh和hackrf_transfer。除此了这两款工具以外,市面上还有许多其他优秀的工具可供选择,大家可以自行探索。
Universal Radio Hacker(URH)
Universal Radio Hacker(简称URH)是一个开源工具,专为逆向解析和攻击无线通信中的私有协议而设计。
安装方式
# MACOS
brew install urh
# ubuntu
sudo apt-get update
sudo apt-get install python3-numpy python3-psutil python3-zmq python3-pyqt5 g++ libpython3-dev python3-pip cython3
sudo pip3 install urh
1、命令端输入urh
运行程序,选择Record signal
进行录制射频信号。
2、选择刚刚获取的车钥匙载波频率,并点击start
,开始录制信号。
3、录制的时候解锁/上锁车辆,当出现峰值的时候就代表录制成功,这时候可以选择stop
并保存信号进行分析。
4、分析的时候可以多录制几次信号进行对比,便于找到变化的值。
5、选择ASK
,录制信号后进行重放。
这里顺便介绍下汽车钥匙的调制技术,大多数车通常采用ASK(Amplitude Shift Keying,幅度键控)调制技术,这是一种通过改变信号的幅度来传输信息的方法。此外,一些系统可能使用FSK(Frequency Shift Keying,频移键控)或其他调制技术。
6、点击start
进行重放。
hackrf_transfer
hackrf_transfer 是一个与 HackRF One SDR(软件定义无线电)硬件配合使用的命令行工具。HackRF One 是一款开源硬件,广泛用于软件定义无线电领域,它允许用户进行无线电频率的传输和接收。
安装方式
安装方式参考上面hackrf安装方式
信号录制
hackrf_transfer -r lab.raw -f 434015700 -g 16 -l 32 -a 1 -s 8000000 -b 4000000
-r 录制射频文件名 -f 射频频率 其他参数无需更改
执行命令后,把遥控器靠近HackRFOne设备,然后按解锁/上锁按键几次,然后在命令行窗口按Ctrl + C
可完成录制。
信号重放
hackrf_transfer -t lab.raw -f 434015700 -x 47 -a 1 -s 8000000 -b 4000000
-t 重放射频文件名 -f 射频频率 其他参数无需更改
录制信号之后,我们将设备放置在车辆附近,以尝试重放这些信号;理论上,如果车辆的安全系统没有足够的防护措施,它应该会响应这些重放的信号并解锁。
然而,经过多次尝试,我们发现车辆并没有解锁。这并不是因为我们的操作有误,而是因为现代车辆通常配备了先进的安全机制来防止这类攻击。这些机制包括固定码、滚动码和学习码等技术。
固定码、滚动码和学习码
遥控钥匙的信号通常包含一个前置位、功能码和一个滚动码或学习码,数据流长度通常为64到128位。这些信号以2KHz到20KHz的速率发送,以确保通信的可靠性并延长钥匙扣的电池寿命。
固定码
固定码是一种简单的编码方式,每个钥匙拥有一个唯一的、不变的代码。当用户按下遥控钥匙上的按钮时,钥匙会发送这个固定的代码,汽车的接收系统会检查接收到的代码是否与预设的代码匹配。如果匹配,汽车会执行相应的动作,如解锁或锁车。
其实现原理大致如下:
优点:实现简单,成本较低。
缺点:安全性较低,因为固定码容易复制,存在被未授权复制的风险。
滚动码
滚动码是一种更安全的编码方式,每次按键操作时都会生成一个新的编码,这个编码基于前一个编码和一些变化规律(如增加一个固定数值)。
其实现原理大致如下:
优点:
- • 每次按键生成不同的代码,大大提高了安全性。
- • 即使某个代码被截获,也无法用于未来的通信,因为每次都是新的代码。
缺点:
- • 实现相对复杂,成本较高。
- • 需要更复杂的算法和存储器来生成和管理代码。
学习码
学习码是一种双向认证机制,遥控器和接收设备通过一个学习过程来相互学习和记忆对方的编码。
其实现原理大致如下:
优点
- • 允许用户轻松添加或更换遥控钥匙。
- • 可以灵活地管理多个钥匙与同一辆汽车的配对。
缺点
- • 如果学习过程不够安全,可能会被恶意利用来添加未授权的钥匙。
总之,虽然固定码、滚动码和学习码的使用大大提高了汽车钥匙的安全性,但要确保汽车钥匙的绝对安全,还需要综合考虑多种安全措施和技术,以及用户的安全意识和行为。
参考
- • https://bbs.kanxue.com/thread-270954.html
- • https://blog.csdn.net/Refrain_mh/article/details/127567993
关于我们:
http://cf-sec.cn
原文始发于微信公众号(长风安全):第4篇:再给我一次机会,我偷电动车养你--汽车钥匙篇
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论