物聯網硬件安全分析基礎-硬件分析初探
物聯網硬件安全分析基礎-硬件分析初探
作者:獨抒@伏宸安全實驗室
前言
當我們在分析IOT設備,如智能攝像頭、智能門鎖、智能路由器等等產品時,采用傳統的安全檢測手段,如對APP的逆向、雲端服務器的滲透測試、產品通信的抓包等方式可以獲得部分的信息,但如果需要深入分析智能設備底層的工作原理,從中發現更深層次的安全問題,就不可避免的需要直接接觸硬件本身,這也是傳統安全手段未能觸及的部分,據此,下面簡單的談下關於電路分析和芯片固件提取和調試的一點心得。
電路識別
在對電路進行分析之前,需要對PCB電路圖和電子元器件知識有簡單的了解。
PCB( Printed Circuit Board),中文名稱為印制電路板,又稱印刷線路板,是重要的電子部件,是電子元器件的支撐體,是電子元器件電氣連接的載體。由於它是采用電子印刷術制作的,故被稱為“印刷”電路板。
電子元器件
電子元件有著不同的封裝類型,不同類的元件外形一樣,但內部結構及用途是大不一樣的,比如TO220封裝的元件可能是三極管、可控矽、場效應管、或雙二極管。TO-3封裝的元件有三極管,集成電路等。二極管也有幾種封裝,玻璃封裝、塑料封裝及螺栓封裝,二極管品種有穩壓二極管、整流二極管、隧道二極管、快恢復二極管、微波二極管、肖特基二極管等,這些二極管都用一種或幾種封裝。貼片元件由於元件微小有的幹脆不印字常用尺寸大多也就幾種,所以沒有經驗的人很難區分,但貼片二極管及有極性貼片電容與其它貼片則很容易區分,有極性貼片元件有一個共同的特點,就是極性標誌。對於元件識別可以看印字型號來區別,對於元件上沒有字符的器件也可分析電路原理或用萬用表測量元件參數進行判斷。判斷元件類型並非一朝一夕就能學會的,這需要多年積累的經驗來認識。
ROM芯片
在對PCB和電子元器件有一定認知後,就可以開始分析其工作原理和芯片了,常見的IOT產品,一般采用嵌入式linux系統開發,對芯片分析主要目的之一就是獲取到硬件系統的固件,從固件中分析可能存在的安全風險。
固件一般存儲在ROM中,ROM是只讀存儲器(Read-Only Memory)的簡稱,是一種只能讀出事先所存數據的固態半導體存儲器。其特性是一旦儲存資料就無法再將之改變或刪除。通常用在不需經常變更資料的電子或電腦系統中,並且資料不會因為電源關閉而消失。
常見的存儲芯片按照存儲讀取方式和制作工藝不同,可以分為: ROM、PROM、EPROM、EEPROM、FLASH-ROM。
在大部分IOT產品中多采用flash芯片作為存儲器,提取固件主要也是通過讀取flash芯片。
Flash芯片
FLASH ROM屬於真正的單電壓芯片,在使用上很類似EEPROM,因此,有些書籍上便把FLASH ROM作為EEPROM的一種。事實上,二者還是有差別的。FLASH ROM在擦除時,也要執行專用的刷新程序,但是在刪除資料時,並非以Byte為基本單位,而是以Sector(又稱Block)為最小單位,Sector 的大小隨廠商的不同而有所不同;只有在寫入時,才以Byte為最小單位寫入;FLASH ROM芯片的讀和寫操作都是在單電壓下進行,不需跳線,只利用專用程序即可方便地修改其內容;FLASH ROM的存儲容量普遍大於EEPROM,約為512K到至8M KBit,由於大批量生產,價格也比較合適,很適合用來存放程序碼,近年來已逐漸取代了EEPROM,廣泛用於主板的BIOS ROM,也是CIH攻擊的主要目標。
根據技術方式不同可分為: IIC EEPROM、SPI NorFlash 、CFI Flash、Parallel NandFlash、SPI NandFlash、eMMC Flash、USF2.0等。
其中SPI NorFlash因為接口簡單,使用的引腳少,易於連接,操作方便,並且可以在芯片上直接運行代碼,其穩定性出色,傳輸速率高,在小容量時具有很高的性價比,這使其很適合應於嵌入式系統中作為 FLASH ROM,所以在市場的占用率非常高。
我們通常見到的S25FL128、MX25L1605、W25Q64等型號都是SPI NorFlash,其常見的封裝多為SOP8,SOP16,WSON8,US0N8,QFN8、BGA24等。
芯片印字
一般PCB上有多塊邏輯處理IC,在多個IC芯片中,可以通過分析電路原理和查找芯片印字來確定具體的存儲芯片。
芯片上的絲印大多數情況會註明廠商和芯片型號,通過印字可以初步確定芯片類型,同時絲印層的文字也可以幫助我們來確定存儲的格式和大小,常見的W25芯片的印字含義如下:
編程器
讀取Flash芯片,需要借助編程器,編程器又稱燒錄器、寫入器、寫碼器,是專門用來對IC芯片進行讀寫、編程/燒錄的儀器。
並口多功能BIOS編程器,它可以對EPROM(27系列芯片)、EEPROM(28系列芯片)、FLASH ROM(29、39、49系列芯片)及單片機、串行芯片等進行讀寫、編程,是一種性價比較高的編程器。
編程器種類多樣,從功能簡單的專用型到功能全面的全功能通用型都有,價格從幾十元到上萬元不等。
串口通信
串口通信指串口按位(bit)發送和接收字節。盡管比按字節(byte)的並行通信慢,但是串口可以在使用一根線發送數據的同時用另一根線接收數據。在串口通信中,常用的協議包括RS-232、RS-422和RS-485。
RS-232通信方式允許簡單連接三線:Tx、Rx和地線。但是對於數據傳輸,雙方必須對數據定時采用使用相同的波特率。
RS-422標準全稱是“平衡電壓數字接口電路的電氣特性”,在RS232後推出,使用TTL差動電平表示邏輯,就是兩根的電壓差表示邏輯,RS422定義為全雙工的,所以最少要4根通信線(一般額外地多一根地線)。
RS485是一個定義平衡數字多點系統中的驅動器和接收器的電氣特性的標準,RS-485與RS-422的區別在於RS-485為半雙工通信方式,RS-422為全雙工方式。RS-422用兩對平衡差分信號線分別用於發送和接收,所以采用RS-422接口通信時最少需要4根線。RS-485只用一對平衡差分信號線,不能同時發送和接收,最少只需兩根連線。
UART調試
通用異步收發傳輸器(Universal Asynchronous Receiver/Transmitter),通常稱作UART,是一種異步收發傳輸器,是電腦硬件的一部分。它將要傳輸的資料在串行通信與並行通信之間加以轉換。作為把並行輸入信號轉成串行輸出信號的芯片,UART通常被集成於其他通訊接口的連結上。
對於物聯網硬件的串口調試,多數情況下指的就是通過UART串口進行數據通訊, 但是我們經常搞不清楚它和COM口的區別, 以及RS232, TTL等關系, 實際上UART、COM指的物理接口形式(硬件), 而TTL、RS-232是指的電平標準(電信號).
UART有4個pin(VCC, GND, RX, TX), 用的TTL電平, 低電平為0(0V)、高電平為1(3.3V或以上),Uart串口的RXD、TXD等一般直接與處理器芯片的引腳相連,而RS232串口的RXD、TXD等一般需要經過電平轉換(通常由Max232等芯片進行電平轉換)才能接到處理器芯片的引腳上,否則這麽高的電壓很可能會把芯片燒壞。
在調試的時候, 多數情況下我們只引出rx、tx、gnd即可,但是UART的數據要傳到電腦上分析就要匹配電腦的接口,通常我們電腦使用接口有COM口和USB口(最終在電腦上是一個虛擬的COM口),但是要想連上這兩種接口都要需要進行硬件接口轉換和電平轉換。
設備拆解
對於一臺未接觸過的機器,拆解首先需要觀察其外部結構,是否存在暴露的螺絲孔,如果沒有,一般可能隱藏在貼紙或橡膠墊下面,可以用手感受是否存在空洞,部分機器采用卡榫結構,只要找對方向,用一字螺絲刀或撬片,從縫隙中就可以撬開,拆解設備唯一的要訣就是膽大心細。部分常用工具如下:
維修組合套裝,用來拆裝各類螺絲,PCB夾用來拔出排線,手電筒用來觀察芯片印字和PCB走線,PCB測試夾用來夾住某些難以焊接的焊點,排線用來連接各類電子設備,熱風槍和焊槍用來拆焊和錫焊。
常見物聯網智能設備
共享充電寶,采用gprs模塊配合物聯卡與雲端通信
藍牙掛鎖,通過藍牙芯片與手機配對通信,藍牙控制電機驅動,使卡鎖運轉
共享充電寶,采用GSM模塊加藍牙模塊控制通信
智能鎖,WIFI芯片加藍牙芯片配合控制,外接指紋識別傳感器
智能攝像頭,采用WIFI芯片通信,外接音頻、視頻處理模塊
網絡攝像機,采用網卡芯片,配合多口輸出輸入視頻信號模塊
智能路由器,高容量內存搭配智能OS
智能家居控制終端,高性能WIFI收發中繼控制
智能保險櫃,采用WIFI芯片控制加指紋識別傳感器
無線終端,采用4G模塊和WIFI芯片,做便攜式WIFI終端
讀取芯片
為了讀取Flash芯片的內容,有以下三個基本途徑:
(1)直接將導線連接到芯片的引腳,在通過導線連接編程器讀取固件;
(2)把芯片拆下來,在連接編程器讀取固件。
(3)連接TXD、RXD調試PIN,通過UART串口轉接讀取固件。
根據Flash芯片的封裝方式和電路設計不同,需要靈活采用不同的方式。
參考文獻
中國通信協會相關文獻 http://www.china-cic.cn/
美國電子工業協會相關標準 https://www.eia.gov/
物聯網硬件安全分析基礎-硬件分析初探