Trong một bài viết trước, chúng tôi đã đề cập rằng khi cố mở file thực thi tải từ Internet, Windows hiển thị cảnh báo bảo mật về chạy nội dung có khả năng nguy hiểm (Chi tiết, xem Cách tắt cảnh báo bảo mật trong Windows). Hệ thống xác định như thế nào rằng tệp đã được tải từ Internet? Hãy thử tìm hiểu.

Tất cả file thực thi tải từ Internet trong trình duyệt nhận một dấu hiệu đặc biệt. Quy tắc này được hỗ trợ không chỉ bởi Internet Explorer, mà còn bởi các trình duyệt phổ biến khác, như Mozilla Firefox và Google Chrome. Khi sao chép, đổi tên hoặc di chuyển file sang phân vùng NTFS khác, dấu hiệu vẫn đi kèm.
Dấu hiệu này là một luồng dữ liệu thay thế NTFS (alternative NTFS file stream).
Lưu ý. Các luồng dữ liệu thay thế NTFS (alternative NTFS data streams) cho phép tạo một hoặc nhiều luồng dữ liệu phụ (metadata) cho mỗi file NTFS. Mặc định, tất cả dữ liệu file được lưu trong luồng chính, nhưng có thể tạo cho một file một hoặc nhiều luồng phụ và kích thước của chúng thậm chí có thể vượt quá kích thước luồng file chính. Phần lớn ứng dụng (kể cả Windows Explorer) chỉ làm việc với luồng tiêu chuẩn và không thể đọc dữ liệu từ luồng dữ liệu thay thế NTFS.
Để chắc chắn rằng một dấu hiệu đặc biệt đã được gán cho file tải từ Internet, hiển thị danh sách file cho thư mục chứa bản phân phối bằng lệnh sau:
dir /r

Như chúng ta thấy, luồng thay thế Zone.Identifier đã được gán cho các file thực thi, như install_flash_player_16_active_x.exe:Zone.Identifier.
Mở luồng thay thế trong Notepad:
Notepad.exe install_flash_player_16_active_x.exe:Zone.Identifier

Chúng ta thấy luồng này là một file chứa phần [ZoneTransfer], trong đó chỉ định ID khu vực truyền tải (ZoneId). (Đây là các khu vực bảo mật có thể tìm thấy trong cài đặt IE.) ID khu vực truyền tải có thể chứa một trong năm giá trị từ 0 đến 4.
- ZoneId=0: Máy cục bộ (Local machine)
- ZoneId=1: Mạng nội bộ cục bộ (Local intranet)
- ZoneId=2: Trang web tin cậy (Trusted sites)
- ZoneId=3: Internet
- ZoneId=4: Trang web bị hạn chế (Restricted sites)
Khi bạn tải file từ một khu vực bảo mật, trình duyệt gán ZoneId tương ứng cho nó. Khi cố chạy file với ZoneId bằng 3 hoặc 4 trong luồng NTFS thay thế, dựa trên ID này hệ thống phát hiện file đã được tải từ Internet hoặc nguồn không tin cậy. Windows đã kiểm tra dấu hiệu này của file thực thi từ Windows XP SP2.
Để xóa dấu hiệu này (luồng thay thế) thủ công, bạn chỉ cần nhấp Unblock (Bỏ chặn) trong thuộc tính file.

Đảm bảo file này không còn luồng thay thế nữa.

Mẹo. Để ngăn gán dấu hiệu cho file tải xuống, bạn có thể lưu file tải từ Internet vào hệ thống tệp khác với NTFS, như FAT, exFat, v.v.
Thực tế, Windows không có công cụ nào để làm việc với luồng dữ liệu thay thế. Ví dụ, nếu bạn phải xóa chúng từ nhiều file cùng lúc, bạn tốt hơn nên dùng công cụ console của bên thứ ba bởi Mark Rusinovich — streams.
Ví dụ, để xóa đệ quy luồng thay thế của tất cả file thực thi trong c:\Download\, chạy lệnh:
c:\TOOLS\streams.exe -s -d c:\Download\*.exe
Trong command prompt, bạn có thể thấy luồng thay thế của file đã bị xóa: Deleted :Zone.Identifier:$DATA
Quan trọng. Streams xóa tất cả luồng thay thế của file được chỉ định và không cho phép nhắm mục tiêu một luồng cụ thể. Vì vậy, đừng chạy lệnh streams như streams.exe -s -d c:\*.exe, vì nó có thể dẫn đến sự cố hệ thống sau khi thông tin quan trọng trong luồng NTFS thay thế bị xóa.

Trong PowerShell 3.0, bạn có thể hiển thị danh sách file có luồng Zone.Identifier trong thư mục bằng lệnh:
Get-ChildItem -Recurse | Get-Item -Stream Zone.Identifier -ErrorAction SilentlyContinue | Select-Object FileName
Thuộc tính bị xóa như sau:
Remove-Item .\install-file.exe -Stream Zone.Identifier
Trong Windows PowerShell 4.0, bạn có thể xóa Zone.Identifier bằng cmdlet riêng:
Unblock-File install-file.exe
Bạn có thể gán dấu hiệu cho bất kỳ file nào thủ công bằng cách chạy lệnh:
notepad.exe install_flash_player_16_active_x.exe:Zone.Identifier
Vì không có luồng, hệ thống nhắc tạo file mới. Đồng ý và sao chép văn bản sau vào cửa sổ Notepad:
[ZoneTransfer]
ZoneId=3
Lưu thay đổi. Đảm bảo luồng thay thế đã được gán cho file.
