搜尋此網誌

2009年6月17日 星期三

Alternate Data Streams (一)

雖然說 NTFS 問世至今已經經過了 10 多年,但是有一個功能卻依舊很少人知道。嗯,或許應該說一般正常使用者很少知道。這個功能叫做 Alternate Data Streams,簡稱 ADS 。用白話的方式來說, ADS 允許一個檔案可以挾帶其他的資訊,而這些資訊當初的規劃是為來做為 Metadata 使用。很玄,我也承認。因為在日常的使用中,根本沒有那個應用程式會利用到 ADS 。甚至連微軟自家的檔案瀏覽器都無法顯示這些資料的存在,更別說可以新增或修改了。

為了瞭解此一設計的初衷,我查了一下資料,才發現這並不是微軟自己的發明,在不少檔案系統都有類似的設計。這類的 Metadata 可以用來儲存顯示檔案的圖示,也可以用來儲存文書檔案的顯示格式,乍聽之下好像還道理的…但是好像也不是那麼有道理。不管如何,ADS 依舊是一個不為一般人知的祕密,也沒有給我們帶來任何的改變。

不過也因為雖然檔案系統支援這樣的功能,但是在絕大多數的應用程式都無法使用此一功能的情況下,利用 ADS 加以儲存的資料幾乎可以說是隱形的,所以成了用來隱藏不希望別人發現的資料的方法。這樣的隱藏方式雖然不錯,但是有幾個比較大的問題,一個是這樣的隱藏在支援 ADS 的程式下是沒有任何效果。另外一個就是如果要隱藏一大堆的檔案、甚至於是目錄,這樣的方式並不適合。最嚴重的問題是當原始檔案被刪掉後,這些隱藏資料也會被一併刪除。所以除非你自己有很好的記性,不然就可能是欲哭無淚了。

一般情況下我們想要隱藏資料,可以選擇像是 Invisible Folders 這類的軟體,不但使用上更為方便,而且效果也較好。那麼,誰適合用 ADS 來隱藏資料呢,或者說必須使用 ADS 來隱藏資料?答案通常是那些不懷好意的分子(例如駭客)。所以病毒可以掛在某個正常檔案的 ADS 內避免被偵測,後門程式也可以,駭客慣用的小工具也可以。不管是哪一類檔案,都是為了避免被輕易發現。雖然通常 Rootkit 也具備有相同的功能,但是 ADS 使用上更為簡單,也不會造成系統任何異常或不穩定的現象,而這些都是駭客會加以考量的要素。

像這種實際使用與原始初衷相差甚遠的例子也不算少見,就像水可載舟、亦可覆舟一樣,好或壞完全取決於使用者的心態。微軟也確實做了一些改變想要避免產生嚴重的危害,但是效果畢竟還是有限。在下一篇的文章中,我們來實際看看 ADS 的使用方式。

About