如果只能使用Windows本身提供的工具,那么我們可以認為清空回收站之后,被刪除的文件已經徹底清除了。不過事實并非如此,只要有專用的硬件和軟件,即使數據已經被覆蓋、驅動器已經重新格式化、引導扇區徹底損壞,或者磁盤驅動器不再運轉,我們還是可以恢復幾乎所有的文件。
一、磁盤如何保存數據
要理解如何恢復已刪除的數據,首先要搞清楚磁盤如何保存數據。硬盤驅動器里面有一組盤片,數據就保存在盤片的磁道(Track)上,磁道在盤片上呈同心圓分布,讀/寫磁頭在盤片的表面移動訪問硬盤的各個區域,因此文件可以隨機地分布到磁盤的各個位置,同一文件的各個部分不一定要順序存放。
存放在磁盤上的數據以簇為分配單位,簇的大小因操作系統和邏輯卷大小的不同而不同。如果一個硬盤的簇大小是4 K,那么保存1 K的文件也要占用4 K的磁盤空間。大的文件可能占用多達數千、數萬的簇,分散到整個磁盤上,操作系統的文件子系統負責各個部分的組織和管理。
當前,Windows支持的硬盤文件系統共有三種。第一種是FAT,即所謂的文件分配表(File Allocation Table),它是最古老的文件系統,從DOS時代開始就已經有了。Windows 95引入了第二種文件系統,即FAT 32,Windows NT 4.0則引入了第三種文件系統NTFS。這三種文件系統的基本原理都一樣,都用一個類似目錄的結構來組織文件,目錄結構包含一個指向文件首簇的指針,首簇的FAT入口又包含一個指向下一簇地址的指針,依此類推,直至出現文件的結束標記為止。
二、Windows不能真正清除文件
在Windows中,如果我們用常規的辦法刪除一個文件,文件本身并未被真正清除。例如,如果我們在Windows資源管理器中刪除一個文件,Windows會把文件放入回收站,即使我們清空了回收站(或者不啟動回收站功能),操作系統也不會真正清除文件的數據。
Windows所謂的刪除實際上只是把文件名稱的第一個字母改成一個特殊字符,然后把該文件占用的簇標記為空閑狀態,但文件包含的數據仍在磁盤上,下次將新的文件保存到磁盤時,這些簇可能被新的文件使用,從而覆蓋原來的數據。因此,只要不保存新的文件,被刪除文件的數據實際上仍舊完整無缺地保存在磁盤上。
因此,我們可以用工具軟件繞過操作系統,直接操作磁盤,恢復被刪除的文件。這類工具軟件很多,EasyRecovery就是其中的佼佼者。
如果不小心刪除了某個重要文件,想要恢復,這時千萬不要覆蓋它。立即停用計算機,不要再向磁盤保存任何文件,包括不要把恢復工具安裝到已刪除文件所在的硬盤,因為任何寫入磁盤的內容都有可能覆蓋已刪除文件釋放的磁盤簇。如果必須安裝恢復工具,可以安裝到其他硬盤分區、軟盤,或者干脆拆下硬盤到另一臺機器上去恢復。
三、覆蓋七次才能清除的蛛絲馬跡
如果數據已經覆蓋,用通常的恢復工具就無能為力了,但這并不意味著我們絕對不能挽救丟失的數據。讀取硬盤上被覆蓋的數據通常有兩種辦法。
讀/寫磁頭向磁盤寫入數據時,它會將磁化數據位的信號調整到某個適當的強度,但信號不是越強越好,不應超出一定的界限,以免影響相鄰的數據位。由于信號強度不足以使存儲媒介達到飽和的磁化狀態,所以實際記錄在媒介上的信號受到以前保存在同一位置的信號的影響,例如,如果原來記錄的數據位是0,現在被一個1覆蓋,那么實際記錄在磁盤媒介上的信號強度肯定不如原來數據位是1的強度。
專用的硬件設備能夠精確地檢測出信號強度的實際值,將這個值減去當前數據位的標準強度,就得到了被覆蓋數據的副本。理論上,這個過程可以向前遞推七次,所以如果要徹底清除文件,必須反復覆蓋數據七次以上,每次都用隨機生成的數據覆蓋。
第二種數據恢復技術的依據是,磁頭每次讀/寫數據時,不可能絕對精確地定位在同一個點上,寫入新數據的位置不會剛好覆蓋在原來的數據上。原有數據總是會留下一些痕跡,利用專用的設備可以分析出原有數據的副本--稱為影子數據。當然,如果我們反復執行覆蓋操作,原有數據的痕跡也會越來越弱。
● 影子數據:被覆蓋的數據總是與新寫入的不離左右,就象人的影子總是緊跟著人,因此被覆蓋的數據就稱為影子數據。英文功力好的讀者可以參見這篇專著:http://www.forensics-intl.com/art15.html。
通常而言,能夠恢復已刪除、覆蓋的數據應該算是一件好事,當然,某些必須徹底清除數據的場合除外。這方面最為著名的標準是美國國防部訂立的磁盤清洗規范,它要求數據必須覆蓋三次:第一次用一個8位的字符覆蓋,第二次用該字符的補碼(0和1全反轉的字符)覆蓋,最后用一個隨機字符覆蓋。不過這個清洗方法不適用于包含高度機密信息的媒介,這類媒介必須進行消磁處理,或者銷毀其物理載體。當然,對于大多數場合來說,簡單的覆蓋處理已經足夠。
四、被遺忘的角落
刪除和覆蓋文件還不能清除硬盤上的所有敏感數據,因為數據可能隱藏在某些意料之外的地方,所以文件占用的每一個扇區都必須徹底清除所謂扇區,就是大小為512字節的數據片斷,每個簇包含多個扇區。
向磁盤寫入文件時,文件的最后一部分通常不會恰好填滿最后一個扇區,這時操作系統就會隨機地提取一些內存數據來填充空余區域。從內存獲取的數據稱為RAM Slack(內存渣滓),它可能是計算機啟動之后創建、訪問、修改的任何數據。另外,最后一個簇中沒有用到的扇區就原封不動,即保留原來的數據,稱為Drive Slack(磁盤渣滓)。問題在于許多號稱安全刪除文件的工具不會正確清除內存渣滓和磁盤渣滓,而這些被稱為渣滓的地方卻可能包含大量的敏感信息。
在NTFS文件系統中,每個文件包含多個流,其中一個流用來保存訪問權限之類的信息,另一個流用來保存真正的文件數據。除此之外,NTFS還允許額外的數據流,即ADS(Alternative Data Stream),ADS可以用來保存任何信息,最常見的用途是保存圖形文件的縮略圖。由于許多安全刪除文件的工具不能清除ADS,所以即使存放文件實際數據的流已經清除,但縮略圖仍可能泄露機密。微軟知識庫文章319300(http://support.microsoft.com)介紹了如何防止系統創建縮略圖使用的流,即刪除注冊鍵HKEY_LOCAL_MACHINE/System/Currentcontrolset/Control/Contentindex/FilterTrackers。
●ADS:ADS這個縮寫詞經常用來表示活動目錄服務(Active Directory Services),不過本文中ADS是指“可選數字流”,是文件主體數據之外的附屬信息存儲區域。就象你的公文包,包里面是正式存放物品的主空間,但包的外面還會有一二個附屬小口袋便于快速取用物品,這些小口袋就相當于ADS。
ADS已是人們熟知的隱藏數據和病毒之地,經常被計算機犯罪分子利用。但除此之外,硬盤上還有其他可以隱藏數據的區域。
扇區是在低級格式化期間創建的,通常由硬盤制造廠完成。低級格式化工具會標記出損壞的扇區,從而避免磁盤控制器向損壞的區域寫入數據。簇包含多個扇區,由高級格式化工具創建,如Windows或DOS的format命令。如果高級格式化期間發現壞扇區,整個簇被標記為壞簇,但是,壞簇里面還有好的扇區,有些人就利用這些扇區來隱藏數據。
在老式磁盤上,數據還可以隱藏在稱為扇區縫隙的地方。老式磁盤的每一個磁道都有數量相同的扇區,但外圈的磁道顯然要比內圈的磁道長,有些人就利用外圈磁道上扇區之間的縫隙來保存數據。新型磁盤利用一種稱為分區記錄(Zoned Recording)的技術避免了這種空間浪費,它能夠根據磁道的位置調整每個磁道的扇區數量。
要訪問磁盤上的這類隱藏區域,必須使用繞過操作系統磁盤訪問功能的工具。搜索一下網絡,可以看到正規的專業工具都很昂貴,例如EnCase Forensic Edition(www.guidancesoftware.com)要2000多美元;Directory Snoop可能最便宜,也要29美元,但它不支持NTFS。
綜上所述,我們可以說恢復數據實際上要比徹底清除數據簡單。如果你不小心刪除了某個重要的文件(誰都會遇到這類事情),恢復工具就是救命的稻草。反之,如果你想出售二手機或二手磁盤,應當考慮一下是否有必要徹底地清洗一下硬盤。
|
新聞熱點
疑難解答