NTFS数据流

本文章中许多地方引用了下面这篇文章的内容:
https://blog.csdn.net/cosmoslife/article/details/49299881
我用了里面的一些示例,然后我将其解释和整理:

NTFS

NTFS数据流是NTFS的一个特性,在了解NTFS数据流之前,要先了解NTFS。

NTFS(New Technology File System)是Windows NT内核的系列操作系统支持的、一个特别为网络和磁盘配额、文件加密等管理安全特性设计的磁盘格式,提供长文件名,数据保护和恢复,能通过目录和文件许可实现安全性,并支持跨越分区。——百度百科

NTFS数据流

一、什么是NTFS数据流?

NTFS交换数据流(alternate data streams,简称ADS)是NTFS磁盘格式的一个特性,在NTFS文件系统下,每个文件都可以存在多个数据流,就是说除了主文件流之外还可以有许多非主文件流。它使用资源派生来维持与文件相关的信息,虽然我们无法看到数据流文件,但是它却是真实存在于我们的系统中的。

创建一个数据交换流文件的方法很简单,命令为“宿主文件:准备与宿主文件关联的数据流文件”。 ——百度百科

NTFS交换数据流也叫做备用数据流

所有的文件在NTFS中至少包含一个主数据流,也就是用户可见的文件或是目录,一个文件在NTFS中真正的文件名称格式:

<文件名>:<流名>:<流种类>

我们在上面说文件在NTFS中至少包含一个主数据流可以包含许多备用数据流。但是我们并没有说ADS(备用数据流)一定要依附于某个文件。

经过我查阅许多资料,得到的结论就是:

  1. ADS可以单独存在——创建单独的ADS数据流文件(这个ADS数据流文件不与宿主文件关联,是单独存在的;这个ADS数据流文件我们无法直接看到。)
  2. ADS也可以与宿主文件相关联——创建指定宿主文件的ADS数据流文件(将ADS数据流文件与宿主文件相关联;这个ADS数据流文件也无法直接看到。)

本文下文所说的ADS数据流、ADS数据流文件都指同一个东西,也就是:alternate data streams,简称ADS。

二、ADS的创建及查看(以文本文件为例)

其实我们已经在上面说了在NTFS分区创建ADS数据流文件有两种选择,这里再次强调一下:

  1. 创建单独的ADS数据流文件
  2. 创建指定宿主文件的ADS数据流文件

那我们要怎样创建ADS数据流文件呢?

  1. 采用Windows系统自带的命令
  2. 采用相关的工具

1. 创建单独的ADS数据流文件

在电脑的F盘创建一个名为test的文件夹,我们在这个文件夹里来进行ADS的创建、查看、删除等操作

我们这里采用Windows自带的命令进行创建

我们这里创建的ADS数据流文件的内容均为文本,ADS数据流内容不一样指令会有些许变化

echo命令可以用于输出信息到文件,查看文本内容用notepad,下文ADS内容均为文本,因此不再强调。

  1. 在test目录里打开cmd

  2. 输入以下命令

    echo “this is a file”>:ads.txt

    用中文解释上面这条指令,将"this is a file"输出到ADS数据流文件ads.txt。

    如下图:

    这样就在当前目录下创建了一个未指明宿主文件的名为ads.txt的数据流文件,很显然,我们无法看到它,打开文件夹查看,这个文件夹里面什么都没有。如下图:

    那么就会有疑问了,我们到底要怎样才能知道我们到底是不是创建了一个名为ads.txt的数据流文件呢,真的创建了吗?

2. 查看单独的ADS数据流文件

看过许多文章,里面都讲了如何用Windows自带的命令来查看与宿主文件相关联的ADS数据流文件内容。

命令如下:

  • notepad 宿主文件:与宿主关联的数据流文件

却没有文章讲怎样用Windows自带的命令查看单独的ADS数据流文件内容,有翻到过一篇文章讲以下指令可以查看单独的ADS数据流文件内容,但经过我实测,并不可以。用我刚才创建的ads.txt来演示,命令如下:

  • notepad :ads.txt

对,你没看错,就是以上指令,仔细一看,这条指令没有问题啊,我们单独创建了ADS数据流文件,所以只需要省略掉宿主文件就可以了,但是真的可行吗?这条指令结果如下:

很明显,并不可以。

那还有方式查看这个单独创建的ADS数据流文件吗?当然是有的。

其实单独的数据流文件,可以用dir这个命令来检测出来,但是无法看到这个数据流文件的具体内容

除此以外,我这里是找到了几个工具:

  • 微软提供的streams(Streams - Windows Sysinternals | Microsoft Docs)。几百KB,可以扫描文件夹扫出ADS数据流文件,缺点是好像不能查看数据流内容。

  • NtfsStreamsEditor

    把文件夹放进去直接扫描即可,可以查看具体内容

  • X-Ways_Forensics

    将磁盘加载进来之后,单独的ADS备用数据流也可以显示出来:

3. 创建指定宿主文件的ADS数据流文件

在上面讲了如何创建单独的ADS数据流文件,下面我们讲如何创建与宿主文件相关联的ADS数据流文件

  1. 创建宿主文件

    宿主文件是指在Windows中可以正常显示、运行或编辑的任何类型文件

    假设:我们用记事本创建一个txt格式的文本文件host.txt,随意输入一些内容,记住该文件的大小

  2. 关联数据流文件

    打开cmd,输入命令:echo “this is a test file”>host.txt:ads.txt。这样我们就创建了一个名为ads.txt,内容为“this is a test file”的数据流文件,并与宿主文件host.txt进行了关联,即ads.txt文件成了host.txt的一个寄生文件。

    注意这条指令:

    echo “this is a test file”>host.txt:ads.txt

    如果要用中文解释解释一下上面这条指令那就是:输出 "this is a test file"到host.txt的ADS关联数据流文件ads.txt。

    冒号的前面是宿主文件冒号的后面是要与宿主文件关联的数据流文件的名称

4. 查看指定宿主文件的ADS数据流文件

用上文查看单独的ADS数据流文件时用的几款工具都能达到查看的效果。

除此以为,与宿主文件关联的ADS数据流文件内容的查看,还可以使用Windows自带的命令,命令如下:

notepad host.txt:ads.txt

notepad指的是notepad.exe也就是记事本;同样的,冒号前面是宿主文件,冒号后面是关联的数据流文件。输入这条指令,我们就能够查看到关联的数据流文件的具体内容了。

三、ADS数据流文件的删除

  1. 单独的数据流文件。

    由于未指定宿主文件,一般的方法无法删除。可以采取删除其上一级目录的方法来删除这个单独的ADS数据流文件;当然也有一些专业的工具也可以做到,如我上文所说的NtfsStreamsEditor,或者X-Ways。

  2. 与宿主文件关联的ADS数据流文件

    • 直接删除宿主文件
    • 将宿主文件移动到FAT32等非NTFS分区中
    • 利用工具软件

四、文本文件以外的关联的ADS数据流文件

除文本文件以为,包括可执行文件在内的任何常规文件都可以被设置成ADS数据流文件

例如:type C:\winnt\system32\sol.exe>host.txt:sol2.exe,就会把sol.exe文件设置成host.txt的ADS数据流文件sol2.exe。

(看到这里,出现了一个新的指令type,找了很多资料,发现大多描述type的都是说type能显示文本文件内容。发现了和本文沾边的关于type的用法就是:type C:\123.txt>D:\123.txt,意思就是将C盘123.txt的内容输出到D盘123.txt里。)

有人可能要问:type后面的是sol.exe,可是冒号后面的是sol2.exe,这里是不是打错了?其实并没有。按照我的理解,执行上述指令之后,会将sol.exe这个文件的内容复制一份出来,将其作为ADS数据流,指定其数据流的名称为:sol2.exe,并将这个数据流(sol2.exe)与host.txt关联。 既然是复制出来的,那么更改或删除掉原有的sol.exe之后,应该也不会对已经和host.txt文件相关联的ADS数据流(sol2.exe)的内容产生影响吧?答案是确实是这样的,就算把原有的sol.exe删掉,也不会对已经关联好的ADS数据流(sol2.exe)内容产生影响。

那么如何验证呢?以下是我个人的验证过程。

是这样的,我在这个文件夹里放入了一个host.txt(里面什么内容都没有,空文本)和一个ads.exe,如下图:

我们是打算将这个ads.exe作为host.txt的ADS关联数据流,关联完之后,再删除原有的ads.exe,看看会不会对已经关联的ADS数据流产生影响。

我们关联之前我们先记录这个ads.exe的大小,如下图,327921字节。

然后我们将这个ads.exe作为ADS数据流与host.txt相关联,并指定其数据流名称为:realads.exe。在cmd输入以下指令:

type ads.exe>host.txt:realads.exe

关于上述指令,这里要提一个细节,就是如果ads.exe这个文件自身作为宿主文件有其ADS数据流,那么这时候我们将ads.exe作为ADS数据流与host.txt(作为宿主文件)相关联,ads.exe其自身的ADS数据流是不会被一起关联的。也就是复制ads.exe的内容作为ADS数据流的时候,仅仅复制了ads.exe的内容,并没有将ads.exe自身的关联的ADS数据流复制上。

进行完这个关联之后,我们用工具(这个工具只会扫描ADS数据流)扫这个文件夹,如下图:

这个蓝色的打对勾的就是我们刚才关联的ADS数据流(上面那一条是因为这个ads.exe是ctf一道题的题目附件,所以ads.exe自身也作为宿主文件也关联了一个数据流,不影响。同时后面我们如果删除掉ads.exe,这个数据流也会被删除。),可以看到这个数据流的名称realads.exe,这个数据流的大小ads.exe的大小一致都是327921字节。

然后我们删除原有的ads.exe文件,看看会不会对已经关联的ADS数据流(readads.exe)的大小和内容产生影响。

如下图,我删除掉原有的ads.exe,只留下了一个host.txt

之后,我们再用工具扫描这个文件夹:

可以观察上图:当我们删除掉ads.exe之后,这里只剩下了一条记录,数据流名称为:realads.exe。可以看到当我们删除原有的ads.exe之后,这个数据流(realads.exe)的大小没有发生任何改变。

我们甚至可以用这个工具提供的导出功能,将作为ADS数据流的readlads.exe导出为原来的可见可直接执行的.exe文件。

下图就是导出之后的结果:

我们甚至可以对系统的一些重要文件附加数据流文件,

如:type image.bmp>C:\windows\explore.exe:image.bmp,就会将图片image.bmp设为explore.exe的数据流文件。不难看出,ADS数据流文件的基本创建形式就是宿主文件名:数据流文件名,中间用冒号隔开。

那么如何查看除文本文件以外的关联的ADS数据流文件呢

例:mspaint.exe explore.exe:image.bmp,就可以查看寄宿在explore.exe中的图片。

实际上,ADS数据流文件的通用查看方法是:ADS文件对应的打开/编辑程序 宿主文件名:数据流文件名。

五、ADS数据流文件的应用

1. 隐藏/加密文件

例如命令:type 1.bmp>song.mp3:1.bmp,可以将1.bmp这个图像隐藏到mp3歌曲中,通过上文我的论证,将1.bmp设置为ADS数据流文件之后,删除原来的1.bmp也不会产生任何影响,我们仍然有办法查看作为ADS数据流的1.bmp,甚至能将其导出为原来的主文件格式。在这种情况下,只要宿主文件没有删除,数据流文件就比较安全。

2. WinRar的数据流压缩

WinRar有一个重要的特性——支持数据流压缩。打开WinRar的压缩对话框,单机“高级”标签,勾选“NTFS选项”中的“保存数据流”选项,即可将ADS数据流文件连同宿主文件一起打包压缩,这样就方便了数据流文件的压缩和异地存储。如下图:

3. 制作病毒或木马

事实上,当前很多病毒、木马就是利用数据流文件夹躲避杀毒软件查杀的。与此同时,杀毒软件对ADS数据流技术的支持并不是很好,这些都导致了病毒木马的进一步泛滥。

六、ADS数据流文件的执行

当一个可执行文件被隐藏在ADS数据流文件中后,我们可以通过start命令来执行这个程序。假设我们用“type C:\winnt\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.vbx“。

关于NTFS数据流ADS的详细介绍相关推荐

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

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

  2. 谈谈NTFS数据流文件

    1.什么是NTFS数据流文件?      要了解NTFS流文件之前,你应该对NTFS文件系统有一定的了解, NTFS是微软Windows NT内核的系列操作系统支持的.一个特别为网络和磁盘配额.文件加 ...

  3. Iptables防火墙详细介绍与实战增强服务器安全

    Iptables防火墙详细介绍与实战增强服务器安全 一:Iptables的概述及应用 iptables概述: netfilter/iptables : IP信息包过滤系统,它实际上由两个组件netfi ...

  4. Hadoop生态系统的详细介绍

    hadoop生态系统的详细介绍 简介 Hadoop是一个开发和运行处理大规模数据的软件平台,是Appach的一个用java语言实现开源软件框架,实现在大量计算机组成的集群中对海量数据进行分布式计算.今 ...

  5. 【转】ARM 之七 主流编译器(armcc、iar、gcc for arm、LLVM(clang))详细介绍

    转自:ARM 之七 主流编译器(armcc.iar.gcc for arm.LLVM(clang))详细介绍_itexp-CSDN博客_armcc 必备   在讲解各编译器之前,必须先了解一下以下文件 ...

  6. 所有XP_SP2服务的详细介绍

    下面是所有XP_SP2服务的详细介绍(计算机和网络环境的不同,可能导致默认开启的服务有所不同!) 01.●显示名称:Alerter ◎微软描述:通知所选用户和计算机有关系统管理级警报.如果服务停止,使 ...

  7. HTTP协议详细介绍~超详细

    下面是对HTTP的详细介绍,HTTP协议是应用最广泛的网络协议. 希望可以帮助到有需要的小伙伴 文章目录 HTTP是什么 HTTP协议历史与标准 HTTP请求与响应消息 HTTP的基本原理 基于HTT ...

  8. Vue详细介绍及使用

    Vue详细介绍及使用 一.Vue定义及简介 1.Vue定义 关于Vue简介,百度百科给出的解释是:Vue.js是一套构建用户界面的渐进式框架.与其他重量级框架不同的是,Vue 采用自底向上增量开发的设 ...

  9. hadoop生态系统的详细介绍-详细一点

    前提 日常喜欢看一些微信分享的好文,总结下来,可以作为过滤器吧(节约更多人的时间!),在这里引用的是别人的文章!对原文的作者表示感谢!确实写的很好! hadoop生态系统的详细介绍 简介 Hadoop ...

  10. 什么是TMD格式?TDM格式详细介绍

    什么是TMD格式?TDM格式详细介绍TDM格式 有些IC支持使用一个公共时钟的多路I2S数据输入或输出,但这样的方法显然会增加数据传输所需要的管脚数量.当同一个数据线上传输两个以上通道的数据时,就要使 ...

最新文章

  1. MySQL第12天:MySQL索引优化分析之性能优化案例实践
  2. intellij idea -- 工程移植
  3. 《简明 PHP 教程》00 开篇
  4. 【转】Azure Messaging-ServiceBus Messaging消息队列技术系列2-编程SDK入门
  5. SQLite Tutorial 2 install free sqlite gui manager in firefox
  6. 【转载】张逸--ThoughtWorks(中国)程序员读书雷达
  7. IMDB TOP250中文版(截止2011.6.18)
  8. 【qcom msm8953 android712】rtc 调试分析续
  9. PlatformError: WGL: Failed to make context current
  10. Chrome Extension ContextMenus 创建 适配Manifest3
  11. 知识社会的到来:知识管理与知识协同
  12. Android一步一步实现一款实用的Android广告栏
  13. 半双工通信是指c语言,Linux下C语言实现半双工的UDP通信
  14. 微信清除cookie
  15. 【转】STM32 定时器 输出比较模式和PWM输出模式的区别
  16. 简单网页设计静态成品分享
  17. The Indian Job
  18. 【已解决】连接被重置
  19. 计算机毕业设计Java读书网络社区设计(源码+系统+mysql数据库+lW文档)
  20. 图片放大镜(有意思的JS 二)

热门文章

  1. 资深架构师推荐 21 本技术好书
  2. win7无法设置时间更新服务器未响应,win7电脑提示系统时间设置有误请更新系统日期...
  3. linux 蓝牙hci,实战Linux Bluetooth编程(三) HCI层编程
  4. Android手机定位案例代码
  5. 【七夕节特刊】开源世界里的爱情保卫战
  6. 三年前端路:分享我的工作经验与学习经历
  7. NameCheap域名和Amazon EC2
  8. 一文告诉你IT行业什么方向赚钱,需求多
  9. 快讯 | 科技部公布首批国家人工智能创新平台名单,BAT+科大讯飞入选
  10. java flip_GitHub - bowen903/ViewFlipAnimator: 一种超简单纯Java实现的卡片翻转效果