秦志紅



摘? ?要:NTFS流是NTFS文件系統非常實用的功能,可以把文件的很多非常規屬性以流的形式進行表達,但同時也提供了一種數據隱藏的方式,數據以NTFS流的方式進行隱藏在Windows操作系統中比較常見。文章通過分析NTFS交換數據流原理,重點研究以NTFS流進行數據隱藏的若干種形式,提出了有針對性的數據分析檢驗方法和線索發現手段,為相關應用行業提供技術依據。
關鍵詞:數據隱藏;NTFS流;數據檢驗
1? ? NTFS交換數據流原理
新技術文件系統(New Technology File System,NTFS)交換數據流也稱備用數據流(Alternate Data Streams,ADS),是NTFS文件系統的主要特性,在NTFS文件系統中允許文件附加多個數據流。眾所周知,每個文件都有主文件流,包括文件大小、時間戳等基本屬性,但在ADS功能中文件還可以在主文件流之外存在許多非主文件流,這些非主文件流寄宿在主文件流中,盡管通過正常的文件瀏覽是沒辦法看到這些非主文件流的信息,但其卻是真實地存在于磁盤空間中的,NTFS文件系統特有的數據組織方式可以滿足操作系統對非主文件流的管理[1]。
1.1? NTFS文件的數據組織方式
與之前的文件配置表(File Allocation Table,FAT)文件系統不同的是,NTFS采用主文件表(Master File Table,MFT)對文件的各種數據信息進行組織和管理,每個MFT分配1 024個字節,即兩扇區大小,包括從10 H到B0 H的多個屬性,不同的屬性表達不同含義,如圖1為1.txt文件的數據組織方式,框內分別為10 H屬性和80 H屬性,其中,80 H屬性中包含了文件內容“1234567890”。對于比較小的文件,如果MFT的大小能夠滿足,則系統不會另外分配存儲空間。
圖2為2.jpg文件的數據組織方式,很明顯,框內的80 H屬性中沒有包含文件的所有內容,文件內容根據80 H屬性的data runs由系統另外分配了存儲空間。
1.2? NTFS流的數據組織方式
通過分析NTFS的文件數據組織方式,可以看到MFT的80 H屬性能夠反映文件的數據存儲形式,根據該屬性可以找到文件中所包含數據所在位置。正是利用NTFS文件系統的這一特性,為交換數據流提供了數據存儲的可能性。如圖3所示為在1.txt文件中寄宿2.jpg數據內容的MFT[1]。可以看到在這個MFT中存在2個80 H屬性,前面一個為1.txt文件的數據內容,后一個為2.jpg文件的數據內容。徹底刪除2.jpg文件后,通過正常的數據瀏覽只能看到1.txt文件,但事實上,2.jpg的數據仍然存在于磁盤空間中,只是被1.txt的交換流隱藏了起來。
可見,NTFS流隱藏數據的原理就是利用MFT中80 H屬性表達數據內容的特性,在其中增加若干個80 H屬性,宿主文件位居第一,其他的寄宿流文件分別被分配不同的80 H屬性,代表不同的數據內容。
2? ? NTFS流隱藏數據的方式
從原理上來看,NTFS流可以隱藏所有數據,具體來說包括各種類型的文件和單純的文本,但隱藏文本和文件的方式是不同的。
2.1? NTFS流隱藏文本
隱藏文本采用的命令是:echo “文本”>宿主文件:寄宿文件。例如,把文本“pass”隱藏在文件1.txt中,在命令行輸入echo pass>1.txt:2,其中2為寄宿文件,可以不指定擴展名,并不影響把數據隱藏在磁盤空間中[2]。如果宿主文件的MFT空間能夠容納文本大小,則會在其MFT中增加一個80 H屬性,并且數據內容存在于該屬性中,否則系統會另外分配存儲空間給文本,而80 H屬性只會保存data runs。
2.2? NTFS流隱藏文件
NTFS流可以隱藏所有類型的文件,隱藏文件的方式與隱藏文本基本相同,只是所采用的命令是type。例如把文件2.jpg隱藏在1.txt中,在命令行輸入type 2.jpg>1.txt:2,其中2也是寄宿文件,這個文件類型是jpg。如果用圖片瀏覽類工具可以查看其內容。表現在MFT中,也是在1.txt的MFT中增加一個80 H屬性,用于表達2.jpg的數據內容。
3? ? NTFS流隱藏數據的檢驗
需要特別說明的是,NTFS流對可執行文件的隱藏。病毒、木馬等惡意程序大都需要以可執行文件的形式進行傳播并在受害者終端運行,這些文件很容易被殺毒軟件或者防火墻發現,無法達到目的,需要進行隱藏,而NTFS流提供了很好的隱藏功能,被惡意程序廣泛使用。然而隨著此類問題日益突出,Windows操作系統升級過程中取消了使用start命令執行流隱藏exe文件的功能,導致此類文件即使被隱藏,也無法運行,雖然此舉可以避免惡意代碼傳播,但同時也阻止了正常exe文件的執行,造成諸多不便。如果確實需要使用此類文件,可以建立mklink指向寄宿文件。
如前所述,通過NTFS流隱藏的數據很多是惡意程序,在公安機關電子數據取證過程中需要對此類行為進行檢驗并作證據固定,從而印證違法行為。
3.1? 查看隱藏數據
隱藏數據和加密數據相比,前者傾向于對數據所采取的保密方法不能為人所知,而加密數據則更注重于密鑰的保護。因此,如果已經知道了此類數據的隱藏方法,查看就不再是難題。了解NTFS流隱藏數據的原理后,就可以有針對性的查看其中隱藏的數據。具體來說,就是對所懷疑文件的MFT進行分析,如果存在多個80 H屬性,則表明該文件中寄宿有非主文件流,逐一對各個非主文件流進行分析以后,每個寄宿文件的數據內容、存儲位置就能查看了。如圖3所示,表明宿主文件1.txt中存在以NTFS流方式寄宿的隱藏數據。
至于隱藏數據的內容,則需要更進一步分析才能查看。如果寄宿的數據比較少,在80 H屬性中可以直接查看;但情況如圖3所示寄宿的數據比較多,則要分析data runs,data runs的結構和普通80 H一樣,如圖4所示,第一個字節21 H指明文件的位置和占用空間大小。21中的“2”表示寄宿文件所在位置為0598 H簇,“1”表示所占空間為07 H簇。按照這個指示就可以找到文件位置并能夠查看內容了。
然而很多時候,檢驗人員并不能夠知道哪個文件中被寄宿了交換數據流,無法有針對性地分析其MFT的80H屬性。為了更快地進行鑒別,可以選擇工具作為初選,常用的工具有低空探測系統(Low-Altitude Detection System,LADS),Streams等,最簡單的還可以使用cmd命令中的dir /r來查看,但這個方法經常會漏檢,選擇時要慎重。經過初查后,會發現可能的宿主文件,然后再使用WinHex等編輯器進一步分析和查看隱藏文件的內容。
3.2? 提取固定隱藏數據
在公安實際工作中,如果NTFS流隱藏的數據能證明嫌疑人的違法行為,還需要對證據進行提取和固定,這一過程必須規范。
3.2.1? 提取固定宿主文件
使用前面提到的工具找到宿主文件,對宿主文件生成數字簽名并復制到U盤等存儲介質。需要特別注意的是,NTFS流隱藏的數據信息標識在宿主文件的MFT中,MFT是NTFS文件系統特有的,如果宿主文件被復制到FAT文件系統中,由于對文件的管理不再是MFT,則會丟失NTFS流數據,導致隱藏的數據無法繼續提取并固定。所以,提取宿主時存儲目標介質的文件系統要求必須是NTFS。
3.2.2? 提取固定寄宿的隱藏數據
如果在宿主計算機上直接提取,發現宿主文件后分析其中寄宿的隱藏數據個數,逐一提取。對于文本類的隱藏數據,可以在powershell下執行get-content命令先查看內容,如果有必要再進行提取。非文本類隱藏數據,也可以通過get-content命令查看,但由于其中包含較多的不可識別字符,一般需要對隱藏數據直接進行提取后再分析。
可能某些原因不適合在現場進行隱藏數據的提取,或者當時并沒有發現隱藏數據的存在,經過進一步分析后才找到的NTFS流數據,應分析宿主文件并提取其中的隱藏數據[2]。在這種情況下需要注意的是,分析以前要對宿主文件再生成一次數字簽名,并與之前的簽名相比對,只有兩者相符才可以進行下一步操作。宿主文件要放在NTFS文件系統下,打開文件的MFT,找到80 H屬性并逐一分析,對于存在多個80 H屬性的文件,使用get-content命令分別提取。
提取完成以后,隱藏的寄宿文件也要分別進行數字簽名,以保證證據的有效性,當然在提取的過程中有必要的話,還需要進行截屏、錄像等操作。
4? ? 結語
NTFS文件系統的ADS功能被越來越多人熟知以后,利用NTFS交換數據流進行數據隱藏的行為更普遍了,其中也會摻雜較多的惡意行為。并且,隨著檢測技術的提升,利用NTFS流隱藏的數據也更為復雜,電子數據取證工作面臨的挑戰愈加艱巨。文章針對筆者近幾年在工作中常見的NTFS流隱藏數據進行分析,并提出具體的解決方法,對從事相關行業的技術人員具有一定的參考意義和借鑒作用。