當前位置:首頁 > 通信技術(shù) > 通信網(wǎng)絡
[導讀] 近十年,隨著傳感器技術(shù)、無線通信技術(shù)的迅速發(fā)展,越來越多的物聯(lián)網(wǎng)產(chǎn)品出現(xiàn)在我們的視野中,Gartner預測,到2020年,物聯(lián)網(wǎng)設備的裝機量將超過200億,但很多物聯(lián)網(wǎng)設備受到成本、研發(fā)人員安全

近十年,隨著傳感器技術(shù)、無線通信技術(shù)的迅速發(fā)展,越來越多的物聯(lián)網(wǎng)產(chǎn)品出現(xiàn)在我們的視野中,Gartner預測,到2020年,物聯(lián)網(wǎng)設備的裝機量將超過200億,但很多物聯(lián)網(wǎng)設備受到成本、研發(fā)人員安全素質(zhì)等因素的限制,存在大量的安全問題。例如2016年底的Mirai事件,就是因為弱口令和未修復的設備漏洞引起的。物聯(lián)網(wǎng)終端的安全,也越來越受到人們的關(guān)注。

物聯(lián)網(wǎng)安全研究人員滲透進了某智能燈泡,獲取到了Mesh網(wǎng)絡內(nèi)傳輸?shù)腤iFi信息(包括WiFi密碼)。盡管在該案例中WiFi密碼被加密,但是研究人員依然通過獲取設備的底層固件,得到了加密算法和密鑰信息,最終得到了明文的WiFi密碼。固件提取進而分析固件是攻擊者常見的滲透手段,反之如果廠商想要生產(chǎn)出高安全級別的智能燈泡,第一步就是要防止固件內(nèi)容被竊取。

接下來,我們對這次案例做個簡單的分析,然后進一步分析固件提取原理和過程,最后總結(jié)在現(xiàn)有的技術(shù)背景下獲取固件的方法和相應的防護方法。為了描述方便,我們把這種獲取固件的技術(shù)稱為固件提取。

案例回放

文章中提到的攻擊,可以分3步:

1.利用單片機和支持IEEE 802.15.4無線通信的模塊來抓取6LoWPAN流量中的數(shù)據(jù),提取出WiFi信息(此時加密的)。

2.通過提取固件、分析固件,分析出其采用的是AES加密算法,并提取出加密密鑰和初始向量等信息。

3.根據(jù)2中獲取的信息來解密得到WiFi密碼。

這是一個典型的針對家庭局域網(wǎng)絡內(nèi)的嗅探攻擊。今后的物聯(lián)網(wǎng)設備將有一大部分是作為Mesh網(wǎng)絡節(jié)點存在,只不過網(wǎng)關(guān)可能是手機、路由器、筆記本電腦等一切具備藍牙ZigBee、WiFi等無線聯(lián)網(wǎng)能力的設備。基于現(xiàn)有的網(wǎng)絡來看今后的物聯(lián)網(wǎng),設備如果想要具有聯(lián)網(wǎng)能力,則必須利用至少一條有線或無線的通道連接到互聯(lián)網(wǎng)。如果是通過WiFi連接,必要的信息就是WiFi的SSID和密碼。

案例中,攻擊者通過分析固件得到了解密WiFi密碼所需的信息——加密密鑰和AES初始向量。那為什么研究人員可以獲取到固件呢?下面我們將分析固件提取的原理,并且分析在現(xiàn)有的技術(shù)背景下,提取物聯(lián)網(wǎng)節(jié)點上低性能智能設備固件的方法。

固件提取的原理

STM32F103系列單片機為例。該單片機基于ARM Cortex M3內(nèi)核,片內(nèi)帶有64KB的Flash和20KB的SRAM。單片機讀取程序到SRAM再進行譯碼。目前已知的有兩個地方會存儲需要運行的程序:

1.單片機內(nèi)的Flash/ROM。

2.單片機外掛的Flash/ROM。

對于存儲器來說,讀和寫的操作是最基本的,即:必然存在一種方式,可以把存儲器中的數(shù)據(jù)讀取出來。如果讀取的數(shù)據(jù)是單片機需要翻譯的機器碼,那么我們就把讀取的過程叫提取,把要讀取的數(shù)據(jù)稱為固件。

stm32f103c8t6單片機的片內(nèi)Flash的地址是0x08000000-0x0801ffff(如上圖所示),總共64KB。如果要提取出固件,有必要了解代碼是如何燒寫進芯片內(nèi)的Flash區(qū)域里面的。

在開發(fā)過程中,會有如下過程:

1.搭建好編譯環(huán)境,編寫程序代碼(一般采用高級程序設計語言,如C語言),編譯、生成可執(zhí)行文件。

2.搭建好燒寫環(huán)境,把可執(zhí)行文件傳到單片機芯片中,使單片機上電可以運行。

編譯環(huán)境就是用把單片機C語言程序編譯成匯編、機器碼等,生成16進制hex文件或者二進制bin文件,一個編譯器即可。燒寫環(huán)境就是把機器碼下載到上圖的Flash區(qū)域的過程中所需的工具,包含J-link、U-link、ST-LINK(stm32單片機專用)等硬件工具和STVP、mcuisp等軟件(使用一套軟硬件即可)

請注意,燒寫、下載、上傳、提取這四個詞,說白了,就是對Flash區(qū)域讀寫的過程。目前發(fā)現(xiàn)兩種讀取固件的方式,第一種是依托于生產(chǎn)廠商固化在芯片內(nèi)的bootloader,把Flash中的固件讀取出來,第二種是通過調(diào)試接口把固件讀出來。第一種需要bootloader支持,而且一般是支持的。第二種是依靠硬件調(diào)試工具直接讀取,在前面的案例中,研究人員通過PCB上保留的JTAG調(diào)試接口,把固件讀取了出來。

篇幅所限,讀取過程中的交互細節(jié)不多介紹,直接介紹兩類固件提取的工具和方法,一類是以stm32單片機為例的單片機固件提取的工具和方法,一類是外掛Flash形式的Flash固件提取的工具和方法。

單片機片內(nèi)

Flash的固件提取的工具和方法:

單片機固件提取方式有兩類,一類是通過bootloader讀取,一類是通過調(diào)試接口讀取。

利用bootloader提取

通過串口,把芯片和電腦相連,運行mcuisp軟件,點擊讀Flash即可。

mcuisp軟件通常被用來通過串口通信下載固件到單片機。串口通信也是通信技術(shù)的一種,目的是實現(xiàn)芯片A到芯片B的數(shù)據(jù)傳輸,是芯片之間經(jīng)常用到的通信方式。例如:如果我的目的是把程序代碼“abcd”傳輸?shù)叫酒珹中,但是,我僅僅通過電腦與沒有bootloader的單片機進行串口通信,“abcd”是沒辦法直接儲存到Flash區(qū)域的,必須在單片機內(nèi)部寫好一段代碼,在“abcd”已經(jīng)通過串行接口,一個一個的到達單片機內(nèi)部的緩沖器時,把 “abcd”一個一個的轉(zhuǎn)存到Flash區(qū)域。這樣就實現(xiàn)一種電腦直接寫入“abcd”到Flash的假象,達到用戶無感知或是透明傳輸?shù)男Ч?。提取固件的過程與上述過程相反,只需要利用bootloader把Flash的內(nèi)容通過串口通信發(fā)送給電腦即可。

利用硬件調(diào)試接口提取

在開發(fā)單片機程序時,會用到硬件調(diào)試工具,實現(xiàn)單步運行來查看程序?qū)崟r運行的效果。一般可以通過下面兩類調(diào)試接口,把Flash中的數(shù)據(jù)讀取出來。

(1)SWD接口,利用硬件:J-LINK OB或者J-LINK或者ST-LINK;利用軟件:J-LINK驅(qū)動程序自帶的J-FLASH或者ST官網(wǎng)提供的STVP。

(2)JTAG接口,利用硬件:J-LINK;利用軟件:J-LINK驅(qū)動自帶的J-FLASH。

如果找不到串行接口,可以用這種方式,當然,前提是產(chǎn)品電路板上可以引出這兩類接口之一,否則只能取下芯片了。

單片機片外

作為一個存儲器,上電之后不可能自己就把數(shù)據(jù)顯示給我們,就好像U盤買回來,得插電腦上,加載完驅(qū)動才能讀取到里面的數(shù)據(jù)。對于片外Flash,需要把Flash芯片從產(chǎn)品的電路板中取下來,再放到另外一個帶有MCU的電路板上來讀取數(shù)據(jù)。萬能的淘寶提供了編程器,方便了對眾多Flash芯片的內(nèi)部數(shù)據(jù)的提取。

這種方式有兩個缺點:

一是比較暴力,需要把Flash芯片從電路板上取下來,再把Flash芯片放到編程器上面,利用配套的PC端軟件,把固件讀取出來。

二是Flash芯片型號需要得到編程器的支持。那問題來了,如果這個編程器不支持我的Flash的型號呢?那就自己寫個單片機程序把程序讀出來吧。

一般,在大學本科修讀電子信息工程、通信工程或自動化專業(yè)的,有獨立硬件項目開發(fā)經(jīng)驗的同學,都可以獨立實現(xiàn)。

防護措施

介紹了這么多提取固件的工具和方法,那現(xiàn)在有哪些方法能有效防止產(chǎn)品固件被提取出來呢?

針對單片機固件提取的防護:我們可以通過編程的方式,把內(nèi)部Flash區(qū)域設置為讀保護狀態(tài),這樣只要不對MCU進行解封,利用顯微鏡對內(nèi)部Flash的電平狀態(tài)進行破壞,是很難篡改固件的,至于讀取固件,基本上不可能。例如,我們對stm32單片機的RDP寄存器進行設置,使內(nèi)存保護等級提升至level 2,或者把重要的程序和數(shù)據(jù)利用PCROP功能保護起來,防止讀取。

對外掛的Flash內(nèi)的固件,目前,就本人所知,只要能取下來,獲得型號,就可以得到固件。

那問題就變成了:如何不讓攻擊者把Flash安全地取下來?我建議硬件設計工程師把PCB上的Flash芯片,依靠電路設計保護起來。例如:設計Flash芯片在線檢測電路,一旦Flash芯片的引腳出現(xiàn)斷線,則立刻發(fā)動強電壓攻擊,將Flash芯片破壞,防止攻擊者讀取出Flash芯片中的固件。

總結(jié)

我們通過分析固件提取的原理,介紹固件提取可用的方法和工具以及相應的防護措施,希望可以使更多的電子工程師、嵌入式軟件工程師重視智能設備固件的保護。同時,我們希望這篇文章可以給物聯(lián)網(wǎng)安全從業(yè)人員帶來一些物聯(lián)網(wǎng)設備的防護建議。希望在智能設備開發(fā)工程師和安全測評工程師的共同努力下,我們身邊的智能設備變得越來越安全。

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務中斷的風險,如企業(yè)系統(tǒng)復雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉