为什么 NTFS 允许不可见的可执行文件?

为什么 NTFS 允许不可见的可执行文件?

您只需输入以下内容即可将任何文件隐藏在另一个文件内:

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

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

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

但令人疯狂的是,它不会增加文件的大小(因此它是完全隐藏的)。

如果你删除了包含隐藏内容的文件,隐藏内容不会被删除。只需使用:

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

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

答案1

这个问题有两个方面。第一,为什么这个功能会存在;第二,为什么 GUI(或命令提示符)不能更轻松地查看和管理该功能。

它之所以存在是因为它很有用。其他几个平台支持每个文件多个数据流。在 Mac 上,它们被称为叉子,例如。我确信在大型机世界中也存在类似的事情,但今天我找不到任何明确的例子。

在现代 Windows 上,它用于保存文件的额外属性。您可能会注意到,Windows 资源管理器中的“属性”框有一个“摘要”选项卡,该选项卡在“简单”视图中(我使用的是 Windows XP,其他版本的情况会有所不同)包含许多有用的字段,如标题、主题、作者等。这些数据存储在备用流中,而不是创建某种附属数据库来保存所有数据,因为这些数据很容易与文件分离。

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

难题在于为什么没有更好的用户界面来注意到流的存在,以及为什么可以将可执行内容放入其中,更糟糕的是,稍后执行。如果这里有错误和安全风险,那就是它了。

编辑:

受到另一个答案的评论的启发,这里有一种方法可以查明您的防病毒和/或反恶意软件保护是否知道替代流。

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

EICAR 文件为:

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

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

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

答案2

此功能是 Windows Server 的跨平台功能所必需的:适用于 Mac 的服务。

这允许在 NTFS 上运行的 Windows 服务器通过 AFP 共享到 Mac。要使此功能正常工作,NTFS 文件系统必须支持分叉,并且它从第一天起就支持分叉。

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

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

可能应该有一个选项来将分支包含在总文件大小中或在 Windows 资源管理器中显示它们。

答案3

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

例如,我可以想象 IDE 中的有趣用途,有时涉及多个文件来形成一个单元(代码文件/表单文件等),可以通过这种方式附加到原始文件,这样它们就不会意外分开。

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

答案4

好问题,我直到去年才真正意识到 ADS,而且我已经从事 Windows 开发人员多年了。我可以保证,在这方面我并不孤单。

关于能够检查文件中的替代数据,我发现了一个有用的小工具,叫做小伙子们可从 Frank Heyne 软件获得。它可以列出给定目录中所有文件的 ADS,甚至包括加密文件(以及子目录中的文件)。

相关内容