當前位置:
首頁 > 新聞 > 狗汪汪玩轉嵌入式——I2C 協議分析

狗汪汪玩轉嵌入式——I2C 協議分析

雷鋒網按:嵌入式產品Hacking 一直都是備受關注的議題,而越來越多的攻擊者也瞄上了物聯網嵌入式設備。跟以往純軟體安全研究不同的是,這類研究往往需要結合相應的硬體知識和設備。如何能快速入門嵌入式系統?雷鋒網邀請了狗汪汪,分享針對I2C協議的實戰案例和相應的工具使用。希望可以一起來Hacking all the Things。

本文由阿里雲先知社區小冰推薦。

狗汪汪玩轉嵌入式——I2C 協議分析

0x01 I2C協議基礎

凡是接觸過嵌入式系統的朋友,對I2C協議一定不會陌生。其與UART,SPI和JTAG等並列為最常見調試協議。I2C 全稱為Inter-Integrated Circuit,是由飛利浦公司設計的一種多主從架構的串口通訊協議。

狗汪汪玩轉嵌入式——I2C 協議分析

I2C協議非常簡單,僅有Clock 和 Data 兩條數據匯流排,外加 Ground. 通常是1個主設備和多個從設備的架構。在通訊速度上分別為100khz,400khz,1Mhz,3.2Mhz。在運用方面對速度沒有高要求的,都可以使用I2C進行通訊。比如PC風扇的溫度和電池的電壓數據採集等,每個I2C設備都各有一個讀和寫地址,只有知道了這個讀寫地址才能跟其通訊。

除此之外許多用來存儲系統配置和參數的EEPROM晶元自身也支持I2C協議,比如IBM Thinkpad 系列用來存儲BIOS 密碼的EEPROM,就是通過I2C協議在MCU與EEPROM 之間進行交互。

狗汪汪玩轉嵌入式——I2C 協議分析

狗汪汪玩轉嵌入式——I2C 協議分析

0x02 神器BusPirate

工欲善其事必先利其器,擁有一款神器對嵌入式設備Hacking將起到事半功倍的作用。BusPirate 是由Dangerous prototypes 設計出品的一款硬體hacking 瑞士軍刀,支持多項常見協議並可跨平台Windows/Linux/MAC,並擁有豐富的幫助文檔。

BusPirate可以Sniffing 和讀寫 I2C等協議,同時還可對AVR 等晶元進行編程操作,在操作上也是非常簡單,只需用minicom 以115200 波特率跟BusPirate連接便可。

狗汪汪玩轉嵌入式——I2C 協議分析

BusPirate支持協議如下:

狗汪汪玩轉嵌入式——I2C 協議分析

BusPirate 介面連接示意圖:

狗汪汪玩轉嵌入式——I2C 協議分析

BusPirate 命令列表:

狗汪汪玩轉嵌入式——I2C 協議分析

0x03 攻擊案例 -- 數字密碼鎖

接下來我們來看一個通過分析I2C 協議,從而破解門鎖密碼的實戰案例,我們的目標是這款 型號為YL99 的數字密碼鎖。這款密碼鎖完全依賴於用戶設置的數字密碼,也許對某些人來說不需要帶一堆鑰匙的確方便了很多。

因為YL99 是完全電子化的的門鎖,所以提供了普通機械鎖沒有的功能。比如YL99 擁有多 個功能不同的賬戶,Master 賬戶:可用於設置管理用戶密碼(默認0123#)。普通賬戶:用於存儲普通用戶密碼。YL99 同時還提供了貼心的防密碼泄漏功能,操作方法:鍵入起始碼(0) + 跟隨用於掩蓋的任意幾位數字+ 跟隨正確密碼 + # (確認結束). 通過這樣的方式就算邊上有人,也不怕被看到正確密碼了。

狗汪汪玩轉嵌入式——I2C 協議分析

但是千里之堤,潰於蟻穴。YL99 的設計缺陷,竟能讓人從外部將鎖的鍵盤部分分離,從而訪問到內部PCB 主板。而玩過硬體Hacking 的朋友都知道,被人輕易訪問到內部PCB 主板部分是大忌。

狗汪汪玩轉嵌入式——I2C 協議分析

在YL99被打開後主板結構便展現眼前。除了YL99 使用的元器件外,我們還可以清晰看到主板上還標有一個Reset 複位觸點。那麼這個時候我們便可以通過短接複位觸點和Ground 的方式將密碼恢復到出廠設置,從而得到bypass 的目的。但這方法的短處也非常明顯,在bypass 的時候每次都需要卸螺絲,而且如果恢復到出廠值,很容易就被人發現了。

狗汪汪玩轉嵌入式——I2C 協議分析

演示視頻如下: https://www.youtube.com/watch?v=4sqDXkUQbqM

不過好戲才剛開始。我們在主板上還發現了YL99使用的MCU em78p156e 和用來存儲密碼信息的EEPROM 24C02。通過閱讀24C02 的datasheet 我們得知其使用I2C 協議和MCU 通訊,同時datasheet 也清晰的標出了晶元管腳的用途,比如I2C 使用的SCL(時鐘頻率) 和SDA(數據匯流排)。

狗汪汪玩轉嵌入式——I2C 協議分析

狗汪汪玩轉嵌入式——I2C 協議分析

終於我們的神器BusPirate要派上用場了。我們首先用數據線將24C02的I2C 管腳和BusPirate的對應介面連接起來。

狗汪汪玩轉嵌入式——I2C 協議分析

狗汪汪玩轉嵌入式——I2C 協議分析

隨後通過minicom 或其他serial tools 進入Buspirate的I2C調試模式。

狗汪汪玩轉嵌入式——I2C 協議分析

在I2C 的調試模式中,有個非常有用的功能I2C sniffer。通過它我們可以監控I2C 的數據,用過WIRESHARK 的朋友一定不會陌生。

狗汪汪玩轉嵌入式——I2C 協議分析

開啟了I2C Sniffer 模式後,我們便可開始觀察MCU 和 EEPROM之間的密碼交互。比如YL99 的密碼輸入過程為起始碼(0) + 正確密碼 + 結束確認(#)。

通過觀察發現在按下結束確認(#) 後,MCU 便向24C02 發送密碼驗證請求。但隨後致命的設計錯誤出現,EPPROM 24C02 將正確的密碼以明文的方式發回給MCU 以求完成密碼驗證過程,而這過程我們通過BusPirate 的I2C sniffer一覽無遺。

狗汪汪玩轉嵌入式——I2C 協議分析

如圖:因為使用的little endian 所以密碼 123 和456 會反著顯示

0X04 總結

通過本文的介紹和實踐案例,相信大家對I2C 協議和利用方式有了一定的了解。劍走偏鋒,反其道行之。攻擊者往往將系統的短板作為攻擊點,倘若某款嵌入式系統的設計者僅僅考慮到軟體層面的安全,而攻擊者又能得到物理訪問的話,那些防禦方式便形同虛設。同時嵌入式產品往往面臨上市後便難以升級的困難,一旦攻擊方式曝光由此給產品帶來的損失是巨大的,因此安全產品在設計之初即應將安全考慮進去。

0x05 參考文獻


https://learn.sparkfun.com/tutorials/i2c

http://dangerousprototypes.com/docs/Bus_Pirate

https://code.google.com/archive/p/the-bus-pirate/

http://dangerousprototypes.com/blog/bus-pirate-manual/i2c-guide/

http://arduino.ada-language.com/recovering-ibm-thinkpad-t42-bios-password-with-avr-ada-and-arduino.html

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 雷鋒網 的精彩文章:

《戰狼2》高清鏈接能清空你的銀行卡?騙子為了KPI也來蹭熱點了!
Neurable 讓你用意念玩 VR 遊戲 | SIGGRAPH 2017
關於iPhone 8與中國,蘋果財報透露了什麼?

TAG:雷鋒網 |

您可能感興趣

SIP協議分析
深入理解 RPC 消息協議設計
TCP/IP協議棧之乙太網協議
基於IPMI協議的DDoS反射攻擊分析
解析樓控協議BACnet/IP
TCP/IP協議體系結構
從一道流量分析題了解SSL與FTP協議
競品比對 交易所聯盟XUC VS 路印協議LRC誰更強
區塊鏈安全公司CertiK正式加入通用協議聯盟
WiFi聯盟正式開啟WPA3安全協議認證
Gems區塊鏈分散式眾包協議
TCP/IP 協議:經常接觸的協議介紹
NVME協議與AHCI協議M.2固態的最後一戰
中移動回應投資小米IPO:已簽署基石投資協議
深度 IPFS協議與FILECOIN
AI換臉APP ZAO因用戶協議中隱私問題引發爭議
區塊鏈社交APP協議分析:BeeChat
WSN中LEACH協議的改進與研究
基於FPGA的TCP/IP硬體協議棧研究與設計
關於iSCSI協議您了解多少?