Zone.Identifier 是什么
Zone.Identifier 是 NTFS 的备用数据流(Alternate Data Stream,ADS),由 Windows 附件管理器(Attachment Manager)在文件从网络、邮件附件、即时通讯工具落地时写入。它记录该文件的来源区域(ZoneId)、来源域名(HostUrl)与跳转来源页(ReferrerUrl),是回答“这个文件从哪儿来”的直接证据,比文件时间戳更能说明传播路径。ZoneId 取值 0 本地计算机、1 本地 Intranet、2 受信任站点、3 Internet、4 受限站点。
基本信息
| 适用平台 | Windows XP 以后、文件位于 NTFS 卷(FAT32/exFAT 不支持数据流) |
|---|---|
| 对象 | 任意类型文件,常见于下载目录、临时目录与邮件附件落盘位置 |
| 读取方式 | PowerShell 的 Get-Item -Stream / Get-Content -Stream;cmd 用 dir /r 列出数据流 |
| 典型字段 | ZoneId、HostUrl、ReferrerUrl、LastWriterPackageFamilyName |
| 保留条件 | 取证副本必须保留 ADS:ZIP 打包、复制到非 NTFS 或某些 SMB 共享都会丢失 |
典型使用场景
- 确认可疑样本是不是通过网络下载而来,以及下载时的来源域名
- 把一批落地文件按 HostUrl 聚类,判断是否存在同一投递基础设施
- 与浏览器下载记录、代理日志交叉核对,验证下载链路一致性
- 识别钓鱼邮件附件落地后的写入痕迹,还原“收信—打开—落盘”的顺序
- 区分内网共享复制与公网下载:ZoneId 不同即说明来源区域不同
读取与批量扫描
读取与批量扫描
# 查看单个文件是否带来源标记
Get-Content -LiteralPath 'C:\Users\u\Downloads\setup.exe' -Stream Zone.Identifier
# 列出该文件全部数据流(含未命名的默认流)
Get-Item -LiteralPath 'C:\Users\u\Downloads\setup.exe' -Stream *
# 批量扫描下载目录,输出有网络来源标记的文件
Get-ChildItem 'C:\Users\u\Downloads' -Recurse -File | Where-Object {
(Get-Item -LiteralPath $_.FullName -Stream * -ErrorAction SilentlyContinue).Stream -contains 'Zone.Identifier'
} | Select-Object FullName, LastWriteTime
# cmd 侧快速查看:文件名后带 :Zone.Identifier 即为数据流
cmd /c 'dir /r C:\Users\u\Downloads'字段逐列读法
| 字段 | 含义 | 判读要点 |
|---|---|---|
| ZoneId | 来源区域编号 | 3 表示 Internet;为 0 或缺失说明来自本地或标记已被清除 |
| HostUrl | 文件来源主机地址 | 可能是直链或 CDN 域名,需与下载记录比对 |
| ReferrerUrl | 引用的来源页面 | 指向钓鱼页或网盘页面,可与浏览器历史互证 |
| LastWriterPackageFamilyName | 写入该数据的应用包标识 | 可提示由哪个浏览器或应用写入 |
| 数据流缺失 | 无 Zone.Identifier | 不能反推“不是下载来的”,可能被复制或被工具清除 |
企业网关与浏览器的安全策略会追加更完整的来源信息(例如带完整下载 URL 的字段);看到的字段多少与全网策略有关,字段少不代表来源不明。
PowerShell 的 Get-Item -Stream 对不存在的流会报错,批量扫描时要加 -ErrorAction SilentlyContinue,否则脚本会因个别文件中断。