




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、智能設備 安全分析手冊目錄 HYPERLINK l _bookmark0 前言1 HYPERLINK l _bookmark1 智能設備基礎3 HYPERLINK l _bookmark2 概述4 HYPERLINK l _bookmark3 智能設備終端安全5 HYPERLINK l _bookmark3 硬件5 HYPERLINK l _bookmark3 固件5 HYPERLINK l _bookmark4 攻擊面6 HYPERLINK l _bookmark5 移動終端APP 安全7 HYPERLINK l _bookmark5 云服務端安全7 HYPERLINK l _bookmar
2、k6 網絡通信協議安全8 HYPERLINK l _bookmark7 硬件安全9 HYPERLINK l _bookmark8 PCB 信息收集10 HYPERLINK l _bookmark8 PCB 絲印10 HYPERLINK l _bookmark8 芯片信息10 HYPERLINK l _bookmark9 PCB 加固建議11 HYPERLINK l _bookmark10 側信道攻擊12 HYPERLINK l _bookmark10 基本原理12 HYPERLINK l _bookmark10 加固建議12 HYPERLINK l _bookmark10 中間人攻擊12 HY
3、PERLINK l _bookmark10 基本原理12 HYPERLINK l _bookmark10 加固建議12 HYPERLINK l _bookmark11 固件安全13 HYPERLINK l _bookmark12 固件存儲位置14 HYPERLINK l _bookmark12 集成式固件存儲14 HYPERLINK l _bookmark14 分離式固件存儲16 HYPERLINK l _bookmark14 固件獲取方法16 HYPERLINK l _bookmark14 網絡升級截獲(FTP、HTTP)16 HYPERLINK l _bookmark15 直接讀存儲芯片1
4、7 HYPERLINK l _bookmark16 通過串口等通信總線讀取18 HYPERLINK l _bookmark17 通過調試接口讀取19 HYPERLINK l _bookmark18 固件解包20 HYPERLINK l _bookmark19 固件加固建議21B HYPERLINK l _bookmark19 通信傳輸加密與認證21 HYPERLINK l _bookmark19 隱藏接口21 HYPERLINK l _bookmark19 設置主控芯片讀保護21 HYPERLINK l _bookmark19 固件加密與認證21 HYPERLINK l _bookmark20
5、 調試技術23 HYPERLINK l _bookmark21 分析環(huán)境24 HYPERLINK l _bookmark21 QEMU24 HYPERLINK l _bookmark22 交叉編譯環(huán)境26 HYPERLINK l _bookmark23 模擬運行28 HYPERLINK l _bookmark23 單文件模擬運行28 HYPERLINK l _bookmark24 全系統(tǒng)模擬運行29 HYPERLINK l _bookmark25 設備調試30 HYPERLINK l _bookmark25 調試接口30 HYPERLINK l _bookmark26 串口識別31 HYPER
6、LINK l _bookmark27 USB-TTL32 HYPERLINK l _bookmark28 Xshell 連接33 HYPERLINK l _bookmark29 GDB 遠程調試34 HYPERLINK l _bookmark30 通訊協議36 HYPERLINK l _bookmark31 載波分析37 HYPERLINK l _bookmark31 SDR37 HYPERLINK l _bookmark31 調制技術37 HYPERLINK l _bookmark31 術語說明37 HYPERLINK l _bookmark31 SDR 的簡單使用37 HYPERLINK
7、l _bookmark32 無線協議40 HYPERLINK l _bookmark32 ZigBee40 HYPERLINK l _bookmark33 5.2.2 藍牙42 HYPERLINK l _bookmark35 終端軟件 APP 安全62 HYPERLINK l _bookmark36 Android63 HYPERLINK l _bookmark37 Dex 格式解析64 HYPERLINK l _bookmark38 Jadx65 HYPERLINK l _bookmark39 自動化分析66 HYPERLINK l _bookmark40 存儲數據分析67 HYPERLIN
8、K l _bookmark40 Android 虛擬機調試67 HYPERLINK l _bookmark41 Xposed Hook70C HYPERLINK l _bookmark41 Cydia Substrate Hook70 HYPERLINK l _bookmark42 IOS71 HYPERLINK l _bookmark42 IOS 應用程序解密71 HYPERLINK l _bookmark43 自動化分析73 HYPERLINK l _bookmark44 存儲數據分析74 HYPERLINK l _bookmark45 WEB 安全76 HYPERLINK l _book
9、mark46 命令注入77 HYPERLINK l _bookmark46 命令注入案例一77 HYPERLINK l _bookmark47 命令注入案例二78 HYPERLINK l _bookmark48 未授權訪問79 HYPERLINK l _bookmark48 未授權訪問 - 修改用戶名密碼驗證功能79 HYPERLINK l _bookmark49 未授權訪問 - 開啟遠程服務80 HYPERLINK l _bookmark49 未授權訪問 - 重啟設備80 HYPERLINK l _bookmark50 未授權訪問 - 獲取設備用戶信息81 HYPERLINK l _book
10、mark51 XSS82 HYPERLINK l _bookmark52 服務安全83 HYPERLINK l _bookmark53 口令破解84 HYPERLINK l _bookmark53 在線破解84 HYPERLINK l _bookmark54 離線破解85 HYPERLINK l _bookmark55 二進制漏洞86 HYPERLINK l _bookmark56 常規(guī)方法87 HYPERLINK l _bookmark57 緩沖區(qū)溢出示例88 HYPERLINK l _bookmark58 業(yè)務邏輯安全90 HYPERLINK l _bookmark59 測試賬號 ( 后門
11、賬號 )91 HYPERLINK l _bookmark60 任意密碼重置92 HYPERLINK l _bookmark61 參考文獻93前言近年來,曾經只能在電影中看到的場景逐漸在我們生活中發(fā)生。清晨起床時間,窗簾緩緩打開,臥室自動播放起床音樂,同時夜間安防系統(tǒng)自動撤防。出門前,只要開啟離家模式,空調、窗簾、音樂以及燈光照明等都將自動關閉,智能門鎖、智能門鈴等安防系統(tǒng)自動開啟?;丶仪?,只要在智能APP 上開啟“回家模式”,空調、熱水器等電器設備便可提前運行?;氐郊?,指紋開鎖的瞬間,安防系統(tǒng)便自動撤。這場景中描述的生活離不開智能設備,不過在體驗新鮮和便利的同時,這些智能設備是否真正安全可靠,
12、還需要打個問號。智能門鎖是否會為別人打開、智能家電是否會聽從他人命令這些問題都有待考證。基于對智能設備安全性的探究,本手冊著眼于智能設備的分析方法,旨在為智能設備安全研究人員、開發(fā)人員提供參考。本手冊總體可分為兩大板塊共九個章節(jié)。第一個板塊包括第一章節(jié),總體介紹了為什么智能設備的安全需要引起我們的注意并投入精力去研究,以及以智能設備系統(tǒng)架構為導向的研究方法。第二個板塊包括第二章到第九章,全面介紹了智能設備的安全分析過程、破解案例以及安全建議。第二章,主要介紹硬件安全分析,包括 PCB 安全隱患和加固建議、側信道攻擊和中間人攻擊的基本原理及加固方案。第三章,固件安全部分,提供固件獲取的幾種思路及
13、相應加固辦法,固件解包工具介紹演示。第四章,從分析環(huán)境、模擬運行、設備調試三方面介紹智能設備的調試技術。第五章,關注通訊協議,包括載波分析、兩種無線協議 ZigBee 和藍牙的測試方法。第六章,移動終端APP 安全分析,分別介紹在Android 和 IOS 平臺上的分析技術。第七章,本章節(jié)通過命令注入、未授權訪問、XSS 的案例提供一些智能設備中 WEB 安全測試的思路。第八章,包括口令破解的方法,二進制漏洞靜態(tài)分析、模糊測試的簡單介紹。第九章,介紹業(yè)務邏輯中可能出現的兩種漏洞。1分 能析設 備手安 全冊1. 智能設備基礎 HYPERLINK l _bookmark2 概述4 HYPERLIN
14、K l _bookmark3 智能設備終端安全5 HYPERLINK l _bookmark4 移動終端APP 安全7 HYPERLINK l _bookmark2 云服務端安全7 HYPERLINK l _bookmark3 網絡通信協議安全83概述隨著物聯網(Internet of things,IoT)的興起和發(fā)展,傳統(tǒng)設備正在逐步智能化,以傳感器、芯片為主體的各類聯網智能設備(以下簡稱“智能設備” 或“IoT 設備”)正融入進我們的日常生活中。智能設備的大規(guī)模普及一方面給人們的生活帶來了便利,但同時也給用戶個人資產安全和隱私保護帶來了極大地沖擊和挑戰(zhàn)。本來用于安防的攝像頭被控制后,搖身
15、一變成了泄露隱私的工具 1;路由器若被攻擊者盯上,輕則被蹭網, 重則泄露隱私信息,被成為僵尸網絡中的一員也不是不可能2。對智能門鎖也不能掉以輕心,被破解后攻擊者進出居民家就如入無人之境3。由此可見,智能設備引發(fā)的安全事件其影響范圍已不再局現于虛擬世界,它的陰影已經慢慢觸及到真實的物理世界,甚至可能直接威脅到人身安全。面對這些層出不窮的安全事故,如何保障智能設備安全成為當前信息安全領域亟待解決的重要問題之一。為了能夠全面探清問題原因,我們需要首先對智能設備系統(tǒng)架構有所了解。當前大部分智能設備采用的是“智能設備終端” “云服務端” “移動終端 APP”系統(tǒng)架構 4,個別情況可能缺少云端或者 APP
16、 端。云服務端移動終端APP智能設備終端移動終端 APP 通過藍牙、Wi-Fi、ZigBee 等方式管理智能設備,智能設備則通過網絡將需要保存的數據上傳到云服務端(包括:數據,配置等)。以智能攝像頭為例,首先需要在手機上下載 APP、注冊并登錄;接著用 APP 掃描設備底部的二維碼添加設備, 添加過程中,APP 中會提示給攝像頭配置網絡,如果采用Wi-Fi 方式連接,輸入Wi-Fi 密碼即可;攝像頭正常聯網后, 就可通過 APP 進行實時監(jiān)控;監(jiān)控錄像則可以選擇云存儲,即一定時間內的監(jiān)控錄像可上傳至廠商提供的云服務器進行保存。針對智能設備系統(tǒng)架構,攻擊者的切入點可能來自于其中的任何一個節(jié)點。因
17、此對智能設備的安全研究也要從其架構的每個節(jié)點進行展開。本章接下來首先會梳理智能設備終端、云服務端、移動終端 APP、網絡通信協議各自的安全問題。之后,會在其他章節(jié)介紹分析方法提出加固建議。4智能設備終端安全硬件智能設備的硬件組成主要分為以下幾部分:CPU(X86/ARM/MIPS/PPC 等)、內存(SDRAM/RAM)、存儲(Flash/TF 卡 /SD 卡 /MMC 卡 / 硬盤)、網口、串口,USB 口還有無線接口(Wi-Fi/ 藍牙 /ZigBee 等)。如果智能設備制造商在硬件保護上沒有考慮到安全性問題,就極有可能為破解設備提供便利條件。比如廠商為了方便后期調試或者升級,會為開發(fā)者預
18、留調試接口,有時是串口,有時是網口或者是 USB 口。這些接口若是被攻擊者發(fā)現并成功利用,提取固件、讀取芯片內容就變得輕而易舉。網絡 /USB 日志接口調試接口(一般為 TTL 串口;也有 telnet/SSH 網絡協議等)SD/TF 卡升級接口USB 升級接口調試接囗BootLoader 升級接口下載固件接口(硬件接口:JTAG/SWD 口;網終協議:TFTP/FTP;自定協議)升級接口智能設備的維護接口固件智能設備內運行的軟件系統(tǒng)也叫固件,固件中有對系統(tǒng)進行引導的部分,常用的是 Uboot,它的特點是支持多種 CPU,ARM、Linux、MIPS、PowerPC 都支持,同時還支持簡單的網
19、絡命令。操作系統(tǒng)則多使用 Linux。下面是智能設備軟硬件結構的簡化示意圖:5攻擊面OWASP,全稱 Open Web Application Security Project,它是一個旨在協助個人、企業(yè)和機構來發(fā)現和使用可信賴軟件的非營利性組織。該組織提供有關計算機和互聯網應用程序的公正、實際、有成本效益的信息。以下是結合 OWASP 組織提出的“IoT Attack Surface Areas”5,梳理出智能設備硬件、固件中可能存在的攻擊面。攻擊面風險點設備硬件(傳感器)物理篡改物理破壞設備物理接口調試接口暴露固件提取獲取用戶 CLI獲取 Admin CLI特權提升重置至不安全狀態(tài)移除存儲
20、介質設備 ID/ 序列號泄露設備固件敏感數后據門泄賬露號 硬加編密碼算ke密法y 碼 敏密感信息(對稱,非對稱)敏感 URL易受攻擊服務(Web,SSH,TFTP 等)固件降級設備內存敏感數明據文泄用漏戶名 明第文三密方碼憑證加密 key關于硬件、固件的分析方法及加固建議詳見第二章、第三章。另關于固件的提取方法,還可參考智能設備漏洞挖掘中的幾個突破點6,內容來自綠 盟科技格物實驗室安全研究員馬良在看雪 2018 安全峰會上演講的議題。6移動終端 APP 安全目前,大多智能設備都可通過移動終端APP( 后文中簡稱“APP”) 進行控制,用戶可以在APP 上進行注冊、登錄、設備綁定、設備控制等各項
21、操作。APP 就好比給智能設備發(fā)號施令的大腦,如果攻擊者將 APP 作為攻擊入口, 極有可能導致智能設備安全全面瓦解。在 2018 年 10 月舉辦的 GeekPwn 2018 國際安全極客大賽上,智能門鎖的破解 項目中,參賽選手以 APP 作為入口點,全面掃描智能門鎖中的軟件、硬件和通信協議,迅速創(chuàng)建漏洞利用方案,繞過門鎖的安全機制,在不接觸用戶手機不接入用戶家庭 Wi-Fi 的情況下打開了智能門鎖。由此可見,APP 的安全對整個智能設備系統(tǒng)來說至關重要。需要警惕的是, APP 上線后等著對它進行破解的不法分子不在少數。如果 APP 在發(fā)布前沒有進 行代碼混淆和加固,攻擊者利用一些常見的反編
22、譯工具,如dex2jar7、Jadx8、apktool9 等,很容易就能獲取到APP 的大部分源碼。此類代碼保護缺失問題可能會導致智能設備的業(yè)務協議泄露、數據傳輸加密算法破解、身份偽造等危害。結合一些攻擊案例,下面列舉出移動APP 可能存在的風險點 :登錄鑒權機制是否完善 ;通訊數據是否加密傳輸 ;敏感信息是否加密存儲 ;加密算法是否健壯等。云服務端安全云服務端面臨的風險和傳統(tǒng)網絡層相關,結合OWASP 提出的“IoT Attack Surface Areas”,主要安全風險包括:賬戶枚舉、脆弱的默認密碼、暴露在網絡流量中的憑據、跨站腳本攻擊 (XSS)、SQL 注入和長連接 Session
23、管理等。此外 , 不安全的網絡服務 ( 如緩沖區(qū)溢出、開放端口和拒絕服務攻擊等 )、缺乏安全配置能力 ( 如細粒度權限模型的缺乏、缺乏安全監(jiān)控和缺乏安全日志等 ) 也都是網絡層的重要風險點。7網絡通信協議安全在智能設備系統(tǒng)中,除了智能設備終端、移動終端APP、云服務端這三個重要節(jié)點外,三者之間的通訊安全 對整個系統(tǒng)來說也是也舉足輕重。為了確定通信是否安全需要關注通信過程是否存在強雙向認證、多因素認證、傳輸加密。APP 與云端一般通過 HTTP、HTTPS 通信,分析中應判斷通信流量是否加密,可否抓包劫持通信數據;設備與云端一般采用 MQTT、 XMPP、 CoAP 等協議通信,也會使用 HTT
24、P、 HTTPS 通信 , 部分廠家的設備會使用私有協議進行通訊,例如京東、小米、broadlink 等;APP 與設備之間通信一般利用短距離無線網絡進行通信,如 ZigBee、 Wi-Fi 以及藍牙等。目前已有不少針對 ZigBee、Wi-Fi 以及藍牙的攻擊實例,故在此做簡單了解。以下是三種技術的特性對比:藍牙Wi-FiZigBee使用頻段2.42.485GHz2.4GHz 和 5GHz主要 2.4 GHz價格適中貴低傳輸范圍2-30M100-300M10-100M功耗低高低傳輸速度1M/s54M/s250KB/s安全性高低高優(yōu)點功耗低且傳輸速率快建立連接的時間短穩(wěn)定性好安全度高傳輸范圍廣
25、傳輸速度快普及應用度高低功耗低成本短時延高安全可自組網缺點數據傳輸的大小受限設備連接數量少只允許單一連接功耗大易受外界干擾Z用ig仍be需e 技不術斷出的現完善較和晚,發(fā)規(guī)展范及應針對安全性較低的 Wi-Fi, 之前就曾有研究人員公開過其保護協議中存在的重大漏洞KRACK(密碼重置攻擊, Key Reinstallation AttaCKs),該漏洞是 Wi-Fi 的 WPA2/WPA 保護協議本身存在的缺陷。WPA2/WPA 是目前全球應用最廣的 Wi-Fi 數據保密協議,根據 WPA2/WPA 的原有設計,一個密鑰只能使用一次,但在研究過程中發(fā)現, 通過操縱重放加密握手消息(即:記錄設備與
26、 Wi-Fi 路由器間的通信數據,并重新發(fā)送出去)的動作,可以令已有密鑰被重復使用。由此,攻擊者就獲得了一個萬能密鑰,利用這個萬能密鑰,攻擊者可以攻破 WPA2 協議,竊聽 Wi-Fi 通信數據,破譯網絡流量、劫持鏈接或直接將惡意內容注入到流量中 10。藍牙協議主要應用于可穿戴設備,車聯網等 , 因此一旦出現安全問題出現,可能會造成更嚴重的后果。2015 年初小米發(fā)布基于 ZigBee 協議的智能家庭套裝,使得基于 ZigBee 協議通訊的智能家居產品進入人們的視野,經過某安全研究團隊的分析,發(fā)現其 風險主要存在于密鑰的保密性上,比如明文傳輸密鑰, 或者將密鑰明文寫入固件 , 這些都可能直接導
27、致傳輸的敏感信息被竊取或者智能設備被控制 11。8智分 能析設2. 硬件安全備手安 全冊 HYPERLINK l _bookmark8 PCB 信息收集10 HYPERLINK l _bookmark13 側信道攻擊12 HYPERLINK l _bookmark15 中間人攻擊12目前市面上大多數的智能設備在硬件保護上沒有考慮到安全性問題,導致攻擊者可以輕易通過各種手段獲取芯片的訪問權限,提取出芯片中的數據,本章將通過實例的方式介紹攻擊硬件的方式,并提出相應的保護建議。9PCB 信息收集PCB( Printed Circuit Board),中文名稱為印制電路板,又稱印刷線路板,是重要的電子
28、部件,是電子元器件的支撐體。硬件攻擊的第一步就是打開設備外殼,通過觀察 PCB 上的芯片以及暴露出來的接口收集各種信息,為后續(xù)攻擊做準備。PCB 絲印在設計和制作 PCB 的過程中,PCB 上的絲印為工程師的焊接、調試工作帶來了極大的便利。然而,在產品出廠后,它對用戶沒有任何幫助,反而會為攻擊者獲取信息提供便利。以下圖為例,PCB 板上已經很清楚標出RX,TX,GND 引腳的位置,所以我們可以很明顯的識別出UART(通用異步收發(fā)傳輸器)接口,通過UART 攻擊者可以嘗試獲取設備的訪問權限。UART 更多信息詳見第四章 4.3 節(jié)。芯片信息設備上的芯片型號往往可以從官方披露的信息中得到或者會直接
29、在芯片上標出(黃色方框標記),如下圖所示:10我們很容易發(fā)現規(guī)則排列的 6 個焊盤(紅色方框標記),結合芯片上的型號信息(JN516x),通過搜索引擎可以找到對應的芯片手冊,在手冊中可以查到該芯片的引腳圖和芯片的固件下載方式。通過使用萬用表,可以測試出這 6 個焊盤和芯片的引腳是否直接相連(通斷測試)。如果是和具有 Debug 功能的引腳直接相連,就可以確定,該接口是用來下載程序的。事實上,芯片 JN5169 下載程序使用的接口,一共需要的也是 6 個。PCB 加固建議減少不必要的信息泄露,建議開發(fā)工程師在量產前把 PCB 絲印、芯片型號等 信息清除,通過隱藏這些芯片信息來增加敏感芯片和組件被
30、識別出的難度。 同時將下載固件的接口移除。其實并不能從根本上解決問題,如果攻擊者熟悉主控芯片的封裝,通過測試總是可以匹配上的。如果芯片的存儲設備具有讀寫保護能力,可以通過設置讀保護選項,使得設備不可讀,以 STM32f1 系列單片機為例子,可以通過設置 RDP(Global Read-out Protection)寄存器的值來改變單片機內部 flash 讀保護選項。當啟用讀保護選項時,單片機的固件是無法通過JTAG 和UART 接口讀出來的。也就是說, 必須破壞芯片結構,才有可能把芯片內部的程序讀出。使用不常見的螺釘對設備外殼進行保護,這些螺釘很難打開,或者使用諸如超聲波焊接或高溫膠水之類的東
31、西將多個硬件外殼密封在一起。在設備中添加篡改檢測開關,傳感器或電路,可以檢測某些操作,例如設備的打開或其被強制破壞,通過對閃存加強電壓進行破壞使得設備無法使用。11側信道攻擊基本原理側信道攻擊是一種先進的硬件攻擊技術,攻擊者使用不同的信息源(如功率變化,時序分析,電磁數據變化和聲音信息)來提取更多信息,這些信息可用于危害目標設備。為了進行側信道攻擊,首先先進行信號處理,再對泄露的模型進行建模,然后提取出泄露的信息。加固建議側信道攻擊很難防御,但是,以下是可以采取的一些措施來緩解這些類型的攻擊:利用設備中的組件減少向系統(tǒng)外部傳遞的整體信息,無論是電磁輻射或者聲音。每當執(zhí)行敏感活動時添加額外的噪音
32、,以使攻擊者更難以提取信息。中間人攻擊基本原理攻擊可以嗅探兩個不同的硬件組件之間傳遞的數據,并加以分析,如果這些信息沒有經過加密處理,很容易獲取到關鍵信息,例如秘鑰之類。加固建議由于嵌入式資源有限,非常高強度的加密是不可行的,所以應該提前考慮加密和可用性之間的良好平衡并在硬件電路中實現。如果芯片支持 TPM,則可利用它來存儲所有加密密鑰,這些加密密鑰還可以提供諸如信任根之類的功能, 從而防止對啟動過程的修改。大多數 TPM 支持有效的硬件隨機數生成器,并能夠在 200ms 內計算 2048 位 RSA 簽名。12分智 能析設 備手安 全冊3. 固件安全 HYPERLINK l _bookmar
33、k31 固件存儲位置14 HYPERLINK l _bookmark34 固件獲取方法16 HYPERLINK l _bookmark31 固件解包20 HYPERLINK l _bookmark34 固件加固建議2113固件存儲位置從計算機體系結構(以馮 諾依曼體系結構為例)看,固件被存儲在存儲器中,以方便 CPU 尋址、讀指令、譯指令等。安全分析人員只要知道智能設備的組成部分中哪些元器件具備存儲固件的能力,就能大體知道固件在智能設備上的存儲位置了。僅僅知道固件在存儲器中,也是不夠的,還應該知道固件在存儲器的哪個部分。因為存儲器中的數據是根據地址來讀取和寫入的,所以必須知道智能設備固件被廠家
34、寫入的地址,才算完整地獲取到固件的位置信息。既然固件被存儲在存儲器中,那一定可以在智能設備的主板上找到固件的存儲芯片,進而定位智能設備的固件。一般,固件在主板上存儲的方式,可以簡單分成兩類:集成式(左圖)和分離式(右圖)。集成式固件存儲當設備的功能比較簡單,不需要運行復雜的操作系統(tǒng)或者集成復雜的協議棧,也不需要足夠強的計算性能, 一般廠商會把固件集成到他們的主控芯片中以節(jié)約成本。暫且把這類設備稱為弱設備。統(tǒng)弱設備和個人電腦的組成有很大的不同。一般而言,個人電腦會有非常大的硬盤(10G 以上)來存儲操作系,以滿足操作系統(tǒng)的正常運行;而幾乎全部的弱設備只需要百 K 容量級別的固件即可正常運行。為了
35、滿足系統(tǒng)集成的需要,主控器廠商(如 ST、NXP 等)把系統(tǒng)正常運行所需的內存(RAM),硬盤(Flash 等可重復擦寫、掉電數據不丟失的存儲器),CPU(計算核心)和外圍接口(用于同外圍設備通信)集成到一個芯片中,由于這個芯片通常用于對傳感器、電機等外圍設備的簡單控制,又被稱為微型控制單元(MCU),也就是常說的主控器。14從內部集成的 32bit RISC CPU 來看,其尋址能力可以達到 232 字節(jié),也就是 4GB。其內部的固件一定會被存放在 ROM 中,也就是 FLASH 或者 EEPROM 中,通常設備的固件會被寫入到 FLASH 中,EEPROM 用于重要系統(tǒng)參數或數據存放。如上
36、圖所示,在可尋址的 4GB 的空間內,FLASH 區(qū)域的地址空間為 0 x000800000 x00100000(512KB)。因此只要能通過某種方法,讀取到這段地址空間中的數據,也就得到固件了。15分離式固件存儲當主控器內部的存儲容量不能完全存儲所需的固件或信息時,廠商一般會外接存儲器到主控器上,通常存儲器有下圖中的 3 種,對應著來看,上面的設備可以作為讀取下面的存儲器的模塊來使用,插入電腦,利用配套軟件即可讀出固件。但如果不取下這些芯片,有沒有可以讀出固件的辦法呢?那就通過引導加載程序(Bootloader)或者利用JTAG/SWD 等調試接口,控制主控器的讀寫存儲器流程,進而讀出固件內
37、容。利用這種方法獲取固件的前提條件是需要知道固件在存儲器 (ROM) 中或者被映射到內存(RAM)中的地址范圍。固件獲取方法網絡升級截獲(FTP、HTTP)固件不僅可以在本地獲取。當智能設備進入升級流程時,可以通過抓取升級過程的流量信息,得到智能設備通過網絡升級固件的具體流程,通過模擬固件升級的過程獲取固件。例如,某攝像頭利用 FTP 通訊方式獲取固件進行升級,如下圖所示。某智能設備使用 HTTP 通訊方式從云端獲取固件進行升級,如下圖所示。16直接讀存儲芯片將存儲器通過焊接的方式取下來必然需要用到焊接工具,見下圖。將存儲器焊下來之后,可用下圖所示的編程器硬件以及配套的軟件從存儲器中把固件讀取
38、出來。配套軟件界面如下圖所示。17通過串口等通信總線讀取下面以 STM32 單片機為例,首先把 PC 與板載UART 接口相連,然后利用主控器內部的 Bootloader 獲取固件。連接方式見下圖:ST 公司對其 STM32 系列產品的 Bootloader 有如下描述:任“自舉程序存儲在 STM32 器件的內部自舉 ROM 存儲器(系統(tǒng)存儲器)中。在生產期間由 ST 編程。其主要務是通過一種可用的串行外設(USART、CAN、USB、I2C 等)將應用程序下載到內部 Flash 中。每種串行接口都定義了相應的通信協議,其中包含兼容的命令集和序列?!避浖_發(fā)者主要利用 Bootloader 將
39、編譯好的固件下載到主控器的 flash 區(qū)域中。Bootloader 還具備讀取固件的能力,Bootloader 運行流程如下。18從啟動流程上看,如果 Bootloader 被激活運行(一般是通過硬件上的引腳狀態(tài)設置),主控芯片一定會停留在一個等待命令的狀態(tài)允許另外一臺主機通過串口發(fā)送命令,執(zhí)行相關的操作。如果主機傳入 RD 命令,則會讀取存儲器內部指定地址和大小的數據,讀取數據的流程如下圖所示。利用 Bootloader 讀取其他 MCU 的方法類似,參考相應官方文檔即可。通過調試接口讀取有些產品的主板上,會暴露硬件開發(fā)調試時所用的接口,如 JTAG/SWD 接口。一般串口在裸板開發(fā)調試階
40、段沒辦法給程序設置斷點,所以廠商實現了 JTAG/SWD 硬件模塊,方便開發(fā)者在 PC 上動態(tài)調試正運行在芯片中的代碼。利用 SWD 接口和相配套的硬件調試器,在 PC 和智能設備間建立連接的接線方法如下所示。PC 與主控芯片建立連接后,參考 SWD 接口的通信協議規(guī)范,把存儲在 flash 中的數據讀取出來。生產硬件調試器的廠商一般會提供配套的軟件,如 J-Link 驅動程序等。在 PC 上運行配套的軟件后,可以向主控器的存儲器中寫入數據、讀取數據、運行指令、設置斷點等,實現硬件調試。19固件解包獲取到智能設備固件后,需要得到固件中所包含的文件,固件內容提取可以選擇手動提取,也可以使用自動化
41、工具。binwalk 是提取固件系統(tǒng)內容的最佳選擇,建議安裝最新版 binwalk,并安裝 devttys0 發(fā)布的補丁 https:/devttys0/sasquatch。以下介紹 binwalk 常用選項:獲取幫助binwalk -h binwalk -help固件信息掃描binwalk firmware.bin提取文件binwalk -e firmware.bin使用 -M 選項,可以根據 magic 簽名掃描結果遞歸提取固件,可以使用 -d 選項指定遞歸深度,默認為 8.binwalk -Me firmware.bin binwalk -Me -d 6 firmware.bin文件比較
42、使用 -W 參數,對多個文件進行字節(jié)比較,比較結果按hexdump 方式顯示,綠色表示相同,紅色表示不同。binwalk -W firmware.bin firmware2.bin firmware3. bin binwalk -W -block=8 -length=128 firmware1.bin firmware2.bin20日志記錄使用 -f 選項指定日志文件,與 -q 一起使用時僅在文件中記錄,不在 stdout 輸出,否則,記錄日志文件,同時 stdout 輸出。-csv 選項可以指定保存 csv 格式日志。binwalk -f firmwar.log -q firmware.bi
43、n注意:如果是通過編程器從芯片中直接讀取的固件,需要排除壞塊的影響才可以恢復固件結構。固件加固建議通信傳輸加密與認證在產品的升級流程中建議加入加密傳輸和請求認證的功能。如果產品請求的是 FTP 服務,可以改用 SFTP 服務來代替,并進行數據加密和雙向認證。 如果產品請求的是 HTTP 服務,可以改用 HTTPS 服務來代替,并進行數據加密和雙向認證。不過,需要注意的是,需要對密鑰做到足夠的保護。隱藏接口隱藏主控芯片引腳和型號信息。采用 BGA 封裝的芯片,可以較好地隱藏芯片的引腳,以增加判斷調試接口位置的難度。必要情況下可以刪除主板上調試接口的焊點和印絲,防止攻擊者找到調試接口獲取固件。如果
44、需要保留調試接口,建議禁用調試接口,只有通過某種特殊途徑或者特權模式下才可以啟用調試接口。設置主控芯片讀保護在主控芯片內設置讀保護。如果主控芯片設置了對內部存儲區(qū)域的讀保護操作,則必須要先解除讀保護操作才可以讀取內部存儲區(qū),而解除讀保護的操作會導致芯片存儲區(qū)域被擦除。所以,這種方法可以防止固件被提取。固件加密與認證現有的芯片(MCU、MPU)內部已經集成了安全存儲區(qū)域,可以將加密密鑰存放在該區(qū)域,增加密鑰獲取難度。 利用存儲區(qū)域的密鑰加密設備固件,由于密鑰獲取難度大,因此可保證提取的固件中文件系統(tǒng)無法被提取。加入認證能夠保證只有可信任的代碼被運行。如NXP 的 iMX.283 系列的芯片內部集
45、成的 HAB,HAB 相當于21U-Boot 中的一段代碼。AN4581 文檔中專門針對 HAB 解說了安全啟動過程中的代碼簽名和密鑰管理機制。啟動代碼中加入了運行固件的簽名,既然有簽名,一定需要一個驗簽的流程。NXP 做了一個 CA 樹,用于對個設備頒發(fā)證書,實現一機一密。私鑰只存在 CA 中(可能是某臺開發(fā)者的機器),并不會在設備上,所以攻每擊者在獲取不到私鑰的情況下,沒辦法制作擁有合法簽名的固件。U-Boot 的功能偏芯片控制的層面,可以通過更改源碼或者配置編譯出啟用了簽名驗證功能的 U-Boot。2210分智 能析設 備手安 全冊4. 調試技術分析環(huán)境24模擬運行28設備調試3023分
46、析環(huán)境QEMUQEMU 是一套由法布里斯 貝拉 (Fabrice Bellard) 所編寫的以 GPL 許可證分發(fā)源碼的模擬處理器,在 GNU/ Linux 平臺上使用廣泛。Bochs,PearPC 等與其類似,但不具備其許多特性,比如高速度及跨平臺的特性,通過KQEMU 這個閉源的加速器,QEMU 能模擬至接近真實電腦的速度。QEMU 的安裝有兩種方式,分別為源碼安裝和遠程倉庫安裝 通過 yum 命令或者 apt-get 命令安裝 。本文建議使用遠程倉庫安裝。這里以 kail 系統(tǒng)為例:apt-get install qemu-user-staticQEMU 有用戶模式和系統(tǒng)模式兩種運行模式
47、。用戶模式此模式下 QEMU 能啟動那些為不同處理架構編譯的獨立的 Linux 程序。QEMU 安裝完成后包含以下可執(zhí)行程序:用戶模式下執(zhí)行非主機 CPU 架構程序時,需要使用對應的 QEMU 程序,例如運行 MIPS 架構下的小端測試程序,使用以下命令:rootkali:/IoT# qemu-mipsel ./hello hello系統(tǒng)模式此模式下可以模擬整個操作系統(tǒng),包括中央處理器及其他周邊設備,使得跨平臺開發(fā)和調試程序變得更加簡單,也能夠有效的節(jié)省硬件成本。24QEMU 系 統(tǒng) 模 式 命 令 格 式 為 qemu-system-xxxx options, 常 用 選 項 參 數 如 下
48、:選項說明-kernel kernel.img使用 kernel.img 作為內核鏡像-initrd initrd.img使用 initrd.img 作為初始化的 RAM 磁盤-hda hda.qcow2使用 hda.qcow2 作為磁盤鏡像-append cmd使用 cmd 作為內核命令行-nographic禁止圖形輸出可以在 HYPERLINK /%7Eaurel32/qemu/ /aurel32/qemu 網站下載到針對不同 CPU 架構的 debian 操作系統(tǒng),其中包含不同 CPU 架構下的內核文件和文件系統(tǒng)。對應目錄下有具體的使用說明,例如需要模擬內核版本為 2.6.32-5 的
49、armel 架構的 debian 操作系統(tǒng)時可以執(zhí)行如下命令:qemu-system-arm -M versatilepb -kernel vmlinuz-2.6.32-5-versatile -initrd initrd.img- 2.6.32-5-versatile -had debian_squeeze_armel_standard.qcow2 -append root=/dev/sda125交叉編譯環(huán)境交叉編譯(cross-compilation)是指,在某個主機平臺上(比如PC 上)用交叉編譯器編譯出可在其他平臺上(比如 ARM 上)運行的代碼的過程。一般使用 buildroot 搭
50、建 arm、mips 交叉編譯環(huán)境:下載 buildroot。Make menuconfigMake menuconfig 配置界面如下圖:Target options 選項下,選擇所需環(huán)境,如 ARM、MIPS,并選擇大小端:26選擇 Target Architecture Variant 選項,與 Target Architecture 對應:Toolchain 選項下 Kernel Headers 需要選擇與自己主機一致的 Linux 內核版本:Make設置完成后,運行 make 命令,編譯時間較長。編譯完成后結果保存在 output 目錄下。編譯程序使用 /output/host/us
51、r/bin/ 目錄下的 mipsel-linux-gcc 編譯生成 MIPS 程序:27模擬運行在獲取固件之后,可以通過模擬器對固件中的程序進行調試分析和漏洞挖掘。單文件模擬運行在程序可以單獨運行的時候使用這種方法。以路由器固件為例:通過 binwalk 命令將固件中的文件系統(tǒng)提取出來。rootmask:/lab# binwalk -e miwifi_r3l_firmware_d5c5c_2.14.25.bin rootmask:/lab# ls miwifi_r3l_firmware_d5c5c_2.14.25.bin_miwifi_r3l_firmware_d5c5c_2.14.25.bi
52、n.extracted rootmask:/lab#ls_miwifi_r3l_firmware_d5c5c_2.14.25.bin.extracted/squash fs-root/ bin data dev etc lib mnt overlay proc readonly rom root sbin sys tmp userdisk usr var www通過 readelf 命令識別程序對應的 CPU 架構。28將識別出的 CPU 架構對應的 qemu 程序拷貝到程序所在的文件夾中。rootmask:/lab/squashfs-root# cp $(which qemu-mipsel-
53、static)使用 qemu 程序運行從固件中提取的程序,例如運行文件系統(tǒng)中的 lua 程序命令如下:rootmask:/lab/squashfs-root# lsbin data dev etc lib mnt overlay proc qemu-mipsel- static readonly rom root sbin sys tmp userdisk usr var www rootmask:/lab/squashfs-root# chroot . ./qemu-mipsel- static ./usr/bin/lua Lua 5.1.5 Copyright (C) 1994-2012
54、L, PUC-Rio (double int32) security print hello world hello world全系統(tǒng)模擬運行如果目標程序存在較強的外部依賴,則需要使用此種方式進行模擬。使用 FAT( HYPERLINK /attify/firmware-analysis-toolkit/ /attify/firmware-analysis-toolkit/)可以將一些主流的設備固件模擬運行起來:git clone -recursive /attify/firmware-analysis-toolkit.git cd firmware-analysis-toolkit & su
55、do ./setup.sh下面用 D-Link 的 DWP2360b 固件作為例子,輸入設備型號將固件跑起來。29現在可以成功訪問路由器頁面 :設備調試在沒有獲得設備的情況下可以使用QEMU 模擬器進行程序調試,如果能夠獲取到目標設備時可以直接利用實體設備進行程序調試。調試接口存在實體設備的情況,要進行程序調式,首先需要找到可以進行程序調試的接口,一般的硬件調試接口為UART, SPI, 或者 JTAG。UART 是嵌入式設備中最常見的將接收的并行數據轉換為串行數據流的通信協議之一。在嵌入式設備安全分析中首先考慮的是通用異步接收器發(fā)送器(UART)接口 ( 此接口為通常所說的串口)。UART
56、通訊依賴于波特率, 需要設置正確的波特率才能正常通信。典型的 UART 通信將按順序具有以下位:起始位:先發(fā)出一個邏輯”0”的信號,表示傳輸字符的開始。數據位:緊接著起始位之后。數據位的個數可以是 4、5、6、7、8 等,構成一個字符。通常采用 ASCII 碼。從最低位開始傳送,靠時鐘定位。奇偶校驗位:數據位加上這一位后,使得“1”的位數應為偶數 ( 偶校驗 ) 或奇數 ( 奇校驗 ),以此來校驗資料傳送的正確性。停止位:它是一個字符數據的結束標志??梢允?1 位、1.5 位、2 位的高電平。由于數據是在傳輸線上定時的, 并且每一個設備有其自己的時鐘,很可能在通信中兩臺設備間出現了小小的不同步
57、。因此停止位不僅僅是表示傳輸的結束,并且提供計算機校正時鐘同步的機會。適用于停止位的位數越多,不同時鐘同步的容忍程度越大,但是數據傳輸率也就越慢??臻e位:處于邏輯“1”狀態(tài),表示當前線路上沒有資料傳送。UART 至少包含以下四個引腳:VCC:電源引腳,常見的電壓為 3.3V,5V。GND:接地引腳。TXD:數據發(fā)送引腳。RXD:數據接收引腳。30值得注意的是,要進行 UART 通信,必須使用數據發(fā)送 (TXD) 和數據接收 (RXD) 這兩個引腳。標準的 UART接口還會有GND 和VCC 引腳 :串口識別為了找出UART 的接口,可以使用萬用表來確定每個引腳(TXD,RXD,GND 和VCC
58、),下面列出關鍵的步驟:將萬用表功能開關定位到二極管( 蜂鳴) 檔位,關閉設備電源,用黑色探頭接到硬件電路板的接地引腳( 這個引腳一般于較大的銅箔面相連 )。用紅色探頭分別放在可能是 UART 接口的每個焊盤或者針腳上,直到聽到蜂鳴器(BEEP) 的聲音。聽到蜂鳴器聲音時即可判定設備接口的接地引腳,這種測試方法也稱為通斷測試。將萬用表功能開關定位 20V 直流電壓檔位置,黑色探頭保持接口的接地引腳(GND),用紅色探頭移到接口的其他引腳(GND 除外)上。接通設備電源,如果看到恒定電壓 (3.3V 或者 5V) 的引腳就是VCC 引腳。再次重啟設備并測量剩余焊盤和 GND 之間的電壓(除了前面
59、步驟中確定的 VCC 和 GND)。由于在啟動期間最初進行的大量數據傳輸,可以看到在最初的 10-15 秒內其中一個引腳上的電壓值發(fā)生了巨大波動。這個引腳將是 TXD 引腳。RXD 可以通過在整個過程中具有最低電壓波動和最低總值的引腳來確定。通過以上方法確定的引腳比較集中在某個區(qū)域時即可判定這個接口為設備的 UART 接口。31USB-TTL可以使用 USB 轉 TTL 設備連接設備和 PC 主機 , 設備如下圖所示:該設備一端接入 PC 機的 USB 接口,另一端有 TXD、RXD、GND、5V、3.3V 五個引腳,只需要將對應的引腳分別與電路板的 RXD、TXD、GND 引腳相連 (Rx
60、和 Tx 交叉相連,VCC 可以不連 ) 即可。同時在 PC 機上安裝對應的 USB 轉串口驅動,就能讓 PC 機識別該串口設備。32Xshell 連接設備連接好后,如果需要顯示設備傳輸的內容或者操作設備,需要使用一些終端軟件來與設備在 PC 上注冊的串口驅動進行通訊,這里選擇的是 Xshell。前面已經說過 UART 通訊是依賴波特率的,如果波特率設置不正確將不能正常通信,表現為終端顯示亂碼。出現亂碼情況可以簡單的從常用波特率 115200 往上進行嘗試(如下圖),下一個嘗試 57600,直到終端不再顯示亂碼,此時,波特率設置正確。如果不出意外的話目標設備系統(tǒng)啟動后會返回一個Linux 的
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年故都秋一等獎教案:探索教學的新境界
- 2025年紡織片梭織機合作協議書
- 《昆蟲記》讀后感
- 演講稿題目新穎范文
- DB31∕T 680.8-2019 城市公共用水定額及其計算方法 第8部分:公共管理和社會組織機關單位
- 寵物急救知識培訓班課件
- 慢性支氣管炎肺炎等修改課件
- 液壓知識培訓課件下載
- 2023年北京卷高考真題數學試卷-解析
- 工程入股合作合同協議書
- 跟著名著《小王子》學高考英語讀后續(xù)寫絕佳的續(xù)寫清單-高中英語作文復習專項
- 產教融合大學科技園建設項目實施方案
- 交通法律與交通事故處理培訓課程與法律解析
- 廣西版四年級下冊美術教案
- 《換熱器及換熱原理》課件
- 兒童權利公約演示文稿課件
- UPVC排水管技術標準
- MSA-測量系統(tǒng)分析模板
- 血透室公休座談水腫的護理
- 急診預檢分診專家共識課件
- 廣州市海珠區(qū)事業(yè)單位考試歷年真題
評論
0/150
提交評論