Каким образом Windows определяет, что файл был загружен из Интернета, и выводит предупреждение безопасности

Вы наверняка сталкивались с ситуацией, когда на попытку открыть загруженный с Интернета файл система вам отвечала вот таким окном:

Windows определяет, что файл был загружен с Интернета, помечен как потенциально опасный, и выводит соответствующее предупреждение.
Такую пометку файл получает, когда он был загружен при помощи браузера Internet Explorer, а также некоторых альтернативных браузеров (некоторых, но далеко не всех: например, при использовании Google Chrome пометка ставится, а при использовании Opera - нет). Я предлагаю вам посмотреть, как всё это работает "изнутри".


Вероятно, вы читали статью "Альтернативные потоки NTFS, или создание секретных файлов, существование которых на первый взгляд неочевидно". Если нет, стоит с ней ознакомиться хотя бы бегло, потому что пометка о получении файла из Интернета есть не что иное, как альтернативный поток NTFS, принадлежащий файлу, который вы скачали.

В этом легко убедиться, если выполнить команду DIR c ключом /R. Команда DIR /R включает вывод альтернативных потоков данных для файлов, которые присутствуют в её выводе.

Вот, к примеру, вывод команды DIR из папки, где я храню дистрибутивы приложения TeamViewer:

Как можно заметить, листинг файлов содержит дополнительный, альтернативный поток для каждого из дистрибутивов. Например, вот этот: TeamViewer6_10_Setup_ru.exe:Zone.Identifier.

Давайте воспользуемся стандартным приложением Windows "Блокнот", и откроем поток следующей командой:
[code]notepad.exe TeamViewer6_10_Setup_ru.exe:Zone.Identifier[/code]

Как вы можете видеть, альтернативный поток-пометка - не более чем обычный INI-файл с секцией [ZoneTransfer] и идентификатором зоны передачи. Присутствие подобного файла-альтернативного потока говорит системе, что файл получен из Интернет.

Снятие и установка пометки

Операционная система Windows позволяет отключить пометку (читать - удалить альтернативный zone-поток) непосредственно из свойств "меченного" файла:

Нажатие на кнопку "Разблокировать" удаляет альтернативный поток, в чем легко убедиться, снова выполнив команду dir /r:

Впрочем, ничего не мешает вам установить её обратно.
Снова выполняем команду:
[code]notepad.exe TeamViewer6_10_Setup_ru.exe:Zone.Identifier[/code]
На этот раз Блокнот выведет предупреждение, что файл, который мы пытаемся открыть, не существует (что не удивительно - мы только что его удалили).

Отвечаем "Да", и в качестве текста файла заносим уже знакомые нам строки:

[ZoneTransfer]
ZoneId=3

Всё, сохраняем файл, закрываем Блокнот, и система снова считает файл небезопасным и полученным с Интернет.

К сожалению, средствами операционной системы нельзя удалять альтернативные потоки у нескольких файлов(команда DEL считает символ ":" недопустимым, а Проводник не имеет опции отображения альтернативных потоков), и это значит, что сразу с нескольких файлов признак загрузки с Интернет снять тоже нельзя.

Если же вам необходимо снять этот признак сразу с большого количества файлов, то поможет в этом ранее рассмотренная утилита streams, созданная Марком Руссиновичем.

Утилита streams поддерживает два необходимых ключа:
[code]streams [-s] [-d] <file or directory>[/code]
Здесь

  • -s обрабатывать подпапки рекурсивно.
  • -d удалять потоки

Таким образом, я удалю альтернативные потоки у всех EXE-файлов, запустив streams командой вида
[code]streams -d *.exe[/code]

Скачать streams можно здесь.

Внимание! Не запускайте streams командой вида
[code]streams -s -d D:\*.exe[/code]
Это может привести к непредсказуемым последствиям, вплоть до сбоев в работе системы и установленных приложений. Дело в том, что утилита streams не позволяет удалять конкретные потоки NTFS и удаляетвсе альтернативные потоки для каждого из файлов. Помимо пометки о получении файла из Интернет, в альтернативных потоках может содержаться какая-либо другая информация, которая нужна системе и/или другим приложениям.

Каким образом Windows определяет, что файл был загружен из Интернета, и выводит предупреждение безопасности: 4 комментария

  1. Ссылка на streams битая (вы удалили windows.php, который должен редиректить)

    1. Спасибо, ссылки поправил. На самом деле, я перетащил статью со старого движка. Вероятно, я что-то упустил при переносе.

  2. У Nir Sofer есть удобная утилита для просмотра и управления потоками NTFS — AlternateStreamView.

    1. Я на момент написания статьи о ней ничего не знал.

Обсуждение закрыто.