- 慕容峰│從事數位鑑識工作多年,在分析證物的過程中,彷佛側耳傾聽證物娓娓道來一般,同時審慎客觀地仔細分析察看,即便是旁枝末節也不輕易放過,浸淫其中而樂此不疲。
當提到不小心刪除檔案了,多數人的直覺反應會是「完蛋了」,接下來的念頭通常是「還救的回來嗎?」在回答這個問題之前,先讓要大家了解的是,當檔案被建立或刪除時,背後的處理機制有何玄機。
檔案系統的機制就像是餐廳的訂位系統
儘管檔案系統(File System)的種類眾多,常見的如 FAT、NTFS、Ext2/3/4、HFS/HFS+,但以數位鑑識的觀點來看待這些檔案系統,當掌握了其特性之後,你會發現它們其實很單純,皆是有著猶如餐廳訂位系統般的運作機制。
大家應該都有在餐廳訂位的經驗,當訂位完成時,訂位系統已註記了你所預訂的是哪一廳的哪些座次,這就與檔案系統的機制不謀而合。為了單純化起見,以下就以 FAT 這個檔案系統為例以有效地說明。
當檔案被建立時,檔案系統會記錄此檔案的相關屬性值及儲存資料內容。而存放資料內容的基本單位,便是所謂的「cluster」,我們可以把它想像成是一個個的容器,即猶如一個個的餐廳座位一樣。當檔案愈大,就好比是聚餐的參與者愈多,需要更多的座位一般,檔案系統就會為其配置更多的 cluster以存放該檔案的資料內容。
此外還會在「directory entry」記錄此檔案的檔案名稱、副檔名、起始 cluster 號碼,及檔案大小等屬性值。並於FAT表註記該檔案所佔用的 cluster 編號是幾號到幾號。此一目的在於標記這些 cluster 已被佔用,就像是餐廳的座位若已被訂走就無法將其再開放讓其它人來訂一樣,如此才能確保檔案系統運作順遂。
當然了,一個資料量很大的檔案所佔用的 cluster 號碼可不見得是連號的哦,這部份亦可由FAT表中看出端倪。就算不是連號各位也不用為檔案系統操心,在FAT表中的記錄足可以串連出一個檔案所佔用的所有 cluster 無誤。
如下圖所示,D槽的磁碟標籤為「Disk」,目前裡頭有 2 個檔案,分別為「file1.txt」及「_News.txt」,留意一下 2 個檔案的大小。由於txt是明文形式的檔案內容,以這種純文字檔來為各位說明最是簡明易懂。
或許有人會有疑問,怎知道這 2 個檔案各是佔用了多少 cluster 呢?沒錯,這就牽涉到 D 槽在格式化之初,所選擇的「配置單位大小」。下圖便是 D槽這個分區目前的配置狀況,由「Bytes per cluster: 2048」可清楚的得知一個 cluster 的大小是 2048 bytes,至於「sector」在此暫不論及,以免讀者們混淆不清就更是摸不著頭緒了。
我們就先來看看 file1.txt 好了,使用hex editor工具來查看 D 槽,file1.txt的資料內容及hex值如下圖所示,而其檔案大小為0.6KB,對照前述D槽的cluster資訊,便可輕易推導出file1.txt只佔用了一個cluster。
那要如何得知它佔用的是哪一個cluster呢?接著我們來看一下directory entry,如下圖所示,紅色框住部份便是file1.txt的相關屬性記錄,而其中綠色框住部份的「02 00」,便是此檔案的起始cluster號碼,由於其為Little Endian的定序。經轉換後得知file1.txt的起始cluster號碼為「2」。
接著我們便可定位到FAT表中的cluster 2,如下圖紅色框住部份所示的值,即是file1.txt這個檔案在檔案系統中的「訂位記錄」了。
但由於這檔案很小僅佔用了一個cluster,我們再看看_News.txt有何不同。_News.txt的文本內容及hex值如下圖所示,此檔案的大小為2.9KB。
聰明的讀者們至此應該已經知道了,它佔用了一個以上的cluster,那要如何得知它佔用了哪些個cluster呢?如同前述的作法,我們要先得知它的起始cluster才行。來看一下它的directory entry便知道了,如下圖所示,_News.txt的起始cluster號碼是「5」。
再定位到FAT表中的cluster 5,如下圖紅色框住部份所示的值,其中「06 00」即表示它不僅佔用了cluster 5,同時也佔用了cluster 6。而其後的「FF FF」即表示結尾之意。
或許會有讀者感到好奇,file1.txt的起始cluster是2,且它只佔用一個cluster,而_News.txt的起始cluster卻是5,為何不是3呢?原因很簡單,因為cluster 3及cluster 4早就被佔用了,如下圖所示,佔用這2個cluster的分別是資源回收筒及其下的檔案desktop.ini。
刪除檔案所產生的變化
那刪除檔案會產生何種變化呢?如同餐廳訂位系統一樣,若用餐畢離席時,原本被佔用的座位就可以空了出來,再開放給其它人訂位。我們就來看一下把file1.txt及_News.txt 刪除之後的變化,如下圖所示,此時 D 槽在檔案總管中已空無一物。
若查看 file1.txt的 directory entry,發現 file1.txt 的檔案名稱已變的不易辨識,沒錯,原因即就在於下圖紅色框住的值已變成了「E5」之故。
那麼 _News.txt 是不是也有相同的變化呢?是的,其directory entry的起始值也變成了「E5」,這便是FAT檔案系統中檔案遭到刪除後所呈現的特徵值。
值得留意的是,除此之外,其它像是副檔名、起始 cluster、檔案大小等屬性值並未受到影響。但是,剛為各位說明了這 2 個檔案既被刪除,其原本佔用的cluster就該釋出而不能繼續佔用了,我們接著觀察一下 FAT 表是否有相應的變化。如下圖紅色框住部份所示,沒錯,這 2 個檔案本來佔用的 cluster 皆已被註記為「00 00」,代表已釋出,那些cluster可再被其它新進來的檔案去佔用了。
當然了,一般人最關心的仍是,有沒有機會救回這 2 個檔案的原有資料內容呢?答案是「有機會」的,只要是在尚未被新資料內容給覆蓋之前,都有機會可救回。下圖所示便是 file1.txt 的資料內容,目前仍完好如初。
再看_News.txt的內容如下圖所示,亦是完好如初。因為當刪除檔案之時,資料本體尚在,只是儲存資料的容器遭釋出可允許新資料寫入。這也就是我們常說的,傳統硬碟(SSD除外)的資料救援有著較高的成功機率之故。
但要留意的是,究竟是比較早刪還是比較晚刪的檔案內容易遭到覆蓋,則未有定論,畢竟這是作業系統及檔案系統在進行處理,非人為能夠介入決定。
數位鑑識是一門嚴謹的科學,當鑑識人員對電子跡證的本質有了更深入的了解,便能在需要對證物中的遭刪除資料進行回復時,採取穩當而有效的措施。
參考資料
- Forensic Wiki – FAT
- Forensic Wiki – Recovering deleted data
- Forensic Wiki – Little endian