一、 簡介這篇研究論文將通過黑客的視角,詳細闡述如何操作NAND dump 以及如何獲取dump 文件中的所有文件。每一步驟以及所使用的方法均會細緻解析,並配以實例說明。本文主要關注的是物理NAND dump,這是從通用編程器中提取出的dump 文件。相對應地,從引導加載程序(如u-boot)中獲得的dump 文件被稱為邏輯NAND dump。
對於邏輯NAND dump,數據的正確性由Flash Translation Layer (FTL)負責維護。也就是說,FTL 會藉助Error Correcting Code (ECC)自動修復所有的位錯誤。然而,物理NAND dump 中的數據通常會攜帶ECC,這就需要我們自行推斷如何利用ECC 確保數據的準確性。如果數據中存在位錯誤,理應使用ECC 進行適當的糾錯。然而,推斷ECC 與數據如何相關聯並非易事。若無法確定ECC 和數據的關聯性,也就無法利用ECC 修復數據中的位錯誤。因此,必須對NAND dump 進行系統的深度分析,揭示ECC 和數據之間的密切關聯。在此情境下,盲目嘗試暴力破解並非明智之舉,但是如果能藉助深度分析的結果,盲目的暴力破解可以轉化為有目的性的暴力破解。這樣,獲取ECC 和數據之間密切關聯的可能性將得以最大化。
修復數據中的位錯誤並移除ECC 之後,NAND dump 就由物理形態轉化為邏輯形態,此時便可以開始對實際的固件圖像進行分析。作為論文的實際案例,我們將處理一個UBI 鏡像,並對UBI 鏡像的分析進行詳細的討論。根據從UBI 鏡像分析中得到的關鍵信息,我們提出了一個創新性的方法來恢復文件系統並提取文件系統內部承載的所有文件。需要特別注意的是,本論文討論的整個過程無法通過像binwalk 或unblob 這樣的自動化工具複製。此外,整個分析過程都會以手動、逐步的方式呈現,以確保所有步驟和概念都能夠得到清晰的解釋。現在,我們將不再糾結於理論討論,而是進入實際的NAND dump 分析環節,進行詳細的介紹。
二、 NAND 轉儲分析
首先,讓我們從一些基礎的概念開始探討。一個NAND 閃存包含許多稱為'頁面'的單元,它們都是固定的大小,並以一定數量的'頁面'組成一個'塊'。鑑於我們的樣本NAND dump 是從一個實際的NAND 芯片中獲取的,型號為MT29F2G08ABAEAWP,因此我們將以它為例,來介紹相關的硬件技術規範。
對於MT29F2G08ABAEAWP 這款芯片,一個'頁面'的大小是2112 字節,其中包括2048 字節的主數據和64 字節的額外數據。 64 個'頁面'組成一個'塊',而2048 個這樣的'塊'構成了整個NAND 閃存的存儲空間,總計有2048*64=131072 個'頁面'。
對於每一個大小為2112 字節的'頁面',前2048 字節用於數據存儲,剩餘的64 字節則作為備用區域,用於承載錯誤糾正代碼(Error Correcting Code, ECC)或某些供應商特定的元數據。在一些文獻中,這部分備用區域有時也被稱為Out Of Band(OOB)。
對於我們的樣本NAND dump,如果我們在十六進制模式下查看,會發現第一個'頁面'中,地址從0x0000 到0x07ff 的部分是數據區,地址從0x0800 到0x083f 的部分是備用區或OOB 區,具體示意如下。作為NAND 轉儲樣本的概述。
cawan%hexdump-C-n2112./MT29F2G08ABAEAWP@TSOP48.BIN
000000002054564e00020000a0ac0000ffffffff|TVN..|
0000001055aa55aa2e000000200200b000000001|U.U..|
00000020640200b0180000c0200200b018000001|d..|
00000030aa55aa5501000000aa55aa5501000000|.U.U.U.U.|
00000040281800b04ad8dc53081800b014800000|(.J.S.|
00000050aa55aa5501000000aa55aa5501000000|.U.U.U.U.|
00000060aa55aa5501000000001800b076040300|.U.U.v.|
00000070aa55aa5501000000041800b021000000|.U.U..|
00000080aa55aa5501000000041800b023000000|.U.U.#.|
00000090aa55aa5501000000aa55aa5501000000|.U.U.U.U.|
000000a0aa55aa5501000000041800b027000000|.U.U.'.|
000000b0aa55aa5501000000aa55aa5501000000|.U.U.U.U.|
000000c0aa55aa5501000000201800b000000000|.U.U..|
000000d0241800b0000000001c1800b000400000|$..@.|
000000e0181800b032030000101800b006000000|.2..|
000000f0041800b027000000aa55aa5501000000|.'.U.U.|
00000100aa55aa5501000000aa55aa5501000000|.U.U.U.U.|
00000110041800b02b000000041800b02b000000|.+.+.|
00000120041800b02b000000181800b032020000|.+.2.|
000001301c1800b0814700001c1800b001440000|.G.D.|
00000140041800b020000000341800b020888800|.4.|
00000150aa55aa5501000000180200b008000000|.U.U..|
00000160603100b800800000a03100b800800000|1.1.|
000001702c0200b0000100002c0200b000010000|,.|
000001802c0200b0000100000000000000000000|,.|
00000190130000ea14f09fe510f09fe50cf09fe5|..|
000001a008f09fe504f09fe500f09fe504f01fe5|..|
000001b020030000785634127856341278563412|.xV4.xV4.xV4.|
000001c078563412785634127856341278563412|xV4.xV4.xV4.xV4.|
000001d000020000a0ac000080b50000a0ac0000|..|
000001e0dec0ad0b00000fe11f00c0e3d30080e3|..|
000001f000f029e1bcd09fe507d0cde30000a0e3|.)..|
00000200700500eb0040a0e10150a0e10260a0e1|p.@.P.|
0000021004d0a0e18c004fe2009046e0060050e1|.O.F.P.|
000002200600000a0610a0e15c301fe5032080e0|.\0.|
000002300006b0e80006a1e8020050e1fbffff3a|..P.|
0000024074009fe574109fe50020a0e3010050e1|t.t.P.|
000002500200002a002080e5040080e2faffffea|.*..|
0000026000009fe500f0a0e154060000a0ac0000|.T.|
00000270a0ac0000a0ac00000000a0e3170f07ee|..|
00000280170f08ee100f11ee230cc0e38700c0e3|.#.|
00000290020080e3010a80e3100f01ee0ec0a0e1|..|
000002a00a0000eb0ce0a0e10ef0a0e10000a0e1|..|
000002b0e8d01fe5feffffeb008000bca0ae0000|..|
000002c080b700000000a0e10000a0e10000a0e1|..|
000002d068009fe50010e0e3001080e500000fe1|h..|
000002e0c00080e300f021e154009fe554109fe5|.T.T.|
000002f0001080e550009fe550109fe5001080e5|.P.P.|
000003004c009fe50514a0e3001080e544009fe5|L..D.|
0000031044109fe5001080e5032aa0e3012052e2|D.*.R.|
00000320fdffff1a20009fe530109fe5001080e5|.0.|
00000330012ba0e3012052e2fdffff1a0ef0a0e1|.+.R..|
00000340242100b8041000b084000440040200b0|$!@.|
00000350ff0f0000080200b00c0200b0244f0000|..$O.|
00000360fc0f0000000000000000000000000000|..|
00000370000051e31f00000a0130a0e30020a0e3|.Q.0.|
00000380010050e11900003a010251e300005131|.P.Q.Q1|
000003900112a0310332a031faffff3a020151e3|.1.2.1.Q.|
000003a0000051318110a0318330a031faffff3a|.Q1.1.0.1.|
000003b0010050e10100402003208221a10050e1|.P.@.P.|
000003c0a1004020a3208221210150e121014020|.@.P.@|
000003d023218221a10150e1a1014020a3218221|#!P.@.|
000003e0000050e32332b0112112a011efffff1a|.P.#2..|
000003f00200a0e10ef0a0e104e02de5c91c00eb|..-.|
000004000000a0e30080bde803502de9d7ffffeb|..P-.|
000004100650bde8900203e0031041e00ef0a0e1|.P.A.|
0000042003502de9090000eb0650bde8900203e0|.P-.P.|
00000430031041e00ef0a0e10000a0e10000a0e1|.A..|
000004400000a0e10000a0e10000a0e10000a0e1|..|
00000450000051e301c020e04200000a00106142|.Q.B.aB|
00000460012051e22700000a0030b0e100306042|.Q.'.0.0B|
00000470010053e12600009a020011e12800000a|.S.(.|
000004800e0211e38111a0010820a0030120a013|..|
00000490010251e3030051310112a0310222a031|.Q.Q1.1.'.1|
000004a0faffff3a020151e3030051318110a031|.Q.Q1.1|
000004b08220a031faffff3a0000a0e3010053e1|.1..S.|
000004c00130432002008021a10053e1a1304320|.0C.S.0C|
000004d0a2008021210153e12131432022018021|.S.1C'.|
000004e0a10153e1a1314320a2018021000053e3|.S.1C.S.|
000004f02222b0112112a011efffff1a00005ce3|''..\.|
00000500000060420ef0a0e100003ce100006042|.B..B|
000005100ef0a0e10000a033cc0fa00101008003|.3.|
000005200ef0a0e1010851e32118a0211020a023|.Q.#|
000005300020a033010c51e32114a02108208222|.3.Q.'|
00000540100051e32112a02104208222040051e3|.Q.'.Q.|
0000055003208282a120829000005ce33302a0e1|.\.3.|
00000560000060420ef0a0e104e02de56d1c00eb|.B.-.m.|
000005700000a0e304f09de40000a0e10000a0e1|..|
000005800000a0e10000a0e10000a0e10000a0e1|..|
00000590203052e220c062e23002a0413103a051|0R.b.0.A1.Q|
000005a0110c80413112a0e10ef0a0e1203052e2|.A1.0R.|
000005b020c062e21112a0411013a051301c8141|.b.A.Q0.A|
000005c01002a0e10ef0a0e1203052e220c062e2|.0R.b.|
000005d03002a0415103a051110c80415112a0e1|0.AQ.Q.AQ.|
000005e00ef0a0e12dde4de20040a0e36c319fe5|.-.M.@.l1.|
000005f00d00a0e100308de504308de51c408de5|.0.0.@.|
00000600bcd28de530408de550408de5d10100eb|.0@.P@.|
000006101c309de5040053e10200000a0410a0e1|.0.S..|
000006208a0f8de233ff2fe18a0f8de20110a0e3|.3./..|
00000630ca1a00eb000050e34600001a700400eb|.P.F.p.|
0000064038429de53c529de50400a0e10510a0e1|8B.R..|
0000065046ffffeb0410a0e10ea6a0e300b0a0e1|F..|
000006600a08a0e341ffffeb0410a0e10070a0e1|.A.p.|
00000670ec009fe53dffffeb0410a0e10090a0e1|.=..|
000006800a08a0e35fffffeb0100a0e10
Recommended Comments