setodaNote

忘れる用のメモ書き for Cybersecurity

ZoneID を付与する方法など

ZoneID とは

ファイルの代替ストリーム(Alternate Data Stream, ADS)として記録される Zone.Identifier の項目のひとつで、 外部から取得したファイルなどに付与され、ファイル起動時に警告を表示する/しないの判断などに利用されている。 Windows XP Service Pack 2 の IE から導入されたらしい。

実行形式のファイルに対して、外部から入手したことを示すZoneID が付与されている場合、 以下のような警告ダイアログが表示される。

f:id:soji256:20180717005852p:plain:w480
ZoneID に基づく警告ダイアログ

ZoneID を確認する方法

dir コマンドで /r を引数に渡すと有無を確認できる。

dir /r

上記コマンドで「ファイル名:Zone.Identifier:$DATA」と表示されたファイルであれば more でその内容を確認できる。

more < ファイル名:Zone.Identifier

ZoneID を付与・編集する方法

以下のコマンドで編集可能。付与されていない場合は新規作成となる。

notepad ファイル名:Zone.Identifier

外部から取得したファイルであることを示したい場合は、以下の通り入力して保存する。

[ZoneTransfer]
ZoneId=3

ZoneID を削除する方法

[方法1]

エクスプローラから実行形式ファイルのプロパティを表示し「全般」タブの下部にある「ブロック解除」を押下する

f:id:soji256:20180717010032p:plain:w434
ファイルプロパティからZoneIDを削除

[方法2]

メモ帳などで内容を空にして保存する。この場合、ADS自体は削除されない。

notepad ファイルパス:Zone.Identifier

[方法3]

PowerShell の Remove-Item を用いる。(要 v3 以上)

Remove-Item 'ファイルパス' -Stream Zone.Identifier;

[方法4]

マイクロソフトから提供されている streams.exe を用いる(SysinternalsSuite に含まれている)。

streams.exe -d ファイルパス

ZoneID が意図せず消えるケース

圧縮ファイルに ZoneID が設定されている場合に Windows 標準の展開(ファイル右クリックから「展開」) であれば ZoneID は展開されたファイルに対しても付与された状態になる。 一方、 圧縮解凍ソフト(7-Zip など)を利用した場合には ZoneID が展開されたファイルに引き継がれない場合がある。 なお、ZoneID を維持する圧縮解凍ソフトも存在している(Explzh など)。

参考

更新履歴

  • 2018/09/10 記載を簡潔に整理。
  • 2020/03/19 参考に「Microsoft Docs」「Stack Overflow」を追加。一部記載を修正。