为什么NTFS允许隐藏的可执行文件?


105

您可以通过键入以下命令将任何文件隐藏在另一个文件中:

type sol.exe > container.txt:sol.exe

并运行文件隐藏文件,只需使用:

start c:\hide\container.txt:sol.exe

但是,与此有关的疯狂的部分是它不会增加文件的大小(因此它是完全隐藏的)。

而且,如果您删除了其中包含隐藏内容的文件,则隐藏内容不会被删除。只需使用:

more <  container.txt:sol.exe > sol.exe

为什么NTFS允许这样做?这似乎是隐藏病毒的最佳方法。


1
很好,好像是mac resourceforks。
Stefano Borini,2009年

15
更糟的是,当你开始像SOL.EXE,任务管理器显示的进程名是container.txt
哈森

16
我们应该轰炸谷歌,以便“吓人”导致这个问题
黑森

4
只要已经存在,偶尔在AV开发人员/其他大量使用STILL尚不了解的文件系统的人中运行仍然令人惊讶。我不需要普通的应用程序开发人员来了解它,因为没有必要,但是如果您
忙于

据说您也可以将ADS附加到文件夹。您可以通过删除文件夹来删除ADS,但是当文件夹是驱动器的根目录时,例如,如果不重新格式化驱动器,就无法删除C:驱动器。似乎是一种对我创建隐藏的rootkit病毒的机制。
2013年

Answers:


98

这个问题有两个方面。第一个是为什么此功能完全存在,第二个是为什么GUI(或命令提示符)使查看和管理该功能更容易的原因。

之所以存在是因为它很有用。其他几个平台支持每个文件多个数据流。例如,在Mac上,它们称为forks。我有把握地确定大型机世界中也存在类似的情况,但是今天我不能指望任何明确的例子。

在现代Windows上,它用于保存文件的其他属性。您可能会注意到,Windows资源管理器中的“属性”框具有“摘要”选项卡,在“简单”视图中(我使用的是Windows XP,您的里程在其他版本上会有所不同)包括一堆有用的字段,例如“标题”,“主题”,“作者”和“等等。该数据存储在备用流中,而不是创建某种形式的副车数据库来保存所有将太容易与文件分离的数据。

备用流还用于保存标记,该标记表示文件来自不受信任的网络源,Internet Explorer和Firefox均在下载时将其应用。

困难的问题是,为什么没有更好的用户界面来通知流完全存在,以及为什么可以将可执行内容放入其中,而更糟的是稍后执行。如果这里存在错误和安全风险,就是这样。

编辑:

受到对另一个答案的评论的启发,这是一种找出反病毒和/或反恶意软件保护是否意识到备用流的方法。

获取EICAR测试文件的副本。它是68字节的ASCII文本,恰好也是有效的x86可执行文件。尽管完全无害,但防病毒行业已同意将其检测为真实病毒。发起人认为使用真实病毒测试AV软件有点像通过将废纸ket着火来测试火灾报警器...

EICAR文件为:

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

使用扩展名保存它,.COM它将执行(除非您的AV正在关注)并打印问候语。

将其保存在备用数据流中并运行扫描将很有帮助。


11
通过设计,显示的文件大小仅显示主$ DATA流的大小。这也是您通常想要的。您也不要在文件大小中包括文件名的长度(这是一种元数据)。至于存在安全隐患。ADS的风险不比任何单个文件大。我还没有听说过任何通过这些机制成功传播/隐藏的恶意软件。
乔伊

4
您不能意外地运行存储在文本文件ADS中的可执行文件。它隐藏得很好,对于普通用户而言,隐藏得太好,以至于不小心运行它。您首先需要妥协。
R. Martinho Fernandes

7
@ashh:Martinho钉牢了它-晦涩难懂的特性使得很难在这样的流上找到可执行文件,这也使得很难在不主动尝试的情况下执行一个可执行文件。与此形成对比的是,整个“隐藏文件扩展名”惨败,可执行文件可能看起来像是GUI中的文本文件,而且仍然非常容易执行。
Shog9

3
假设您的AV至少要实时关注.COM文件,则您将无法将其作为ADS附加,因为该AV会阻止您访问.COM文件(附加为ADS要求您访问.COM文件)文件)。但是,您应该能够将带有EICAR字符串的文本文件附加到文件中,并在ADS内以.COM扩展名命名。即键入EICAR.txt> test.txt:EICAR.COM
KTC

2
有关EICAR.COM文件酷的事实:它不会在任何Windows 64位版本上运行,所以我想这招将不再工作,一旦每个人都在64位机器(这将仍然可能需要一段时间)。
克雷登斯2010年

15

Windows Server的跨平台功能:mac的服务需要此功能。

这允许在NTFS上运行的Windows服务器通过AFP与Mac共享。为了使此功能正常运行,NTFS文件系统必须支持分叉,并且从第一天开始。

在您问之前,该功能仍在使用吗?是的,是我每天在支持的客户端的服务器上运行和使用它。

当人们和应用程序忘记或没有意识到它存在时,就会出现主要的安全问题。

虽然可能应该有一个选择,将分叉包括在文件总大小中或在Windows资源管理器中显示它们。


2
如果您要投反对票,请留下评论。
布鲁斯·麦克劳德

2
这听起来像是该功能首先存在的完全合理的理由。
RBerteig

3
仅仅为了允许Mac共享文件而添加此功能听起来并不合理。通过网络共享不需要将文件完整地存储在服务器端。我见过几个* nix苹果共享服务器,它们将文件分为数据和资源信息。这对客户端是透明的。仅允许AFP更改实际的驱动器格式似乎并不现实。可能会是一个不错的好处,但不是此功能的原因。
Simurr

2
是的,如果您要断言SfM是MS在NTFS中实现ADS的主要原因,我在想[需要引用] 。
afrazier

3
发现引文:... ADS功能最初是为了与Macintosh分层文件系统HFS兼容而设计的;文件信息有时会分叉到单独的资源中。备用数据流已被各种程序合法使用,包括本机Windows操作系统,用于存储文件信息,例如属性和临时存储。来源:windowsecurity.com/articles/Alternate_Data_Streams.html
JamesBarnett

5

我以为主要用途之一(也许甚至是预期用途)是透明地允许向文件中添加任何类型的元数据。文件大小不变的原因是在这种情况下,您不希望文件外观或行为有所不同,以免原始应用程序依赖文件外观的某些方面。

我可以想象在IDE中有趣的用途,例如,有时涉及多个文件以形成一个单元(代码文件/表单文件等),可以通过这种方式将其附加到原始文件上,以免意外分离。

我还相信,有一个命令可以在给定的目录树中找到所有此类“附件”,因此它们实际上并未完全隐藏。如果更好的病毒扫描程序不知道这一点并检查这些“隐藏”区域,这也将令我感到惊讶,但是您可以通过有意将受感染的可执行文件附加到文本文件并查看是否被拾取来进行检查。


您能否发布一个指向此类可执行文件的链接,以便我可以尝试?;)
R. Martinho Fernandes

我建议您在计算机上运行AVG,然后从隔离文件夹中获取其中一个可执行文件以进行尝试;)
jerryjvl

2
@martinho,您需要EICAR测试文件:X5O!P%@ AP [4 \ PZX54(P ^)7CC)7} $ EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$ H + H *只需粘贴该文本(精确地68字节的ASCII文本,有关完整信息,请参见eicar.org/anti_virus_test_file.htm)到扩展名为.COM的文件中。它将运行并打印一条消息。当然,除非您的AV正在工作。将其放入备用数据流中,并在那里进行检查。
RBerteig

@RBerteig:嗨,酷...不知道有这样的事情。
jerryjvl

@jerryjvl,正如他们所说,通过点燃
废纸

5

这是一篇有关Alternate Data Streams造成的潜在安全漏洞的好文章。


6
<nitpick>这是一个漏洞,而不是威胁</ nitpick>。这听起来并不重要。您需要已经有凭据才能使用它。
rom09年9

没问题。顺便说一句,检查您的拼写。并永远记住:威胁利用漏洞。威胁通常是人,但自然灾害和人为灾害也同样重要。
rom09年

@romandas,您已经需要什么凭证?在家里,大多数Windows用户(尤其是XP用户)都具有Admin特权,为什么听起来这么麻烦呢?
灰烬

@ashh,“使用在隐藏的系统上隐藏...的方法”。该系统必须首先被破坏才能隐藏任何内容,并且类似地执行任何隐藏的内容。
KTC

5

好问题,直到去年我才对ADS有所了解,并且我已经成为Windows开发人员很多年了。我可以保证我并不孤单。

关于能够检查文件上的备用数据,我发现Frank Heyne软件提供了有用的称为Lads的小工具。它可以在给定目录中的所有文件上列出ADS,甚至在加密文件上(以及子目录中)也可以列出ADS。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.