首頁 > 關于效率源 > 新聞和事件 > 技術視界
【技術視界】針對類TrueCrypt——虛擬磁盤加密容器文件刪除恢復方法
2019年11月08日

1573193364947086472.jpg

隨著互聯網技術的高速發展,信息數據正呈量級增長,數據的存儲方式也多種多樣,對數據的存儲安全提出了新的要求。隨之而來的就是各種形式、各種加密算法的數據保護,在這些方法中,虛擬磁盤加密技術脫穎而出。

由于通過虛擬磁盤加密所產生的數據文件沒有固定的特征,所以恢復刪除的加密過的數據文件面臨著新的挑戰。本文提出一種針對沒有固定特征的刪除文件(通過虛擬磁盤加密的所產生)的恢復方法,該方法的主要目的是告訴大家一種虛擬磁盤加密文件的刪除恢復方法和思路。

虛擬磁盤加密技術及其常見軟件

虛擬磁盤加密技術即可不生成任何文件直接在硬盤上建立虛擬磁盤,也可生成一個容器文件(類似磁盤,指定大小,用于存放需加密的文件)。用戶可以按照盤符進行訪問,所有虛擬磁盤上的文件都被自動加密,需要通過密碼或密鑰文件來進行訪問。

用戶在使用時,必須知道密碼或密鑰文件,否則無法進入被虛擬磁盤技術加密的磁盤中進行操作。這種方式不僅對防止硬盤丟失情況下的數據保密有效,還對企圖不經允許而打開計算機進行操作和信息查閱有效。

在已經打開計算機并進入了加密磁盤的情況下,任何接觸到計算機的人或者在計算機上運行的軟件,都可以對磁盤進行操作,本地桌面搜索工具也不例外,它可以直接對所有文件進行檢索,并建立索引。

◆常見虛擬磁盤加密軟件如下所示

C3.png

加密容器文件刪除恢復難點

難點1:真加密
通過虛擬磁盤加密生成的容器文件是真加密,所有加密數據都是經過AES、Twofish、Serpent等加密算法的運算后的結果,目前無有效破解方法(窮舉法除外)。

難點2:無明顯特征
通過winhex等工具打開可以看到,通過虛擬磁盤加密生成的容器文件頭尾及內部數據均無明顯特征,對于該文件的刪除恢復造成了極大的干擾。

經過統計分析后發現,該容器文件具有以下特征:
◆ 整扇區對齊,并且在磁盤中連續存放;
◆ 該文件中的字符內容分布均勻,即每個字符的總個數≈文件大小÷256;
◆ 沒有任意字符連續出現3次及以上。

加密容器文件刪除恢復過程

1.準備工作
為了更直觀的描述容器文件刪除恢復過程,特此說明環境及準備工作。(以下數據也是判斷是否完成恢復刪除容器文件的重要依據)

A. 文件系統NTFS,且找到其$BITMAP(說明:其他的系統也會有該功能的文件,在此僅以NTFS為例);
B. 以VeraCrypt作為加密工具,本次示例就以恢復該工具下產生的容器文件;
C. 容器文件大小設置為200M(容器在磁盤中的存儲為200M連續空間);
D. 使用$BITMAP元文件來統一管理卷上簇的使用情況。每一個bit位代表一個簇的使用情況,位高低順序為:低位在前,高位在后。如$BITMAP中第一個字節代表該分區前8簇,第一個字節的第0位為分區第一簇,第1位為分區第二簇...以此類推管理整個分區。使用的簇標記為1,未使用的簇標記為0。

2.制作加密刪除文件

使用VeraCrypt工具制作容器文件,并向其中放入待加密文件。

①創建容器文件

1573193473761041919.jpg

②加載容器文件

1573193495949022765.jpg

③保存待加密文件

1573193520152074702.jpg

④確定該文件在磁盤中是否連續存儲,且記錄刪除前在磁盤的偏移位置:0x174E628000

 

1573193570716054162.jpg

1573193571059074656.jpg

 

⑤刪除前所在位圖信息

1573193607122019236.png

⑥刪除容器文件,下圖可看出加密容器文件被刪除之后通過winhex是不能恢復的

1573193646560017288.png

1573193646701072650.png

 

3.刪除加密容器文件恢復步驟

通過$Bitmap進行定位恢復步驟2中所刪除的無特定特征的容器文件,具體操作過程如下:

①根據$Bitmap的特性,若該文件被刪除,那么在$Bitmap中的位圖也被置為0;

由已知的容器文件大小可以計算出該容器文件在$Bitmap中所占用的字節數:

◆ 容器文件字節數(byte)=200M*1024*1024 = 209715200;
◆ 容器文件扇區數(個)=209715200/512 = 409600;
◆ 容器文件簇數(個)=409600/8 = 51200;
◆ $Bitmap中所占用的字節數(byte)=51200/ 8 = 6400(0x1900);

②從$Bitmap文件的開始位置進行檢索0x00(被刪除的容器文件會出現在位圖為0x00的區域),檢索到0x00之后,判斷從當前位置起,0x00的個數是否大于等于步驟①中所求的$Bitmap中所占用的字節數;

若是則進入步驟③,否則繼續步驟②;

③根據步驟②中找到的$Bitmap中的起始位置,計算對應的刪除文件在磁盤中的偏移位置,在該例中$Bitmap中的偏移為0x2E9CC5:

磁盤中的偏移位置(byte)= 0x2E9CC5*8*8*0x200 = 0x174E628000

④根據步驟③中得到的文件偏移,跳轉到該偏移去判斷是否是被刪除的容量文件,判斷方法如下:(判斷依據見準備工作中的B、C數據)

A. 由于數據文件是連續存儲的,所以從偏移位置起,獲取已知被刪除文件大小的數據塊(即本例中的200M);
B. 然后通過程序代碼來統計該數據塊中0x00~0xFF等256個字符分別出現的次數,并將其以圖顯示(橫軸為字符,縱軸為次數)。若圖像呈現為一條波動不大的直線,則跳轉到步驟C;否則跳轉到步驟②,尋找下一塊數據;
C. 統計判斷該數據塊中的任意字符連續出現的次數,若存在連續出現3次及以上的,則表示該段數據不是虛擬磁盤技術加密的容器文件,跳轉到步驟②,尋找下一塊數據;否則,該數據塊就是被刪除的容器文件,恢復該數據塊;
D. 若知道加密密碼或密鑰文件,則可用VeraCrypt軟件加載步驟C中得到的容器文件,可進一步判斷其是否準確,以及獲取其中的加密內容。

要點總結

市面上目前未曾找到對于該加密容器文件刪除恢復的有效方法,希望本文能夠為從事數據取證的同行提供一些簡單的思路。該方法僅針對在磁盤中連續存儲的容器文件適用,其他情況的容器文件恢復方案需進一步深入分析,敬請期待。

如對文中的操作、描述有任何疑問,或者有任何取證恢復需求,歡迎撥打熱線電話028-85211099或直接在微信公眾號給我們留言,我們會盡快聯系您。

本期投稿:劉濤
本期編輯:源妹