作者:Kevin2600@星輿實驗室
本文為作者投稿,Seebug Paper 期待你的分享,凡經采用即有禮品相送! 投稿郵箱:paper@seebug.org

相關閱讀:《俠盜獵車 -- 玩轉固定碼 (上)》

0x00 前言

大家好, 我是星輿車聯網實驗室Kevin2600。星輿取 “星辰大海, 輿載萬物”之意, 是專注于車聯網技術研究, 漏洞挖掘和工具研發的安全團隊。團隊成員在漏洞挖掘, 硬件逆向與AI大數據方面有著豐富經驗, 連續在GeekPwn等破解賽事中斬獲獎項, 并獲眾廠商致謝。團隊研究成果多次發表于DEFCON等國內外頂級安全會議。

讓我們繼續上篇俠盜獵車的旅程, 學習更多固定碼信號逆向分析的姿勢。為了方便讀者理解, 筆者將用以下無線門鎖進行針對性講解。

首先拆開無線門鎖及遙控器進行信息收集, 通過PCB板上的關鍵字”HFY535F”, 得知此款無線門鎖采用了深圳華方圓的解決方案。再利用頻譜分析軟件確定其工作頻率為常見的315Mhz。

在鎖的接收端與遙控器部分都帶有一個8 bits的DIP開關。只有當兩邊的bits位相匹配時, 遙控器才能將門鎖打開。相對傳統不可更改的固定碼而言, 使用這類撥碼設計, 用戶可隨時更改編碼, 安全性有所提升, 不過這仍屬固定碼的范疇。通過專業的無線鑰匙設備可以了解到, 此款無線門鎖采用了PT2262 芯片, 最終顯示的地址碼1FF01F10 和鍵碼1000與DIP開關位相吻合。

0x01 采樣

在確定無線門鎖的工作頻率后, 第一步便是獲取信號樣本,這里列舉幾個筆者常用的方式。其中最簡便的是osmocom_fft, 根據個人喜好可選擇不同的界面, 如下圖的示波器和頻譜FFT模式。只要設置好目標頻率, 點擊REC便可自動記錄下信號樣本, 需要注意的是此時保存下的是信號原始IQ格式, 文件容量分分鐘過百兆。

如果想有更多的靈活性, 則GnuRadio-Companion是必選之一。在用示波器模式分析信號的同時, 還可捕獲門鎖信號并輸出Wave格式的音頻文件, 以及原始IQ文件。

通過示波器模式顯示門鎖信號, 使我們有更直觀的感受。如下圖分別是遙控器上鎖和解鎖2個按鈕所輸出的波形。

將捕獲到的音頻信號倒入Audacity后, 顯示的結果與示波器波形完全吻合。

我們還可以用上篇提到RTL-433進行采樣, 以下是解鎖指令的信號解析, 可以看到與上面音頻, 示波器結果相同, 且以二進制等方式顯示, 使其更加一目了然。

0x02 分析

在對信號采樣后, 接下來就需要對其近一步分析。比如我們想要獲取信號的波特率, 通常的方法是套用已知公式 (1/ (最短波形長度/采樣率))。如下圖音頻信號中 1/(542/2000000) 波特率大概是3690左右。

筆者這里推薦一款名為Inspectrum的開源軟件。其界面友好, 操作簡單。如下圖可以看出門鎖遙控器的信號是典型的OOK模式

通過自動化解析得到我們所需的波特率, 跟之前音頻分析得到的結果一致。

還可以將脈沖信號自動轉換成相對應的二進制。這大大提高了分析工作效率。

0x03 發送

在分析完信號樣本后, 可以嘗試回放信號攻擊. 之前提到的GnuRadio-Companion可以幫助我們將捕捉到的門鎖信號, 原封不動的發送出去.

需要注意這里發送的是門鎖遙控信號原始數據, 如果有任何噪音也同樣一并發送出去。以下是信號發送演示視頻 (https://www.youtube.com/watch?v=2Uszj0Wc8Zs)

這里再跟大家推薦這款名為 Yardstick1 的無線神器。 加上Python框架RFCat, 我們可用腳本的方式來達到門鎖信號回放的目的。

下圖為攻擊腳本, 需要注意的是波特率以及數據包之間的間隔等參數一定要設置正確。

以下是使用 Yardstick1發送解鎖指令信號演示視頻 (https://www.youtube.com/watch?v=bDQ3YtoY8GA)

0x04 總結

針對固定碼的分析與破解就此告一段落。也許有同學會覺得這太基礎。但對汽車鑰匙安全研究來說只是熱了個身, 接下來有更多燒腦的挑戰在等著我們。(視頻: https://www.youtube.com/shorts/m71ZGKYPKlo)

0x05 文獻

http://samy.pl/opensesame/

https://www.audacityteam.org/

https://github.com/miek/inspectrum

https://github.com/atlas0fd00m/rfcat


Paper 本文由 Seebug Paper 發布,如需轉載請注明來源。本文地址:http://www.bjnorthway.com/1747/