雖然說 NTFS 問世至今已經經過了 10 多年,但是有一個功能卻依舊很少人知道。嗯,或許應該說一般正常使用者很少知道。這個功能叫做 Alternate Data Streams, 簡稱 ADS 。
用白話的方式來說, ADS 允許一個檔案可以挾帶其他的資訊,而這些資訊當初的規劃是為來做為 Metadata 使用。很玄,我也承認。因為在日常的使用中,根本沒有那個應用程式會利用到 ADS 。甚至連微軟自家的檔案瀏覽器都無法顯示這些資料的存在,更別說可以新增或修改了。
為了瞭解此一設計的初衷,我查了一下資料,才發現這並 不是微軟自己的發明,在不少檔案系統都有類似的設計。這類的 Metadata 可以用來儲存顯示檔案的圖示,也可以用來儲存文書檔案的顯示格式,乍聽之下好像還道理的…但是好像也不是那麼有道理。不管如何,ADS 依舊是一個不為一般人知的祕密,也沒有給我們帶來任何的改變。
不過也因為雖然檔案系統支援這樣的功能,但是在絕大多數的應用程式都無法使 用此一功能的情況下,利用 ADS 加以儲存的資料幾乎可以說是隱形的,所以成了用來隱藏不希望別人發現的資料的方法。這樣的隱藏方式雖然不錯,但是有幾個比較大的問題,一個是這樣的隱藏在 支援 ADS 的程式下是沒有任何效果。另外一個就是如果要隱藏一大堆的檔案、甚至於是目錄,這樣的方式並不適合。最嚴重的問題是當原始檔案被刪掉後,這些隱藏資料也會 被一併刪除。所以除非你自己有很好的記性,不然就可能是欲哭無淚了。
一般情況下我們想要隱藏資料,可以選擇像是 Invisible Folders 這類的軟體,不但使用上更為方便,而且效果也較好。那麼,誰適合用 ADS 來隱藏資料呢,或者說必須使用 ADS 來隱藏資料?答案通常是那些不懷好意的分子(例如駭客)。所以病毒可以掛在某個正常檔案的 ADS 內避免被偵測,後門程式也可以,駭客慣用的小工具也可以。不管是哪一類檔案,都是為了避免被輕易發現。雖然通常 Rootkit 也具備有相同的功能,但是 ADS 使用上更為簡單,也不會造成系統任何異常或不穩定的現象,而這些都是駭客會加以考量的要素。
像這種實際使用與原始初衷相差甚遠的例子也不算少見,就像水可載舟、亦可覆舟一樣,好或壞完全取決於使用者的心態。微軟也確實做了一些改變想要避免產生嚴重的危害,但是效果畢竟還是有限。我們來實際看看 ADS 的使用方式。
用白話的方式來說, ADS 允許一個檔案可以挾帶其他的資訊,而這些資訊當初的規劃是為來做為 Metadata 使用。很玄,我也承認。因為在日常的使用中,根本沒有那個應用程式會利用到 ADS 。甚至連微軟自家的檔案瀏覽器都無法顯示這些資料的存在,更別說可以新增或修改了。
為了瞭解此一設計的初衷,我查了一下資料,才發現這並 不是微軟自己的發明,在不少檔案系統都有類似的設計。這類的 Metadata 可以用來儲存顯示檔案的圖示,也可以用來儲存文書檔案的顯示格式,乍聽之下好像還道理的…但是好像也不是那麼有道理。不管如何,ADS 依舊是一個不為一般人知的祕密,也沒有給我們帶來任何的改變。
不過也因為雖然檔案系統支援這樣的功能,但是在絕大多數的應用程式都無法使 用此一功能的情況下,利用 ADS 加以儲存的資料幾乎可以說是隱形的,所以成了用來隱藏不希望別人發現的資料的方法。這樣的隱藏方式雖然不錯,但是有幾個比較大的問題,一個是這樣的隱藏在 支援 ADS 的程式下是沒有任何效果。另外一個就是如果要隱藏一大堆的檔案、甚至於是目錄,這樣的方式並不適合。最嚴重的問題是當原始檔案被刪掉後,這些隱藏資料也會 被一併刪除。所以除非你自己有很好的記性,不然就可能是欲哭無淚了。
一般情況下我們想要隱藏資料,可以選擇像是 Invisible Folders 這類的軟體,不但使用上更為方便,而且效果也較好。那麼,誰適合用 ADS 來隱藏資料呢,或者說必須使用 ADS 來隱藏資料?答案通常是那些不懷好意的分子(例如駭客)。所以病毒可以掛在某個正常檔案的 ADS 內避免被偵測,後門程式也可以,駭客慣用的小工具也可以。不管是哪一類檔案,都是為了避免被輕易發現。雖然通常 Rootkit 也具備有相同的功能,但是 ADS 使用上更為簡單,也不會造成系統任何異常或不穩定的現象,而這些都是駭客會加以考量的要素。
像這種實際使用與原始初衷相差甚遠的例子也不算少見,就像水可載舟、亦可覆舟一樣,好或壞完全取決於使用者的心態。微軟也確實做了一些改變想要避免產生嚴重的危害,但是效果畢竟還是有限。我們來實際看看 ADS 的使用方式。
我針對 ADS 做了基本介紹。在本篇文章中,我將繼續此一話題,並將介紹重點移至如何實際進行 ADS 的相關操作。篇幅有些長,但是因為大多是截圖的關係,所以在閱讀上應該是不會花費太多的時間。
除了透過微軟內建的指令外,也有一些第三方的工具可以處理 ADS 的資料。像 Alternate Data Stream Tools for NTFS 這個工具可以掃描並列出系統中所有的 ADS 資料,算是一個很方便的小工具。
轉自 就是資安
- 首先我們建立一個空的目錄(D:\ads),並在此一目錄下進行測試。
- 我們產生一個一般的文字檔,內容是”Hello World”,大小為16位元組。
- 透過 type 指令確認檔案內容為”Hello World”。
- 接下來我們使用下列指令產生 ADS 資料,其中 hello.txt:hidden.txt 表示將名為 hidden.txt 的 ADS 資料附掛在 hello.txt 上。檔案內容為 “I’m Hidden”。
- 檢查一下檔案,雖然時間變了,但是大小卻沒有變。
- 查看原始檔案內容,同樣沒有任何變動。
- 使用 type 指令如法炮製,看看 ADS 內容是甚麼。很不幸的,系統顯示找不到這個檔案。難道是指令下錯了?
- 改用記事本試看看,沒有錯誤訊息。
- 筆記本顯示出我們原先輸入的內容,而且注意檔名正是 hello.txt:hidden (最後一個txt的副檔名被記事本自動隱藏了)。由此證明雖然 hello.txt 的檔案大小沒有改變,而且 type 指令也無法顯示,但是我們剛剛輸入的資料確實被儲存在 ADS 中。 事實上,使用其他應用程式也可以看到這個檔案的內容。
- 一個檔案可以擁有多個 ADS 資料,而且不需要同樣的類型。我們將一個執行檔 (calc.exe) 覆掛在 hello.txt 中,原先 hello.txt 已經有另外一個 ADS 資料,名稱為 hidden.txt 。
- 雖然之前我們曾經使用 dir 指令時無法看到任何有關 ADS 的資訊,但是其實 dir 有一個參數 - /r 可以用來查看 ADS 資訊。透過 dir * /r 指令我們確認 hello.txt 有兩個 ADS 資料。不過很可惜的是, /r 參數在Vista 之前的 Windows 版本是不提供的。
- 我們嘗試直接執行儲存於 ADS 內的檔案,系統出現錯誤訊息。
- 上網查詢,可以找到程式啟動的方式必須透過 start 這個指令,執行後卻同樣出現錯誤。 如果你出現跟我一樣的錯誤,恭喜你,表示你的系統至少不是很舊的系統。
- 為了證明資料不假,我特定找了一個 Windows 2000 的系統,並將小算盤 (calc.exe) 覆掛在 xcopy.exe 的 ADS (ADS 名稱為 hidden.exe) 中。同樣的,直接執行會出現錯誤,但是使用 start 指令可以正確的呼叫出小算盤。
- 查看執行程序,可以看到 xcopy.exe 在執行中,卻看不到 calc.exe 在執行,可是實際上真正執行的程式是 calc.exe。此為一大問題,表示 ADS 的檔案就算被執行了,也無法從工作管理員中看到,而且不需要使用到 rootkit 的技術。
- 如果你以為只有舊系統才會有這個問題,新系統已經免疫了,先別高興得太早。我們先將一個名為 hfs.exe 的檔案附掛在 calc.exe 的 ADS 之中以備測試。
- 使用 start 指令依舊失敗,這次我們改用 runas 這個指令來啟動程式。
- hfs.exe 被正確啟動了,而且是在 Vista SP1 的環境下。
- 唯一值得慶幸的是在工作管理員的顯示名稱為 calc.exe:hfs.exe ,而不再僅是 calc.exe 。
- 當我們嘗試複製包含 ADS 資料的檔案時,ADS 資料也會被一併複製 (只要目的磁碟區也支援 ADS 的功能)。我們看到透過複製的指令 hello2.txt 包含與 hello.txt 相同的 ADS 資料。
除了透過微軟內建的指令外,也有一些第三方的工具可以處理 ADS 的資料。像 Alternate Data Stream Tools for NTFS 這個工具可以掃描並列出系統中所有的 ADS 資料,算是一個很方便的小工具。
轉自 就是資安
2 意見:
2010年12月31日 上午9:21
文中所提的
Alternate Data Stream Tools for NTFS 2.5.0
似乎已不復存在,幾乎所有的連結都會回到這個已經失效的domain
http://www.adstools.net/assets/ADSTools.zip
2011年1月5日 晚上8:04
搜尋一下其實滿多的 ^^