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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章