---恢復內容開始---
做這道題目的經歷比較坎坷,題目中用於隱藏flag的jpg文件出了問題,導致不能被交換數據流隱寫所以出題人換了一次題目,最后做法也換了,不過出題人一開始的考察點還是基於NTFS交換數據流隱寫。
0x1.什么是NTFS數據交換流(ADS)
NTFS交換數據流(Alternate Data Streams,簡稱ADS)是NTFS磁盤格式的一個特性。在NTFS文件系統下,每個文件都可以存在多個數據流,意思是除了主文件流之外還可以有許多非主文件流寄宿在主文件流中,這些利用NTFS數據流寄宿並隱藏在系統中的非主文件流我們稱之為ADS流文件。雖然我們無法看到ADS流文件,但它們卻是真實存在。下面通過一個實例來具體展現ADS流文件的創建、關聯及隱藏過程。這一段是百科上面的內容。
2) 創建數據流文件並關聯宿主文件,在DOS窗口中輸入“echo This is an ADS > 1.txt:ads.txt”后回車。該命令的含義為:創建一個名為ads.txt內容為“This is an ADS”的數據流文件與宿主文件1.txt進行關聯。此時回到C盤根目錄下查看,只有1.txt並無ads.txt,打開1.txt查看起內容仍為“This is a test file”也未做任何改變,那么數據流文件ads.txt到底到哪去了呢?“dir”命令也無法查看到。這時,在DOS窗口中輸入“notepad 1.txt:ads.txt”,在彈出的記事本中就可以看到ads.txt中的內容。
type命令是將已經存在的一個文件,用交換數據流的方式寄生到另外一個文件夾上.
/*寄生到1.jpg上*/ E:\113>type 1.txt >>1.jpg:1.txt /*寄生到113文件夾上*/ E:\113>type 1.jpg >>113:1.jpg /*寄生到a.exe這個可執行文件上上*/ E:\113>type 1.jpg >>a.exe:1.jpg /*寄生到E盤根目錄*/ E:\113>type 1.jpg>>E:\:1.jpg
0x2.利用NTFS交換數據流隱藏可執行文件
winXP中可以直接運行寄生的可執行程序,Win7之后的版本需要手動創建一個連接文件,通過這個鏈接文件才能運行這個寄生的可執行交換數據流文件
winXP實例
type
a.exe>>1.txt:a.exe
XP中可以直接通過
start
命令使用絕對路徑來調用這個寄生的可執行文件
start 絕對路徑 1.txt:a.exe
0x3.檢測和清楚NTFS交換數據流隱藏文件
1.之前使用cmd命令notepad可以查看隱藏的txt文件,也可已使用Ntfs Streams Editor這個軟件查看 https://files.cnblogs.com/files/rainbow7/ntfsstreamseditor.zip
做CTF時使用這個軟件很方便
2.使用lads,將lads放在需要檢查的目錄下工具地址: https://files.cnblogs.com/files/rainbow7/lads.zip
lads.exe /S /*檢測根目錄下的隱藏流文件*/
3.清除ADS 使用streams.exe這個軟件清除 https://files.cnblogs.com/files/rainbow7/streams.zip
streams.exe -d <File>可以添加-s參數來一次性遞歸清除E盤下所有寄生的交換數據流文件(慎用,尤其是對系統盤一定不要隨便使用遞歸清除,系統本身的一些數據流也會被一起清除掉)*/
E:\
0x4.做題步驟:
題目給了三個十六進制內容的文件打開如下圖,三個文件開頭分別是03 04, 01 02, 05 06,這讓我馬上想起了zip壓縮包的三個組成部分,壓縮源文件數據區,壓縮源文件目錄區。壓縮源文件目錄結束標志,只不過每個文件都缺少一個50 4B的標記。手工給加上就行了。
使用010Editor把三個十進制文件拼起來,然后保存為.zip文件。
將文件解壓出來有一個2.txt和一個1.jpg文件2.txt內容為:1.txt behind 1.jpg 1.txt隱藏在在1.jpg后面,使用binwalk跑不出來提示就是一張單純的圖片,查看十六進制也是一個
jpg文件尾部結束沒有問題,之后根據提示NTFS我才找到NTFS交換數據流隱寫的方法。
特別注意:如果文件原本是在壓縮包內的,這時使用除WinRAR以外的軟件進行提取會造成數據流丟失。所以務必使用WinRar進行文件解壓
當我重新將zip文件使用win解壓,然后用Ntfs Streams Editor這個軟件查看但是沒有找到我要的結果,后來找到出題人問了一下才知道題目壞了,我去

但是最后題目沒改成功,然后換了一個題,換了一種做法變得更簡單。下面我自己將數據流添加進去 type 1.txt>>2.jpg:1.txt,然后當作一切都沒發生。
兩種不同做法:
這篇文章主要寫我解題的學習過程,關於NTFS交換數據流的知識還請去百度搜索學習,如內容存在錯誤還請斧正。
---恢復內容結束---