ntfs 数据流笔记
NTFS 简述
NTFS文件系统时windows NT内核系列操作系统支持的、专门为网络和磁盘配额的,文件加密等管理安全特性设计的磁盘格式。NTFS比FAT文件系统更加稳定,更能也更为强大。
NTFS数据流文件也被称为 Alternate data streams,简称ADS,是NTFS文件系统的一个特性之一,允许单独的数据流文件存在,同时也允许文件附着多个数据流,除了主文件流之外还允许许多非主文件流寄生在主文件流中,使用资源派生的方式来维持与文件的相关信息,并且这些寄生的数据流文件我们使用资源管理器无法看到。
ADS的作用在于,它允许一个文件携带着附加的信息。例如,IE浏览器下载文件时,会向文件添加一个数据流,标记该文件来源于外部,即带有风险,那么,在用户打开文件时,就会弹出文件警告提示。再如,在网址收藏中,也会附加一个favicon数据流以存放网站图标。
ADS原意是为了和Macintosh的HFS文件系统兼容而设计的,使用这种技术可以在一个文件资源里写入相关数据(并不是写入文件中),而且写进去的数据可以使用很简单的方法把它提取出来作为一个独立文件读取,甚至执行。但不少后门程序使用ADS隐藏自己。
而创建一个NTFS交换数据流文件的方式很简单,命令为
宿主文件:寄宿文件
使用 NTFS 交换数据流隐藏数据
以下命令均需要在 NTFS 分区中使用,因为 ADS 是 NTFS 的特性,类似于 FAT32 文件系统并不适用。而且需要使用命令提示符软件,使用 powershell 可能会报错。
因为 NTFS 交换数据流文件可以存放数据,而 NTFS 交换数据流我们又没办法直接通过资源管理器查看,所以我们只需要对其写入数据即可使用 NTFS 交换数据流隐藏数据。
比如说我们使用指令
echo this is a secret > 1.txt:ads.txt
来将文本
this is a secret
写入寄宿于 1.txt
的
ads.txt
NTFS 交换数据流文件中。
又或者使用 type 涩图.png > peace.txt:secret.txt
来将
涩图.png
转成文本信息后写入 NTFS 交换数据流文件
peace.txt:secret.txt
中。
同理我们甚至可以使用
type trojan.exe > surprise.txt:horse.exe
将
trojan.exe
写入 NTFS 交换数据流文件
surprise.txt:horse.exe
中。
而实际上上面这个方法在以前的病毒中经常使用。
查看 NTFS 交换数据流数据
使用 Windows 指令查看
Windows 指令是可以直接检索到 NTFS 交换数据流的,但前提是需要知道目标的名字。
例如对于 echo this is a secret > 1.txt:ads.txt
生成的数据,我们可以使用 notepad
来查看,即
notepad 1.txt:ads.txt
。
对于 type 涩图.png > peace.txt:secret.txt
生成的数据,我们可以使用 mspaint
来查看,即
maspaint peace.txt:secret.txt
。
同时使用以上方式也可以直接修改 NTFS 交换数据流的数据 (文件)。
对于 type trojan.exe > surprise.txt:horse.exe
生成的数据,在 Windows XP 上可以使用 start
指令直接启动可执行文件,即
start surprise.txt:horse.exe
;但在 Windows 7
及之后的系统中,微软为了安全起见,不能再通过 start
指令启动可执行文件,只能先使用 mklink
指令创建一个符号链接文件指向 NTFS
交换数据流文件,然后再直接执行符号链接文件,即
mklink a.exe surprise.txt:horse.exe && a.exe
。
使用 Ntfs Streams Editor 软件查看
我们可以使用它指定一个磁盘或文件夹进行扫描,将直接扫描出该磁盘或文件夹下所存在的数据流,同时可以通过该文件直接打开文件查看内容。
而且我们也可以使用它来写入 NTFS 交换数据流文件,关于 Ntfs Streams Editor 的更多功能,这里不写详细介绍,建议自行探索。
NTFS 交换数据流与 WinRAR
当你想要压缩存在 NTFS
交换数据流的文件时,要注意到现在流行的压缩方式,只有 rar
格式才可以保存 NTFS 交换数据流。
在使用 WinRAR 压缩时,可以使用 高级 - 保存文件流数据
来保存 NTFS 交换数据流不被忽略。
同时解压时也需要使用 WinRAR 解压才能获得完整的 NTFS 交换数据流。
而且我们可以观察到,当被压缩文件有 NTFS 交换数据流的时候,在 RAR
压缩包中会出现值为 Service(NTFS streams) block
的数据块,并且文件名称也会泄露出来,但压缩包中无法直接查看。