注1:本文為湖南底網(wǎng)安全信息技術(shù)有限公司安全團(tuán)隊(duì)原創(chuàng)文章,轉(zhuǎn)發(fā)請(qǐng)注明出處
注2:該文已同步在今日頭條"湖南底網(wǎng)安全"主頁發(fā)布(原"電子技術(shù)論"主頁),鏈接如下:https://www.toutiao.com/article/6789945669256741387/?log_from=a59c9ca98c949_1675651265539
前言
固件分析,一種深入硬件底層(芯片級(jí))的技術(shù)破解方法,經(jīng)常被用于系統(tǒng)攻防對(duì)抗、硬件破解、逆向分析等實(shí)際工作中,相對(duì)其它技術(shù)破解攻擊方法,科學(xué)有效的固件分析因其扒開了破解攻擊對(duì)象的“外衣”,直接深入“骨髓”對(duì)其邏輯代碼、數(shù)據(jù)存儲(chǔ)、數(shù)據(jù)類別、數(shù)據(jù)屬性等全方面分析,可找出其它攻擊方法無法找出的嚴(yán)重漏洞,可對(duì)破解攻擊對(duì)象形成“致命級(jí)殺傷力”。
固件分析,由“固件”和“分析”2個(gè)詞組成,看似簡單的4個(gè)字,要想有效充分發(fā)揮出其“殺傷力”,其背后人員需要龐大的技術(shù)體系支撐,這些技術(shù)體系并非孤立自成一體,而是環(huán)環(huán)相扣、相輔相成;每項(xiàng)技術(shù)體系、每個(gè)技術(shù)點(diǎn)都力求達(dá)到熟練甚至精通的標(biāo)準(zhǔn)。除此之外,還需要有超強(qiáng)的心理素質(zhì),在未知二進(jìn)制“數(shù)據(jù)海洋”里“黑盒”探索,需要耐心、細(xì)心、信心,同時(shí)還要面對(duì)固件分析里的高失敗率,因?yàn)楹芏鄷r(shí)候即便你能獲取到固件,由于固件本身的防護(hù)(如加殼、私有指令集、差分固件包)或固件分析實(shí)力不夠等因素仍然無法找出有效漏洞,你可能會(huì)不知所措、迷茫無助甚至焦慮不安,你得到的僅僅是固件文件、一堆冰冷的二進(jìn)制數(shù)據(jù)而已,除此之外毫無其他用處,這時(shí)還得及時(shí)調(diào)整心態(tài)和思路繼續(xù)“戰(zhàn)斗”,以上內(nèi)容通俗的講就是對(duì)固件分析技術(shù)人員要求很廣的技術(shù)面、很深的技術(shù)點(diǎn)、很強(qiáng)的心里素質(zhì)。
固件分析技術(shù)淺談
上面已提到過,固件分析由“固件”+“分析”兩部分組成,不了解固件,何談分析?“固件分析”--固件之所以在前面想必原因也在此。考慮到篇幅原因,這里對(duì)固件只做概要說明,不深究。
什么是固件?
什么是固件(firmware)?怎么理解固件?不同的人有不同的回答,但每種回答都會(huì)反映出回答者理解固件分析的思維層次。
固件是什么?固件是軟件的一種,也是一種程序。
固件是什么?固件(Firmware)就是寫入EPROM(可擦寫可編程只讀存儲(chǔ)器)或EEPROM(電可擦可編程只讀存儲(chǔ)器)中的程序(百度百科)。
固件是什么?固件是指設(shè)備內(nèi)部保存的設(shè)備“驅(qū)動(dòng)程序”,通過固件,操作系統(tǒng)才能按照標(biāo)準(zhǔn)的設(shè)備驅(qū)動(dòng)實(shí)現(xiàn)特定機(jī)器的運(yùn)行動(dòng)作,比如光驅(qū)、刻錄機(jī)等都有內(nèi)部固件(百度百科)。
以上回答都沒錯(cuò),我個(gè)人的回答是:固件是存儲(chǔ)在可由CPU直接或間接讀取指令/數(shù)據(jù)并可運(yùn)行的FLASH/ROM芯片里的二進(jìn)制數(shù)據(jù)集合,這些指令/數(shù)據(jù)集合是根據(jù)CPU內(nèi)核架構(gòu)及型號(hào),將高級(jí)編程語言(如C、C++等)由對(duì)應(yīng)的編譯器、鏈接器、裝載器生成并通過對(duì)應(yīng)的燒寫器將指令/數(shù)據(jù)集合燒寫到對(duì)應(yīng)設(shè)備里的存儲(chǔ)芯片中。固件之所以和軟件程序區(qū)分開來,是為了強(qiáng)調(diào)固件側(cè)重于智能設(shè)備、嵌入式設(shè)備、工控設(shè)備里運(yùn)行的程序,而非PC電腦、服務(wù)器、手機(jī)內(nèi)部的程序(只是側(cè)重并非絕對(duì),很多場合手機(jī)里的程序也被稱為固件)。
固件的位置是存儲(chǔ)在設(shè)備的FLASH/ROM芯片里,但展現(xiàn)在固件分析人員面前是提取出來后以文件的形式呈現(xiàn)。固件文件的格式并非固定不變,因廠家、設(shè)備不同而不同,目前常見的固件文件格式有:hex、bin、elf、axf、txt、ulmage等,對(duì)于固件分析人員,熟悉這些固件文件的內(nèi)部編碼規(guī)則、數(shù)據(jù)塊定義等細(xì)節(jié)尤為重要,否則拿到固件你也不認(rèn)識(shí)它,更無從分析它。
固件的由來--編譯、鏈接、裝載
對(duì)于固件,不僅知其然,知其所以然也很重要,雖說不同的固件,格式、編碼不同,但其由來大體相同,都是由高級(jí)編程語言經(jīng)編譯、鏈接、裝載生成而成,編譯、鏈接、裝載這3步6個(gè)字至關(guān)重要,是有效提升固件分析成功率的重點(diǎn)、難點(diǎn),對(duì)固件文件的形成機(jī)制、固件文件內(nèi)部函數(shù)構(gòu)造、內(nèi)部指令/RAM/數(shù)據(jù)分配機(jī)制、固件啟動(dòng)運(yùn)行機(jī)制等核心概念的深入理解非常有益。然而也只有深入理解了這些固件相關(guān)知識(shí),才能充分發(fā)揮固件分析的破解攻擊價(jià)值。
固件運(yùn)行機(jī)制
熟悉了什么是固件、固件的由來之后,在此,需要熟悉固件的運(yùn)行機(jī)制。不同種類的設(shè)備,其內(nèi)部固件運(yùn)行的細(xì)節(jié)都不一樣,但其運(yùn)行機(jī)制大體類似,一般比較常見的運(yùn)行機(jī)制是:上電boot->uboot->cos->applet,針對(duì)不帶操作系統(tǒng)的運(yùn)行機(jī)制一般是:上電-> boot-> applet或上電-> applet。這里僅作簡要說明,實(shí)際固件分析過程中,最好是對(duì)每一步里每個(gè)函數(shù)、每行代碼的功能都做到了如指掌,這樣才能充分發(fā)揮固件分析的破解攻擊價(jià)值。
固件分析其它必要技術(shù)
固件分析,離不開電路/器件分析,因此需要具備必要的數(shù)電、模電知識(shí);典型固件分析里,牽涉到固件提取、IO控制查詢、數(shù)字接口驅(qū)動(dòng)、中斷喚醒、工作模式切換、外圍器件的驅(qū)動(dòng)等方面,這些都離不開電路/器件分析。
固件分析,需要熟悉常用數(shù)據(jù)通信規(guī)約/協(xié)議簇(如TCP/IP協(xié)議簇、CAN總線),在你分析有關(guān)數(shù)據(jù)通信功能部分的固件時(shí),熟練掌握各類常用數(shù)據(jù)通信協(xié)議和底層對(duì)應(yīng)接口,會(huì)讓你在固件分析時(shí)如虎添翼,得心應(yīng)手。
固件分析,需要熟悉主流CPU/MCU處理器內(nèi)部體系架構(gòu)、內(nèi)部各硬件模塊工作原理(DMA、虛擬內(nèi)存管理、中斷處理、工作模式管理、外圍模塊等)、內(nèi)部存儲(chǔ)及運(yùn)行機(jī)制等,還有熟悉/能看懂并理解主流CPU/MCU匯編語言(寄存器級(jí)別操作)也很重要,在分析固件時(shí),對(duì)每個(gè)函數(shù)的初始化、數(shù)據(jù)處理、代碼跳轉(zhuǎn)、函數(shù)執(zhí)行等方面會(huì)讓你臨危不亂、思路清晰。
固件分析,熟悉相關(guān)加解密算法及安全通信、認(rèn)證機(jī)制架構(gòu)/原理,會(huì)讓你少走很多彎路,知道如何權(quán)衡利弊得失,避開暗坑,提升固件分析效率。
固件分析,學(xué)會(huì)使用對(duì)自己有用的相關(guān)工具(包括但不限于:IDAPro、binwalk等)會(huì)讓你事半功倍,這些工具會(huì)快速提升你的工作效率,讓你進(jìn)入狀態(tài),花更多的時(shí)間精力在固件分析上,而不是在固件分析的準(zhǔn)備路上。
固件分析,熟悉主流嵌入式操作系統(tǒng)工作原理及內(nèi)核工作原理(如linux、android等)也至關(guān)重要,然而這個(gè)也是最難的,因?yàn)橐钊肓私獠僮飨到y(tǒng)內(nèi)核的具體工作流程、任務(wù)調(diào)度機(jī)制、數(shù)據(jù)存儲(chǔ)分配細(xì)節(jié)、權(quán)限管理、進(jìn)程隔離保護(hù)/運(yùn)行機(jī)制等非常難,非一朝一夕能學(xué)成,需要時(shí)間、需要毅力、更需要智商,但是一旦掌握了這些知識(shí),在分析類似的固件時(shí),則很容易找出漏洞,而且是高危漏洞。當(dāng)然一旦達(dá)到此級(jí)別,個(gè)人認(rèn)為已是大牛級(jí)別、黑客級(jí)別了。
編后語
隨著信息安全的普及,固件分析不僅受到黑客愛好者們的青睞,廠家設(shè)計(jì)者也越來也重視固件的防護(hù),這無疑會(huì)加大固件分析的難度和降低固件分析的成功率,也正是因?yàn)檫@矛與盾的競爭關(guān)系,促使著網(wǎng)絡(luò)技術(shù)的不斷進(jìn)步,就看隨的步伐塊,步伐慢的人注定會(huì)有被攻擊破解的風(fēng)險(xiǎn)。
-
Android
+關(guān)注
關(guān)注
12文章
3943瀏覽量
127745 -
Linux
+關(guān)注
關(guān)注
87文章
11342瀏覽量
210155 -
硬件
+關(guān)注
關(guān)注
11文章
3380瀏覽量
66389 -
固件
+關(guān)注
關(guān)注
10文章
561瀏覽量
23122 -
硬件安全
+關(guān)注
關(guān)注
0文章
13瀏覽量
2471
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論