Jak systém Windows určuje, že soubor byl stažen z Internetu

V předchozím článku jsme zmínili, že když se pokusíte otevřít spustitelný soubor stažený z Internetu, systém Windows vydá bezpečnostní varování o pokusu o spuštění potenciálně nebezpečného obsahu (podrobnosti viz Jak vypnout bezpečnostní varování ve Windows). Jak systém zjistí, že soubor byl stažen z Internetu? Zkusme na to přijít.

Tip. V systému Windows 8 může SmartScreen blokovat také soubory stažené z Internetu..

Všechny spustitelné soubory stažené z Internetu pomocí prohlížeče obdrží zvláštní značku. Toto pravidlo podporuje nejen Internet Explorer, ale i většina populárních prohlížečů, jako je Mozilla Firefox a Google Chrome. Při kopírování, přejmenování nebo přesunutí souboru do jiného oddílu pomocí systému souborů NTFS zůstává varování stále zachováno.

Tato značka představuje alternativní tok NTFS, soubor vlastněn.

Poznámka:. Esence alternativní datové toky NTFS (ADS - Alternativní datové toky). - schopnost každého souboru NTFS vytvořit několik dalších datových toků (metadata). Ve výchozím nastavení jsou všechna data souboru uložena v hlavním proudu, ale je možné pro soubor vytvořit jeden nebo více dalších potů dat a jejich velikost může dokonce přesáhnout velikost hlavního souboru. Převážná většina aplikací (včetně Průzkumníka) pracuje pouze se standardním proudem a neumí číst data z alternativních toků NTFS.

Chcete-li se ujistit, že soubor stažený z Internetu je přiřazen speciální štítek (alternativní tok NTFS), v okně příkazového řádku vypište soubory v distribučním adresáři pomocí příkazu:

dir / r

Jak vidíme, ke spustitelným souborům v tomto adresáři je přiřazeno alternativní vlákno Zone.Identifier, například: install_flash_player_16_active_x.exe: Zone.Identifier

Otevřete obsah alternativního proudu v poznámkovém bloku:

Notepad.exe install_flash_player_16_active_x.exe: Zone.Identifier

Vidíme, že tento stream je soubor s [ZoneTransfer], což označuje identifikátor přenosové zóny Zoneid (stejné zóny zabezpečení jako v nastavení IE). ID přenosové zóny může obsahovat jednu z 5 hodnot od 0 do 4.

  • ZoneId = 0: Místní počítač
  • ZoneId = 1: Místní intranet
  • ZoneId = 2: Důvěryhodné weby
  • ZoneId = 3: Internet
  • ZoneId = 4: Servery s omezeným přístupem

Při stahování souboru z konkrétní zóny zabezpečení prohlížeč umístí štítek pro tuto zónu. Při spouštění souborů s atributem ZoneId rovným 3 nebo 4 v alternativním toku NTFS systém rozpozná, že soubor byl přijat z Internetu nebo z nedůvěryhodného zdroje na základě označení zóny. Systém Windows kontroluje tuto značku ve spustitelných souborech počínaje aktualizací Windows XP SP2.

Chcete-li ručně odstranit daný štítek (alternativní stream) ze souboru, stačí kliknout na tlačítko Odemkněte ve vlastnostech souboru.

Ujistěte se, že alternativní datový proud pro tento soubor nyní chybí:

Tip. Chcete-li zabránit systému v označování stažených souborů, můžete ukládat soubory z Internetu do jiného systému souborů než NTFS. Například FAT, exFat atd..

Windows obecně postrádají rozumné prostředky pro práci s alternativními datovými toky. A pokud je například úkolem tuto funkci okamžitě odstranit z mnoha souborů, je nejlepší použít nástroj konzoly třetí strany Mark Rusinovich - proudy.

Chcete-li například rekurzivně odebrat alternativní toky ze všech souborů exe v adresáři c: \ Download \, spusťte příkaz:

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

Konzola ukazuje, že alternativní tok souboru byl odstraněn: Smazáno: Zone.Identifier: $ DATA

Je důležité. Obslužný program streamy odstraní všechny alternativní streamy z daných souborů a neumožňuje cílení na konkrétní tok. Proto nespouštějte příkaz streams ve formátu streams.exe -s -d c: \ *. Exe, protože to může vést k selhání systému kvůli odstranění důležitých informací z alternativních toků NTFS v systémových souborech.


Pokud máte PowerShell 3.0, můžete seznam souborů v adresáři (rekurzivně) s proudem Zone.Identifier pomocí následujícího příkazu:

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

Samotný atribut je odstraněn následovně:

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

Ve Windows PowerShell 4.0 můžete odznačit označení Zone.Identifier pomocí samostatné rutiny cmdlet:

Unblock-File installfile.exe

Tento štítek můžete nastavit pro libovolný soubor ručně. Chcete-li to provést, spusťte příkaz

notepad.exe install_flash_player_16_active_x.exe: Zone.Identifier

Protože neexistuje žádný tok, systém nabídne vytvoření nového souboru. Souhlasíme a zkopírujeme text do okna poznámkového bloku:

[ZoneTransfer]
ZoneId = 3

Uložit změny. Zkontrolujte, zda je k souboru přiřazen alternativní stream.