1. 程式人生 > >Windows 備用資料流(ADS)的妙用___轉載

Windows 備用資料流(ADS)的妙用___轉載

NTFS交換資料流(Alternate Data Streams,簡稱ADS)是NTFS磁碟格式的一個特性,在NTFS檔案系統下,每個檔案都可以存在多個數據流。通俗的理解,就是其它檔案可以“寄宿”在某個檔案身上,而在資源管理器中卻只能看到宿主檔案,找不到寄宿檔案。利用ADS資料流,我們可以做很多有趣的事情。 

  一、ADS資料流檔案的建立 

  在NTFS分割槽建立ADS資料流檔案有兩種形式:一是指定宿主檔案;二是建立單獨的ADS檔案。常用的建立命令有兩個:echo和type。 

  1、建立指定宿主檔案的ADS資料流檔案 

  第一步:建立宿主檔案 



  宿主檔案是指在Windows中可以正常顯示、執行或編輯的任何型別檔案。假設D:盤為NTFS分割槽,我們用記事本建立一個txt格式的文字檔案host.txt,隨意輸入一些內容,儲存在D:盤根目錄中。記住該檔案的大小。 

  第二步:關聯資料流檔案 

  進入DOS提示符狀態,在“D:\>”狀態輸入命令“echo "this is a test file">host.txt:ads.txt”。這樣我們就建立了一個名為ads.txt,內容為“this is a test file”的資料流檔案,並與宿主檔案host.txt進行了關聯,即ads.txt檔案成了host.txt的一個寄生檔案。此時,無論是用dir命令還是在資源管理器中,均無法看到ads.txt檔案,只能看到host.txt檔案,且其大小未發生任何改變! 


  2、建立單獨的ADS資料流檔案 

  在DOS提示符狀態輸入命令“echo "this is a test file">:ads.txt”,這樣就在當前目錄下建立了一個未指明宿主檔案的名為ads.txt的資料流檔案,它同樣無法看到。可以說,這個檔案已經在系統中隱身了。由於未指定宿主檔案,一般的方法無法刪除,唯一能將之刪除的辦法就是刪除其上一級目錄。如果這樣的單獨資料流檔案存在於磁碟根目錄,那麼刪除它將是一件非常棘手的事! 

  除了文字檔案以外,包括可執行檔案在內的任何常規檔案都可以被設定成ADS資料流檔案。例如“type c:\winnt\system32\sol.exe>host.txt:sol2.exe”命令就會把sol.exe檔案設定成host.txt的ADS資料流檔案sol2.exe。我們甚至可以對系統的一些重要檔案附加資料流檔案,如:“type im-age.bmp>c:\windows\explore.exe:im-age.bmp”命令就會將圖片image.bmp設為explore.exe的資料流檔案。不難看出,ADS資料流檔案的基本建立形式就是宿主檔名:資料流檔名,中間用冒號間隔。 


  二、ADS資料流檔案的檢視 

  在上述例子中,我們建立了一個ads.txt寄宿在host.txt檔案上,如何檢視 ads.txt檔案呢?可以用“notepad host.txt:ads.txt”命令來檢視ads.txt檔案的內容(如圖一所示),你會發現其內容正是“this is a test file”。依此類推,用“mspaint.exe ex-plore.exe:image.bmp”命令就可以檢視寄宿在explore.exe中的圖片。實際上,ADS資料流檔案的通用檢視方法是:ADS檔案對應的開啟/編輯程式 宿主檔名:資料流檔名。 

  在當前目錄執行dir /r 命令,在檔案末端會有:$DATA

  三、ADS資料流檔案的應用 

  在實踐中,ADS資料流檔案有以下的常見應用:一是隱藏/加密檔案。例如命令“type 1.bmp>song.mp3:1.bmp”可以將1.bmp影象隱藏到mp3歌曲中,1.bmp設為ADS資料流檔案後,自身可以刪除,song.mp3檔案又看不出任何異樣,用mspaint等程式依然可以通過song.mp3檔案檢視到1.bmp影象。因此,用ADS資料流檔案隱藏/加密檔案具有較強的隱蔽性和安全性,只要宿主檔案沒有刪除,資料流檔案就比較安全。更何況宿主檔案可以是系統的一些重要的核心的檔案。二是通過winrar批量隱藏/儲存重要檔案。首先將要隱藏的檔案打包成RAR壓縮包,再執行命令“type 1.rar>song.mp3:1.rar”即可將這些檔案設為song.mp3的資料流檔案。winrar有一個重要的特性——支援資料流壓縮!開啟winrar的壓縮對話方塊,單擊“高階”標籤,勾選“NTFS選項”中的“儲存檔案資料流”選項,即可將ADS資料流檔案連同宿主檔案一起打包壓縮,這樣就方便了資料流檔案的壓縮和異地儲存。ADS資料流檔案的特殊性質決定了它還有另外一類運用——製作病毒或木馬。事實上,當前很多病毒、木馬就是利用資料流檔案來躲避防毒軟體查殺的。與此同時,防毒軟體對ADS資料流技術的支援並不是很好,這些都導致了病毒木馬的進一步氾濫。 

  四、ADS資料流檔案的執行 

  當一個可執行檔案被隱藏在ADS資料流檔案中後,我們可以通過start命令來執行這個程式。假設我們用“type c:\windows\system32\notepad.exe>host.txt:np.exe”命令將記事本設為了host.txt檔案的資料流檔案,那麼就可以通過“start .\host.txt:np.exe”命令來執行記事本。請注意:命令列中的“.\”是相對路徑表示方法,說明當前目錄就是host.txt所在的目錄。如果當前目錄不是host.txt所在的目錄,則應用絕對路徑表示法指明host.txt所在的路徑,否則,系統會報錯!當ADS資料流檔案是一個VBS指令碼檔案時,也可以通過windows的 WSH來執行,例如“wt host.txt:ads.vbs”。 

  五、ADS資料流檔案的檢測 

  Microsoft KnowledgeBase 中Q101353號文章承認了基於API的win32不能很好地支援ADS。因此,作業系統本身難以發覺ADS資料流檔案的存在。我們必須藉助第三方軟體來檢測 ADS。常見的工具有LADS (List Alternate Data Streams)、Streams、Sfind等,其中LADS是較好的工具,下載地址:http://www.vkil.net/tools/lads_4.00.rar。LADS是一個命令列工具,將其拷到NTFS分割槽的根目錄中,然後執行“LADS /S”,它就會對所在分割槽進行全盤檢測,一旦發現有ADS檔案,就會在螢幕上列出來(如圖三所示)。此外,冰刃IceSword v1.22中文版(下載地址:http://cqdxa.ddvip.com:81/down/IceSword122cn.zip)也可以檢測並刪除ADS檔案。方法如下:啟動IceSword,開啟檔案管理器,選中NTFS分割槽,然後單擊右鍵,彈出如圖四所示的介面,選擇其中的“列舉ADS(包含子目錄)”。對於檢測出的ADS,可以直接點選並刪除。 

  六、ADS資料流檔案的刪除 

  ADS資料流檔案有三種刪除方式。一是直接刪除宿主檔案,二是將宿主檔案移到FAT32等非NTFS分割槽中;三是利用工具軟體,如IceSword刪除。