谈谈NTFS数据流文件

  • A+
所属分类:安全闲碎

 1、什么是NTFS数据流文件?

要了解NTFS流文件之前,你应该对NTFS文件系统有一定的了解, NTFS是微软Windows NT内核的系列操作系统支持的、一个特别为网络和磁盘配额、文件加密等管理安全特性设计的磁盘格式。NTFS比FAT文件系统更稳定,更安全,功能也更为强大。

这个NTFS数据流文件,也叫Alternate data streams,简称ADS,是NTFS文件系统的一个特性之一,允许单独的数据流文件存在,同时也允许一个文件附着多个数据流,即除了主文件流之外还允许许多非主文件流寄生在主文件流之中,它使用资源派生的方式来维持与文件相关信息,并且这些寄生的数据流文件我们使用资源管理器是看不到的。

 

2、为什么NTFS有数据流这个特性?

原意是为了和Macintosh的HFS文件系统兼容而设计的,使用这种技术可以在一个文件资源里写入相关数据(并不是写入文件中),而且写进去的数据可以使用很简单的方法把它提取出来作为一个独立文件读取,甚至执行

 

3、为什么资源管理器里面看不到文件所带的数据流文件呢?

从网上找来的原因是:我们之所以无法在系统中看到NTFS数据流文件,是因为Windows中的很多工具对数据流文件的支持并不是很好,就像“资源管理器”,我们无法在“资源管理器”中看到有关数据流文件的变化。

不过这个原因很奇怪,同样是MS自己做的东西,"资源管理器都支持不好,还有啥工具能支持好呢?" ,后来再想,也可能是这样一个原因:在当时写有关NTFS文件系统的数据流存储的时候很多WINDOWS工具没有相应的更新,同时呢NTFS流的显示与普通的文件不一样,需要使用其他的枚举方式来完成,再有NTFS对广大普通用户桌面用户来说没有必要去看到,更多的是被专业软件所使用,即使显示出来也没意义。

 

4、如何查看,创建,删除NTFS流文件?

NTFS流文件分两种情况,一种是附着于宿主文件,一种是单独的数据流文件。这里将介绍两种编辑流文件的方法,一是系统自带的命令,一是使用工具。

 

1)  系统命令编辑流文件实例:

a) 创建单独的数据流文件

命令行下使用下面的命令:echo "this is a stream file" > :test1.txt

OK,这样创建了的流对于dir或者资源浏览器是完全不可见的,就是说是隐藏的,只有使用notepad :test1.txt可以查看。而即使我们知道了它的存在也无法删除,系统del命令不支持删除流文件。

b) 关联数据流文件

首先在C:/下创建一个主文件,打开记事本输入this is the main file保存为test.txt,下面我们为它关联一个流文件。

命令行下输入:echo "this is a stream file" > test.txt:stream.txt”。这样我们就创建了一个名为stream.txt,内容为“this is a stream file”的数据流文件,并与宿主文件test.txt进行了关联。当然你是没法在C:/下找到steam.txt文件的,同时查看宿主文件test.txt文件,内容依然没变,但是如果你前后关注下这个宿主文件大小,你会发现变化的。同样只能通过命令行让它现形,输入:notepad test.txt:stream.txt,是不是打开了你刚创建的流文件了,哈哈,我是看到了。

 

2) 使用NTFS Streams info工具:

经过前面的操作,可以发现系统命令对NTFS数据流文件的支持还是很不好的,那么我们使用工具吧,NTFS Streams info,通过它你可以查看,创建,删除流文件。

a) 查看流文件

想知道你系统中到底哪些文件带着流吗?打开NTFS Streams info,在左窗口选择你要查看目录,切换到工具界面中间view标签页,单击start 按钮,右边窗口将以红色标记显示带着流的文件。如下图:

谈谈NTFS数据流文件

同样在访问文件的过程中,也可以用工具processmonitor查看,如果文件带了数据流文件,会被显示出来,如C:/readme.html:UnNamed,表示readme.html文件带了隐藏的数据流文件。

b) 创建流文件

右窗口选择一文件,下面我们为该文件关联数据流文件: 选择菜单Folder--Create new Ads from file ,这时你就可以将任意文件作为流文件关联在一个文件后面。

c) 删除流文件

使用NTFS Streams info查看到某些文件有带流文件后,再选择菜单:Folder--Remove ADS或者Batch Removeing即可删除对应的流文件。

还有一种删除方法,因为只有NTFS文件系统支持数据流文件,所以将文件转移到FAT文件系统下,所带的数据流文件自动就会被删除掉了。

 

5、NTFS流文件如何执行,数据流病毒如何防范?

虽然数据流可以插入,但你不能直接执行数据流文件,所以很多杀毒软件对这数据流病毒的支持不太好。可是病毒制作者常常能把病毒代码和执行的代码--(简单的调用和处理的命令)追加到流文件中,就有破坏系统的可能。

具体怎么执行的,那就需要好好分析下病毒技术了,鄙人才疏学浅,没整明白,下面是一种比较常见到的数据流文件执行方法:是直接在注册表中的run键下添加数据流文件的完整路径:HKEY_LOCAL_MACHINE/Software/Microsoft/Windows/CurrentVersion/Run,建立键值"123" = %filepath%: %streamName%,下次系统启动时就会自动运行该隐藏文件。

对于没有使用过苹果产品的我来说,NTFS数据流文件的好处,我没发现,说说坏处吧,正如前面提到的,因为任何文件都可以作为数据流文件,因为NTFS流文件的隐藏功能,这正好被投机倒把的分子利用了,做啥?搞破坏,还做的神不知鬼不觉。很多恶意软件可以使用数据流文件系统来隐藏恶意代码以逃避病毒扫描程序的检查。

那么如何防范呢?

a) 常见到的自解压文件,不要双击直接运行,可以在自解压文件上点击鼠标右键,选择“用Winrar打开”,如果发现其中的文件夹是空的,那么就要留个心眼了,很可能这就是一个数据流木马陷阱。

b) 不管杀毒软件是不是能查杀NTFS数据流木马,木马程序运行后,在内存中还是会还原出来的,一般的杀毒软件都带有内存监控功能,可以将木马程序在内存中拦截下来。因此,勤升级杀毒软件也是防范NTFS数据流木马比较有效的办法。

也有杀毒软件利用数据流的特性,如卡巴斯基扫描过文件之后,就以数据流的形式标记为白名单,这样却导致用户的硬盘空间被大量占用了,所谓的卡巴斯基吃硬盘就是这样,造成多少用户的困扰阿.


文章来源:https://blog.csdn.net/vivilorne/article/details/3841509

本文始发于微信公众号(LemonSec):谈谈NTFS数据流文件

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: