利用NTFS交换数据流隐藏文件

这篇文章介绍一下Windows的NTFS文件系统的ADS(alternate data streams,交换数据流)特性;实例演示如何利用ADS将文件隐藏到任何宿主上(宿主可以是文件夹、文件以及磁盘根目录);文章最后将提供两个小工具,利用它们来检测和清除隐藏在宿主上的文件。


文章目录


[*1*].什么是NTFS交换数据流(ADS)

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

这一段是百度百科上面的内容,大致了解一下即可,后面会有实例演示。

[*2*].NTFS交换数据流隐藏文件实例

这一部分内容在Windows XP、Windows 7、Windows 8的NTFS分区上都能适用,WinXP和Win7、Win8稍有不同,不同的地方会在文中说明。

实验环境:Windows 8
实验分区:E盘根目录-NTFS分区(ADS是NTFS文件系统的特性,不适用于FAT32文件系统)

在我的E盘根目录中有这些文件:

1 /*切换到E盘根目录*/
2 C:\Windows\System32>e:
3 E:\>
4  
5 /*查看E盘根目录中有哪些内容*/
6 E:\>dir
7  驱动器 E 中的卷是 Att
8  卷的序列号是 109C-2025
9  
10  E:\ 的目录
11  
12 2012/12/15  21:03               5 123.txt
13 2012/05/29  20:15         346,112 aaa.exe
14 2012/09/26  07:36          72,294 bbb.jpg
15 2012/01/04  04:10          61,952 lads.exe
16 2012/04/27  10:17          87,424 streams.exe
17 2012/12/15  21:12                 test
18 /*
19  * 123.txt 是一个文本文件,
20  * aaa.exe 是一个可执行文件,
21  * bbb.jpg 是一张图片,
22  * lads.exe和streams.exe是用于检测交换数据流的程序,后面会用到,
23  * test是一个空文件夹。
24  */

实验环境和所有用于实验的文件全部介绍完毕,下面开始实际操作 。

* 如何利用NTFS交换数据流隐藏文本文件

注意,下面的命令需要用“管理员身份”打开一个CMD,否则很可能执行不成功。

1 /*
2  * 使用echo命令,将"hello"这几个字符写入到123.txt:222.txt中,
3  * echo命令是以写字符的方式创建了123.txt:222.txt这个交换数据流文件,
4  * 其中123.txt是宿主文件,222.txt是交换数据流文件,
5  * 222.txt在图形界面下是不可见的,就像寄生虫一样,寄生在123.txt上。
6  */
7 E:\>echo hello>>123.txt:222.txt
8  
9 /*
10  * 使用记事本程序打开这个交换数据流文件,
11  * 打开后可以添加删除222.txt的内容,但是不能另存为。
12  */
13 E:\>notepad 123.txt:222.txt
14  
15 /*
16  * 将123.txt使用交换数据流的方式寄生到test文件夹上,
17  * type命令和echo命令不同,type命令是将已经存在的一个文件,
18  * 用交换数据流的方式寄生到另外一个文件或文件夹上,
19  * test文件夹是一个空文件夹,寄生123.txt后,文件夹大小显示仍然是0。
20  */
21 E:\>type 123.txt>>test:123.txt
22  
23 /*
24  * 使用notepad打开这个寄生在test上的文本文件,
25  * 如果命令提示符是在其他盘符,可以使用这个数据流文件的完整路径来打开,
26  * 比如当前盘符在C盘,可以这样打开:
27  * C:\>notepad E:\test:123.txt
28  */
29 E:\>notepad test:123.txt
30  
31 /*将123.txt寄生到E盘根目录*/
32 E:\>type 123.txt>>E:\:123.txt
33  
34 /*
35  * 通过相对路径来打开,也可以通过绝对路径来打开,
36  * 命令是"E:\>notepad E:\:123.txt"
37  */
38 E:\>notepad :123.txt

这种方法能很好的将一个文本文件使用交换数据流的形式寄生在另外一个文件上(任何类型的文件上),从一定程度上起到了隐藏文本文件的目的。

* 如何利用NTFS交换数据流隐藏图片文件

图片文件也能寄生在任何类型的文件上,下面给出几个实例:

1 /*寄生到123.txt上*/
2 E:\>type bbb.jpg>>123.txt:bbb.jpg
3  
4 /*寄生到test文件夹上*/
5 E:\>type bbb.jpg>>test:bbb.jpg
6  
7 /*寄生到aaa.exe这个可执行文件上*/
8 E:\>type bbb.jpg>>aaa.exe:bbb.jpg
9  
10 /*寄生到E盘根目录*/
11 E:\>type bbb.jpg>>E:\:bbb.jpg
12  
13 /*
14  * 打开方式很简单,可以使用系统自带的图画程序mspaint,
15  * 这里打开寄生在可执行文件中的那张图片,其他文件同理。
16  */
17 E:\>mspaint aaa.exe:bbb.jpg

* 如何利用NTFS交换数据流隐藏可执行文件

WinXP和Win7、Win8在NTFS交换数据流的不同体现在对寄生的可执行文件的运行管理上,XP可以按照和上面相同的方法直接运行寄生的可执行程序;Win7、Win8上需要手动创建一个连接文件,通过这个链接文件才能运行这个寄生的交换数据流文件,下面请看演示:

1 /*寄生的方法和图片和文本文件相同,寄生到123.txt*/
2 E:\>type aaa.exe>>123.txt:aaa.exe
3  
4 /*寄生到E盘根目录*/
5 E:\>type aaa.exe>>E:\:aaa.exe
6  
7 /*
8  * XP中可以直接通过start命令使用绝对路径来调用这个寄生的可执行文件,
9  * 但是在Win7和Win8中会出现下面的错误。
10  * (Win XP中start命令后面必须接绝对路径)
11  */
12 E:\>start E:\:aaa.exe
13 系统找不到文件 E:\:aaa.exe。

下面是Win7和Win8中调用这个E盘根目录下的交换数据流可执行文件的方法:

1 /*
2  * 在C盘的根目录中创建一个符号链接文件eee.exe,
3  * 链接到E盘根目录中寄生的交换数据流可执行文件aaa.exe上。
4  */
5 E:\>mklink C:\eee.exe E:\:aaa.exe
6 为 C:\eee.exe <> E:\:aaa.exe 创建的符号链接
7  
8 /*在命令行下执行这个链接文件,即可运行E:\:aaa.exe*/
9 E:\>C:\eee.exe
10  
11 /*
12  * 这个时候大家可以打开任务管理器,
13  * 看到进程列表里面多出一个名称很奇怪的进程":aaa.exe",
14  * 如果我们使用相同的方法运行寄生在文本文件中的那个aaa.exe,
15  * 看到的进程名称就会是"123.txt:aaa.exe"。
16  */

在WinXP中,可执行文件可以和文本文件一样实现真正的隐藏,这可能也是当时大多数杀毒软件都添加数据流病毒查杀功能的原因;在Win7和Win8中,微软可能出于安全考虑,也可能是其他原因,不允许直接运行交换数据流可执行文件,必须要创建符号链接,默认这个符号链接是可见的(当然可以使用其他手段隐藏这个符号链接),并且这个符号链接创建出来后不能复制到其他地方,只能在创建的那个位置使用命令行方式调用(鼠标双击会报错)。

[*3*].如何检测和清除NTFS-ADS隐藏的文件

上面说了隐藏,现在来说检测,可以使用这两款小工具配合进行检测和清除寄生的交换数据流(百度网盘下载地址),工具都是命令行模式的,请看下面的演示:

1 /*
2  * 将这lads.exe这个程序放置需要检测的分区根目录中,
3  * 不添加任何参数直接运行,就是检测根目录中所有文件,
4  * 如果使用"lads.exe test /S",就是递归检测test以及test下所子目录。
5  * 下面这条命令是检测根目录以及所有子目录。
6  */
7 E:\>lads.exe /S
8  
9 Scanning directory E:\ with subdirectories
10  
11       size  ADS in file
12 ----------  ---------------------------------
13         12  E:\:123.txt
14     346112  E:\:aaa.exe
15     144588  E:\:bbb.jpg
16          7  E:\123.txt:222.txt
17     346112  E:\123.txt:aaa.exe
18      72294  E:\123.txt:bbb.jpg
19      72294  E:\aaa.exe:bbb.jpg
20         12  E:\test\:123.txt
21      72294  E:\test\:bbb.jpg
22  
23    1053737 bytes in 9 ADS listed
24  
25 E:\>
26  
27 /*可以看到我们实验中添加的所有交换数据流一览无遗*/

使用streams.exe这个程序来清除这些交换数据流,根据上面检测的输出信息,我将streams.exe放在E盘的根目录:

1 /*
2  * 首先尝试清除一下E盘根目录上面寄生的交换数据流,
3  * -d后面接目录。
4  */
5 E:\>streams.exe -d E:\
6  
7 E:\:
8    Deleted :123.txt:$DATA
9 /*
10  * 这里出现了一个错误,因为这个:aaa.exe现在正在运行
11  * 对于这种情况,需要先结束掉这个:aaa.exe进程才能清除。
12  */
13    Error deleting :aaa.exe:$DATA:
14 ?????
15    Deleted :bbb.jpg:$DATA
16  
17 /*可以添加-s参数来一次性递归清除E盘下所有寄生的交换数据流文件*/
18 E:\>streams.exe -s -d E:\
19  
20 E:\123.txt:
21    Deleted :222.txt:$DATA
22    Deleted :aaa.exe:$DATA
23    Deleted :bbb.jpg:$DATA
24 E:\aaa.exe:
25    Deleted :bbb.jpg:$DATA
26 E:\test:
27    Deleted :123.txt:$DATA
28    Deleted :bbb.jpg:$DATA

利用NTFS交换数据流隐藏文件的更多相关文章

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

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

  2. NTFS交换数据流隐写的应用

    by Chesky ##目录 ####一.NTFS交换数据流(ADS)简介 ####二.ADS应用 写入隐藏文件(文本\图像\可执行文件) ADS在Windows平台下的利用--写入后门 ADS在We ...

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

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

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

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

  5. 利用NTFS权限与虚拟目录,在IIS 6.0的默认FTP站点中做用户隔离。

    默认FTP站点为不隔离用户站点,利用NTFS权限设置,达到仅能访问指定目录效果. 是否允许匿名连接 FTP站点主目录:站点范围内有没有用户需要上传,有的话,要勾选“写入”:具体用户使用NTFS还给予写 ...

  6. Windows Server 2008利用NTFS管理数据

    今天我们学习关于NTFS管理数据 以下是学习的内容NTFS分区和FAT32分区的区别,如何将FAT32分区转化成NTFS分区,FAT 32 不支持大于4G ,NTFS权限设置 ,EFS加密 ,文件夹的 ...

  7. java利用反射交换两个对象中的字段相同的字段值

    有时候我们的两个对象字段都是一样的,只有极少的区别,想要把一个对象字段的值,赋值给另外一个对象值 然后传给另外一个方法使用,但是这个字段太多,一个一个的复制太过繁琐. 这时候利用反射解决这个问题. c ...

  8. TCP交换数据流——Nagle算法简单记录

    Nagle算法: 该算法提出的目的是想解决网络中大量的小的TCP数据包造成网络拥塞的问题,举个例子,当客户端要发送一个字节的TCP数据包到服务器时,我们实际上产生了41字节长的分组:包括20字节的IP ...

  9. BugkuCTF——wp(旧版)

    title: BugkuCTF--wp(旧版) date: 2020-4-25 tags: CTF,比赛 categories: CTF 比赛 Web篇 0x001-web2 解题思路: 1.直接按F ...

随机推荐

  1. centos7 安装mariaDB 以及 phpmyadmin的安装

    centos7 安装mariaDB 以及 phpmyadmin的安装 一:安装mariadb, mariadb 是 mysql 的一个分支,基本和mysql一样的 1. yum -y install ...

  2. robot API笔记5

    实现了 Libdoc 工具. 命令行Libdoc入口点和编程接口 提供的是单独的吗 robot.libdoc 模块. 这个包被认为是稳定的但不是公共API的一部分. robot.libdocpkg.L ...

  3. [sso] 单点登录认证流程

    一.流程说明 第一步:访问cas过滤链接ssoLogin,拼凑定向到 CAS_SERVER 获取ticket的URL 第二步:CAS_SERVER校验用户信息,生成Ticket 第三步:重新定向到访问 ...

  4. 默认选择radio的第一个

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  5. 关于java中JButton的样式设置(的一些我们应该知道的函数)(转)

    1. 对JButton大小的设置 ——因为JButen是属于小器件类型的,所以一般的setSize不能对其惊醒大小的设置,所以一般我们用 button.setPreferredSize(new Dim ...

  6. Permutation Sequence [LeetCode]

    The set [1,2,3,…,n] contains a total of n! unique permutations. By listing and labeling all of the p ...

  7. 转载css层级优先级。

    解读CSS样式优先级(修改门户自定义样式必读) 一.什么是CSS优先级?所谓CSS优先级,即是指CSS样式在浏览器中被解析的先后顺序.当同一个元素(或内容)被多个CSS选择符选中时,就要按照优先权取舍 ...

  8. MySQL索引实现

    摘自:http://blog.codinglabs.org/articles/theory-of-mysql-index.html 在MySQL中,索引属于存储引擎级别的概念,不同存储引擎对索引的实现 ...

  9. windows下捕获dump之Google breakpad_client的理解

    breakpad是Google开源的一套跨平台工具,用于dump的处理.很全的一套东西,我这里只简单涉及breakpad客户端,不涉及纯文本符号生成,不涉及dump解析. 一.使用 最简单的是使用进程 ...

  10. tomcat项目发布 更改小猫图标 及自定义错误404界面

    tomcat发布项目的时候遇到些小问题 不过解决了 问题1. 整个服务器的404自定义界面问题 解决方法: 在tomcat安装目录下conf中web.xml中修改配置文件 <error-page ...