流浪者家园


标题: [分享] 服务器设置NTFS不利的一面
西布伦 (家园流浪者)
管理员
Rank: 12Rank: 12Rank: 12


管理员   爱心天使   宣传大使   活跃份子   风雨同舟   软件发布专家  
UID 6
精华 18
积分 21452
帖子 15827
威望 21452 威望值
家园币 35842 家元
现金 5118 元
存款 105781 元
阅读权限 200
注册 2005-12-28
来自 辽宁沈阳
状态 离线
 
发表于 2008-2-26 09:40  资料  个人空间  主页 短消息  加为好友  添加 西布伦 为MSN好友 通过MSN和 西布伦 交谈 QQ

服务器设置NTFS不利的一面

微软的平台不断在增加.公司用的服务器和桌面操作系统运行的一般是winNT
和win2000,而家庭用户和学生用的系统一般是winXP.这些平台是很受欢迎的并且

被大范围的使用.可是使用这些操作系统的用户和管理员却对NTFS文件系统的某个

特性知道的很少,那就是”交换数据流”(alternate data streams).

NTFS因为它的稳定性 强大的功能 以及它所提供的安全性而成为一种更优越的文

件系统,NTFS交换数据流(ADSs)是为了和Macintosh的HFS文件系统兼容而设计的,

它使用资源派生(resource forks)来维持与文件相关的信息,比如说图标及其他的

东西.而微软提供了一种方法通过Windows explorer来创建特殊的ADSs,检测这种

特殊的ADSs的必要工具和功能相当缺乏.说来也奇怪,系统一直以来都有允许用户

创建ADSs以及在这种流文件中执行隐藏代码的功能和工具.Microsoft

KnowledgeBase 中Q101353号文章承认了基于API的win32不能很好的支持ADSs.

这篇文章的目的是详细的介绍ADSs是怎么被创建和利用的,以及隐藏在ADSs中的代

码是怎么被执行的.基于不同的系统(NT 2K XP)处理ADSs也是很不同的.

创建ADSs

创建ADSs的语法相对比较简单和直接.比如说创建和文件myfile.txt相关联的

ADSs,只需简单的用冒号把文件名和ADSs名分开即可.

D:\ads>echo This is an ADS > myfile.txt:hidden

此外,ADSs还可用另外一个文件的内容来创建.

D:\ads>echo This is a test file > test.txt

D:\ads>type test.txt > myfile.txt:hidden

然后你可以用记事本去检验一下看看,命令如下:

d:\ads>notepad myfile.txt:hidden

可是,用dir命令去看不出任何变化,Windows Explorer也没有任何可用的转换和设

置来检测这种新建的ADSs的存在.

此外,ADSs可以被创建以及与目录列表相关联,而不是与一个文件关联.这种特性在

文章的后面将会显示出他的重要性,但现在我们介绍怎么创建ADSs以及足够了.

D:\ads>echo This ADS is tied to the directory listing > :hidden

这种类型的ADSs也可以通过type和notepad命令来创建.

ADSs文件的内容并不只限于text(文本)数据,任何二进制信息的流都可以组成一个

文件,而且ADS也就是一个文件而已.可执行的东西也能够相当容易的隐藏在ADSs中

,看下面的例子:

D:\ads>type c:\winnt\notepad.exe > myfile.txt:np.exe

D:\ads>type c:\winnt\system32\sol.exe > myfile.txt:sol2.exe

同样,像图片文件,声音文件或任何其他的数据流都可以隐藏在ADSs中.

最后,Windows Explorer提供了一种方法来创建特殊的ADSs(RUSS00)

看下图:我们在值那一栏可以填入很多东西

/UpLoadFiles/NewsPhoto/31511210.gif
图一
如果某个用户没有写文件的权限,那么他就不能在该文件上添加ADS.

此外,windows 文件保护功能可以防止系统文件被替换,但是他不能阻止有适当权

限的用户在这些系统文件上添加ADSs,有个工具System File Checker(sfc.exe)可

以检查受保护系统文件是否被覆盖,可是它不能检测ADSs.

检测,查看,利用ADSs

如前所述,微软并没有提供工具来检测ADSs的存在.现在检测ADSs最好的工具是由

Frank Heyne写了Lads.exe.这个工具现在的版本是3.10,它是一个命令行工具

看下图:
/UpLoadFiles/NewsPhoto/74413189.jpg
图二
从上图我们可以看出lad.exe多有用了,不仅可以显示ADSs的存在,还可以显示ADSs

的路径和大小.我们仔细注意和myfile.txt相关联的四个文件,其中三个是以很像

扑克里黑桃形状的ASCII开头的,另外一个就是在花括号中有一大串数字和字母的

那个文件,这四个文件就是我们用图一所示方法创建的.

既然找到了这些文件,我们应该怎么看文件的内容那?其实notepad就是一个很好的

工具,但是这中间还有个陷阱.

比如,以下命令就出现我们不希望的结果

d:\ads>notepad myfile.txt:hidden

执行这个命令时notepad就会问是否创建一个新文件,这个就很奇怪了,因为

myfle.txt:hidden我们早就创建了.为了执行的结果是我们所希望的,应该输入下

面的命令:

d:\ads>echo This is another ADS > myfile.txt:hidden.txt

d:\ads>notepad myfile.txt:hidden.txt

这样就出现了我们所希望的结果,文件名后增加的扩展名允许用notepad打开ADSs,

这种方法也同样适用于其他的ADSs,比如:

d:\ads>notepad myfile.txt:np.exe

ADSs是NTFS文件系统的特征,所以带有ADS的文件如果被移动到其他的文件系统,比

如FAT,FAT32或者ext2上,ADS就会被删掉,因为这些文件系统都不支持ADS,如果是

在NTFS分区之间移动,ADSs就会被保留下来.

删除ADSs相对简单,用下面的命令即可

d:\ads>type myfile.txt > myfile.bat

d:\ads>del myfile.txt

d:\ads>ren myfile.bat myfile.txt

现在用lads.exe看一下,可以看到所有的ADSs都不见了.

执行ADSs

前面的例子中,我们已经把可执行的代码藏在ADSs中,这个看起来好像没什么用处,

除非代码可以自动执行.其实,start命令就可以用来执行这些代码,现在我们再来

创建ADSs

d:\ads>type d:\winnt\notepad.exe > myfile.txt:np.exe

但是在2000上执行时会出现错误,这时因为我们提供的路径信息不够

所以,我们应该指明路径,不管时绝对路径还是相对路径.比如,下面的任何一个命

令都可以:

d:\ads>start d:\ads\myfile.txt:np.exe

d:\ads>start .\myfile.txt:np.exe

是不是出现了记事本??

当命令执行时进程会出现比较有意思的现象.例如,运行pslist.exe会出现下图情


/UpLoadFiles/NewsPhoto/53098127.jpg
图三
出现的进程名是myfile.txt:

看看任务管理器中的情况:
/UpLoadFiles/NewsPhoto/74639617.jpg
图四

再看看下图:
/UpLoadFiles/NewsPhoto/85933109.jpg
图五


我们来看看在xp的管理器中进程的情况:

/UpLoadFiles/NewsPhoto/10248550.jpg
图六

还有一种可选择的用来执行隐藏文件流的方法,我们来示范一下,先在桌面上创建

一个快捷方式,项目位置填入d:\ads\myfile.txt.假设你创建的流文件是

sol2.exe(也就是用这个命令type d:\winnt\system32\sol.exe >

myfile.txt:sol2.exe),现在我们到创建的快捷方式的属性里修改,让快捷方式指

向d:\ads\myfile.txt:sol2.exe,观察一下快捷方式的图标,是不是起了变化?

现在我们双击这个图标,就可以执行这个文件了.看执行后的结果:
/UpLoadFiles/NewsPhoto/05442063.jpg

图七

还有一种比较简便的方法是直接在注册表中的run键下添加数据流文件的完整路径

:

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run,下次系

统启动时就会自动运行该隐藏文件

在开始的运行框中也可以执行ADSs比如: file:///d:/ads/myfile.txt:sol2.exe

对于使用perl的管理员可用下面的代码执行ADSs

my $file = 'd:\ads\myfile.txt:sol2.exe';

`$file`;

把文件存为ads.pl,用下面的命令即可执行

d:\perl>ads.pl

其实用windows的WSH也可以执行ADSs:

d:\ads>echo MsgBox "VBS file to test ADSs" > ads.vbs

d:\ads>wScript ads.vbs

d:\ads>type ads.vbs > myfile.txt:ads.vbs

d:\ads>wScript myfile.txt:ads.vbs

或者:

D:\ads>start .\myfile.txt:ads.vbs


总结:

ADSs是NTFS的一个特征,它是为了和HFS兼容而设计的.可是由于比较难于被发觉,

所以对于管理员来说是一种危险,现在29A这个组织的Bennie和Ratter已经发布了

一种叫做W2K.Stream病毒,这个病毒就是利用ADSs的.

我们并不能以不使用NTFS来作为解决这个问题的办法,因为NTFS在安全性和可靠性

方面是有很大作用的.其实,管理员应该对文件和目录正确的使用DACLs

(discretionary access control lists),并且经常使用工具比如说lads.exe来扫

描他们自己的系统.





我因此自己勉励,对神,对人常存无亏的良心。
顶部


当前时区 GMT+8, 现在时间是 2008-12-5 01:03

赣ICP备06003683号

严禁任何人在本论坛发表与中华人民共和国法律相抵触的言论!

特别声明:本论坛的所有言论只代表发表者个人意见,与本论坛立场无关!

    本论坛支付平台由支付宝提供
携手打造安全诚信的交易社区 Powered by Discuz! 5.5.0  © 2001-2007 Comsenz Inc.
Processed in 0.010403 second(s), 6 queries , Gzip enabled 我要啦免费统计

清除 Cookies - 联系我们 - 流浪者家园 - Archiver - WAP