Universal Radio Hacker(URH):一个用于逆向解析和攻击无线通信协议的开源工具

本文内容、开发板及配件仅限用于学校或科研院所开展科研实验!

本文介绍一个用于逆向即系和攻击无线通信(私有)协议的开源工具。该工具是Johannes Pohl和Andreas Noack研发的,该成果也已发表在12th USENIX Workshop on Offensive Technologies(woot'18),woot是一个与信息安全顶级会议Usenix Security一起举办的workshop。Universal Radio Hacker: A Suite for Analyzing and Attacking Stateful Wireless Protocols的原文及其演讲PPT下载链接为:https://www.usenix.org/conference/woot18/presentation/pohl

本文基于对原文的学习和工具的使用,介绍URH的基本内容和使用方法。

目录

一、背景介绍

二、URH设计目标

1、URH实现方法概览

2、信号解析

3、信号分析

5、信号仿真

三、URH的安装使用

1、Windows

2、Linux

四、URH基本功能:

1、扫描频谱Scanning the spectrum

2、信号录制

3、信号解析

4、信号分析

五、有用的链接


一、背景介绍

物联网设备普遍使用各自的无线私有协议。这些私有协议往往关注如何在物联网设备的资源受限情况下,能够稳定可靠运行。但是,协议往往忽视了信息安全防护。这也就导致各种无线智能设备存在加大的安全隐患,例如无线门锁或者汽车的无线钥匙等很容易遭受无线窃听、重放、篡改等攻击。网络攻击者要想对这些无线设备发起深层次的攻击,就需要深入的逆向解析这些无线私有协议。

软件无线电设备可以设定成物联网设备工作频段,来进行信号发送和接收,这为攻击者们开展无线协议逆向工作提供了很大的便利。但是,目前看来,绝大多数的软件无线电设备工具适用于的协议逆向的工作频段往往集中在高频频段(3-30MHz,例如13.56MHz的RFID的频段),而且这些工具也无法用于充分分析协议逻辑,必须配合其他的定制化工具或者相关芯片的资料才行。

因此,本文(Universal Radio Hacker: A Suite for Analyzing and Attacking Stateful Wireless Protocols),研制了一种开源工具Universal Radio Hacker(URH),可配合常见的软件无线电设备来对无线私有协议开展协议逆向分析,实现了信号解调、可定制的解码、协议模糊测试和仿真功能。总体来看,URH将协议逆向分析工作分成了以下几个阶段,即信号解析、信号分析、信号生成、信号仿真四个阶段。四个阶段中,上一个阶段的产出可以输入给下一个阶段使用。URH聚焦协议逻辑的分析,而不是仅仅关注对高频信号和数字信号解析过程。

二、URH设计目标

URH是一种用于分析无线私有协议的工具。URH通过控制软件无线电设备(例如USRP、HackRF等)接收无线采样信号,并将信号转化为01比特序列。但是URH的功能不仅仅局限于此,URH的目标是帮助你实现对某些物联网设备无线通信攻击的完整过程。
具体来看,URH有以下三个设计目标:
(1)提供一个直观的无线私有协议分析界面,并不需要使用者有太多深入的射频知识;
(2)给用户提供一个覆盖对一个有状态无线私有协议发起攻击涉及的所有完整操作;
(3)此工具需要提供给于其他软件配合工作的接口。

三、URH具体实现方法

1、URH实现方法概览

URH为了实现设计目标,将无线协议逆向解析分成以下三个主要步骤:

(1)信号解析:信号解析包括对原始采样信号的解调解码,其目标是将接收到的信号映射成数字bit数据。

(2)信号分析:将信号解析的bit数据解码成可读性高的文本,其目标是分析发现协议的通信交互逻辑。

(3)信号生成与信号仿真:对于无状态协议的攻击,信号生成阶段是在协议逻辑分析的基础上生成可以跟物联网设备通信交互的数据包。对于有状态协议的攻击,则需要通过信号仿真阶段来实现对协议的仿真和特定协议字段的模糊测试与逆向分析。

2、信号解析

信号解析的主要目的是从接收到的信号中提取出二进制的比特数据。为此,接收信号需要进行正确的解调。在解调方面,虽然每个已调信号可能有幅度、频率和相位不同的调制方法,但是URH希望能够提供一种尽可能通用的解调方法。因此,URH不得不针对已调信号进行一些预处理。URH针对ASK、PSK和FSK三种调制,分别实现了预处理算法。无论已调信号用的是什么调制方式,URH都是将已调信号预处理成一种矩形信号,如下图所示。

3、信号分析

一旦得到了信号解析结果(即01bit),接下来的分析工作就是实际的协议逻辑分析工作。

4、信号生成

在完成了信号解析和信号分析之后,你就掌握了一些协议的格式,接下来为了验证你的分析是否正确,就可以通过自己封装一些数据包并发送给物联网接收设备来验证一下了。信号生成就是实现这个操作的阶段。

5、信号仿真

信号生成阶段的最大局限就是,对于那些有状态的协议,由于无法伪造有效的序列号或者加密后的挑战响应值,所以无法实施有效的攻击。为了解决这个问题,URH提供了一个信号仿真的功能。解决方案细节见论文原文。

三、URH的安装使用

https://github.com/jopohl/urh#Installation

1、Windows

On Windows, URH can be installed with its Installer. No further dependencies are required.

If you get an error about missing api-ms-win-crt-runtime-l1-1-0.dll, run Windows Update or directly install KB2999226.

2、Linux

Install via Package Manager

URH is included in the repositories of many linux distributions such as Arch LinuxGentooFedoraopenSUSE or NixOS. There is also a package for FreeBSD. If available, simply use your package manager to install URH.

Generic Installation with pip (Ubuntu/Debian)

URH you can also be installed with using python3 -m pip install urh. In case you are running Ubuntu or Debian read on for more specific instructions.

In order to use native device backends, make sure you install the -dev package for your desired SDRs, that is libairspy-devlibhackrf-devlibrtlsdr-devlibuhd-dev.

If your device does not have a -dev package, e.g. LimeSDR, you need to manually create a symlink to the .so, like this:

sudo ln -s /usr/lib/x86_64-linux-gnu/libLimeSuite.so.17.02.2 /usr/lib/x86_64-linux-gnu/libLimeSuite.so

before installing URH, using:

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

四、URH基本功能:

我用HackRF和无线门铃测试了一下URH的基本功能。用到的硬件包括:

(1)HackRF One:https://item.taobao.com/item.htm?spm=a230r.1.14.171.eaff79bavAjPbV&id=526187854860&ns=1&abbucket=8#detail

(2)SMA拉杆天线:https://item.taobao.com/item.htm?spm=a1z10.1-c.w4023-13255721722.13.33ba3d88e65hf9&id=563602659653

(3)无线门铃:工作频段315MHz。

1、扫描频谱Scanning the spectrum

选择File—》Spectrum Analyzer

下边的图是我用URH来接收无线门铃信号的频谱,无线门铃的发射信号频率为315MHz。

在左边的Device setting可以选择设备Device,设置接收信号中心频率、采样率、带宽、增益等,当你想更换接收信号频率时,可以在左边的Frequency这里修改,也可以直接在右边的频谱中点击你想接收的频率就可以自动切换过去。

2、信号录制

点击File--->Record Signal

右边界面中的信号,放大后如下图所示

3、信号解析

Interpretation界面:

可以用鼠标选择信号波形,选中的区域为蓝色。选中的区域之后,下边的01序列也会相应灰色高亮显示出来。

Signal View的下拉菜单中选择Spectrogram。

4、信号分析

Analysis界面,这里是URH解析之后的01序列。

如果勾选“mark diffs in protocol”之后,会把每行不一样的比特以红色标记出来,方便分析者对比。

更多功能介绍以及论文的一些实现细节还待深入研究,未完待续。

五、有用的链接

https://www.usenix.org/conference/woot18/presentation/pohl

https://github.com/jopohl/urh

发布了28 篇原创文章 · 获赞 34 · 访问量 15万+

猜你喜欢

转载自blog.csdn.net/OpenSourceSDR/article/details/104821001
今日推荐