硬盤:如果你在看這篇文章,我肯定你起碼用過一兩個(gè)硬盤。硬盤很簡單,基本就是一些512字節(jié)的扇區(qū),由遞增的數(shù)字標(biāo)明地址,稱之為 LBA,也就是“邏輯塊尋址”。電腦可以向連接的硬盤的扇區(qū)中讀寫數(shù)據(jù)。通常會(huì)有個(gè)文件系統(tǒng)把這些扇區(qū)抽象成文件或文件夾。
如果你從這個(gè)幼稚的角度看硬盤,你會(huì)認(rèn)為硬件應(yīng)該也很簡單:你需要的就是個(gè)能連接SATA接口的東西,然后可以定位讀寫頭,從盤片上讀寫數(shù)據(jù)。但是可能不止這么簡單:硬盤不是還有處理壞塊、S.M.A.R.T.屬性的功能么?不是還有什么緩存需要管理的么?
以上這些意味著硬盤中有些智能的東西,有智能就意味著可以黑掉它。有人就喜歡可以黑的東西,于是我決定要看看硬盤是如何在非機(jī)械層面上工作的。這種研究以前在很多硬件上做過:從筆記本的PCI擴(kuò)展模塊到嵌入式控制器,甚至是蘋果的鍵盤。通常這些研究都是為了證明這些硬盤可以被破解,導(dǎo)致其受到軟件的影響,于是我決定達(dá)到同樣的目標(biāo):我要在這次破解中讓硬盤繞過軟件安全機(jī)構(gòu)。
PCB上的部件
要想知道硬盤是否可
以被破解,我需要更了解它們。如咋們大多數(shù)人一樣,我們手上也有一摞或壞或舊的硬盤,下面來一看究竟:
當(dāng)然了,我們都知道硬盤的機(jī)械結(jié)構(gòu)應(yīng)該是好用的,我對那些部分也不感興趣。我的興趣在于大多數(shù)硬盤背面都有的那一小塊PCB板子,上面有SATA接口和電源接口。這種PCB看起來是這樣的:
可以看見PCB上有四塊芯片。接下來說說這些芯片:
這是一塊DRAM(動(dòng)態(tài)隨機(jī)存儲(chǔ)器)。這塊很好處理,芯片手冊很好找。這些芯片的容量一般在8MB到64MB之間,對應(yīng)的就是硬盤標(biāo)稱的緩存容量。
這個(gè)是電機(jī)控制器。這不是個(gè)標(biāo)準(zhǔn)器件,數(shù)據(jù)手冊不好找,但是這些控制器一般都有容易找的差不多的同系列產(chǎn)品。ST Smooth控制器大概是最常用的一種了;除了驅(qū)動(dòng)電機(jī),它還能進(jìn)行電源整流,還帶一些A/D變換通道。
這是一塊串行閃存。這個(gè)也好處理,容量一般在64KB到256KB之間??雌饋磉@個(gè)是用來存儲(chǔ)硬盤控制器的啟動(dòng)程序。有些硬盤沒有這個(gè)芯片,而是在控制器芯片內(nèi)部有閃存來存儲(chǔ)程序。
這些小東西不是芯片,而是壓電震動(dòng)傳感器。當(dāng)硬盤受到撞擊時(shí),它們可以把磁頭移到安全的地方,但是更有可能它在某個(gè)地方標(biāo)記一個(gè)值,表示你的保修無效,因?yàn)槭悄阕约核さ挠脖P。
這里才是奇跡將要發(fā)生的地方:硬盤控制器。多是由Marvell、ST或者其他的LSI公司制造。有些硬盤廠商自己做控制器:我見過三星和西數(shù)就有自己的控制芯片。因?yàn)槠渌牟糠侄己芎锰幚?,這一塊才是我的興趣所在。
不幸的是,這些芯片都沒有文檔。話說這些制造控制器的廠商不公開文檔有些不厚道真是說輕了:他們甚至在自己的網(wǎng)站上都不提這些芯片!更不幸的是,整個(gè)互聯(lián)網(wǎng)也幫不了我:搜這些芯片手冊只能找到?jīng)]有手冊的手冊網(wǎng)站,和賣芯片的中國廠商……
那么,沒有最重要的芯片手冊,就意味著我們的計(jì)劃擱淺了么?
連接JTAG
幸運(yùn)的是,總有些辦法找到除了芯片手冊以外的有用信息。我就搜到這么一個(gè)。
我找的是HDDGuru論壇上一個(gè)叫Dejan的人做的連接線。Dejan不知怎么把他硬盤控制器的內(nèi)部閃存廢掉了,然后想知道有沒有辦法,要么從外部閃存啟動(dòng)控制器,要么重寫一下內(nèi)部閃存。過了五天,沒人回應(yīng)他,但是這哥們很有創(chuàng)造力:他又發(fā)了個(gè)帖子說他找到了JTAG口的管腳。這真是個(gè)重大發(fā)現(xiàn):JTAG接口可以用來控制控制器。你可以用它啟動(dòng)控制器、重啟、修改內(nèi)存、設(shè)置斷點(diǎn)等等。然后Dejan發(fā)現(xiàn)了如何關(guān)掉控制器的啟動(dòng)ROM,找到了硬盤一個(gè)串口,然后試圖恢復(fù)他的閃存ROM。后來他又提了一些關(guān)于更新閃存的過程,最后消失在茫茫人海中了。
這些都是有用的信息:至少我知道了西部數(shù)據(jù)的控制器是ARM內(nèi)核的,有JTAG接口。這些硬盤通常有串口,雖然沒有使用但是可以用來調(diào)試程序。有了這些,我應(yīng)該有足夠的信息可以開始破解了。
嗯,這些是我的準(zhǔn)備工作:
那個(gè)紅色的是一塊FT2232H的小板,大概300來元,很便宜,可以用來進(jìn)行JTAG調(diào)試,串口,還有SPI通信。把它連到硬盤的JTAG口,還有串口上。硬盤直接連到我電腦主板的SATA口上,還有外部ATX電源。我用OpenOCD來驅(qū)動(dòng)JTAG接口。
現(xiàn)在的問題是:這玩意真能工作么?Dejan用的是88i6745控制器的2.5” 250G硬盤,他檢測到的是ARM9內(nèi)核。我找的是88i6745控制器的3.5” 2TB硬盤,有不同的格式因素,而且有點(diǎn)新。幸運(yùn)的是,OpenOCD可以自動(dòng)檢測JTAG連接的設(shè)備。如下所示:
這我就有點(diǎn)搞不懂了……我本來估計(jì)會(huì)有一個(gè)tap,就是單獨(dú)的ARM內(nèi)核……可這里竟然有三個(gè)tap……難道這個(gè)片子有三個(gè)ARM內(nèi)核?
一番研究后,我發(fā)現(xiàn)這個(gè)芯片真的是有三個(gè)內(nèi)核。兩個(gè)是Feroceon的內(nèi)核,是比較牛逼的類似ARM9的內(nèi)核,還有一個(gè)是Crotex-M3內(nèi)核,比較小,相比更像微控制器的核心。鼓搗了一陣(以及后來的研究)發(fā)現(xiàn)這些控制器各自有不同的功能:
Feroceon 1 處理對磁盤的物理讀寫操作
Feroceon 2 處理SATA接口
Feroceon 2 同時(shí)處理緩存以及將邏輯塊尋址翻譯成柱面/磁頭/扇區(qū)
Cortex-M3 貌似啥都不管?我給他關(guān)掉硬盤也沒啥問題。
現(xiàn)在從哪個(gè)核心開始破解呢?我的目標(biāo)是通過使用修改的硬盤固件來影響系統(tǒng)的安全。最簡單的方法,同時(shí)也可能是最難檢測的方法就是直接修改數(shù)據(jù)。這種方法不需要修改磁盤上的數(shù)據(jù),固件可以使自己隱身不可見。為此,我需要找到一個(gè)合適的核心來進(jìn)行監(jiān)聽:我需要一個(gè)能在從硬盤到SATA線的傳輸過程中接觸到數(shù)據(jù)的核心,同時(shí)可以被操縱在磁盤和SATA線纜之間修改數(shù)據(jù)。
現(xiàn)在,數(shù)據(jù)是如何從硬盤盤片上送到SATA借口上的呢?憑黑客的直覺,我推測:如果處理器工作在150MHz,使用標(biāo)準(zhǔn)的內(nèi)存復(fù)制,它們就只能達(dá)到150*23/2=2.4Gbp的速率,而實(shí)際情況要比這個(gè)少很多。硬盤的速度是6Gbps,所以肯定有些加速硬件參與其中。最可能的加速硬件應(yīng)該就是使用DMA(直接訪問內(nèi)存)。那就意味著數(shù)據(jù)直接從磁頭讀回來放進(jìn)內(nèi)存,沒有處理器的參與。SATA口也是一樣:處理器只指明數(shù)據(jù)在哪里,DMA會(huì)直接從內(nèi)存中讀數(shù)據(jù)。
如果是這樣的話,DMA引擎指向的內(nèi)存會(huì)在哪呢?硬盤的緩存是個(gè)好地方:數(shù)據(jù)從磁盤讀出來總是要放進(jìn)緩存的,所以當(dāng)讀取磁盤的時(shí)候馬上去那里復(fù)制也就說的通了。我之前發(fā)現(xiàn)第二個(gè)Feroceon負(fù)責(zé)管理緩存;于是它就成了我的首選目標(biāo)。
就這樣,我推斷數(shù)據(jù)通過DMA來讀寫,不需要任何CPU動(dòng)作。現(xiàn)在的問題是:既然CPU不會(huì)在正常操作中接觸數(shù)據(jù),那么CPU能不能(非正常地)接觸到數(shù)據(jù)呢?為了解答這個(gè)問題,我首先使用JTAG連接,用了一些反匯編,來看看Feroceon2號的內(nèi)存。
如你所見,內(nèi)存圖有些零碎。RAM中有一些小塊散落著,還有一些IO空間和IRQ空間,以及一塊內(nèi)部啟動(dòng)的ROM。還有一塊64MB的數(shù)據(jù)段,我猜這個(gè)是用作緩存的DRAM。一起來看看是不是這樣。首先,我把硬盤加載到我的電腦上,在硬盤上的一個(gè)文件里寫入「Hello world」?,F(xiàn)在看看我是否能從64MB的內(nèi)存中找到這個(gè)字符串。
沒錯(cuò),找到了!看起來Feroceon2號可以讀取緩存,并對這塊64MB的DRAM進(jìn)行了地址映射。
注入代碼
當(dāng)然了,如果我想要在緩存里修改數(shù)據(jù),我可不能每次都完全掃描整個(gè)64MB的緩存:我需要知道緩存是如何工作的。為此,我需要進(jìn)行反匯編并理解硬盤的固件,至少要明白緩存的函數(shù)。
對固件進(jìn)行反匯編,可不是個(gè)簡單的活。首先,代碼混合了ARM和Thumb指令,如果你沒有自動(dòng)切換兩種指令的反匯編器就很令人抓狂了。而且,沒有那些能使反匯編更簡單的信息了:一般程序都被寫好了,當(dāng)有東西出錯(cuò)總會(huì)彈出類似「Couldn’t open logfile!」的信息。這些信息對于了解代碼功能有很大幫助。而這個(gè)固件,一條信息都沒有:你得自己看代碼來知道代碼在做什么。代碼庫好像有點(diǎn)老,而且有些時(shí)候反匯編的感覺就像給代碼加了很多特性,把所有事情都搞得更復(fù)雜。
當(dāng)然,也有幾件事使得反匯編相對簡單些。首先呢,西部數(shù)據(jù)沒有故意混淆代碼:沒有在指令中間用些跳轉(zhuǎn)的招數(shù)。還有,因?yàn)镴TAG接口的存在,你可以干預(yù)代碼的執(zhí)行,設(shè)置斷點(diǎn),或者直接修改,讓你非常容易地知道程序在做什么。
我看了很久代碼,試著去理解,有時(shí)候用調(diào)試器驗(yàn)證我猜的對不對,最后我找到了緩存系統(tǒng)的核心代碼:在RAM中的一個(gè)表,我稱之為「緩存描述符表」。
緩存描述表的每一項(xiàng)描述了緩存中的一個(gè)塊。它包含了可能在緩存中的磁盤扇區(qū)的起始LBA、緩存中存有多少硬盤數(shù)據(jù)、一些標(biāo)明了緩存項(xiàng)的狀態(tài)標(biāo)志符,還有一個(gè)標(biāo)明了緩存數(shù)據(jù)在內(nèi)存中未知的數(shù)。
現(xiàn)在,緩存描述符表的秘密還沒有被揭開,我能否在數(shù)據(jù)送出SATA口之前截?cái)啻疟P讀取碼?為此,我需要在磁盤控制器上執(zhí)行我自己的代碼。不僅如此,我還需要確定代碼能否在正確的時(shí)間運(yùn)行:如果它修改緩存太早,數(shù)據(jù)還沒進(jìn)去;如果太晚的話,數(shù)據(jù)已經(jīng)送到PC了。
我的方法是綁定在一個(gè)已存在的任務(wù)上。我破解的是Feroceon2號,這個(gè)CPU負(fù)責(zé)所有的SATA傳送,所以肯定有個(gè)服務(wù)是負(fù)責(zé)設(shè)置SATA硬件去緩存中讀取數(shù)據(jù)。如果我找到這個(gè)服務(wù),我就可能在它之前運(yùn)行我的代碼。
在看了很多代碼,設(shè)置了很多斷點(diǎn),修改了很多次之后,我最終找到了某個(gè)符合條件的服務(wù)。我通過連接讓這個(gè)服務(wù)在執(zhí)行前先運(yùn)行我的代碼。這是原來的代碼:
000167BE ; r0 - slot in sata_req
000167BE sub_0_167BE:
000167BE ? ? ? ? ? ? ? ? PUSH ? ?{R4-R7,LR}
000167C0 ? ? ? ? ? ? ? ? MOVS ? ?R7, R0
000167C2 ? ? ? ? ? ? ? ? LSLS ? ?R1, R0, #4
000167C4 ? ? ? ? ? ? ? ? LDR ? ? R0, =sata_req
000167C6 ? ? ? ? ? ? ? ? SUB ? ? SP, SP, #0x14
000167C8 ? ? ? ? ? ? ? ? ADDS ? ?R6, R1, R0
000167CA ? ? ? ? ? ? ? ? LDRB ? ?R1, [R6,#0xD]
000167CC ? ? ? ? ? ? ? ? LDR ? ? R2, =stru_0_40028DC
000167CE ? ? ? ? ? ? ? ? STR ? ? R1, [SP,#0x28+var_1C]
000167D0 ? ? ? ? ? ? ? ? LDRB ? ?R0, [R6,#(off_0_FFE3F108+2 - 0xFFE3F0FC)]
000167D2 ? ? ? ? ? ? ? ? LDRB ? ?R5, [R6,#(off_0_FFE3F108 - 0xFFE3F0FC)]
000167D4 ? ? ? ? ? ? ? ? LSLS ? ?R0, R0, #4
這是改成連接到我的代碼之后:
如你所見,原來的指令被跳轉(zhuǎn)到的新代碼替代了,新代碼放在本來沒用到的地址0xFFE3F000,然后又加了一句,保證代碼域的校驗(yàn)和有效。如果沒這么做的話,硬盤會(huì)嘗試從盤片上讀取備份,那可不是我想要的。跳轉(zhuǎn)的代碼執(zhí)行了一個(gè)服務(wù),叫做「changeThingsInCache」然后執(zhí)行修改代碼本該做的指令。最后接著執(zhí)行本來的服務(wù)好像什么也沒發(fā)生過一樣。
現(xiàn)在我要寫的就是修改緩存數(shù)據(jù)的服務(wù)。首先做個(gè)測試,我決定用一個(gè)下面的用偽代碼寫的服務(wù):
這一小段代碼會(huì)在每次調(diào)用的時(shí)候用0×12345678代替緩存中每個(gè)扇區(qū)的前四個(gè)字節(jié),所以如果我把這個(gè)上傳到硬盤的話,我在我看到的每個(gè)扇區(qū)前面都會(huì)看到這個(gè)數(shù)字。我通過JTAG上傳了代碼……
然后你看:
一勞永逸
當(dāng)然了,我可以將固件完全破解,但是每次硬盤啟動(dòng)都需要用JTAG修改RAM,這就得不償失了。我得讓它保持不變,也就是說,我要把我的修改存在某個(gè)地方,每次硬盤啟動(dòng)都會(huì)帶上這段修改程序。
我選的地方是閃存。我大概也可以放在磁盤本身的保留扇區(qū)上,但是如果我一旦弄錯(cuò)的話,我就沒法恢復(fù)我的硬盤了。閃存芯片只是一個(gè)八個(gè)腳的標(biāo)準(zhǔn)件,所以我可以輕松地摘下來,刷掉閃存再裝回去。為此,我把它焊下來然后放到萬用板上,這樣我就可以在編程器和硬盤之間輕松切換了。
現(xiàn)在,應(yīng)該在閃存里寫什么呢?很幸運(yùn)的是,芯片中存儲(chǔ)的格式已經(jīng)找到了:它包含了多塊數(shù)據(jù),還有一個(gè)表在最開始描述了這些數(shù)據(jù)。這個(gè)表描述了閃存中代碼塊的位置,如何壓縮的(如果壓縮了的話),代碼塊應(yīng)該在放在RAM的什么位置,而且在最后的地址中是一個(gè)執(zhí)行指針,標(biāo)記了啟動(dòng)器應(yīng)該跳到什么地方去執(zhí)行程序。
不幸的是,我不能修改閃存中的代碼;我想加鉤子的地方的數(shù)據(jù)被某種不知道的壓縮算法壓縮了,我就不能修改了。然而我能做的是增加一個(gè)額外的代碼塊,修改執(zhí)行地址這樣這個(gè)代碼塊就可以在其他之前執(zhí)行了。這樣一來就簡單多了。當(dāng)我的代碼塊執(zhí)行的時(shí)候,我就可以在已經(jīng)解壓的代碼中加入我的鉤子了。
當(dāng)然,我得反匯編,再重編譯閃存的二進(jìn)制代碼。我為此做了個(gè)小工具,非常俗地起名為「fwtool」。這個(gè)小工具可以讀出閃存中的很多數(shù)據(jù)塊,并把頭翻譯成文本文件以方便修改。接著你就可以修改,刪除或者加上代碼,然后重新編譯成一個(gè)固件,準(zhǔn)備刷回去。我用它把我的代碼加到鏡像中,再刷回到芯片里,把芯片裝回硬盤,啟動(dòng)備份的文件,然后:
結(jié)果并不新鮮:就是我之前做過的。唯一的變化就是我不用JTAG就能辦到了。
刷軟件
雖然閃存這邊有了很大進(jìn)展,我還是不能開始我的黑客腳本:我相信不會(huì)有任何一個(gè)服務(wù)器公司會(huì)接受這些帶有反匯編又重匯編的芯片的硬盤。我需要想個(gè)辦法能讓芯片不從板子上摘下來就可以刷固件,最好是能直接在硬盤安裝的電腦上刷。
西部數(shù)據(jù)的固件升級工具為此提供了可能性:這個(gè)工具簡單地在DOS環(huán)境下的把新固件寫進(jìn)閃存和服務(wù)區(qū)——也就是保留扇區(qū)。根據(jù)網(wǎng)上資料,這個(gè)工具使用的所謂「Vendor Specific Commands」命令。也有一些其他的工具可以修改固件:比如,有一種概念驗(yàn)證性的代碼,可以使用未使用的保留扇區(qū)來隱藏?cái)?shù)據(jù)。最后有一組工具叫做「idle3-tools」可以通過修改固件中的字節(jié)來修改硬盤的閑置行為。這個(gè)代碼同樣使用VSC,通過Linux系統(tǒng)的SCSI(小型計(jì)算機(jī)系統(tǒng)接口)直通IOCTLS(輸入輸出控制系統(tǒng))這種「正式」的途徑來修改代碼。我需要「借用」它的源代碼,修改一下然后整合到我的fwtool里面。在胡亂猜了一陣VSC參數(shù)之后,fwtool突然可以讀寫電腦上硬盤的閃存芯片了。
有了這個(gè)工具,我的攻擊基本完成了,如果一個(gè)黑帽子黑客獲得了一個(gè)帶有這樣硬盤驅(qū)動(dòng)器的服務(wù)器的最高權(quán)限,他就可以使用fwtool遠(yuǎn)程獲取硬盤閃存,修改然后刷回去。最終,主機(jī)的主人會(huì)發(fā)現(xiàn)我用他的主機(jī)為非作歹,然后可能會(huì)重裝系統(tǒng),斷掉黑客原來進(jìn)入主機(jī)的路。
但是有了這個(gè)破解了的固件,攻擊者可以操縱硬盤在新安裝的系統(tǒng)里繼續(xù)為非作歹。首先他需要觸發(fā)行為,這需要事先在硬盤里寫入一個(gè)破解固件需要的某個(gè)特定字符串。這個(gè)字符串可以在任何一個(gè)文件中:攻擊者可以向服務(wù)器上傳一個(gè)帶有代碼的.jpeg文件。他也可以通過向服務(wù)器發(fā)送在URL中追加了特定代碼的文件請求來實(shí)現(xiàn)。這最終會(huì)在服務(wù)器的記錄文件中結(jié)束,觸發(fā)利用。
接下來,被破解的硬盤固件就開始搗亂了。比如,他會(huì)等待主機(jī)讀出/etc/shadow中的文件,其中存儲(chǔ)了Unix/Linux的所有密碼,然后立即修改成攻擊者之前寫進(jìn)去的一些東西。當(dāng)攻擊者之后嘗試用他自己的密碼登入系統(tǒng)的時(shí)候,主機(jī)會(huì)根據(jù)修改過的/etc/shadow判斷密碼,攻擊者就可以再次輕松登錄。
這是我做的演示。你可以看見我沒能成功登錄主機(jī)的根用戶。然后我啟動(dòng)破解,給它一個(gè)代替密碼的哈希值,也就是密碼「test123」。因?yàn)長inux系統(tǒng)把影子文件緩存了(如同所有最近存取的文件),我需要制造很多硬盤活動(dòng)把緩存清出去;這樣,當(dāng)我再次登錄的時(shí)候,Linux系統(tǒng)會(huì)再次讀取磁盤上的影子文件。最終,緩存已清空,我可以用假的「test123」密碼登錄根用戶了。
其他用法
當(dāng)然了,恢復(fù)服務(wù)器中清除的隱秘登錄方法并不是我研究成果的唯一用法。這同樣可以用于防御目的。
例如,你可以做一個(gè)不可復(fù)制的硬盤:如果扇區(qū)的讀取模式是隨機(jī)的話,像正常的操作系統(tǒng)讀取文件系統(tǒng),硬盤會(huì)正常工作。如果硬盤是有序的讀取,像硬盤復(fù)制設(shè)備那樣的話,硬盤會(huì)篡改數(shù)據(jù),無法復(fù)制出原來的內(nèi)容。
硬盤控制器作為一個(gè)通用控制器也是有的玩的。你手里的是三個(gè)性能不錯(cuò)的CPU核心,連著一個(gè)相當(dāng)大的RAM。還有一個(gè)UART作為串口,至少兩個(gè)SPI接口:一個(gè)連接到閃存ROM,一個(gè)連到電機(jī)控制器。你可以通過升級外部閃存芯片來給處理器加載代碼,或者甚至在啟動(dòng)加載器上用串口加載。為了演示芯片的能力,我在硬盤上移植了一個(gè)相當(dāng)普及的軟件。這個(gè)demo只是概念驗(yàn)證性的,串口是唯一工作的外圍設(shè)備,而且沒有用戶空間。雖然如此, 我還是很驕傲的宣稱我在我的硬盤控制器上裝了一個(gè)Linux。在頂端,是標(biāo)準(zhǔn)的命令行(硬盤加載在/mnt下),低端是我在硬盤串口上的輸出。
在此多解釋一下這是怎么工作的:內(nèi)核和啟動(dòng)都封裝成每塊大小都是一個(gè)扇區(qū)的一個(gè)個(gè)的包,包的前面帶有特殊字符串和編號數(shù)字。通過從磁盤讀取數(shù)據(jù),內(nèi)核和啟動(dòng)最終會(huì)進(jìn)入緩存。寫入特殊字符串「HD, Inx!」最終觸發(fā)了修改過的固件,在緩存中搜索所有扇區(qū),重編譯內(nèi)核然后啟動(dòng)。但是一個(gè)沒有內(nèi)存控制單元的內(nèi)核也需要特殊格式的用戶空間。我不能把這個(gè)也編譯了,所以內(nèi)核最終因?yàn)檎也坏絠nit來執(zhí)行而崩潰。
結(jié)論
是的,就是這樣。雖然硬盤控制器如同一個(gè)不知其究竟的野獸,它仍能通過逆向工程加以了解,并為其寫出代碼以執(zhí)行。對控制器的未知,使得通用破解充滿難度,令我懷疑這東西是不是永遠(yuǎn)不會(huì)出現(xiàn)一個(gè)惡意的固件補(bǔ)?。合啾葘γ總€(gè)服務(wù)器的每個(gè)硬盤固件進(jìn)行逆向工程加以破解,還是找一個(gè)0day漏洞更加簡單吧。
我還希望證實(shí)一個(gè)壞掉的硬盤仍然能夠使用。當(dāng)硬盤的機(jī)械部分壞掉的時(shí)候,PCB仍然帶有可用的嵌入式系統(tǒng),其性能相當(dāng)不俗,尤其是壞的硬盤基本都不要錢就能拿到。
評論
查看更多