趙 露,康艷榮,劉思棋,龍 源,郭麗莉
(1.公安部物證鑒定中心,北京100038; 2.北京北亞安數(shù)科技有限公司,北京100094)
硬盤固件是控制著硬盤進(jìn)行數(shù)據(jù)讀寫(xiě)、管理數(shù)據(jù)存放位置、記錄缺陷扇區(qū)等操作的特殊軟件。通常硬盤固件是不會(huì)被計(jì)算機(jī)操作系統(tǒng)識(shí)別,傳統(tǒng)檢驗(yàn)設(shè)備和軟件無(wú)法訪問(wèn)硬盤固件,因此在電子數(shù)據(jù)取證過(guò)程中,硬盤固件區(qū)往往不被研究人員所重視。2015年,卡巴斯基安全實(shí)驗(yàn)室披露了一系列的硬盤固件區(qū)病毒[1]引起了國(guó)內(nèi)外電子物證、信息安全和數(shù)據(jù)恢復(fù)等領(lǐng)域研究人員的廣泛重視[2]。有技術(shù)能力的犯罪人員(如電信詐騙,網(wǎng)絡(luò)賭博等)可以通過(guò)修改硬盤固件將重要數(shù)據(jù)隱藏起來(lái)[3],同時(shí)硬盤固件區(qū)隱藏的病毒具有難發(fā)現(xiàn)難清除的特點(diǎn)[4],這意味著現(xiàn)有的檢驗(yàn)手段和數(shù)據(jù)恢復(fù)方法有可能存在檢測(cè)不全面的風(fēng)險(xiǎn)。
硬盤固件程序一直是各硬盤廠商的核心機(jī)密,因此對(duì)于硬盤固件的研究涉及到較多的逆向分析和破解。國(guó)際上針對(duì)硬盤固件區(qū)數(shù)據(jù)的研究比較權(quán)威的是俄羅斯ACE實(shí)驗(yàn)室及其出品的PC-3000 UDMA,但是對(duì)于機(jī)械硬盤市場(chǎng)一大巨頭的希捷硬盤目前只能做到獲取硬盤固件區(qū)系統(tǒng)文件,而不能獲取全部硬盤固件區(qū)數(shù)據(jù)。相對(duì)來(lái)說(shuō)另一款市場(chǎng)占有率較大的西部數(shù)據(jù)硬盤固件結(jié)構(gòu)較簡(jiǎn)單,由此展開(kāi)的研究較多。研究人員分別通過(guò)聯(lián)合測(cè)試工作組(Joint Test Action Group,JTAG)標(biāo)準(zhǔn)接口連接[5]、編程器連接[6]、通用異步收發(fā)傳輸器(universal asynchronous receiver/transmitter,UART)接口連接等多種方式對(duì)西部數(shù)據(jù)某一型號(hào)硬盤的帶電可擦可編程只讀存儲(chǔ)器(electrically erasable programmable read only memory,EEPROM)中的引導(dǎo)程序進(jìn)行了讀取、分析和修改[7]。也有人通過(guò)對(duì)硬盤固件區(qū)中缺陷替換機(jī)制[8]等方面來(lái)分析篡改硬盤固件對(duì)電子取證造成的影響并提出相應(yīng)策略[9]。
由于我國(guó)尚不具備硬盤固件研發(fā)技術(shù),因此研究起步較晚,并且主要應(yīng)用于硬盤故障維修領(lǐng)域。產(chǎn)品方面如成都效率源公司推出的故障硬盤數(shù)據(jù)恢復(fù)產(chǎn)品、北京北亞硬盤固件維修工具等,可以解決硬盤固件問(wèn)題造成的數(shù)據(jù)丟失等問(wèn)題。學(xué)術(shù)研究方面,國(guó)內(nèi)一些研究人員對(duì)硬盤固件的虛擬[10]、故障預(yù)測(cè)[11]、硬盤固件病毒防治[12]和硬盤固件漏洞定位[13]等方面進(jìn)行了研究,不過(guò)這些研究主要是應(yīng)用PC-3000等類似工具獲取到硬盤固件數(shù)據(jù)后進(jìn)行硬盤固件結(jié)構(gòu)的分析及其它應(yīng)用,沒(méi)有涉及到對(duì)硬盤固件數(shù)據(jù)提取等前期基本技術(shù)方法的研究。
本文將對(duì)希捷官方硬盤固件升級(jí)包進(jìn)行逆向分析,由此給出一種基于串口模式獲取希捷硬盤固件級(jí)工廠指令的方法。首先,通過(guò)清空電路板只讀內(nèi)存鏡像(read only memory image,ROMI)數(shù)據(jù)后,進(jìn)行串口操作的方式,確定工廠指令操作硬盤的可行性;再利用希捷廠商硬盤固件升級(jí)包中數(shù)據(jù)進(jìn)行分析,發(fā)現(xiàn)其中的工廠指令幫助文檔,用其獲取工廠指令工作條件及使用方法;最后,通過(guò)獲取到的工廠指令進(jìn)行硬盤固件讀取實(shí)驗(yàn),證明了通過(guò)工廠指令方式操作硬盤固件的可行性和有效性。
希捷機(jī)械硬盤除了數(shù)據(jù)接口和供電接口外,還有一個(gè)接口平時(shí)并不常用,就是硬盤的串口,在硬盤正常的數(shù)據(jù)讀寫(xiě)過(guò)程中是不需要使用的。這個(gè)接口是廠商在硬盤出廠前進(jìn)行調(diào)試,或者維修硬盤故障時(shí)使用的接口[14]?;谟脖P串口的這些作用,嘗試通過(guò)串口對(duì)硬盤參數(shù)信息等硬盤固件數(shù)據(jù)進(jìn)行讀取和修改。
為了確定通過(guò)串口模式使用工廠指令方式對(duì)硬盤固件進(jìn)行操作的可行性,首先需要確定串口模式下的工廠指令在硬盤中的工作條件,明確通過(guò)工廠指令方式是否能夠?qū)ο=萦脖P進(jìn)行足夠的控制權(quán),從而獲取到硬盤固件區(qū)的全部數(shù)據(jù)。將電路板ROM中的數(shù)據(jù)全部清空,再通過(guò)超級(jí)終端軟件[15]發(fā)送命令觀察硬盤是否還會(huì)顯示回顯數(shù)據(jù)。如果仍然能夠顯示則表明工廠指令運(yùn)行級(jí)別低于硬盤電路板ROM硬盤固件,由電路板主芯片提供對(duì)外數(shù)據(jù)連接,可以通過(guò)工廠指令方式對(duì)希捷硬盤進(jìn)行完全控制,包括由于硬盤固件或者壞道等原因不能正常識(shí)別的硬盤。
首先將一塊希捷硬盤電路板連接到編程器并使用編程器清空電路板上全部ROM數(shù)據(jù),打開(kāi)超級(jí)終端軟件,使用通用串行總線(universal serial bus,USB) 轉(zhuǎn)邏輯門電路(transistor-transistor logic,TTL)轉(zhuǎn)接線連接硬盤,可以看到硬盤主芯片的回顯信息為圖1,說(shuō)明希捷硬盤在沒(méi)有電路板ROM的情況下,主芯片可以獨(dú)立工作,而且支持對(duì)外進(jìn)行TTL連接。從回顯信息中可以查看到該模式下支持的命令有“DS”、“AP”、“WT”等一系列命令。在當(dāng)前模式下輸入回顯信息列出的任一指令,如“AP10”,硬盤依舊有響應(yīng),這說(shuō)明工廠指令運(yùn)行在希捷硬盤最底層,通過(guò)工廠指令方式對(duì)希捷硬盤固件進(jìn)行操作的方法是可行的。
圖1 電路板ROM程序清空后硬盤回顯信息
通過(guò)串口模式對(duì)硬盤固件進(jìn)行操作需要輸入一些特殊命令,但因操作硬盤固件的指令是硬盤廠家的核心機(jī)密,無(wú)法在公開(kāi)渠道獲取到。不過(guò),希捷公司對(duì)出廠的硬盤會(huì)不定期發(fā)布硬盤固件升級(jí)包來(lái)進(jìn)行一些硬盤固件修補(bǔ)操作,以提高硬盤性能和修復(fù)一些錯(cuò)誤,這其中必然包含部分硬盤固件數(shù)據(jù)。作為唯一可以獲取到官方硬盤固件數(shù)據(jù)的合法途徑,對(duì)硬盤固件升級(jí)包進(jìn)行研究是掌握硬盤固件結(jié)構(gòu)和指令功能的一個(gè)方法,因此,希捷官方發(fā)布的硬盤固件升級(jí)包成為了用來(lái)研究硬盤固件指令的一個(gè)對(duì)象。
以希捷“Barracuda 7200.12”系列硬盤為例,該系列硬盤在希捷官網(wǎng)提供硬盤固件修復(fù)程序,新的硬盤固件版本為CC49[16],通過(guò)官網(wǎng)查詢?cè)摪姹居脖P固件適用型號(hào)及對(duì)應(yīng)容量如表1。
通過(guò)希捷官方網(wǎng)站下載后綴名為“.iso”的硬盤固件升級(jí)程序,對(duì)其進(jìn)行解壓,得到如圖2中的文件。其中如“Autorun.inf”、“README.txt”等文件的作用比較一目了然不再贅述,另外發(fā)現(xiàn)一個(gè)名為“PH-CC49.ima”的文件,通過(guò)后綴名分析該文件為一個(gè)軟盤鏡像文件。
使用16進(jìn)制查看器軟件(如 WinHex)打開(kāi)“PH-CC49.ima”文件,如圖 3,從解析出的文件頭信息中可知該文件是一個(gè)被FreeDOS[17]操作系統(tǒng)格式化出來(lái)的FAT12文件系統(tǒng)鏡像。
表1 CC49版本硬盤固件升級(jí)包適用硬盤型號(hào)
圖2 CC49版本硬盤固件升級(jí)包解壓縮
圖3 “PH-CC49.ima”文件頭解析
進(jìn)一步解析該文件系統(tǒng),發(fā)現(xiàn)一個(gè)名為“LOD.zip”的壓縮文件,如圖4,提取并解壓縮該文件,如圖5。發(fā)現(xiàn)文件中有三個(gè)后綴名為“.LOD”的未知文件,且文件名有規(guī)則性,分別為“PHCC491H、PHCC492H、PHCC494H”。
通過(guò)表1可知“CC49”版本的硬盤固件支持硬盤容量從160G到1T不等,所以,分析“1H”、“2H”、“4H”分別代表對(duì)應(yīng)支持的硬盤的磁頭數(shù)。例如ST3160318AS是160G硬盤,硬盤中只有一個(gè)磁頭所以使用PHCC491H文件進(jìn)行硬盤固件升級(jí),ST31000528AS是1T容量有4個(gè)磁頭就需要使用PHCC494H進(jìn)行升級(jí)。
圖4 “PH-CC49.ima”文件系統(tǒng)解析
圖5 “LOD.zip”文件解壓縮
繼續(xù)對(duì)LOD文件進(jìn)行分析,發(fā)現(xiàn)大量美國(guó)信息交換標(biāo)準(zhǔn)代碼(American standard code for information interchange,ASCII)字符,類似于一種特殊命令,而且這些命令自帶幫助說(shuō)明,并有工作級(jí)別區(qū)分,且工作級(jí)別眾多,有“6級(jí)”、“全部級(jí)別”等和改變指令級(jí)別的命令“/”,如圖6。已知在某個(gè)級(jí)別下的Q命令為硬盤所有指令的詳細(xì)幫助文檔,通過(guò)運(yùn)行這個(gè)命令可以對(duì)了解硬盤固件的大體信息有很大程度的幫助。
使用USB轉(zhuǎn)TTL轉(zhuǎn)接線連接到硬盤串口,通過(guò)超級(jí)終端軟件從1級(jí)到Z級(jí)依次測(cè)試能夠顯示完整指令幫助信息的Q命令的工作級(jí)別。測(cè)試完成發(fā)現(xiàn)工作在C級(jí)別下的Q命令為指令幫助,可以打印出硬盤所支持的所有指令參數(shù),如圖7,可以通過(guò)指令的描述信息進(jìn)一步研究指令的具體功能。
圖6 LOD文件中的部分指令級(jí)別說(shuō)明
圖7 C級(jí)別下的Q命令功能說(shuō)明
通過(guò)對(duì)各命令級(jí)別和指令的功能進(jìn)行分析,發(fā)現(xiàn)通過(guò)工廠指令可以實(shí)現(xiàn)很多重要的功能,如參數(shù)修改,清空自我監(jiān)測(cè)分析與報(bào)告技術(shù)(selfmonitoring, analysis and reporting technology,SMART)表中數(shù)據(jù),硬盤固件數(shù)據(jù)讀取等多種功能,由于工廠指令級(jí)別和指令眾多無(wú)法詳述,現(xiàn)將整理出的部分較常用的工廠指令功能和指令對(duì)應(yīng)級(jí)別列舉如表2。
表2 常用希捷機(jī)械硬盤工廠指令及功能
通過(guò)對(duì)工廠指令功能分析發(fā)現(xiàn)硬盤工廠指令可以實(shí)現(xiàn)很多功能,比如硬盤固件的讀取,硬盤參數(shù)修改等等,由于硬盤固件數(shù)據(jù)的完整讀取是進(jìn)行硬盤固件結(jié)構(gòu)分析的前提,選取比較有代表性的幾款希捷硬盤型號(hào),并分別通過(guò)工廠指令方式和使用PC-3000進(jìn)行硬盤固件數(shù)據(jù)讀取,并對(duì)比讀取數(shù)據(jù)大小。
首先通過(guò)超級(jí)終端獲取每塊硬盤固件區(qū)范圍,計(jì)算硬盤固件區(qū)數(shù)據(jù)大小并記錄;再使用PC-3000讀取硬盤固件區(qū)數(shù)據(jù),記錄讀取數(shù)據(jù)大小;最后再使用上文獲取的工廠指令方式來(lái)讀取同一塊硬盤的硬盤固件區(qū)數(shù)據(jù),記錄其讀取的數(shù)據(jù)大小。
實(shí)驗(yàn)結(jié)果如表3。實(shí)驗(yàn)結(jié)果顯示:
(1)通過(guò)PC-3000讀系統(tǒng)文件功能獲取的硬盤固件數(shù)據(jù)小于硬盤固件區(qū)數(shù)據(jù)實(shí)際大小;
(2)通過(guò)工廠指令方式讀取的硬盤固件區(qū)數(shù)據(jù)大于通過(guò)PC-3000讀系統(tǒng)文件功能獲取到的硬盤固件區(qū)數(shù)據(jù)大小;
(3)通過(guò)工廠指令方式讀取硬盤固件區(qū)數(shù)據(jù)大小與硬盤固件區(qū)數(shù)據(jù)實(shí)際大小基本一致,但是部分型號(hào)讀取的硬盤固件區(qū)數(shù)據(jù)與硬盤固件區(qū)數(shù)據(jù)實(shí)際大小有所差異。
經(jīng)分析,造成個(gè)別型號(hào)硬盤使用工廠指令方式讀取的硬盤固件鏡像數(shù)據(jù)與硬盤固件區(qū)數(shù)據(jù)實(shí)際大小存在差異的原因是由于硬盤固件區(qū)數(shù)據(jù)實(shí)際大小是根據(jù)硬盤固件區(qū)起始地址和結(jié)束地址計(jì)算出來(lái)的,這其中包含沒(méi)有被磁化使用的磁道,這樣的磁道無(wú)法存儲(chǔ)數(shù)據(jù),因此在使用工廠指令方式進(jìn)行讀取的時(shí)候也無(wú)法讀取,造成讀取數(shù)據(jù)比硬盤固件區(qū)實(shí)際數(shù)據(jù)大小略小。
通過(guò)以上實(shí)驗(yàn)結(jié)果和分析,說(shuō)明通過(guò)工廠指令方式可以讀取希捷硬盤固件鏡像數(shù)據(jù),并且讀取硬盤固件鏡像數(shù)據(jù)較完整,結(jié)果優(yōu)于通過(guò)PC-3000讀系統(tǒng)文件功能獲取的硬盤固件數(shù)據(jù)。
表3 硬盤固件讀取實(shí)驗(yàn)結(jié)果
硬盤固件數(shù)據(jù)是控制硬盤運(yùn)行的核心程序,對(duì)于硬盤固件的研究無(wú)論在電子取證、信息安全、數(shù)據(jù)恢復(fù)等領(lǐng)域都是非常重要的課題,而對(duì)于硬盤固件的研究應(yīng)該建立在對(duì)硬盤固件數(shù)據(jù)的完全獲取和操作的基礎(chǔ)之上。文中提出的通過(guò)逆向分析希捷硬盤固件升級(jí)程序得到工廠指令,再在串口模式下通過(guò)工廠指令操作希捷硬盤的方法,通過(guò)實(shí)驗(yàn)證明了可以有效對(duì)希捷硬盤固件數(shù)據(jù)進(jìn)行完整提取,為電子取證和信息安全領(lǐng)域的硬盤固件研究提供一種可行的技術(shù)方法。由于篇幅和研究時(shí)間有限,文中僅僅介紹了硬盤固件級(jí)工廠指令的一種應(yīng)用方法,在獲取到硬盤固件鏡像之后通過(guò)對(duì)硬盤固件的分析可以產(chǎn)生更多應(yīng)用,如篡改檢測(cè),隱藏?cái)?shù)據(jù)恢復(fù)等,今后課題組將對(duì)工廠指令的應(yīng)用方法進(jìn)行更多研究,并將研究拓展到更多型號(hào)和品牌的硬盤。