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删除。

Windows 备用数据流(ADS)的妙用___转载的更多相关文章

  1. NTFS ADS(备用数据流)

    NTFS Alternate Data Stream(ADS)   1993年微软推出了基于流行的NT平台的Windows NT操作系统.之后,NTFS作为WIndows开发基于NT的操作系统时的首选 ...

  2. NTFS的交换数据流ADS应用

    NTFS的交换数据流ADS应用   NTFS是Windows常用的文件系统格式.该格式支持交换数据流(Alternate Data Streams,缩写ADS)特性.该特性可以让多个文件流使用同一个文 ...

  3. Windows下基于ADS+J-Link 的ARM开发环境搭建

    在一般ARM编程教学和实验环境里,一般采用 ADS加+并口转Jtag板+H-Jtag的开发环境.但是这种方法最大缺点是需要机器上有一个并口.现在无论PC还是笔记本都很难有并口,因此采用USB接口调试器 ...

  4. 【windows phone】CollectionViewSource的妙用

    在windows phone中绑定集合数据的时候,有时候需要分层数据,通常需要以主从试图形式显示.通常的方法是将第二个ListBox(主视图)的数据源绑定到第一个ListBox (从视图)的Selec ...

  5. 临时性备用 socks 巧(科)妙(学)上网,你懂的,不多解释

    最近 Shadowsock s 不稳定,极大的影响了工作效率.不过 ssh 还能连上自己的机器,所以掏出 ssh -D 满足自己 #!/usr/bin/env bash disable_proxy() ...

  6. 重大发现: windows下C++ UI库 UI神器-SOUI(转载)

    转载:http://www.cnblogs.com/setoutsoft/p/4996870.html 在Windows平台上开发客户端产品是一个非常痛苦的过程,特别是还要用C++的时候.尽管很多语言 ...

  7. 在windows上搭建redis集群(redis-cluster)(转载)

    一 所需软件:Redis.Ruby语言运行环境.Redis的Ruby驱动redis-xxxx.gem.创建Redis集群的工具redis-trib.rb 二 安装配置redis  redis下载地址 ...

  8. Linux和Windows系统的远程桌面访问知识(转载)

    为新手讲解Linux和Windows系统的远程桌面访问知识   很多新手都是使用Linux和Windows双系统的,它们之间的远程桌面访问是如何连接的,我们就为新手讲解Linux和Windows系统的 ...

  9. windows下nginx安装、配置与使用(转载)

    目前国内各大门户网站已经部署了Nginx,如新浪.网易.腾讯等:国内几个重要的视频分享网站也部署了Nginx,如六房间.酷6等.新近发现Nginx 技术在国内日趋火热,越来越多的网站开始部署Nginx ...

随机推荐

  1. linux 入门测验

    cd . 当前目录.. 返回上一级目录 ../../../返回多级目录 grep "目标信息" 目标地址 -v :显示没有被匹配的信息 mkdir -p:创建多级目录 mkdir ...

  2. C++的一些编程规范

    新规范的目标: 让代码排错更加简单 程序员专心于业务逻辑 将一些错误交给编译器处理 提高代码可维护性 逐步实现插件化 编码 使用array(QT下用QVarLengthArray)代替和vector代 ...

  3. 一些Andoid studio常用的快捷键

    常用快捷键    Android Studio是基于IntelliJ IDEA的,我们都知道,IDEA是一个很方便很好用的IDE,其中有许多快捷键,但是太多快捷键我们也记不住. 其实,我们可以记住几个 ...

  4. Java关键字final、static使用总结 (final static在容器中不可以改变容器但可以改变存放)

    一.final        根据程序上下文环境,Java关键字final有“这是无法改变的”或者“终态的”含义,它可以修饰非抽象类.非抽象类成员方法和变量.你可能出于两种理解而需要阻止改变:设计或效 ...

  5. unity手游使用terrian注意事项

    1.Terrain比较占性能,普通机器测试,未开terrain  60帧,开启terrain后  30帧 2.Terrain的size大小与占用性能无关,不过越小的Terrain的烘焙上去的阴影越模糊 ...

  6. [linux] uptime 命令中关于平均负载的解释

    1.当前时间 00:13:25 2.系统已运行的时间 9小时19分 3.当前在线用户 2 user 4.平均负载:0.17, 0.12, 0.07 最近1分钟.5分钟.15分钟系统的负载 为了更好地理 ...

  7. 一键压测工具改造(locust)

    本文内容来自“天外归云”大神,原文链接http://www.cnblogs.com/LanTianYou/p/5987741.html,目前只对启动脚本做了一些改造,应该说是,不适用powershel ...

  8. git stash压栈

    git stash 用于暂存当前正在进行的工作,如想pull最新的代码,又不想加新的commit,或者为了fix一个紧急的bug,先stash,返回到自己上一个commit. 修改完bug后,再执行g ...

  9. 数据库mysql中编码自动生成

    call PrGetRuleCodeNoDate('Table_Name'); call PrGetRuleCode('Table_Name');

  10. 多结果集IMultipleResult接口

    在某些任务中,需要执行多条sql语句,这样一次会返回多个结果集,在应用程序就需要处理多个结果集,在OLEDB中支持多结果集的接口是IMultipleResult. 查询数据源是否支持多结果集 并不是所 ...