Поиск по сайту:

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


В одной из предыдущих статей мы упоминали, что при попытке открыть исполняемый файл, загруженный из Интернета, Windows показывает предупреждение системы безопасности о запуске потенциально опасного контента (подробнее см. Как отключить предупреждения безопасности в Windows). Как система определяет, что файл скачан из Интернета? Давайте попробуем это выяснить.

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

Этот маркер представляет собой альтернативный файловый поток NTFS.

Примечание. Альтернативные потоки данных NTFS позволяют создавать несколько дополнительных потоков данных (метаданных) для каждого файла NTFS. По умолчанию все данные файла хранятся в основном потоке, но для файла можно создать один или несколько дополнительных потоков, размер которых может даже превышать размер основного файлового потока. Большинство приложений (в том числе Проводник Windows) работают только со стандартным потоком и не могут читать данные из альтернативных потоков данных NTFS.

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

dir /r

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

Откройте альтернативный поток в Блокноте:

Notepad.exe install_flash_player_16_active_x.exe:Zone.Identifier

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

  1. ZoneId=0: локальный компьютер

  2. ZoneId=1: местная интрасеть

  3. ZoneId=2: Надежные сайты

  4. ZoneId=3: Интернет

  5. ZoneId=4: сайты с ограниченным доступом.

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

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

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

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

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

Например, чтобы рекурсивно удалить альтернативные потоки всех исполняемых файлов в папке c:\Download\, выполните следующую команду:

c:\TOOLS\streams.exe -s -d c:\Download\*.exe

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

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

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

Атрибут удаляется следующим образом:

Remove-Item .\install-file.exe -Stream Zone.Identifier

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

Unblock-File install-file.exe

Вы можете назначить маркер любому файлу вручную, выполнив эту команду:

notepad.exe install_flash_player_16_active_x.exe:Zone.Identifier

Поскольку потока нет, система предлагает создать новый файл. Согласитесь и скопируйте следующий текст в окно Блокнота:

[ZoneTransfer]
ZoneId=3

Статьи по данной тематике