狗汪汪玩轉嵌入式——I2C 協議分析
雷鋒網按:嵌入式產品Hacking 一直都是備受關注的議題,而越來越多的攻擊者也瞄上了物聯網嵌入式設備。跟以往純軟體安全研究不同的是,這類研究往往需要結合相應的硬體知識和設備。如何能快速入門嵌入式系統?雷鋒網邀請了狗汪汪,分享針對I2C協議的實戰案例和相應的工具使用。希望可以一起來Hacking all the Things。
本文由阿里雲先知社區小冰推薦。
0x01 I2C協議基礎
凡是接觸過嵌入式系統的朋友,對I2C協議一定不會陌生。其與UART,SPI和JTAG等並列為最常見調試協議。I2C 全稱為Inter-Integrated Circuit,是由飛利浦公司設計的一種多主從架構的串口通訊協議。
I2C協議非常簡單,僅有Clock 和 Data 兩條數據匯流排,外加 Ground. 通常是1個主設備和多個從設備的架構。在通訊速度上分別為100khz,400khz,1Mhz,3.2Mhz。在運用方面對速度沒有高要求的,都可以使用I2C進行通訊。比如PC風扇的溫度和電池的電壓數據採集等,每個I2C設備都各有一個讀和寫地址,只有知道了這個讀寫地址才能跟其通訊。
除此之外許多用來存儲系統配置和參數的EEPROM晶元自身也支持I2C協議,比如IBM Thinkpad 系列用來存儲BIOS 密碼的EEPROM,就是通過I2C協議在MCU與EEPROM 之間進行交互。
0x02 神器BusPirate
工欲善其事必先利其器,擁有一款神器對嵌入式設備Hacking將起到事半功倍的作用。BusPirate 是由Dangerous prototypes 設計出品的一款硬體hacking 瑞士軍刀,支持多項常見協議並可跨平台Windows/Linux/MAC,並擁有豐富的幫助文檔。
BusPirate可以Sniffing 和讀寫 I2C等協議,同時還可對AVR 等晶元進行編程操作,在操作上也是非常簡單,只需用minicom 以115200 波特率跟BusPirate連接便可。
BusPirate支持協議如下:
BusPirate 介面連接示意圖:
BusPirate 命令列表:
0x03 攻擊案例 -- 數字密碼鎖
接下來我們來看一個通過分析I2C 協議,從而破解門鎖密碼的實戰案例,我們的目標是這款 型號為YL99 的數字密碼鎖。這款密碼鎖完全依賴於用戶設置的數字密碼,也許對某些人來說不需要帶一堆鑰匙的確方便了很多。
因為YL99 是完全電子化的的門鎖,所以提供了普通機械鎖沒有的功能。比如YL99 擁有多 個功能不同的賬戶,Master 賬戶:可用於設置管理用戶密碼(默認0123#)。普通賬戶:用於存儲普通用戶密碼。YL99 同時還提供了貼心的防密碼泄漏功能,操作方法:鍵入起始碼(0) + 跟隨用於掩蓋的任意幾位數字+ 跟隨正確密碼 + # (確認結束). 通過這樣的方式就算邊上有人,也不怕被看到正確密碼了。
但是千里之堤,潰於蟻穴。YL99 的設計缺陷,竟能讓人從外部將鎖的鍵盤部分分離,從而訪問到內部PCB 主板。而玩過硬體Hacking 的朋友都知道,被人輕易訪問到內部PCB 主板部分是大忌。
在YL99被打開後主板結構便展現眼前。除了YL99 使用的元器件外,我們還可以清晰看到主板上還標有一個Reset 複位觸點。那麼這個時候我們便可以通過短接複位觸點和Ground 的方式將密碼恢復到出廠設置,從而得到bypass 的目的。但這方法的短處也非常明顯,在bypass 的時候每次都需要卸螺絲,而且如果恢復到出廠值,很容易就被人發現了。
演示視頻如下: https://www.youtube.com/watch?v=4sqDXkUQbqM
不過好戲才剛開始。我們在主板上還發現了YL99使用的MCU em78p156e 和用來存儲密碼信息的EEPROM 24C02。通過閱讀24C02 的datasheet 我們得知其使用I2C 協議和MCU 通訊,同時datasheet 也清晰的標出了晶元管腳的用途,比如I2C 使用的SCL(時鐘頻率) 和SDA(數據匯流排)。
終於我們的神器BusPirate要派上用場了。我們首先用數據線將24C02的I2C 管腳和BusPirate的對應介面連接起來。
隨後通過minicom 或其他serial tools 進入Buspirate的I2C調試模式。
在I2C 的調試模式中,有個非常有用的功能I2C sniffer。通過它我們可以監控I2C 的數據,用過WIRESHARK 的朋友一定不會陌生。
開啟了I2C Sniffer 模式後,我們便可開始觀察MCU 和 EEPROM之間的密碼交互。比如YL99 的密碼輸入過程為起始碼(0) + 正確密碼 + 結束確認(#)。
通過觀察發現在按下結束確認(#) 後,MCU 便向24C02 發送密碼驗證請求。但隨後致命的設計錯誤出現,EPPROM 24C02 將正確的密碼以明文的方式發回給MCU 以求完成密碼驗證過程,而這過程我們通過BusPirate 的I2C sniffer一覽無遺。
如圖:因為使用的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協議您了解多少?