作者:Kevin2600@星輿實驗室
本文為作者投稿,Seebug Paper 期待你的分享,凡經采用即有禮品相送! 投稿郵箱:paper@seebug.org
相關閱讀:《俠盜獵車 -- 玩轉固定碼 (下)》
0x00 前言
大家好, 我是星輿車聯網實驗室Kevin2600。 星輿取 “星辰大海, 輿載萬物”之意, 是支專注于車聯網技術研究, 漏洞挖掘和工具研發的安全團隊。我們的口號是 “不是一個人的王者 而是團隊的榮耀”。
筆者從今天開始將持續更新,汽車無線鑰匙安全相關的系列文章。 本系列將涵蓋傳統RKE/PKE鑰匙體系的設計缺陷, 當下最流行的數字鑰匙架構中所暴露的安全隱患等。從軟件無線電SDR信號分析, 到錯誤注入的側信道攻擊, 透過黑客視角, 通過豐富的實戰案例, 展示車聯網安全中的博弈之路。筆者希望能拋磚引玉為中國車聯網安全做出貢獻, 激勵更多志同道合的小伙伴加入我們。
0x01 信號101
無線信號安全是個很深的研究領域,需要掌握的知識點很多。 筆者在這推薦Michael Ossmann的Software Defined Radio with HackRF 系列教程。這里先來了解些研究無線鑰匙安全必要的基礎知識。
首先需要知道無線鑰匙通常工作在ISM頻段, 比如 315Mhz, 433Mhz 和868/915Mhz。 在信號調制方面則以OOK/ASK/FSK為主。 這幾種調制方案應用非常廣泛,如無線基站, 遙控鑰匙和胎壓系統TPMS都有它們的身影。 在無線鑰匙領域OOK的簡單性是其它調制方案所不及的, 僅需要將載波信號發送到功放和天線, 即可表現“1”或不發射任何信號即代表“0”。 下圖為ASK和FSK在頻譜上的表象。

無線鑰匙在發了一串1和0 后, 還需要正確的編碼方式, 收發雙方才能正常交互。其中NRZ, PWM 和Manchester 是較為常見的編碼格式。


工欲善其事, 必先利其器。 擁有得心應手的工具, 對研究無線鑰匙安全尤為重要。每個人喜好不同, 偏愛的工具也見仁見智。 筆者在無線信號硬件上推薦支持RTL-SDR的電視棒, 帶有PortaPack模塊的HackRF以及可以通過Python交互的Yardstick1。

在軟件方面大名鼎鼎的GNURadio 則是必備軟件。 同時無線鑰匙發出的指令有固定碼和滾動碼的區別。 固定碼顧名思義就是每次的內容都相同, 但因為這種方式太不安全, 廠商通常都會選擇每次都有所變化的滾動碼。

0x02 信號干擾
在了解無線鑰匙的基礎知識后, 我們來看看黑客會如何對其進行攻擊呢。 其中射頻信號干擾是無線攻擊中最常見的方式之一。 攻擊者使用更強的功率在與目標相同的頻道內發送噪音信號, 以期壓制原信號達到干擾目的。 通俗的理解就是用更大的喊聲壓過了你, 至于喊的是什么并不重要, 反正別人聽不到你說話就可以。 以下是干擾攻擊在信號頻譜圖上的表象, 可以看到在發起攻擊后, 通訊頻道都被占用了。
針對遙控鑰匙信號的干擾攻擊, 也是盜賊最喜歡的方式之一。 在海淀區花園路某停車場內, 曾有兩名男子從一輛寶馬X5車內盜走裝有手機和大量現金的電腦包。 警方后來在他們身上找到了一個收音機大小的儀器。 這就是一款所謂的鎖車干擾器。 兩名不法分子利用這種設備, 隱蔽在角落干擾車主鎖車, 當車主離開后, 輕松打開車門, 再將車內財物一掃而空。 然而這并不是個例, 在全國甚至全世界范圍內屢次發生同類盜竊案件。 因此各位車主在按下遙控器鎖門按鈕后, 最好再拉下門把手, 確認真實上鎖后才離開。
有趣的是某些高功率電子產品所產生的電磁場, 竟也可能成為了干擾信號源。 近日河南周口某地有居民的汽車鑰匙經常無故失靈, 在無管委的工作人員進行了大量排查后發現罪魁禍首竟是一個電熱水壺。

為了檢驗干擾攻擊的真實效果, 筆者在征得車主同意后, 用HackRF 對某款汽車做了測試。 從視頻 (https://v.qq.com/x/page/h32756atqlx.html) 中可以看到在開始干擾攻擊后, 汽車對遙控鑰匙立刻失去反應。

值得一提的是某些廠商在產品中會設計信號干擾檢測機制。 比如某款智能警報器一旦檢測到有干擾信號, 就會自動觸發警報。 因此高階的黑客會采用更智能的干擾方式, 比如Reactive Jamming, 跟傳統的干擾方式不同之處在于, 其并不是簡單粗暴的占用整個頻道, 而是將干擾信號“隱藏”在真實的發送信號中, 以便繞過目標的檢測機制。

0x03 信號重放
當然只是對遙控信號進行干擾是不夠的, 攻擊者還希望能取得控制權。 這就需要對目標有足夠的了解。 對目標的情報收集是安全研究中一項至關重要的基本功。 這里的情報指的是與目標系統相關的有用信息, 比如工作頻率, 編碼方式, 芯片型號等等。 如下圖我們可以從使用手冊中找到所需的目標工作頻率信息。

然而現實中往往受條件限制, 無法獲取更多有用信息。 這就要考驗測試人員的實戰經驗和耐心了。 幸運的是除了汽車無線鑰匙外, 工作在315Mhz 或433Mhz, 且以固定碼模式為主的遙控設備在現實中仍占了很大的比例。 所以我們可以把相關設備如HackRF放在合適的位置進行抓包, 耐心等待遙控開鎖指令被按下的那一刻。 一旦獲取所需的解鎖指令, 就可以通過信號重放的方式得到控制權。
以下是重放演示視頻 (https://v.qq.com/x/page/v3275nakwi1.html)。需要注意的是, 這個時候我們對目標設備, 如信號指令結構等信息其實仍是知之甚少。不過對于攻擊者來說, 能把閘機打開這就足夠了。

0x04 信號簡析
但從安全研究人員的角度來說, 想找到設計缺陷或安全漏洞。就得更深入的了解目標。這里筆者以小牛電動車鑰匙為例, 對其無線信號進行簡單的逆向分析。首先需要知道小牛鑰匙的工作頻率。常見的方式可查找FCC ID或CMIIT ID, 即無線電發射設備型號核準碼相關文檔獲取。也可以用頻譜分析軟件如GQRX來確定。

因為是在實驗室環境中, 所以筆者選擇直接將其拆開一探究竟。 在小牛鑰匙的PCB板上清楚看到晶振 (26.250M)和IC (CMT2150L) 這兩個關鍵部件。

通過查看芯片文檔, 得知鑰匙的工作頻率為315Mhz。 默認采用的是1527的編碼方式。
從文檔中還可以找到IC的每個管腳定意, 這大大方便了逆向分析工作。


根據IC管腳定意, 接上示波器, 可以用來分析的小牛鑰匙的脈沖信號就展示在面前。
除了物理訪問, 我們也可以通過軟件無線電來抓包分析, 這里給大家推薦名為 RTL_433的開源軟件, 其自帶大量無線遙控器信號解析庫, 甚至可以解析某些警報器密碼。

不過其默認無法解析小牛鑰匙的信號, 所以我們還需要自行分析。 以下是通過RTL_433 獲取的小牛原始信號數據。可以看到數據中含有大量重復出現的部分。

在把相關參數編寫成配置文件后, RTL_433就可以自動解析了。從視頻(https://v.qq.com/x/page/y3275usojth.html) 里可以清楚看到小牛鑰匙每次所發出的解鎖或上鎖等指令。

不過大家一定已經意識到一個問題, 小牛鑰匙所發出的解鎖或上鎖指令在解析后, 每次得到的值都是一樣的。 其實在得知小牛鑰匙使用的編碼方式是1527的時候, 就已經可以判斷小牛使用的是固定碼了。是的,我們可以對其進行重放攻擊。不過有時我們手中沒有HackRF。 這里筆者跟大家推薦RPITX, 這是運行在樹莓派上通過GPIO口進行RF傳輸的軟件。 通過這個軟件可使樹莓派瞬間變成無線電臺。 以下便是星輿研究員小海, 在樹莓派上通過RPITX解鎖小牛電動車的演示視頻。(https://v.qq.com/x/page/c32750sl0g1.html)

0x05 總結
本文作為俠盜獵車系列的開篇, 相信讓大家對無線鑰匙信號分析有了初步了解。 但精彩的旅程才剛剛開始, 接下來我們會分享更多無線信號分析技巧, 以及對信號指令進行爆破攻擊等測試。敬請期待。

0x06 參考文獻
https://github.com/F5OEO/rpitx
https://github.com/merbanan/rtl_433
https://greatscottgadgets.com/sdr/8/
本文由 Seebug Paper 發布,如需轉載請注明來源。本文地址:http://www.bjnorthway.com/1735/
暫無評論