0x00
无线电:现代社会中不再使用有限电缆的无线设备越来越多,一方面让使用者使用起来更加便利,另一方面也增加了无线设备遭受进途和远程攻击的风险。与访问一台超出一定物理范围的无线传感器相比,困难的是如何访问一台使用物理连接且未公开的传感器,只有能够访问无线信号才有进一步攻击的可能。本章主要研究软件定义的无线电SDR的开源软件,介绍评估和测试产品的过程,与分析简单RF(射频)设备的攻击步骤。

0x01
SDR:SDR是软件定义无线电,使用可定制的软件组件实现无线电功能,并使用软件组件处理原始数据,SDR并非单纯依靠特定于应用的RF硬件以及数字信号处理器。SDR使用通常处理器(如运行Linux的计算机)资源提供信息处理,利用通用的RF硬件捕获和传输数据。SDR的优点包括可用单个(可能远程更新)的固件包处理多样的信号和频率。
SDR设备的购买:如HackRF,bladeRF,USRP都使用计算机上的USB端口,并且可与GNURadio之类的开源软件配合使用,下面是三种SDR的比较:

《灰帽黑客》第五章软件定义的无线电
操作系统可以对无线电频率进行适当调整,例如,蓝牙在40-80个信道上的工作额率是2.4GHz-2.48SGHz,具体数值取决于版本。FM无线电在101个信道上的工作频率是87.8MHz-108MHz。同时调整SDR的扩展板可有效改变频率。
带宽是可由应用/没备扫操的RF频谱数量。表中所列的带宽是在各自的网站上公布的,具体取决于加载的固件,例如HackRF固件版本2017.02.01日前支持扫播模式,允许设备扫描全部6GHz范围。为bladeRF添加支持,将其带宽扩展为124MHz.增加带宽的一个潜在好处是能同时监控蓝牙的所有信道(80MHz)。
"双工(Duplex)"指两个系统相互之间的交流方式。全双工意味着设备可同时传输和接收信息。半双工(Half-Duplex)是设备可传输和接收数据,但不能同时完成。半双工的示例是对讲机和许多的计算机VoIP应用。当双方同时传递数据时,会发生冲突导致数据会丢失。全双工更灵活,但SDR的双工不会影响分析的有效性。
模数转换(Analog-to-Digital Conversion,ADC)分辨率指每个样本可使用的不同电压值数量。如电压范围为4V的8位ADC的分辨率为15.6mV或0.39%。与采样率结合在一起,更多位的ADC分屏率意味着模拟信号会由更准确的数字表示。
公开的每秒样本数量(Mllion Samples per scond)取决于USB吞吐量、CPU、ADC转换器以及每个样本的大小。如USRP B200的值61MSps基于使用16位正交样不过,可将系统配置为使用8位正交样本,有效地将“每秒样本数量”吞吐量提高一倍。 受支持的HackRF“每秒样本数量”取决于所选的ADC以及USB吞吐量。
除了SDR外,还需要儿段电缆、假负载、衰减器和不同频率的天线。要对试验的设备进行测试,定向天线有助于隔高信号源。最后在处理常见频率(如2.4GHz)时,简单的隔离室(或箱子)将十分有用。表5-1中列出的每个SDR都有板上的SMA(Subminiature version A)母连接器,用与连接电缆、衰减器和天线。

平时我们使用的无线设备如收音机,电话,卫星和WiFi等都由特定机构管理控制,在美国FCC管理RF频谱,管理人需要获得许可才可使用,要想被许可操作无线电还需要进行相关考试。

0x02
SDR示例:书中采用Ubuntu系统使用HackRF SDR和gnuradio工具来对无线插座进行研究。另外本章没有具体实验只是介绍一下过程步骤和思路,读者要想实际操作还需去本书网站去寻找具体信息。
研究过程一般为:搜索,捕获,重放,分析,预览,执行。

搜索:
在SCRAPE过程的搜索阶段,需要在不借助任何特殊设备的前提下,尽量找到足够多的无线电特征。传输用的大多数设备必须经过FCC的认证才能确保无线电设备根据FCC的规则工作。当产品或模块经过认证时,会发布FCC ID,而且FCC ID显示在产品或模块上。FCC ID是重新发现RF特征的关键。
我们要分析的设备是Prime Indoor Wireless Power Outlet遥控器,如上面的图所示。即使没有该设备也能遵循本章节的步骤去做。这个遥控器的FCC ID是QJX-TXTNRC。可通过产品标签找到,只有在产品码上使用-TXTNRC才能通过搜索FCC设备许可找到该设备的报告,这里可用Google进行搜索,在Google上了解到该设备的工作频率,样本波形图,时间指标和脉冲宽度等信息,获取这些信息在后面我的过程中可能有重大意义。

捕获:
了解工作频率后就有了足够多的信息来开始试验SDR和试验被测设备(Device Under Test,DUT)。此时,需要安装SDR(HackRF)和软件(gmuradio和HackRF工具),配备-根能接收315MHz(ANT500 75MHz-1GHz)信号的天线。书中没介绍安装过程,但建议使用PyBOMBS,并使用PyBOMBS的prefix参数将工具安装到主目录。通过将其安装在主目录,可以尝试多种配置,在将来遇到更新问题时,也可以更方便地恢复。
GNU Radio Companion(通过运行gnuradio_companion来启动)是个GUI工具,允许用户通过链接一个或多个信号处理块来创建软件无线电。该工具生成Python代码,允许用户定义变量并在GUI中使用Python语句。
捕获阶段尝试为每个已知的刺激信号创建捕获文件,在这里的DUT中,按下每个容器的on/off按钮进行启动和停止。为帮助理解设备的协议可使用两个遥控器进行比较。当捕获足够多的数据后可进入下一阶段,即“重放”阶段。

重放:
捕获信息后尝试重放数据。虽然无法成功地重放数据不见得意味着未能正确地捕获数据,但成功地重放数据则表明可能存在通信缺陷。在关注安全的系统中,应当实施反重放缓解措施,以防止未授权的访问。此类设备的-般使用是开关灯、风扇或其他一些简单设备。本书作者怀疑可能并未缓解重放攻击。重放攻击的主要目的是在对设备了解甚少的情况下成功地练习使用设备。
重放阶段的流图与捕获阶段相似,只是现在将文件用作源,将osmocom用作Sink.必须重复使用相同的采样率和频率,以便在收到信号时重新生成信号。
一般成功重放意味着已经完成了前期工作,如门访问控制设备没有采用重放缓解措施,攻击者可获取样本并在未授权的情况下访问,重放捕获后的信号后进入“分析”阶段。

分析:
目前为止已经证明了可捕获和重放信号,但并不知道传输的内容。该阶段将尝试学习按下不同按钮时的设备差异,并确定是否能够职能地排除其他逼控器。为完成这两项任务,这里将使用另一个工具inspeetrum来简化工作。
inspectrum是一个离线无线电信号分析器,可用于处理已捕获的无线电信号。作者撰写本书时Ubutu中使用apt安装的inspectrum版本落后于最新版本,可能需要去本书网站或GitHub来获取该工具。
要在站之间传输数据,载波信号用待传输的数据进行调制。载波信号或频率是站双方都知道的,承载着数据。使用on/off按键来简单进行幅值调。
安装inspectrum后,只需要运行,并对GUI中的样本做必要的调整。
为解码数据,需要计算符号周期,并转换单个信息包的符号。inspetrum提供了多个工具来度量信号和捕获符号数据。cursor函数提供了一种方式允许以图形方式将图形分解为指定长度的符号。另外,鼠标中键隐藏着添加幅值图并提取符号的能力。在图5-8中可以看到,在符号周期272us处添加光标,信号上覆盖8个周期。
分析符号周期之后,应当增加符号数量,看一下是否在整个数据包中继续与短线边缘对齐再看一下最后一个脉冲的对齐位置。确认符号率和周期后,可提取符号,将其转换为二进制数据。使用鼠标中键获得幅值图。添加幅值图时,在频谱图上添加一个新的数据框,其中有三个水平行。数据框的中心必须是符号数据,以获取新增的幅值图上的符号数据幅值图。提取的符号在1-45之间需要将符号转化为二进制数据进行简化处理。分析完数据后是“预览”步骤。

预览:
这步使用分析结果合成数据。“预览"步骤的目的是:在传输前,确保我们要发送的数据与期望类似。可将这个步骤与“执行”步骤合为一体,书中单独介绍“预览"步骤。
到目前为止创建的流图都较为简单,几乎没有活动组件。为从头创建信号,需要使用GNU几个新块。

执行:
经过前面几步后趋稳定合成的数据与以传输方式接收的数据是相似的现在只需要开启osmocom Sink通过执行流图传输并观察Power Outlet的开启。至此完成了利用SDR设备成功且完整地复制遥控器的功能。

0x03
小结:本节讲述了利用简单的RF设备,获取工作频率、捕获数据、执行回放攻击、了解数据结构并合成数据。同时,使用GNU Radio不需要与硬件交互即可模拟信号。
采自《灰帽黑客第五版》

相关文章: