做者:獨抒@伏宸安全實驗室linux
當咱們在分析IOT設備,如智能攝像頭、智能門鎖、智能路由器等等產品時,採用傳統的安全檢測手段,如對APP的逆向、雲端服務器的滲透測試、產品通訊的抓包等方式能夠得到部分的信息,但若是須要深刻分析智能設備底層的工做原理,從中發現更深層次的安全問題,就不可避免的須要直接接觸硬件自己,這也是傳統安全手段未能觸及的部分,據此,下面簡單的談下關於電路分析和芯片固件提取和調試的一點心得。編程
在對電路進行分析以前,須要對PCB電路圖和電子元器件知識有簡單的瞭解。c#
PCB( Printed Circuit Board),中文名稱爲印製電路板,又稱印刷線路板,是重要的電子部件,是電子元器件的支撐體,是電子元器件電氣鏈接的載體。因爲它是採用電子印刷術製做的,故被稱爲「印刷」電路板。安全
電子元件有着不一樣的封裝類型,不一樣類的元件外形同樣,但內部結構及用途是大不同的,好比TO220封裝的元件多是三極管、可控硅、場效應管、或雙二極管。TO-3封裝的元件有三極管,集成電路等。二極管也有幾種封裝,玻璃封裝、塑料封裝及螺栓封裝,二極管品種有穩壓二極管、整流二極管、隧道二極管、快恢復二極管、微波二極管、肖特基二極管等,這些二極管都用一種或幾種封裝。貼片元件因爲元件微小有的乾脆不印字經常使用尺寸大多也就幾種,因此沒有經驗的人很難區分,但貼片二極管及有極性貼片電容與其它貼片則很容易區分,有極性貼片元件有一個共同的特色,就是極性標誌。對於元件識別能夠看印字型號來區別,對於元件上沒有字符的器件也可分析電路原理或用萬用表測量元件參數進行判斷。判斷元件類型並不是一朝一夕就能學會的,這須要多年積累的經驗來認識。服務器
在對PCB和電子元器件有必定認知後,就能夠開始分析其工做原理和芯片了,常見的IOT產品,通常採用嵌入式linux系統開發,對芯片分析主要目的之一就是獲取到硬件系統的固件,從固件中分析可能存在的安全風險。網絡
固件通常存儲在ROM中,ROM是隻讀存儲器(Read-Only Memory)的簡稱,是一種只能讀出事先所存數據的固態半導體存儲器。其特性是一旦儲存資料就沒法再將之改變或刪除。一般用在不需常常變動資料的電子或電腦系統中,而且資料不會由於電源關閉而消失。異步
常見的存儲芯片按照存儲讀取方式和製做工藝不一樣,能夠分爲: ROM、PROM、EPROM、EEPROM、FLASH-ROM。工具
在大部分IOT產品中多采用flash芯片做爲存儲器,提取固件主要也是經過讀取flash芯片。post
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,因此在市場的佔用率很是高。
咱們一般見到的S25FL12八、MX25L160五、W25Q64等型號都是SPI NorFlash,其常見的封裝多爲SOP8,SOP16,WSON8,US0N8,QFN八、BGA24等。
通常PCB上有多塊邏輯處理IC,在多個IC芯片中,能夠經過分析電路原理和查找芯片印字來肯定具體的存儲芯片。
芯片上的絲印大多數狀況會註明廠商和芯片型號,經過印字能夠初步肯定芯片類型,同時絲印層的文字也能夠幫助咱們來肯定存儲的格式和大小,常見的W25芯片的印字含義以下:
讀取Flash芯片,須要藉助編程器,編程器又稱燒錄器、寫入器、寫碼器,是專門用來對IC芯片進行讀寫、編程/燒錄的儀器。
並口多功能BIOS編程器,它能夠對EPROM(27系列芯片)、EEPROM(28系列芯片)、FLASH ROM(2九、3九、49系列芯片)及單片機、串行芯片等進行讀寫、編程,是一種性價比較高的編程器。
編程器種類多樣,從功能簡單的專用型到功能全面的全功能通用型都有,價格從幾十元到上萬元不等。
串口通訊指串口按位(bit)發送和接收字節。儘管比按字節(byte)的並行通訊慢,可是串口能夠在使用一根線發送數據的同時用另外一根線接收數據。在串口通訊中,經常使用的協議包括RS-23二、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只用一對平衡差分信號線,不能同時發送和接收,最少只需兩根連線。
通用異步收發傳輸器(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/