国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

STM32F10x的啟動(dòng)文件跳轉(zhuǎn)攻擊方案設(shè)計(jì)

2018-06-15 07:56,,,
關(guān)鍵詞:扇區(qū)指針嵌入式

,,,

(1.陸軍裝甲兵學(xué)院 信息通信系,北京 100071; 2.73630部隊(duì))

引 言

一般嵌入式產(chǎn)品應(yīng)用環(huán)境不會(huì)對(duì)硬件采取特殊的保護(hù)措施,而嵌入式系統(tǒng)的硬件又直接影響著系統(tǒng)工作的安全性,這為嵌入式系統(tǒng)帶來了許多安全隱患,同時(shí)近年來嵌入式設(shè)備信息安全事故頻發(fā),系統(tǒng)的信息安全問題引起社會(huì)的廣泛關(guān)注[1-4],越來越多的學(xué)者投入嵌入式系統(tǒng)漏洞的挖掘和研究工作。

林郭安、黃強(qiáng)等人[5]根據(jù)STM32芯片的啟動(dòng)特點(diǎn),設(shè)計(jì)了一種由后至前遍歷獲取程序入口地址,通過修改程序入口地址實(shí)現(xiàn)源碼復(fù)制竊取的目的,但該方法的遍歷階段具有盲目性的特點(diǎn),攻擊效率低。Frank Altschuler和Bruno Zoppis等人[6-7]提出通過向RAM緩存區(qū)傳送大量數(shù)據(jù),造成緩存區(qū)溢出,從而覆蓋原程序跳轉(zhuǎn)地址以達(dá)到攻擊的目的,但這種方法并不適用于運(yùn)行時(shí)直接從Flash區(qū)間讀取代碼的芯片。

本文針對(duì)STM32F10x系列控制芯片,根據(jù)其啟動(dòng)原理,借助仿真器和下載接口,將惡意軟件載入目標(biāo)芯片F(xiàn)lash空余扇區(qū),在調(diào)試模式運(yùn)行惡意軟件,并從中篡改原啟動(dòng)文件的程序跳轉(zhuǎn)指針,從而改變?cè)绦騿?dòng)時(shí)的運(yùn)行順序,使得植入的惡意軟件得到執(zhí)行,實(shí)現(xiàn)攻擊目的,實(shí)驗(yàn)證明該方法具有針對(duì)性強(qiáng)、攻擊效率高、方法簡(jiǎn)單易于實(shí)施的特點(diǎn)。

STM32F10x系列芯片采用32位的ARM Cortex-M3內(nèi)核,主頻高達(dá)72 MHz,型號(hào)眾多、片上資源豐富,具有功耗低、性能強(qiáng)、性價(jià)比高的特點(diǎn)[8],可以很好地滿足各類中低端嵌入式產(chǎn)品市場(chǎng)需求,在ARM系列微控制器市場(chǎng)占有率高[9],對(duì)STM32F10x系列芯片的攻擊研究具有重要的市場(chǎng)價(jià)值和借鑒意義。

1 原理分析

加載啟動(dòng)文件是STM32微控制器在啟動(dòng)時(shí)執(zhí)行的第一段程序,由匯編語(yǔ)言編寫,它的作用包括配置中斷向量、堆棧初始化、系統(tǒng)時(shí)鐘初始化以及跳轉(zhuǎn)至main函數(shù)等[10]。啟動(dòng)文件根據(jù)STM32具體型號(hào)而定,STM32F10x系列芯片共有小型容量、中型容量、大型容量等8種啟動(dòng)文件,這些啟動(dòng)文件在ST官方網(wǎng)站即可獲取,芯片只有匹配了正確的啟動(dòng)文件才能正常運(yùn)行。在實(shí)施嵌入式系統(tǒng)攻擊時(shí)往往無法得知目標(biāo)芯片的代碼信息,但是獲取其型號(hào)信息并不困難,只要在植入惡意代碼中匹配相應(yīng)的啟動(dòng)文件,就可以正確配置芯片,使得惡意代碼在芯片上正常啟動(dòng)并運(yùn)行。

Cortex-M3內(nèi)核規(guī)定[11],映射存儲(chǔ)空間的起始地址存放堆棧指針,第二個(gè)地址存放復(fù)位中斷向量指針,在芯片啟動(dòng)時(shí),硬件首先會(huì)根據(jù)復(fù)位中斷向量指針跳轉(zhuǎn)到復(fù)位中斷函數(shù),進(jìn)行內(nèi)核堆棧初始化和中斷向量初始化工作,然后執(zhí)行System_Init進(jìn)行系統(tǒng)時(shí)鐘初始化,最后通過__main函數(shù)跳轉(zhuǎn)到主函數(shù)執(zhí)行用戶代碼。本實(shí)驗(yàn)根據(jù)Cortex-M3內(nèi)核啟動(dòng)順序,重定位復(fù)位中斷向量指針,從而在復(fù)位時(shí)跳轉(zhuǎn)至惡意軟件執(zhí)行,然后跳轉(zhuǎn)回原啟動(dòng)文件執(zhí)行原程序,保證了原代碼的完整性和嵌入式攻擊的隱蔽性。

對(duì)目標(biāo)實(shí)施攻擊后的代碼執(zhí)行流程如圖1所示。

圖1 攻擊目標(biāo)代碼執(zhí)行流程

一般情況下,映射存儲(chǔ)空間為MCU內(nèi)部Flash,出于產(chǎn)品優(yōu)化升級(jí)考慮,嵌入式產(chǎn)品都會(huì)在Flash內(nèi)部預(yù)留出多余扇區(qū)[5,13],這為惡意代碼的植入提供了可用空間,F(xiàn)lash的讀寫保護(hù)僅對(duì)外界讀寫操作有效,不能阻止原有程序?qū)lash的操作,這為惡意代碼提供了執(zhí)行條件。惡意代碼一經(jīng)執(zhí)行,就會(huì)篡改原程序復(fù)位中斷向量指針,在下次芯片燒錄之前,攻擊一直有效。

2 方案設(shè)計(jì)

汽車實(shí)驗(yàn)采用搭載STM32F103VET6芯片的指南者開發(fā)板,該芯片F(xiàn)lash容量為512 KB,應(yīng)用CMSIS-DAP標(biāo)準(zhǔn)的仿真器,上位機(jī)系統(tǒng)環(huán)境為Windows7,使用ST公司提供的編譯開發(fā)環(huán)境MDK,以及串口調(diào)試助手。

首先利用MDK將惡意代碼下載至芯片F(xiàn)lash的最后扇區(qū),然后通過仿真器的Debug模式從惡意代碼區(qū)啟動(dòng),并在惡意代碼中修改原啟動(dòng)文件的復(fù)位中斷向量指針,最后在惡意程序中跳轉(zhuǎn)回原啟動(dòng)文件,重新初始化系統(tǒng)運(yùn)行原代碼,之后系統(tǒng)每次復(fù)位都會(huì)優(yōu)先執(zhí)行攻擊代碼后再跳轉(zhuǎn)回原代碼執(zhí)行。

在指南者開發(fā)板上進(jìn)行簡(jiǎn)單的流水燈作業(yè),注入惡意代碼的功能為蜂鳴器響起并延時(shí)1 s,并向串口輸出“攻擊成功”的打印信息,同時(shí)可以在Debug模式下觀察PC指針的值以判定攻擊是否成功。

方案實(shí)現(xiàn)框圖如圖2所示。

圖2 啟動(dòng)文件攻擊實(shí)現(xiàn)流程

3 實(shí)驗(yàn)驗(yàn)證

3.1 實(shí)驗(yàn)過程

(1)惡意軟件下載

為了最大限度確保注入惡意代碼的完整性并且不覆蓋芯片原有代碼,實(shí)驗(yàn)首先分析惡意攻擊軟件的容量,在編譯好的文件中,通過map文件可以查看惡意軟件的大小為3.75 KB,STM32F103VET6芯片內(nèi)Flash容量為512 KB(0x08 0000),每頁(yè)扇區(qū)大小為2 KB,本實(shí)驗(yàn)將惡意代碼燒錄到最后兩片扇區(qū)中,即0x0807 F000~0x0808 0000區(qū)間。通過修改MDK中Options->Target的設(shè)置可以實(shí)現(xiàn)定位下載地址。

圖3為map文件中惡意代碼大小信息以及Target Memory部分設(shè)置界面。

圖3 map文件代碼信息及Target Memory設(shè)置頁(yè)面

(2)仿真器啟動(dòng)

為了在啟動(dòng)時(shí)優(yōu)先運(yùn)行惡意軟件,實(shí)驗(yàn)借助DAP仿真器在Debug模式下復(fù)位運(yùn)行,需要添加初始化文件Debug_RAM.ini,在該文件中設(shè)置堆棧指針和PC指針,這樣在Debug模式下啟動(dòng)時(shí),程序就會(huì)被強(qiáng)制跳轉(zhuǎn)到此位置運(yùn)行,程序如下所示:

FUNC void Setup(void){

SP=_RDWORD(0x0807F000);

PC=_RDWORD(0x0807F004);

_WDWORD(0xE000ED08,0x20000000);

}

LOAD %L INCREMENTAL

Setup();

(3)跳轉(zhuǎn)地址重定位

由于Cortex-M3內(nèi)核在啟動(dòng)時(shí)會(huì)根據(jù)映射存儲(chǔ)空間第二個(gè)偏移地址(復(fù)位中斷向量指針)跳轉(zhuǎn)到復(fù)位中斷函數(shù)執(zhí)行,用戶無法改變這一內(nèi)核啟動(dòng)的順序,但是可以通過Flash自身程序修改復(fù)位中斷向量指針的值,從而改變默認(rèn)跳轉(zhuǎn)地址。通過實(shí)驗(yàn)發(fā)現(xiàn),STM32F10x系列芯片的復(fù)位中斷指針相對(duì)Flash的起始空間固定偏移0x145個(gè)字節(jié),當(dāng)Flash起始地址為0x0807 F000時(shí),復(fù)位中斷指針應(yīng)修改為0x0807 F145,該過程由惡意軟件實(shí)現(xiàn)。

由于Flash在寫操作之前必須按頁(yè)擦除,故在代碼實(shí)現(xiàn)時(shí)需要先將Flash起始地址的第一頁(yè)內(nèi)容復(fù)制到至少2 KB容量的數(shù)組,將數(shù)組中第二個(gè)字的內(nèi)容修改成惡意代碼的復(fù)位中斷向量指針0x0807 F145,然后再將這一頁(yè)內(nèi)容重新寫入Flash,完成復(fù)位中斷向量指針的替換。當(dāng)開發(fā)板重啟時(shí),系統(tǒng)就會(huì)先跳轉(zhuǎn)至惡意代碼區(qū)啟動(dòng)文件進(jìn)行系統(tǒng)初始化啟動(dòng),在執(zhí)行完惡意代碼內(nèi)容后跳轉(zhuǎn)回原啟動(dòng)文件的復(fù)位中斷函數(shù),重新初始化系統(tǒng),運(yùn)行原代碼。

3.2 實(shí)驗(yàn)結(jié)果

對(duì)正在進(jìn)行流水燈作業(yè)的指南者開發(fā)板進(jìn)行攻擊后,每復(fù)位一次開發(fā)板,蜂鳴器鳴笛1 s,并在串口收到“攻擊成功”的調(diào)試信息,在單步調(diào)試模式下,對(duì)比攻擊前后映射存儲(chǔ)空間起始地址(0x0800 0000)的第二個(gè)字內(nèi)容,如圖4所示,可以清楚看出復(fù)位中斷向量地址已被篡改。

圖4 Debug_RAM.ini文件內(nèi)容

結(jié) 語(yǔ)

[1] 蔡舒祺.嵌入式系統(tǒng)安全性分析概述[J].電子技術(shù)與軟件工程,2017(3):210-212.

[2] 李冰冰,陳靜.物聯(lián)網(wǎng)時(shí)代的嵌入式系統(tǒng)安全性問題探討[J].數(shù)字技術(shù)與應(yīng)用,2016(12):217,219.

[3] 第88屆中國(guó)電子展.嵌入式應(yīng)用面臨新機(jī)遇,信息安全更加被重視[J].中國(guó)電子商情:基礎(chǔ)電子,2016(12):53-54.

[4] 趙國(guó)冬.安全嵌入式系統(tǒng)體系結(jié)構(gòu)研究與設(shè)計(jì)[D].哈爾濱:哈爾濱工程大學(xué),2006.

[5] 林郭安,黃強(qiáng),許文煥.STM32F103RB的Bootloader軟件安全設(shè)計(jì)方案[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2009(9):73-75.

[6] Frank Altschuler,Bruno Zoppis.嵌入式系統(tǒng)安全性(上) -對(duì)攻擊狀況和防衛(wèi)策略的概述和分析[J].電子產(chǎn)品世界,2008(5):109-113.

[7] 王柳濱,魏國(guó)珩,李政.嵌入式系統(tǒng)緩沖區(qū)溢出攻擊防范技術(shù)[J].計(jì)算機(jī)應(yīng)用,2012,32(12):3449-3452.

[8] STMicroelectronics.STM32F103xE Data sheet,2008.

[9] 單祥茹.STM32教父新愿景:產(chǎn)品成嵌入式工程師的首選[J].中國(guó)電子商情:基礎(chǔ)電子,2017(7):10-11.

[10] 劉火良,楊森.STM32庫(kù)開實(shí)戰(zhàn)指南[M].北京:機(jī)械工業(yè)出版社,2017.

[11] Joseph Yiu.ARM Cortex-M3與Cortex-M4權(quán)威指南[M].北京:清華大學(xué)出版社,2015.

[12] 張宏財(cái),趙曾貽.基于ARM核的Bootloader代碼分析與設(shè)計(jì)[J].微計(jì)算機(jī)信息,2006,22(5-2):137-139.

[13] STMicroelectronics.STM32F10xxx Flash programming manual,2008.

猜你喜歡
扇區(qū)指針嵌入式
分階段調(diào)整增加扇區(qū)通行能力策略
搭建基于Qt的嵌入式開發(fā)平臺(tái)
U盤故障排除經(jīng)驗(yàn)談
為什么表的指針都按照順時(shí)針方向轉(zhuǎn)動(dòng)
嵌入式軟PLC在電鍍生產(chǎn)流程控制系統(tǒng)中的應(yīng)用
基于貝葉斯估計(jì)的短時(shí)空域扇區(qū)交通流量預(yù)測(cè)
重建分區(qū)表與FAT32_DBR研究與實(shí)現(xiàn)
基于改進(jìn)Hough變換和BP網(wǎng)絡(luò)的指針儀表識(shí)別
Altera加入嵌入式視覺聯(lián)盟
ARM Cortex—MO/MO+單片機(jī)的指針變量替換方法