天天看點

《iOS驗證實戰:調查、分析與移動安全》一3.7 檔案系統

iphone以及其他apple裝置(包括mac計算機)使用的檔案系統是hfs plus。最初,它們使用的檔案系統都是hfs,後期才使用的hfs plus。hfs plus增加了很多增強功能,包括提高磁盤空間使用效率,使用國際化、友好的檔案名,未來支援具名分支,以及可引導作業系統(除了mac os)。表3-3中提供了相關資訊,呈現了最初的hfs檔案系統和hfs plus的不同之處(apple developer, 2004)。

《iOS驗證實戰:調查、分析與移動安全》一3.7 檔案系統

hfs plus包含配置設定單元,稱為“配置設定塊”。典型的塊大小是4kb,然而,也可以根據實體磁盤的情況去調整此塊大小。但需要注意,如果配置設定塊太大了,也會有浪費存儲空間的風險。例如,如果一個檔案的大小有9kb(在4kb的配置設定塊下),盡管在第3個塊的部分位置沒有資料,但這個檔案還是會使用到3個塊。其他的檔案則不能在第3個塊中存儲資料,因為它已經被使用了(kubasiak, morris key & varsalone, 2009)。

名為fsstat(檔案系統監視工具)的工具,作為brian carrier抯 sleuth套件的一部分而開發出來。這個特殊的工具會詳細顯示映像檔案中檔案系統的細節。下面給出了運作fsstat指令來顯示iphone的磁盤映像結果。該結果會顯示檔案系統的類型、卷名以及與此映像相關的其他資訊,例如建立和修改的時間(carrier, n.d)。

《iOS驗證實戰:調查、分析與移動安全》一3.7 檔案系統
《iOS驗證實戰:調查、分析與移動安全》一3.7 檔案系統

fsstat指令可以帶各種參數運作,以擷取與檔案系統相關的指定資訊。下面是使用這些參數的一個例子,用fsstat指令将識别出的檔案系統類型列出:

《iOS驗證實戰:調查、分析與移動安全》一3.7 檔案系統

mac系統上的磁盤實用工具(disk utility)也能夠用來擷取硬碟或磁盤映像的相關資訊。這個工具通常用于擦除、格式化、分區或修複磁盤驅動。它也可以用來挂載磁盤映像,如iphone dmg檔案。磁盤實用工具存儲在/applications/utilities目錄下,并能夠通過gui或者指令行來運作。為了簡單地擷取iphone的磁盤映像的資訊,diskutil指令也能夠在已挂載的映像上運作。此指令的輸出如下文所示。因為映像被挂載到mac系統上,是以通過指令輸出的一些資訊僅适用于mac工作站,而不适用于描述iphone自身的情況。例如,卷名、挂載位置等。所有資訊都和挂載iphone映像檔案的mac有關。其中,總的空間和可用空間資訊适用于iphone映像。

《iOS驗證實戰:調查、分析與移動安全》一3.7 檔案系統
《iOS驗證實戰:調查、分析與移動安全》一3.7 檔案系統

每個hfs plus系統都是由卷組成的,卷代表了磁盤的實體分區。每個系統都是由一個或者多個卷構成的,每個卷有一個卷頭,可變頭和5個專屬檔案。這5個專屬檔案中有3個包含b-tree結構:分類檔案,區段溢出檔案和屬性檔案。b-tree是一種資料結構,它能讓資料更高效地被檢索、檢視、修改或者删除。它由結點組成,在結點中存儲着關鍵資訊,能夠進行快速檢索(kubasiak et al., 2009)。

卷頭/可變卷頭:卷頭中包含了卷資訊,其中包括配置設定塊的大小以及哪些塊是可用的。除此之外,還包括5個專屬檔案的中繼資料(metadata)(kubasiak et al., 2009)。

啟動檔案:包括啟動裝置需要的資訊(kubasiak et al., 2009)。

配置設定檔案:這個檔案用來跟蹤已使用和未被使用的塊。此類格式的檔案用1bit來标記每個配置設定塊。如果這個bit位被置位,表明這個塊已使用,如果沒有被置位,那麼這個塊就是未被使用的。

分類檔案:分類檔案包括檔案和檔案夾資訊,這些資訊用于在卷中定位任何檔案和檔案夾。它存儲了目錄和檔案的層級,每一個都有一個屬于它自己的32位的分類結點id(cnid)。apple可以為特定檔案在hfs plus卷保留這些cnid(kubasiak et al., 2009)。

區段溢出檔案:這些檔案包括一些分片檔案的資料和壞塊的資料(kubasiak et al., 2009)。

屬性檔案:屬性檔案允許相關的資料流通路特定的檔案和檔案夾。

hfs plus檔案系統的一個屬性是“journaling”。當開啟此選項後,檔案系統的變更會被記錄(日志記錄了将要做的(檔案),之後這個變更會被寫入主檔案系統)。在系統或者硬體元件失敗情況下,作業系統利用記錄的日志将磁盤恢複到失敗前的初始狀态。作業系統也可以進行快速恢複,快速恢複時不會去檢查整個檔案系統,而僅僅根據最近的日志事務去恢複。

在nand閃存上存在兩個磁盤分區。第一個是系統或者是固件分區,此分區存儲着os和一些基本的應用。當裝置進行固件更新時,系統分區會被更新。事實上隻有很少的一些應用安裝在系統分區中,此分區在裝置上的存儲空間很小。它預設設定為隻讀,除了在系統更新的時候。在更新過程中,整個分區被itunes格式化,這不會對使用者資料産生任何影響。

使用者資料分區,也稱為“slice 2”,占用了nand上的大部分存儲空間。驗證相關的資料大部分在這裡,但不是所有的。此分區還存有從itunes應用商店下載下傳的預設應用的資訊和其他的存儲資料。通過驗證手段獲得此分區的映像後,能夠被重命名為“.dmg”檔案并挂載到mac上用于分析(第6章會詳細地描述)。由于這兩個分區能夠被映像和分析,我們能夠擷取到使用者資料、“媒體”分區資料。此分區被挂載在裝置的“/private/var”路徑上。

表3-4提供了兩個磁盤分區的分類對比和挂載點資訊、分區存儲資訊等。

《iOS驗證實戰:調查、分析與移動安全》一3.7 檔案系統

這台用于測試的iphone已經被越獄了,為了檢視挂載分區需要連接配接此裝置。我們通過ssh連接配接到這台iphone,然後在系統根目錄運作“mount”指令。首先可以看到系統分區挂載到“/”(或root),同時使用者資料分區被挂載到/private/var。我們還可以看到,這兩個分區以hfs作為檔案系統,甚至也可看到使用者資料分區(journaling選項已開啟)。

《iOS驗證實戰:調查、分析與移動安全》一3.7 檔案系統

上面的資訊顯示了塊裝置,同時下面的資訊是iphone的原始磁盤映像資訊。rdisk0是整個磁盤,包括所有的分區。rdisk0s1是固件分區,或者是上面描述的slice1分區;rdisk0s2是使用者資料分區。在3gs裝置,還會顯示“rdisk0s2s1”。

《iOS驗證實戰:調查、分析與移動安全》一3.7 檔案系統

繼續閱讀