Jak system Windows określa, że ​​plik został pobrany z Internetu

W poprzednim artykule wspomnieliśmy, że podczas próby otwarcia pliku wykonywalnego pobranego z Internetu system Windows wyświetla ostrzeżenie dotyczące zabezpieczeń przed próbą uruchomienia potencjalnie niebezpiecznej zawartości (szczegółowe informacje można znaleźć w temacie Wyłączanie ostrzeżenia bezpieczeństwa w systemie Windows). W jaki sposób system określa, że ​​plik został pobrany z Internetu? Spróbujmy to rozgryźć.

Wskazówka. W Windows 8 SmartScreen może również blokować pliki pobrane z Internetu..

Wszystkie pliki wykonywalne pobrane z Internetu za pomocą przeglądarki otrzymują specjalny znak. Ta reguła jest obsługiwana nie tylko przez Internet Explorera, ale także przez większość popularnych przeglądarek, takich jak Mozilla Firefox i Google Chrome. Podczas kopiowania, zmiany nazwy lub przenoszenia pliku na inną partycję w systemie plików NTFS ostrzeżenie nadal pozostaje.

Ten znak reprezentuje alternatywny strumień NTFS, posiadany plik.

Uwaga. Esencja alternatywne strumienie danych NTFS (ADS - alternatywne strumienie danych). - zdolność każdego pliku NTFS do utworzenia kilku dodatkowych strumieni danych (metadanych). Domyślnie wszystkie dane pliku są przechowywane w głównym strumieniu, ale możliwe jest utworzenie jednego lub więcej dodatkowych danych dla pliku, a ich rozmiar może nawet przekroczyć rozmiar głównego pliku. Zdecydowana większość aplikacji (w tym Explorer) działa tylko ze standardowym strumieniem i nie może odczytać danych z alternatywnych strumieni NTFS.

Aby upewnić się, że plik pobrany z Internetu ma przypisaną specjalną etykietę (alternatywny strumień NTFS), w oknie wiersza polecenia umieść listę plików w katalogu dystrybucyjnym za pomocą polecenia:

reż./r

Jak widzimy, alternatywny wątek jest przypisany do plików wykonywalnych w tym katalogu Zone.Identifier, na przykład: install_flash_player_16_active_x.exe: Zone.Identifier

Otwórz zawartość alternatywnego strumienia w notatniku:

Notepad.exe install_flash_player_16_active_x.exe: Zone.Identifier

Widzimy, że ten strumień jest plikiem z [ZoneTransfer], który wskazuje identyfikator strefy transmisji Zoneid (te same strefy bezpieczeństwa, które są obecne w ustawieniach IE). Identyfikator strefy transmisji może zawierać jedną z 5 wartości od 0 do 4.

  • ZoneId = 0: Komputer lokalny
  • ZoneId = 1: Lokalny intranet
  • ZoneId = 2: Zaufane witryny
  • ZoneId = 3: Internet
  • ZoneId = 4: Witryny z ograniczeniami

Podczas pobierania pliku z określonej strefy bezpieczeństwa przeglądarka umieszcza etykietę dla tej strefy. Podczas uruchamiania plików z atrybutem ZoneId równym 3 lub 4 w alternatywnym strumieniu NTFS, system rozpoznaje, że plik został otrzymany z Internetu lub niezaufanego źródła na podstawie etykiety strefy. System Windows sprawdza ten znacznik w plikach wykonywalnych, począwszy od systemu Windows XP z dodatkiem SP2.

Aby ręcznie usunąć daną etykietę (strumień alternatywny) z pliku, wystarczy kliknąć przycisk Odblokuj we właściwościach pliku.

Upewnij się, że teraz brakuje alternatywnego strumienia dla tego pliku:

Wskazówka. Aby uniemożliwić systemowi etykietowanie pobranych plików, możesz zapisywać pliki z Internetu w systemie plików innym niż NTFS. Na przykład FAT, exFat itp..

Ogólnie rzecz biorąc, system Windows nie ma rozsądnych metod pracy z alternatywnymi strumieniami danych. A jeśli na przykład istnieje zadanie natychmiastowego usunięcia tej funkcji z wielu plików, najlepiej użyć narzędzia konsoli Marka Rusinowicza - strumienie.

Na przykład, aby rekurencyjnie usunąć alternatywne strumienie ze wszystkich plików exe w katalogu c: \ Download \, uruchom polecenie:

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

Konsola pokazuje, że alternatywny strumień pliku został usunięty: Usunięte: Zone.Identifier: $ DATA

Jest ważne. Narzędzie do strumieni usuwa wszystkie alternatywne strumienie z podanych plików i nie pozwala na ukierunkowanie na konkretny strumień. Dlatego nie uruchamiaj polecenia streams w formacie streams.exe -s -d c: \ *. Exe, ponieważ może to prowadzić do nieprawidłowego działania systemu z powodu usunięcia ważnych informacji z alternatywnych strumieni NTFS w plikach systemowych.


Jeśli masz PowerShell 3.0, możesz wyświetlić listę plików w katalogu (rekurencyjnie) w strumieniu Zone.Identifier za pomocą następującego polecenia:

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

Sam atrybut jest usuwany w następujący sposób:

Remove-Item. \ Installfile.exe -Stream Zone.Identifier

W Windows PowerShell 4.0 możesz odznaczyć etykietę Zone.Identifier używając osobnego polecenia cmdlet:

Odblokuj plik installfile.exe

Możesz ustawić tę etykietę dla dowolnego pliku ręcznie. Aby to zrobić, uruchom polecenie

notepad.exe install_flash_player_16_active_x.exe: Zone.Identifier

Ponieważ nie ma przepływu, system zaoferuje utworzenie nowego pliku. Zgadzamy się i kopiujemy tekst do okna notatnika:

[ZoneTransfer]
ZoneId = 3

Zapisz zmiany. Upewnij się, że plik ma przypisany alternatywny strumień.