NTFS上的交换数据流
-------------------------------------------------------
| lake2
| http://mrhupo.126.com |
| |
-------------------------------------------------------
----目次--------
1、媒介
2、观点
3、性子和使用
-3.1 创建
-3.2 删除
-3.3 检测与提取
-3.4 生存与传输
-3.5 文件隐藏
-3.6 运行
-3.7 与IIS相关
4、附言
5、参考文章
----------------
1、媒介
互换数据流(alternate data streams,以下简称ADS)也不是什么新工具,但用户和办理员对它的认识知之甚少,本文将联合古人的资料对ADS做一番探讨。若有错误,还望妙手见教。
2、观点
先来看看微软对多文件流的解释:
在 NTFS 文件体系下,每个文件都可以有多个数据流。值得一提的是,流不是 NTFS 2000 的功能,但是从 Windows NT 3.1 开端流已存在。当在非 NTFS 卷(如 Windows 98 计算机的磁盘分区)下读取文件内容时,只能访问一个数据流。因而,您会觉得它是该文件真正的且"唯一"的内容。这样的主流没有称号,而且黑白 NTFS 文件体系可以处理的唯逐一个流。但是当在 NTFS 卷上创建文件时,事变大约不一样。参看图 1 相识此重要观点。
【图1】
ADS是NTFS文件体系特有的性子,也就是后面说的多数据流文件除了主流之外的流,但基于API的Win32却不能很好的支持ADS。例如我们可以把一个文件以流的形式附加到另一个文件(载体)中,但是对于Windows资源办理器来说载体文件没有发生任何变化(包罗其大小、修正工夫等)。由此将会产生一系列问题。
下面就让我们来看看ADS的一些性子及使用吧。
3、性子和使用
3.1 创建
创建ADS很简单,语法是<载体文件名>:
看个命令行下面的例子:echo This is lake2's stream > a.txt:stream.txt
通过上面的例子我们就很简单的创建了一个ADS,它在windows下并不行见,不信你可以用资源办理器或者dir命令看看a.txt文件的大小是不是0。打开a.txt,可是里面什么内容都没有。固然没有内容,这里ADS是a.txt:stream.txt,内容应该在这个文件里。细致,这里用type命令并不能显示文件a.txt:stream.txt,但是记事本却可以。照旧在命令行下输出notepad a.txt:stream.txt,呵呵,看到"This is lake2's stream"了吧。如今我们用记事本打开a.txt任意修正内容,这并不会影响到流的内容;同样,对a.txt:stream.txt的修正也不会影响到载体文件a.txt。
3.2 删除
删除ADS最为简单,直接删载体文件就是;但是如果只想删ADS而保存载体文件的话最简单的措施就是把载体文件拉到非NTFS分区去走一趟。因为ADS是NTFS的"专利",离开了NTFS文件体系ADS也就烟消云散了。
如果你只想在NTFS分区删除ADS的话,可以用下面这个批处理:
type a.txt > a.txt.bak
rem type不能支持ADS,所以拿它来备份载体
del a.txt
rem 删除载体及ADS
ren a.txt.bak a.txt
rem 恢复载体文件
3.3 检测与提取
关于ADS的检测触及到API编程了,呵呵,这方面我还在高兴学习,这里就抄微软的话:"Win32 备份 API 函数(BackupRead、BackupWrite 等)可用于罗列文件中的流"。
不过幸亏已经有检测ADS的软件了,下面几个软件都可以检测:
LADS (List Alternate Data Streams) - http://www.heysoft.de/nt/ntfs-ads.htm
Streams v1.1 (Sysinternals) - http://www.sysinternals.com/ntw2k/source/misc.shtml
NT Objectives Forensic Toolkit (sfind.exe) -(http://www.ntobjectives.com/)
要提取ADS必需要第三方工具,NTRootKit工具包里的cp可以做到(cp也可以用于创建流);NTRootKit工具包我一直没有找到,google上一搜全是谁人NTRootKit后门,只好本身用C写了一个。这也不会要求你是编程妙手,C言语里的文件函数完全可以支持ADS的创建、删除、提取,只需把ADS当成一个文件来处理就是了。
3.4 生存与传输
后面说了,ADS在非NTFS分区就会丢失,那么说来在非NTFS分区就无法生存ADS了吗?直接生存没有措施,我们可以直接生存啊。呵呵,这样必要借助一个软件,你也应该有的,它就是WinRAR。对含有ADS的文件加压时,找到初级选项,那里有一个"生存文件流数据",打上勾(图2),呵呵,你就可以把ADS压缩到rar文件里了。这个rar文件可以生存到非NTFS分区的——细致啊,是生存,不能解压出来的。
【图2】
如果要传输ADS,最好是用资源办理器打开对方的共享再复制粘贴;如果你想用其他方法传输的话大约就只能传输包含ADS的rar文件了。
3.5 信息隐藏
要失密信息,传统的做法是加密。虽然加密后信息内容变成了无法直接读出的密文,不过也等于报告人家这是秘密,就不安全了;但是如果我把信息藏起来让你找不着不就ok了吗,所以一种叫做"信息隐藏"的技术就被提出来了。
古装戏里每每有隐写术,就是一张白纸在平常就是一张普通的白纸,但在特殊的作用下事后写好的字就会显示出来。用这个来比喻信息隐藏是最为恰当的了。信息隐藏是目前信息安全研究的热门领域,完成方法也许多,最盛行的大约就因而bmp图像文件为载体,通过替换文件每个字节无关紧要的最低的一位来完成的。
呵呵,不过有一种完成简单的信息隐藏技术就在我们面前目今。对,就是利用ADS!既然Windows不能很好的察觉ADS,那么我们就可以把要失密的文件以ADS方法生存。不过这里提示一下,利用ADS完成信息隐藏的安全性不是很高,不过也不是很低——我想应该没有人没事就花少量工夫用lads.exe检测着玩吧。
别的,大多数杀毒软件并不能检测ADS,所以我们可以利用流让杀毒软件pass后门。例:type nc.exe > a.txt:nc.exe
原文件nc.exe会被金山毒霸查出来,处理之后只管a.txt:nc.exe内容与nc.exe完全一样,但并不会被金山毒霸发明。
3.6 运行
后面说了可利用ADS让后门规避杀毒软件,但如果不能运行的话还不是没用。那怎样运行呢?
命令行下面直接运行a.txt:nc.exe是不行的,应该用start命令。关于这个命令的细致用法你本身打help start看看吧。
start命令运行可执行的ADS时要用绝对路径或者以后路径用./加文件名。看例子:start ./a.txt:nc.exe or start c:\a.txt:nc.exe
在Win2000下查看历程只能看到载体文件,而XP下则可以发明整个ADS。图3是在XP下用tlist的截图。
【图3】
3.7 与IIS相关
在IIS中访问ADS会有一些风趣的事变发生,这个拜见我的另一篇Blog《互换数据流(ADS)与IIS的宿世与今生》(http://blog.csdn.net/lake2/archive/2005/01/26/269659.aspx)。
4.附言
谢谢你看完我的文章 :)
5.参考文章
bigworm翻译,《NTFS倒霉的一壁》(http://www.xfocus.net/articles/200212/466.html)
xundi,《关于NTFS文件体系中的数据流问题》(http://www.xfocus.net/articles/200103/81.html)
H. Carvey,《The Dark Side of NTFS》(http://patriot.net/~carvdawg/docs/dark_side.html)
Damon Martin,《Windows, NTFS and Alternate Data Streams》(http://www.giac.org/practical/gsec/Damon_Martin_GSEC.pdf)
《NTFS Streams - Everything you need to know》(http://www.diamondcs.com.au/index.php?page=archive&id=ntfs-streams)
- 文章作者: 福州军威计算机技术有限公司
军威网络是福州最专业的电脑维修公司,专业承接福州电脑维修、上门维修、IT外包、企业电脑包年维护、局域网网络布线、网吧承包等相关维修服务。
版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处 、作者信息和声明。否则将追究法律责任。
TAG:
评论加载中...
|