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

Kre*_*dns 104 windows virus ntfs alternate-data-stream

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

type sol.exe > container.txt:sol.exe
Run Code Online (Sandbox Code Playgroud)

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

start c:\hide\container.txt:sol.exe
Run Code Online (Sandbox Code Playgroud)

但是关于这个的疯狂部分是它不会增加文件的大小(所以它完全隐藏)。

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

more <  container.txt:sol.exe > sol.exe
Run Code Online (Sandbox Code Playgroud)

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

RBe*_*eig 98

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

它存在是因为它有用。其他几个平台支持每个文件的多个数据流。例如,在 Mac 上,它们被称为forks。我有理由确信在大型机世界中存在类似的东西,但今天我不能把我的手指放在任何明确的例子上。

在现代 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*
Run Code Online (Sandbox Code Playgroud)

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

将其保存在备用数据流中并运行扫描将是有用的...

  • 按照设计,显示的文件大小仅显示主 $DATA 流的大小。这也是你通常想要的。您也不会将文件名的长度(这是一种元数据)包含在文件大小中。至于是否存在安全风险。ADS 的风险并不比任何单个文件大。我还没有听说过使用这些机制成功传播/隐藏的任何恶意软件。 (12认同)
  • @ashh:Martinho 指出了这一点 - 在这样的流上很难找到可执行文件的晦涩难懂,也使得在不积极尝试的情况下很难执行。相比之下,例如,整个“隐藏文件扩展名”惨败,其中可执行文件可能看起来是 GUI 中的文本文件……并且仍然很容易执行。 (8认同)
  • 您不会意外运行存储在文本文件的 ADS 中的可执行文件。它隐藏得很好,隐藏得很好,普通用户可能会不小心运行它。你首先需要妥协。 (5认同)
  • 假设您有一个至少实时关注 .COM 文件的 AV,您将无法将其作为 ADS 附加,因为该 AV 会阻止您访问 .COM 文件(附加为 ADS 需要一个人才能访问文件)。但是,您应该能够附加带有 EICAR 字符串的文本文件,并在 ADS 中使用 .COM 扩展名命名它。即输入 EICAR.txt &gt; test.txt:EICAR.COM (4认同)
  • 关于 EICAR.COM 文件的一个很酷的事实:它不会在任何 64 位版本的 Windows 上运行,所以我想一旦每个人都在 64 位机器上,这个技巧将不再有效(这将**仍然**可能是一个尽管)。 (2认同)

Bru*_*eod 15

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

这允许运行在 NTFS 上的 Windows 服务器通过 AFP 共享到 Mac。要使此功能起作用,NTFS 文件系统必须支持分叉,而且从一开始就支持分叉。

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

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

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

  • 引用发现: ...ADS 功能,*最初设想允许与 Macintosh 分层文件系统 HFS* 兼容;其中文件信息有时会分叉到单独的资源中。替代数据流已被各种程序合法使用,包括本地 Windows 操作系统来存储文件信息,如属性和临时存储。来源:http://www.windowsecurity.com/articles/Alternate_Data_Streams.html (4认同)
  • 添加此功能只是为了允许 Mac 的文件共享听起来不像是一个合理的原因。通过网络共享不需要将文件完整地存储在服务器端。我见过几个 *nix 苹果共享服务器,它们将文件拆分为数据和资源信息。这对客户是透明的。仅仅为了允许 AFP 而改变实际的驱动器格式似乎并不现实。可能是一个不错的好处,但不是此功能的原因。 (3认同)
  • 如果您要否决投票,请发表评论以说明原因。 (2认同)
  • 这听起来像是该功能首先存在的一个完全合理的理由。 (2认同)
  • 是的,我在想 [需要引用] 如果您要断言 SfM 是 MS 在 NTFS 中实施 ADSes 的*主要原因*。 (2认同)

JP *_*oto 5

这是一篇关于Alternate Data Streams带来的潜在安全漏洞的好文章。

  • &lt;nitpick&gt; 这是一个漏洞,而不是威胁&lt;/nitpick&gt;。这并不像听起来那么重要。您需要已经拥有凭据才能使用它。 (6认同)

jer*_*jvl 5

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

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

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

  • @martinho,您需要 EICAR 测试文件:X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H* 只需粘贴该文本(正是68 字节的 ASCII 文本,请参阅 http://www.eicar.org/anti_virus_test_file.htm 了解整个故事)转换为扩展名为 .COM 的文件。它将运行并打印一条消息。当然,除非您的 AV 工作正常。将其放入备用数据流并在那里检查。 (2认同)