NTFS Alternate Data Stream(ADS)

  1993年微软推出了基于流行的NT平台的Windows NT操作系统。之后,NTFS作为WIndows开发基于NT的操作系统时的首选文件系统,逐步取代被应用于旧版Windows操作系统(比如Windows 9x)的文件系统,即FAT(File Access Table)。

  NTFS中的备用数据流(Alternate Data Stream,ADS)允许将一些元数据嵌入文件或是目录,而不需要修改其原始功能或内容。

  在NTFS中,主数据流指的是文件或目录的标准内容,通常对用户可见,而备用数据流(ADS)则隐藏。如果要查看备用数据流,可以使用dir命令的/R选项,或是Windows提供的streams.exe工具,没有可用的API。

  ADS没有大小限制且多个数据流可以和一个正常文件关联。ADS的内容也不仅限于text文本数据,基本上只要是二进制格式文件都可以被作为ADS备用流嵌入。

使用备用数据流(ADS)

  查阅多篇文章,大致了解了下ADS的命名方式,以及使用ADS的一些方法。

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

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

  1. 文件ADS

  默认的数据流没有名字,一个文件test.txt在NTFS中的全名为test.txt::$DATA,可以在命令行中执行如下命令查看test.txt文件内容:

notepad test.txt::$DATA

  也可以用一下命令创建test.txt:

echo "test.txt file content." test.txt::$DATA

  对于已经存在的文件test_1.txt创建备用数据流:

echo "test_1.txt ads data stream" > test_1.txt:test_1.txt_ADS 或

echo "test_1.txt ads data stream" > test_1.txt:test_1.txt_ADS:$DATA

  查看ADS数据:

notepad test_1.txt:test_1.txt_ADS 或

notepad test_1.txt:test_1.txt_ADS:$DATA

  同样可以使用创建备用数据流的方式顺带新创建一个文件,但是输出的数据被存放于ADS中,新文件则为空:

echo "test_2.txt ads data stream" > test_2.txt:test_2.txt_ADS 或

echo "test_2.txt ads data stream" > test_2.txt:test_2.txt_ADS:$DATA

  数据被存储于test_2.txt:test_2.txt_ADS:$DATA备用流中,而被创建的test_2.txt则为空。

  1. 文件夹ADS

  文件夹没有默认的数据流(也就是没有主数据流),但是有一个默认的目录流为$INDEX_ALLOCATION,默认的流名为$I30。比如文件夹testDir全名为testDir:$I30:$INDEX_ALLOCATION,可以使用以下特殊方式进入testDir:

cd testDir:$I30:$INDEX_ALLOCATION 或

cd testDir::$INDEX_ALLOCATION(忽略了流名)

  也可以使用以下命令创建目录testDir

md "testDir::$INDEX_ALLOCATION" 或

md "testDir:$I30:$INDEX_ALLOCATION"

  经过测试可以为已存在的目录创建ADS,比如testDir

echo "i am testDir:testDir_ADS:$DATA data stream" > testDir:testDir_ADS 或

echo "i am testDir:testDir_ADS:$DATA data stream" > testDir:testDir_ADS:$DATA

  但是没法正常打开,使用winhex查看硬盘倒是可以确定数据流的存在。

  删除备用流所删除的文件或文件夹时,相应的备用流也会被删除。

参考

  NTFS Alternate Data Stream (ADS)

  NTFS格式下的Alternate Data Streams

NTFS ADS(备用数据流)的更多相关文章

  1. SVN二次开发——让SVN、TSVN(TortoiseSVN)支持windows的访问控制模型、NTFS ADS(可选数据流、NTFS的安全属性)

    SVN二次开发 ——让SVN.TSVN(TortoiseSVN)支持windows的访问控制模型.NTFS ADS (可选数据流.NTFS的安全属性) SVN secondary developmen ...

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

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

  3. NTFS系统的ADS交换数据流

    VC++ 基于NTFS的数据流创建与检测 What are Alternate Streams?(交换数据流) NTFS alternate streams , 或者叫streams,或者叫ADS(w ...

  4. Windows 备用数据流(ADS)的妙用___转载

    NTFS交换数据流(Alternate Data Streams,简称ADS)是NTFS磁盘格式的一个特性,在NTFS文件系统下,每个文件都可以存在多个数据流.通俗的理解,就是其它文件可以“寄宿”在某 ...

  5. NTFS ADS带来的web安全问题

    有关ADS的简单说明请看http://www.xfocus.net/articles/200212/466.html 可以看到ADS在很久以前就被一些安全人员所关注,并且也提出了一些经典的利用,比如隐 ...

  6. UNCTF杂项题Hidden secret 之NTFS交换数据流隐写

    ---恢复内容开始--- 做这道题目的经历比较坎坷,题目中用于隐藏flag的jpg文件出了问题,导致不能被交换数据流隐写所以出题人换了一次题目,最后做法也换了,不过出题人一开始的考察点还是基于NTFS ...

  7. NTFS格式下的Alternate Data Streams

    今天我写点NTFS的交换数据流以及其带来的安全问题(Alternate Data Stream/ADS) =============================================== ...

  8. windows7命令帮助大全

    有关某个命令的详细信息,请键入 HELP 命令名ASSOC 显示或修改文件扩展名关联.ATTRIB 显示或更改文件属性.BREAK 设置或清除扩展式 CTRL+C 检查.BCDEDIT 设置启动数据库 ...

  9. DOS命令详解

    DOS命令详解 命令 \? 可以进入命令帮助 1.md命令创建目录. MKDIR [drive:]pathMD [drive:]path 如果命令扩展被启用,MKDIR 会如下改变: 如果需要,MKD ...

随机推荐

  1. centos7 配置rm命令失效。

    之前写过一篇alias别名的方法,但这个方法配置rm命令在重启后就无效了.而且重启后得输入source alias_test.sh.才可以 centos7 alias别名永久生效 原因是:root用户 ...

  2. Vulnhub系列:chili

    0x01 靶机信息 靶机:chili难度:简单下载:https://www.vulnhub.com/entry/chili-1,558/ 靶机描述: 0x02 信息收集 nmap扫描存活主机确定靶场i ...

  3. Python科学计算类库

    Numpy是什么 Numpy是一个开源的Python科学计算库.使用Numpy,就可以很自然地使用数组和矩阵.Numpy包含很多实用的数学函数,涵盖线性代数运算.傅里叶变换和随机数生成等功能. 矩阵: ...

  4. Redis介绍一

    一.五中数据类型 String: 字符串 Hash: 散列 List: 列表 Set: 集合 Sorted Set: 有序集合 Redis 发布订阅 Redis 发布订阅 (pub/sub) 是一种消 ...

  5. HTML、CSS、Javascript、jQuery、Xml

    HTML HTML简介 Hyper Text Markup Language (超文本标记语言)简写:HTML.通过标签来标记要显示的网页中的各个部分.网页文件本身是一种文本文件,通过在文本文件中添加 ...

  6. Kotlin 协程一 —— 全面了解 Kotlin 协程

    一.协程的一些前置知识 1.1 进程和线程 1.1.1基本定义 1.1.2为什么要有线程 1.1.3 进程与线程的区别 1.2 协作式与抢占式 1.2.1 协作式 1.2.2 抢占式 1.3 协程 二 ...

  7. 安装DataX的管理控制台(转)

    原文地址 https://github.com/WeiYe-Jing/datax-web/blob/master/doc/datax-web/datax-web-deploy.md 环境准备 1)基础 ...

  8. [STM32F10x] 从零开始创建一个基于标准库的工程

    硬件:STM32F103C8T6 平台:MDK-AMR V4.70 1.创建一个Keil uVision 的工程 要点:相同类型的源文件放在一起以便于管理       2.添加标准库源文件 3.添加几 ...

  9. 【刷题-LeetCode】148 Sort List

    Sort List Sort a linked list in O(n log n) time using constant space complexity. Example 1: Input: 4 ...

  10. Spring 官宣发布 Spring Boot 3.0 第一个里程碑 M1,从 Java 8 提升到 Java 17!

    Spring官方于2022年1月20日发布Spring Boot 3.0.0-M1版本,预示开启了Spring Boot 3.0的里程碑,相信这是通往下一代Spring框架的激动人心的旅程. 接下来一 ...