无线电安全-RTLSDR配合CC1101分析重放遥控信号
[无线电安全]RTLSDR配合CC1101分析和重放遥控信号
SDR介绍
SDR是软件定义无线电的缩写,指将无线电系统中的信号处理功能(如通信协议的实现、信号的调制解调和频谱分析等)通过基于软件的数字信号处理来实现,少部分模拟信号处理和数模转换功能通过通用硬件实现。SDR的原理:通用硬件接收到模拟信号并转换成数字信号,数字信号由软件处理,处理完后软件输出要发射的数字信号,数字信号由通用硬件转换为模拟信号并发射。相比于传统的全硬件无线电,软件无线电可以不修改硬件,仅修改软件实现多种不同的无线协议或标准,具有灵活性强、开放性强、兼容性强、硬件成本低的优点。对于无线电技术爱好者,SDR既能满足DIY研究技术的需求,又能省去大量的专用设备购买成本。
SDR可以干什么
SDR的应用于航天、军事、工业、消费电子产品、多媒体等各个领域,产品包括:手机、电脑、无人机、汽车、智能家居、网络设备、传感器、工控机、移动通信、卫星通信、无线电广播和电视等。从无线技术的类别来分,包括:近场通信NFC、蓝牙BLE、射频RFID、工控无线传输ZigBee、无线局域网WiFi、卫星定位GPS、卫星通信SATCOM、手机蜂窝网络Cellular、航空无线电ADS-B等。
从安全攻防的角度来看,SDR可以涵盖无线通信安全的大部分内容,比如:跟踪商用飞机轨迹和航班信息、搭建伪基站、GSM窃听、GPS欺骗、捕获分析重放遥控器信号以及其它各类无线协议的分析和攻击。攻击手段主要有4种:监听、重放、欺骗、劫持。
需要哪些前置知识
- 通信原理
- 通信系统
- 数字信号处理
- 调制与解调
- 信号与系统
SDR硬件
常见SDR硬件:HackRF、RTL-SDR、BladeRF、USRP、LimeSDR、PlutoSDR、Airspy
设备名称 | 工作频率 | 全/半双工 | 价格 |
---|---|---|---|
HackRF One | 1MHz到6GHz | Rx+Tx | 500-1000元 |
RTL-SDR(R820T/R860/R828D) | 24MHz-1.76GHz | Rx | 80-300元 |
BladeRF | 300MHz-3.8GHz | Rx+Tx | 500-10000元 |
USRP系列 | 取决于具体型号,所有设备涵盖直流电至6GHz,见官网 | Rx+Tx | 2000-20w元 |
LimeSDR | 有Mini2.0、XTRX、X3三个型号,最高3.8GHz,见官网 | Rx+Tx | $400/800/20000 |
PlutoSDR(ADALM-PLUTO) | 325MHz-3.8GHz(可提升至70MHz-6GHz:参考) | Rx+Tx | $195(淘宝1000元左右) |
Airspy(Mini/R2/HF+) | 24-1700MHz | Rx | $99/169(淘宝1000元左右) |
SDR硬件主要包含天线、射频前端、数模转换器和用于执行数字功能的FPGA或SoC。对于半双工的SDR,可以添加射频前端模组对其功能进行拓展。虽然SDR的理念是软件替代硬件,但有时也需要依赖额外的硬件实现特定功能(比如接收ADS-B信号),开发能力强的话也可以DIY自己的SDR设备。
SDR软件
常见SDR软件:GNU Radio、SDR++、GQRX、SDR#、MATLAB、Simulink、SoapySDR、PothosSDR、PySDR。
结合硬件和目标应用选择软件。
业余无线电介绍
业余无线电是一种在全世界非常普遍的业余爱好,业余无线电爱好者又被称为HAM。根据Wiki的数据,截至2024年,中国有24万左右HAM,美国有75万左右HAM,全世界有三至四百万HAM。搞无线电涉及到安全和法律的问题,受各国政府严格管控,因此“准”业余无线电爱好者需要经过考试才能得到业余无线电执照,有了执照才能合法开展业余无线电活动,成为真正的HAM。不同国家有不同的业余无线电执照和相应制度。
在中国,执照分为中国无线电协会业余电台操作证书(简称“操作证书”)和中华人民共和国无线电台执照(简称“业余电台执照”)两个部分。
操作证书分为A类、B类和C类,是业余无线电爱好者个人的操作技术能力的证明,也是使用业余无线电台的许可。
统一在CRAC官网进行考试报名和信息查询。A类和B类考试由各省的考试机构自行组织,C类考试由CRAC统一组织。
操作证书由中国无线电协会业余无线电分会(简称CRAC)负责核发,在全国范围通用,并且终身有效。
初次申领者不限年龄,但只能参加A类考试;取得A类操作证书取得业余无线电台执照6个月以上可以参加B类考试;取得B类操作证书并取得载明30MHz以下频段的业余无线电台执照18个月以上可以参加C类考试。
详情参见《业余无线电台管理办法》第三章及CRAC官网。
业余电台执照是设置业余无线电台的许可,证明你的电台是合法的。
需要取得操作证书后才能申请对应频率的设备的业余电台执照,参考对照表如图。
对于没有呼号的申请者,无线电管理机构颁发业余无线电台执照时会同时核发业余无线电台呼号。业余无线电操作员在无线电通信中以“呼号”唯一地表明自己或台站的身份。
除了有型号核准的无线电发射设备,也可以申请自制、改装、 拼装等未取得型号核准的设备,但是需要提交额外的说明材料并经过检验。
详情参见《业余无线电台管理办法》第二章及CRAC官网。
无线电相关的政策查询、频率划分查询、认证考试、备考刷题和模拟考试都可以在智谱APP上进行。
此外,还可以关注各地区的无线电协会公众号,HAM会举办各类的活动例如跳蚤市场、聚会、比赛等。
无线电频率划分
无线电波的频率范围:0~3000GHz。无线电频率的划分非常复杂,涉及到地区、国家、部门、业务和应用等因素,这里不赘述。
了解特定业务频率范围可以查阅最新政策文件:《中华人民共和国无线电频率划分规定》(2023版)
也可以参考较新的野生资料:2024最全无线通信频率分配
其它常见无线电频率补充:
无线电遥控器:27Mhz、315MHZ、330MHZ、350MHZ、390MHZ、418MHZ、430MHZ、433.92MHZ、915MHz、2.4GHz。
广播与电视:
对讲机/电台:频率越高,穿透力越强,抗干扰能力越弱,成本越高。
民用对讲机(公众无线电)
1
2
3
4
5
6
7
8专业对讲机:V段136-174MHZ,U段400-470MHZ
民用对讲机(公众无线电):409-410MHz
武警公安用:350-390MHZ
海岸用:220MHZ
交通信号灯监控、防空警报器:223.025-235Mhz
业余无线电:V段144.000-145.800MHz,U段430.000-435.000MHz和438.000-440.000MHz
集群用:800MHZ
手机:900MHZ/180MHZ民用对讲机,我国频段是409-410MHz,欧美国家分462MHz和467MHz两组
蜂窝网络(Cellular network):主流蜂窝网络包括GSM、UMTS/HSPA(3G)、LTE/LTE-A(4G)、NR(5G)。安卓手机可以用Cellular-Z APP测试蜂窝信号。具体不同网络和不同供应商的频率划分参考上文的野生资料。
全双工SDR系统搭建
软硬件介绍
1 |
|
RTL-SDR(R820T+RTL2832U+天线)
廉价,能够实现较大频率范围的无线信号接收,但没有发送信号的功能。有V3、V4等较新的型号,频率和基本功能不变,优化了稳定性、发热问题等细节。
用途1:接收DVB-T电视(在国外有DAB-T格式电视的地区)、FM广播、ADS-B等。
用途2:作为SDR使用,可以接收24MHz-1.7GHz的无线电信号。
射频模块和主控
由于RTL-SDR不具有发射功能,还需要通过主控+CC1101射频模块
实现无线信号的发射,参考**cc1101-tool**项目,HackRF的射频发送功能也采用该方案。CC1101也能接收信号,但是和SDR软件不兼容,分析信号不方便,并且工作频率范围是387.0MHz~464.0MHz,远不如专门的SDR硬件。
主控用于烧入程序控制整个系统的交互。主控有很多选项,包括ESP32、Arduino Pro Micro、ESP8266、STM32、Arduino-NANO等。笔者用的是ESP32-WROOM-32。
CC1101无线芯片是一款国际大厂TI德州仪器(Texas Instruments)研发的低功耗无线传输芯片,能够工作在315、433、868和915MHz频段。淘宝上买到的开发板主要有TI-CC1101、M1101D系列。
Universal Radio Hacker(URH)
一个用于逆向解析无线通信协议的开源工具。发表在12th USENIX Workshop on Offensive Technologies(woot’18)会议。
1 |
|
E07-M1101D + ESP32配置
接线
E07-M1101D无线收发模块各引脚含义及与主控的接线方式如图。
图片来自cc1101-tool中的E07-M1101D-SMA_Usermanual_EN_v1.30.pdf
。
笔者买的ESP32-WROOM-32主控的引脚如图。可以看到有H和V两组SPI引脚,E07-M1101D中CSN、SCK、MOSI、MISO四个引脚连接到ESP32上任意一组4线SPI接口即可,两组SPI接口是一样的。GND和VCC不用多说,还剩下GDO2和GDO0两个数据输出接口不知道怎么连。
我们参考ESP8266和CC1101模块,GDO0和GDO2分别连D1和D2引脚。
图片来自cc1101-tool中的Esp8266_CC1101.png
。
查询ESP8266中D1和D2引脚的作用。如图,分别是SCL和SDA,那么E07-M1101D的GDO0和GDO2分别连接ESP32的I2C_SCL(GPIO22,D22)
和I2C_SDA(GPIO21,D21)
。
图片来自cc1101-tool中的ESP8266_Pinout_Diagrams.pdf
。
总结,笔者的设备接线如下:
E07-M1101D 443MHz | ESP32-WROOM-32 |
---|---|
引脚1(GND) | GND |
引脚2(VCC) | 3V3 |
引脚3(GDO0) | D22(I2C_SCL) |
引脚4(CSN) | D15(HSPI_CS) |
引脚5(SCK) | D14(HSPI_CLK) |
引脚6(MOSI) | D13(HSPI_MOSI) |
引脚7(MISO/GDO1) | D12(HSPI_MISO) |
引脚8(GDO2) | D21(GPIO21,I2C_SDA) |
安装CP2101驱动
ESP32-WROOM-32开发板使用CP2102-USB转串口芯片来和外部设备进行串口通信,所以还要安装CP2102的驱动,否则如图无法识别设备。
下载如下文件并安装驱动
安装完成后可以正常识别
Arduino烧录交互程序至ESP32
cc1101-tool项目为我们提供了要烧录到ESP32的串口终端程序,负责处理ESP32、CC1101模块和PC间的交互,使用Arduino IDE进行烧录。
下载并安装Arduino IDE:传送门
安装CC1101的依赖库
安装ESP32开发板软件包
Arduino IDE配置完成后选择自己设备对应的ino文件进行烧录。笔者要烧录的是cc1101-tool-esp32-wroom.ino
。因为板子有两组SPI接口,笔者接线用的是HSPI,原本代码用VSPI,gdo0和gdo2接线也不同,所以代码中引脚定义部分需要进行修改,如图
连接串口
用终端仿真工具连接串口,Putty、SecureCRT、MobaXterm等都可以,这里用MobaXterm,波特率设置为代码中的115200,端口选择ESP32的CP2102对应端口。
连上后显示Connect OK并且help正常显示命令,配置成功
RTL-SDR和URH配置
RTL-SDR接线
RTL-SDR驱动安装
windows下使用Zadig工具安装对应驱动
插上RTL-SDR,开启Options
-> List All Devices
。分别选中Bulk-In,Interface 1
和Bulk-In,Interface 0
接口,分别安装默认的WinUSB驱动。
URH安装和使用
windows平台下载Release中的安装程序安装。几个主要功能如图。一般先频谱分析获取无线电信号的频率,然后记录该频率的信号保存为文件并进行分析。
设备选择RTL-SDR,刷新后能识别出设备说明之前驱动安装得没问题。
遥控技术安全
遥控技术主要有红外遥控 、无线电(射频)遥控、蓝牙遥控和WIFI遥控。
红外遥控(非无线电波):将遥控信号(二进制脉冲码),调制在38kHZ的载波上,经过缓冲放大后送至红外发光二极管,转化为红外信号发射出去。红外线的频率不在无线电波范围内,现有大部分SDR平台无法收发红外线信号。部分手机有红外功能,Android也支持红外遥控开发的API,可以配合红外收发模块DIY自己的红外设备。红外遥控通信距离短、无法绕过障碍物,一般只应用于玩具或廉价家电,因此红外遥控安全的研究价值较低。
蓝牙和WIFI遥控的安全性主要是针对蓝牙和WIFI协议本身。
无线电遥控的安全性涉及编码和加密、通信协议等,由专用的编码和解码芯片来实现,主要有固定码、学习码和滚动码三种方案,安全性:滚动码>学习码>固定码。
- 固定码:编码固定,所有通信信号不变,易被截获并重放。常见编码芯片有2260、2262、PT2264等,解码芯片有2270、2272、2294等。
- 学习码:信号的某部分固定,另一部分可自定义。例如可学习用户指定信号。常见编码芯片有1527、2240、527等,解码一般通过单片机。
- 滚动码:每次信号发送都生成新的动态代码,基于一定的同步算法进行匹配(比如AES加密使用随机密钥,发射方和接收方同步生成密钥的种子和时间),无法直接重放信号。常见编码芯片有HCS301、HCS300、HCS200、HCS101等;解码芯片有TDH6301、TCT6301、SMC400等。
以上编解码芯片的名称都由字母前缀+数字组成,其中数字代表型号,字母代表品牌。只写数字表示该型号芯片有多个不同品牌。
无线电遥控的应用:汽车钥匙、车库门遥控器、智能家居设备等,比较常见的频率有315/433MHz、868MHz、2.4GHz。
目前市面上有遥控器频率测试仪、拷贝型遥控器和学习型遥控器(类似于智能卡中的变色龙),还有集成了识别频率、编码芯片型号、编码类型等参数功能和学习拷贝功能的设备。理论上,识别频率、拷贝并重放信号的操作同样可以通过SDR实现,编码芯片型号的识别则需要研究不同芯片的具体编码特征。针对滚动码遥控的拷贝一般需要通过捕获并分析信号、测信道攻击、逆向编解码芯片的固件等方式,分析编码方式和通信协议并获取关键密钥。
实战测试
测试内容:捕获遥控器的信号并分析后进行重放。
1 |
|
遥控器使用前需要和电机对码,因此大概率是学习码芯片
确认频率
进入spectrum analyzer功能,捕获遥控器信号,观察峰值频率为433.92MHz,确认频率。
记录信号
进入Record Signal功能,记录遥控器发出的三种基带数字信号并分别保存为文件
解调信号
URH打开文件进行解调和分析,调制方式设置为ASK(遥控器大多采用ASK的调制方式),点击Autodetect parametres,显示方式设置为Hex。
放大信号,这里软件自动识别参数进行ASK解码,得到三个按键的信号数据完全相同,说明参数存在问题。
经观察,三种功能的信号结构大致相同,都是一大段连续的波+断断续续的脉冲,采用OOK调制。选中的每段脉冲+空白长度都是1050,单个短脉冲长度350,长脉冲长度700相当于两个短脉冲。我们可以推测一个bit对应350个样本,将左侧分析参数中的 Samples/symbol
修改为350。这里具体的样本数每次接收都会不同,但是波的组成是一样的,需要根据具体接收的样本数调整解调参数。
在Signal View也可以将信号显示为解调状态
解调后,三个功能分别得到如下数据
1 |
|
1 |
|
1 |
|
分析编码和协议
三种功能信号的整体结构如图
细看功能码的结构推测编码时3bit一组,通过占空比进一步区分0和1,占空比高表示1,占空比低表示0, 即在上面解调出来的数据中,100对应1,110对应0。
按3bit一组对解调数据进一步编码后信号数据如下(功能码都省略掉了10个高位bit+3个低位bit的前缀,即一长串连续波的部分)
1 |
|
我们发现开始码都是39位,功能码都是40位,各功能的开始码后7位不同,功能码和结束码的后8位不同。
参考该文章可知最常见的PT226X固定码一般包括三个部分:同步位、地址位、数据位。
- 同步位:提示接收器解码类型;使接收器的处理程序和信号同步
- 地址位:设备id,区分设备
- 数据位:功能编号,区分功能
推测开始码后7位不同和其它码的后8位是数据位。更多的分析需要结合硬件或固件逆向进行验证,由于遥控器不方便拆除,这里直接进行重放,否则拆除后要买新遥控器重新拆卸电机进行对码。
进行重放
CC1101有以下的功能
1 |
|
1.设置调制模式
1 |
|
2.设置频率
1 |
|
3.构造信号
4.设置缓冲区
1 |
|
5.重放
1 |
|
Reference
物联网安全101-8.软件无线电(Software Defined Radio,SDR)简介(翻译)