下载文件夹里堆了几十个安装包,过一阵子再看,常常想不起某个 exe 到底是从官网下的还是从论坛转来的。更常见的情况是:双击下载来的程序,系统弹出「此文件来自其他计算机,可能被阻止以帮助保护该计算机」;用 Office 打开下载的表格,顶部横幅提示进入受保护的视图,编辑按钮点不了。

这些提示不是凭空冒出来的。NTFS 文件系统里有一个沿用了 33 年的机制——替代数据流(Alternate Data Streams,简称 ADS),一个文件除了肉眼能看到的正文,还能挂上若干个独立命名的「附加层」。文件名、图标、文件大小都不露痕迹,资源管理器也从未打算显示它。Windows 正是用其中一个叫 Zone.Identifier 的流,记下这个文件从哪儿来。
一、先做个实验,亲眼看见第二层
MakeUseOf 撰稿人 Afam Onyimadu 给出的验证步骤只要一分钟:
- 任意文件夹里右键 →「新建」→「文本文档」,命名 test.txt,写一句话后保存关闭。
- 点击资源管理器地址栏,输入
cmd回车,在当前目录打开命令提示符。 - 执行
notepad test.txt:secret.txt,在弹出的记事本里随便写点内容,保存关闭。 - 回到命令行执行
dir,列表里依然只有 test.txt,看不出异常。 - 再执行
dir /r,test.txt 下面会多出一行以$DATA结尾的记录,带着自己的名字和体积。
这不是文件里藏了另一个文件,而是同一条文件记录上挂了第二条数据流。查属性、比大小都发现不了。
二、查出下载文件的真实来源
把同样的动作用到下载目录,收获会更实用:
- 在「下载」文件夹地址栏输入
cmd回车,执行dir /r。 - 很多文件下方会出现名为
Zone.Identifier的流。 - 用
notepad 文件名:Zone.Identifier直接打开它(文件名含空格时用引号括起来)。 - 里面通常有一行
ZoneId=3,代表文件来自「Internet 区域」而非本机创建;有些还带 HostUrl 和 ReferrerUrl,直接指向当初的下载地址。
习惯用 PowerShell 的话,Get-Item -Path "C:\Users\用户名\Downloads\setup.exe" -Stream * 能列出同一份信息。
三、确认可信后再解除锁定
这套标记就是所谓的「网络来源标记」(Mark of the Web),它会让系统和部分软件对文件加以限制。确认来源可靠后再解除:
- 右键文件 →「属性」→「常规」选项卡,拉到窗口底部的「安全」一行。
- 勾选旁边的「解除锁定」复选框,点击「应用」再点「确定」——只勾不点应用不生效。
- 需要批量处理时,在目标目录打开 PowerShell 执行
dir -Recurse | Unblock-File,或对单个文件用Unblock-File -Path "完整路径"。 - 压缩包建议先对 zip 本身解除锁定再解压,否则解出来的文件可能继承同样的标记。
四、几点值得留意的地方
从挂载的 ISO 或 IMG 镜像里取出的文件,并不总能可靠地带上 Zone.Identifier。没有标记就不触发警告——自微软默认拦截来自互联网的宏之后,攻击者转而更多使用 ISO 附件,正是钻了这个空子。收到陌生人发来的 ISO 附件,警惕程度应高于普通文档。
另外,附加流的存活取决于文件系统和传输方式。把带流的文件复制到 FAT32 格式的 U 盘,再执行 dir /r,可见内容还在,附加的那一层已经消失。资源管理器虽不显示这些流,安全软件却能识别,微软免费提供的 Sysmon 就专门有一类事件用于记录流的创建。
来源:MakeUseOf







