Как Windows определяет, что файл скачан из Интернета

Windows

Каким же образом система определяет, что файл был скачан из Интернета? Попробуем разобраться.

Совет. В Windows 8 блокировать файлы, скачанные из Интернета также может фильтр SmartScreen.

Все исполняемые файлы, загруженные из Интернета с помощью браузера получают особую отметку. Это правило поддерживается не только браузером Internet Explorer, но и большинством популярных браузеров, например Mozilla Firefox и Google Chrome. При копировании, переименовании или перемещении файла на другой раздел с файловой системной NTFS, предупреждение все равно остается.

Данная отметка представляет собой альтернативный поток NTFS, принадлежащий файлу.

Примечание. Суть альтернативных потоков данных NTFS (ADS — Alternate Data Streams). – возможность для каждого NTFS файла создать несколько дополнительных потоков данных (метаданных). По умолчанию все данные файла хранятся в основном потоке, однако есть возможность создать для файла один или несколько дополнительных потов данных, причем их размер даже может превышать размер основного файла. Подавляющее большинство приложений (в том числе проводник) работают только со стандартным потоком и не могут читать данные из альтернативных потоков NTFS.

Чтобы убедится, что скачанному из Интернета файлу назначена особая метка (альтернативный поток NTFS), в окне командной строке выведем список файлов в каталоге с дистрибутивами командой:

dir /r

Как Windows определяет, что файл скачан из Интернета

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

Откроем содержимое альтернативного потока в блокноте:

Notepad.exe install_flash_player_16_active_x.exe:Zone.Identifier

Как Windows определяет, что файл скачан из Интернета

Мы видим, что данный поток представляет собой файл с секцией [ZoneTransfer], в которой указан идентификатор зоны передачи ZoneId (те самые зоны безопасности, которые присутствуют в настройках IE). ID зоны передачи может содержать одно из 5 значений от 0 до 4.

  • ZoneId=0: Local machine (Локальный компьютер)
  • ZoneId=1: Local intranet (Местная сеть)
  • ZoneId=2: Trusted sites (Надежные сайты)
  • ZoneId=3: Internet (Интернет)
  • ZoneId=4: Restricted sites (Опасные сайты)
Читайте также:
Получаем логи (историю) входа пользователя в домен AD

Как Windows определяет, что файл скачан из Интернета

При загрузке файла из определенной зоны безопасности, браузер ставит им метку этой зоны. При запуске файлов, у которых в альтернативном NTFS потоке атрибут ZoneId равен 3 или 4, система на основании метки зоны распознает, что файл получен из Интернета или недоверенного источника. Windows проверяет наличие данной метки у исполняемых файлов начиная с Windows XP SP2.

Чтобы вручную удалить данную метку (альтернативный поток) у файла, достаточно нажать кнопку Разблокировать в свойствах файла.

Как Windows определяет, что файл скачан из Интернета

Убедимся, что альтернативной поток у данного файла теперь отсутствует:

Как Windows определяет, что файл скачан из Интернета

Совет. Чтобы система не назначала метки загруженным файлам, можно сохранять файлы из Интернета на файловой системе, отличной от NTFS. Например, FAT, exFat и пр.

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

К примеру, чтобы рекурсивно удалить альтернативные потоки у всех exe-файлов в каталоге c:Download, выполните команду:

c:TOOLSstreams.exe -s -d c:Download*.exe

В консоли видно, что альтернативный поток у файла удален: Deleted :Zone.Identifier:$DATA

Важно. Утилита streams удаляет все альтернативные потоки у заданных файлов и не позволяет таргетировать конкретный поток. Поэтому не выполняйте команду streams в формате streams.exe -s -d c:*.exe, т.к. это может привезти к нарушению работы системы вследствие удаления у системных файлов важной информации, содержащейся в альтернативных NTFS потоках.

Как Windows определяет, что файл скачан из Интернета

При наличии PowerShell 3.0, вывести список файлов в каталоге (рекурсивно) с потоком Zone.Identifier можно такой командой:

Get-ChildItem -Recurse | Get-Item -Stream Zone.Identifier -ErrorAction SilentlyContinue | Select-Object FileName

Сам атрибут снимается так:

Remove-Item .installfile.exe -Stream Zone.Identifier

В Windows PowerShell 4.0 снять метку Zone.Identifier можно с помощью отдельного командлета:

Читайте также:
Get-ADUser: получение информации о пользователях Active Directory из PowerShell

Unblock-File installfile.exe

Данную метку можно для произвольного файла установить вручную, для этого выполним команду

notepad.exe install_flash_player_16_active_x.exe:Zone.Identifier

Т.к. поток отсутствует, система предложит создать новый файл. Соглашаемся и в окно блокнота копируем текст:

[ZoneTransfer]
ZoneId=3

Как Windows определяет, что файл скачан из Интернета

Сохраняем изменения. Убеждаемся, что файлу назначен альтернативный поток.

Как Windows определяет, что файл скачан из Интернета

Оцените статью
( Пока оценок нет )
Поделиться с друзьями
Информационный блог про Windows
Добавить комментарий