物联网安全101-9.软件无线电简介(Software Defined Radio,SDR):软件部分(翻译)

文章目录
  1. 1. 介绍
  2. 2. 软件
    1. 2.1. 侦察工具:
    2. 2.2. 基本评估:
    3. 2.3. 高级评估:
    4. 2.4. 其他:
  3. 3. 如何接近目标:
    1. 3.1. 1) 侦察
    2. 3.2. 2) 获取信号
    3. 3.3. 3) 记录
    4. 3.4. 4) 解调
    5. 3.5. 5) 流程
    6. 3.6. 6) 解码
    7. 3.7. 7)攻击
  4. 4. 结论:
  5. 5. 资源:


介绍

本文是“物联网安全”系列的一部分。如果您还没有阅读本系列之前的博客(第 1 - 7 部分),我建议您先阅读它们,除非您已经熟悉这些概念并且只想阅读当前主题。
物联网安全 - 第 1 部分(101 - 物联网介绍和架构)
物联网安全 - 第 8 部分(软件定义无线电简介)本系列的前一篇博客。
这篇博客将是上一篇博客的延续。在此,我们将研究一些可用的软件 SDR 工具。我们还将定义一种关于如何处理 RF 目标的方法。

软件

凭借强大的开源社区,SDR 拥有各种软件工具,可提供所有信号处理功能。让我们来看看一些广泛使用的 SDR 软件以及它们的不同之处。这里主要介绍的工具大部分适用于Linux平台。

侦察工具:

  • GQRX
    GQRX 是一种频谱分析仪,用于浏览频段和寻找目标的工作频率。它带有常见的解调器,如 AM、CW、FM。由于具有解调功能,可以记录解调的信号流,在下一阶段的评估中可以在 Audacity 和 Inspectrum 等工具中进一步分析。GQRX 与大部分的 SDR 硬件兼容。GQRX 的其他替代品具有或多或少相同的功能,如下所述:

  • HDSDR / SDR# (SDR-Sharp) [适用于 Windows]

  • Qspectrum 分析仪(带自动峰值检测)

  • Osmocom-FFT(包含在 Osmocom GNU Radio 模块中的频谱分析仪)

基本评估:

  • Universal Radio Hacker(URH):
    URH 是一个完整的无线协议调查套件,原生支持主要 SDR 硬件。几乎一切都在这里自动化,从频谱分析到甚至发送操纵信号。人们可以毫不费力地识别调制类型并自动解码信号。对于手动检查,还提供接收比特流的差分视图,这对于解释信号数据非常有用。其他主要功能包括协议分析器(自动和手动)。这就是它变得有趣的地方,它有一个用于有状态攻击的模拟环境和一个针对无状态协议的模糊测试元素!


来源:https://github.com/jopohl/urh

URH 的另一个替代方案是 Inspectrum

  • Audacity:
    Audacity 是一种多声道音频编辑工具,但与 GQRX 结合使用时,它会变成无线电信号分析仪。Audacity 是开源的,可用于所有常见的操作系统。它只接受记录的信号,但信号必须被解调,就像来自 GQRX 的记录信号一样。

高级评估:

  • GNU Radio
    GNU Radio 是一个开源工具包,用于实现 SDR。它提供了执行不同信号处理步骤的基本模块,例如滤波器、解码器、解调器等等。它适用于所有主要的 SDR 硬件。主要的好处是框架的巨大可扩展性。可以用 C++ 或 Python 编写块。

  • GNURadio Companion (GRC)
    GNU Radio Companion (GRC) 是一个前端可视化工具,它是 Gnu radio 框架的一部分。我们应该记住,GRC 的创建是为了简化 GNU Radio 的使用,允许我们以图形方式创建 python 文件,而不是单独在代码中创建它们。它允许人们简单地拖动、修改参数并开始处理信号。随着我们的进行,我们将更加关注它。



其他:

  • Android
    随着移动设备的处理能力随着时间的推移显着增加,Android SDR 正在进入移动设备。虽然仍然非常有限,但只需加载设备的一些库,通过 OTG 电缆将您的 SDR 硬件连接到您的 android 即可完成这项工作。RTL-SDR 加密狗、Lime SDR mini 和 HackRF 等设备以及其他一些设备与 android 设备配合良好。

  • SDR touch:
    类似于 GQRX,用作移动设备的频谱分析仪。

  • GNU Radio Android:
    最近 GNU Radio for android 出现了。这是您移动设备中的所有 SDR 解决方案。尽管截至目前,它支持的移动设备有限,但随着时间的推移,预计主要设备将覆盖。

  • Scapy-radio:
    Scapy-radio 是 Scapy 的扩展,Scapy 是一种用 Python 编写的开源网络数据包操作工具。此扩展使用 Scapy 作为无线电数据包操作的后端。作为从 Scapy 到 SDR 设备的网关,使用了 GNU Radio。

如何接近目标:

我们将分解您如何接近 RF 目标、捕获它、对其进行逆向工程并发起攻击!

  • SDR 硬件:HackRF One
  • SDR 软件:GQRX、GNURadio Companion
  • Target:为此,我们选择了一个本地制造的 6 美元无线门铃,结果证明它是模拟的。让我们看看我们是怎么做的……


IMG标签图片来源:https://xkcd.com/1457/

1) 侦察

如果您拥有该设备,则大部分任务已完成,因为您可以从此处简单地查找该设备的 FCC ID ,这将为您提供有关该设备的许多详细信息,即工作频率、设备内部结构等等等,这将减轻很多评估。
在我们的例子中,由于它是本地制造的设备,它没有任何 FCC ID :(

2) 获取信号

您需要分析频谱以找出正在传输的信号的位置。您可以使用任何您熟悉的频谱分析仪。以下是可帮助您找到目标频率的常用工作频率列表:

  • 300MHz
  • 433Mhz
  • 868Mhz
  • 915Mhz
    所有这些都是常用的 ISM 和免许可证频段。WPC(印度政府电信部 (DOT) 和美国联邦通信委员会 (FCC) 的无线规划和协调部门)等机构允许此类频段免许可,前提是这些频段仅用于低功率无线设备具有为带宽、输出功率和最大有效辐射功率定义的细节。


在我们的例子中,我们在这一步中使用了 GQRX。我们观察到 302MHz 的峰值,这对于任何操作设备来说都有些不寻常。

3) 记录

捕获信号是保存信号以供分析的好方法。人们可以轻松地对记录的信号运行信号处理操作,而无需任何 RF 目标产生实时信号。在我们的例子中,我们使用下面的 GRC 流程图。我们将信号保存在 .cfile 中。



记录模拟门铃信号(流程图)

4) 解调

最好的方法就是简单地查看信号。如果您精通调制技术,则可以轻松理解所使用的调制类型,即 FSK 中的压缩和解压缩。下面是一些常用的调制:

  • FSK(频移键控)
  • ASK(幅移键控)
  • OOK(开关键控)
  • PSK(相移键控)

5) 流程

一旦我们确定了调制和工作频率,我们就可以开始使用 GRC 块处理信号并创建流程图。这通常包括解调实时/捕获的信号、放大信号、将其移植到 Wireshark 等。随着我们继续介绍处理特定信号所需的 GRC 块的使用等内容,我们将更详细地讨论 GRC。

6) 解码

所以一旦你掌握了比特/比特流,你就可以开始解码它。常用的编码技术有

  • NRZ
  • NRZI
  • Bipolar AMI
  • Manchester

仅举几例。您会发现它们已经存在并且可以在 Universal Radio Hacker (URH) 中使用。

7)攻击

完成逆向信号后,即弄清楚调制、编码、数据字节和其他细节等内容。您现在可以发起攻击了!最常见的一种是重放攻击,其中发送回捕获的信号。

第 3 步和第 5 步不适用于我们的目标(因为它是模拟的)但是我们对目标进行了攻击,我们将使用 GRC 进行重放攻击。下面是相应的 GRC 流程图。我们重放了捕获的信号 .cfile。



重放模拟门铃信号(流程图)

结论:

我们希望您清楚地了解可用的主要 SDR 软件工具有哪些,以及为什么一个比另一个更好。此外,了解如何接近 RF 目标会让您了解使用 SDR 进行 RF 目标评估所涉及的步骤。

继续下一部分 - IoT 安全性 - 第 10 部分(MQTT 协议和安全性介绍)

资源:

GNURadio-Android

原文链接:https://payatu.com/blog/appar/iot-security-%E2%80%93-part-9-introduction-to-software-defined-radio