• Thứ Tư, 14/10/2009 10:10 (GMT+7)

    Nguy cơ bảo mật từ thiết bị nhớ USB

    Có một mẹo ngăn virus lây vào các thiết bị nhớ USB được nhiều người phổ biến là tạo trước một tệp autorun.inf ở thư mục gốc của USB và đặt thuộc tính ẩn+chỉ đọc+hệ thống cho nó (hoặc thiết lập quyền hạn chế với người dùng thông thường trên tệp sau khi đã định dạng USB theo kiểu NTFS).

    Trong mấy năm gần đây, các loại virus lây nhiễm qua thiết bị nhớ USB phát tán rất mạnh trong khi người dùng lúng túng, không biết làm thế nào để tự vệ. Bài viết của tôi về các nguy cơ bảo mật do thiết bị nhớ USB đem lại trên TGVT số tháng 2/2008 (http://www.pcworld.com.vn/A0802_116) đã “ngây thơ” giới thiệu với bạn đọc phương pháp vô hiệu tính năng AutoRun để ngăn chặn virus. Đến nay, rất nhiều người (tất nhiên trong đó có tôi) đã sử dụng thủ thuật đó để rồi vẫn dính virus mà không nhận ra. Để chuộc lỗi, tôi xin phép trình bày nguyên nhân của vấn đề và cách ngăn chặn virus “autorun” hiệu quả hơn.

    AutoRun, AutoPlay và cách Windows xử lý tệp AUTORUN.INF

    Do cơ chế AutoRun của Windows khá “lùng nhùng” và virus thường lợi dụng điều đó để đánh lừa người dùng theo nhiều cách khác nhau nên muốn tránh những trường hợp “chết vì thiếu hiểu biết”, chúng ta nên tìm hiểu cụ thể những bí mật đằng sau hậu trường. AutoRun là cơ chế xuất hiện từ Windows 95, cho phép tự động chạy các ứng dụng mỗi khi một ổ đĩa được kết nối. Với người dùng, nó thường được gọi là AutoPlay. Trong các tài liệu, chúng ta thường thấy các thuật ngữ AutoRun và AutoPlay được dùng lẫn lộn (thiết lập AutoPlay trong Windows Policy làm thay đổi mục AutoRun trong Registry, tệp autorun.inf là tác nhân thêm "AutoPlay" vào trình đơn ngữ cảnh của ổ đĩa). Hai thuật ngữ này tiếp tục được dùng lẫn với nhau mà không có sự phân biệt nào cho đến khi có Windows XP và sự cải tiến cơ chế AutoPlay của Microsoft. Kể từ đó, để nâng cao tính bảo mật (hay cũng có thể chỉ đơn giản là phản ánh sự đa dạng của ứng dụng), người dùng được lựa chọn ứng dụng để gọi từ hộp thoại AutoPlay thay cho việc thiết bị tự quyết định. Các mục chọn của hộp thoại AutoPlay phụ thuộc vào loại tệp có trên ổ đĩa (ảnh, nhạc hay phim) và các thiết lập trong tệp Autorun.inf. Vì AutoPlay do người dùng điều khiển và “an toàn” hơn nên Windows đã kích hoạt nó một cách mặc định cho các ổ đĩa tháo lắp được.

    Nếu mọi chuyện chỉ dừng lại ở đây thì đã không có gì phải lo lắng nhiều vì Microsoft đã cung cấp cho chúng ta hai thiết lập NoDriveAutoRun và NoDriveTypeAutoRun để vô hiệu tính năng AutoRun (cũng như AutoPlay). Nhưng không, người dùng tiếp tục bị thử thách. Microsoft tự động đặt lại giá trị mặc định của NoDriveTypeAutoRun trên các máy tính chạy Windows Server 2003, Windows XP hay Windows 2000 sau khi chúng gia nhập Active Directory domain (http://support.microsoft.com/kb/895108). Chưa hết, thay vì ngưng mọi hoạt động AutoPlay nếu giá trị NoDriveTypeAutoRun cấm điều đó thì Windows lại âm thầm phân tích tệp Autorun.inf và thực hiện tất cả những gì đọc được trừ thao tác cuối cùng là gọi hộp thoại AutoPlay hay thực thi chương trình ứng dụng (Microsoft đã phải cung cấp bản vá từ tháng 8/2008, các bạn có thể xem thêm ở phần sau). Chính vì sự không nhất quán này, những người dùng chưa cập nhật bản vá cần thiết mà đã chỉnh sửa registry để tắt tính năng AutoRun đã tự “nộp mình cho virus xơi”. Trong 4 kiểu lây lan của virus (1 - Lây ngay lập tức; 2 - Lây qua hộp thoại Autoplay (dễ bị phát hiện); 3 - Lây khi người dùng nhấn đúp vào ổ đĩa; 4 - Lây khi người dùng chọn trình đơn ngữ cảnh của ổ đĩa), việc tắt tính năng AutoRun nửa vời chỉ chặn hai cách lộ liễu nhất. Khi đó, virus không cần phải tự động thi hành khi thiết bị nhớ USB được cắm vào máy hay thêm một mục đánh lừa vào hộp thoại AutoPlay (xem phần “Đừng nhầm lẫn với hộp thoại AutoPlay”), chúng chỉ cần báo cho Windows các hoạt động cần thực hiện khi người dùng mở ổ đĩa (nhấn đúp hay chọn Open từ trình đơn ngữ cảnh) rồi ung dung “nằm đợi”. Những lời khuyên không nhấn đúp vào biểu tượng ổ đĩa trong Windows Explorer trở nên thừa thãi vì dù bạn có nhấn chuột phải và chọn Open từ trình đơn ngữ cảnh thì cũng vẫn dính virus (trừ một vài loại “nhân đạo”). Hậu quả tệ hại nhất của việc tắt tính năng AutoRun “giả” là người dùng bị nhiễm virus mà vẫn tin rằng mình thông minh, miễn nhiễm với chúng.

    Ngăn chặn virus autorun lây vào máy

    Dù AutoPlay đã được Microsoft cải tiến nhưng vẫn không khắc phục được hết những lỗ hổng bảo mật. Lựa chọn tối ưu cho người dùng là tắt hẳn tính năng AutoRun. Tài liệu How to disable the Autorun functionality in Windows (http://support.microsoft.com/kb/967715/) cho biết để đảm bảo vô hiệu tính năng Autorun, chúng ta cần cài đặt một bản cập nhật (nếu không thể cài đặt bản cập nhật KB967715 thành công, các bạn có thể cài đặt bản KB950582 thay thế) trước khi sửa giá trị NoDriveTypeAutoRun trong Registry hay sử dụng Group Policy (nếu chọn cách sửa NoDriveTypeAutoRun, hãy đặt giá trị 255 cho nó để cấm Autorun trên tất cả các ổ đĩa; các thiết bị nhớ USB U3 đã lừa Windows bằng cách thông báo nó vừa là thiết bị nhớ USB vừa là CD). Hơn thế nữa, tài liệu này còn chỉ cho chúng ta đường dẫn trỏ tới phương pháp cấm hẳn việc sử dụng các thiết bị nhớ USB. Tuy nhiên, đó là một câu chuyện khác.

    Vì cách làm do Microsoft hướng dẫn tương đối phức tạp và mất thời gian, tôi xin giới thiệu một cách đơn giản hơn, cách này xuất hiện lần đầu trên blog của Nick Brown và đã được Đội ứng cứu máy tính khẩn cấp của Mỹ - US CERT dẫn lại (Vulnerability Note VU#889747, http://www.kb.cert.org/vuls/id/889747), vì thế các bạn có thể an tâm sử dụng:

    Tạo một subkey tên là autorun.inf trong mục HKLM\Software\Microsoft\Windows NT\CurrentVersion\IniFileMapping. Đổi mục (Default) dưới subkey đó thành chuỗi @SYS:DoesNotExist

    Nếu không quen sửa registry, các bạn có thể chép 3 dòng dưới đây vào một tệp NOAUTRUN.REG (thực ra là bất cứ tên gì cũng được miễn là với đuôi .REG) rồi nhấn đúp vào nó (trong Windows Explorer, chứ không phải nhấn đúp vào 3 dòng nội dung của tệp): REGEDIT4
    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\ IniFileMapping\ Autorun.inf]
    @="@SYS:DoesNotExist"

    Thực chất của cách làm này là thông báo cho Windows biết mỗi khi gặp tệp AUTORUN.INF thì không đọc nội dung tệp mà tìm đọc khóa HKEY_LOCAL_MACHINE\SOFTWARE\ DoesNot Exist trong registry. Vì khóa này không tồn tại nên sẽ không có gì “tự động” xảy ra. Để dễ hiểu, người dùng Việt Nam có thể đổi DoesNotExist thành KhongTonTai hoặc KhongKhongThay (theo bạn, tên nào hay hơn?).

    Theo Nick Brown, Windows lưu các thông tin về tính năng AutoRun của các thiết bị nhớ USB đã được cắm vào máy tính tại mục HKEY_CURRENT_USER\Software\Microsoft\Windows\ CurrentVersion\Explorer\ MountPoints2 của registry (bạn đọc đã từng sử dụng USB có thể dễ dàng kiểm chứng điều này). Vì vậy, ngay cả nếu tính năng AutoRun đã được vô hiệu bằng một trong hai cách trên, Windows vẫn có thể tự động chạy các ứng dụng - có thể là virus - trên các USB thân quen khi chúng được cắm lại vào máy. Theo Wiki, không có tài liệu nào của Microsoft mô tả về mục MountPoints2 trong registry vì nó được dùng để theo dõi việc sử dụng trái phép hệ điều hành bằng cách sao chép trực tiếp từ đĩa sang đĩa. Cũng không có thông tin nào cho thấy bản vá lỗi AutoRun của Microsoft đã khắc phục vấn đề do mục MountPoints2 gây ra hay chưa. Vì vậy, tốt nhất là các bạn nên xóa cả mục MountPoints2 của tất cả các tài khoản trên máy để tránh hậu họa.

    Lưu ý, cả hai cách trên đều tắt được tính năng autorun một cách triệt để nhưng không đảm bảo chặn hoàn toàn các loại virus/worm thường lây qua đường autorun. Có ít nhất hai khả năng để các loại virus đó lây vào máy bạn: lây qua mạng (nhờ lỗ hổng của hệ điều hành) như Conficker, lây nhờ sự ngờ nghệch của người dùng khi họ nhấn đúp vào tệp thi hành của nó (Phimnguoilon.exe chẳng hạn) – nếu bạn làm như vậy thì đừng nên kêu ca về việc bị nhiễm virus!

    Ngăn chặn virus autorun lây vào USB


    Có một mẹo ngăn virus lây vào các thiết bị nhớ USB được nhiều người phổ biến là tạo trước một tệp autorun.inf ở thư mục gốc của USB và đặt thuộc tính ẩn+chỉ đọc+hệ thống cho nó (hoặc thiết lập quyền hạn chế với người dùng thông thường trên tệp sau khi đã định dạng USB theo kiểu NTFS). Tuy nhiên, cách làm đó đã thất bại vì virus luôn chiếm quyền và có thể ghi đè lên tệp autorun.inf giả. Tốt hơn, các bạn nên tạo hẳn một thư mục với tên là autorun.inf với các thư mục con và tệp ở bên trong (tất nhiên, điều này chỉ thực hiện được sau khi các bạn đã tiêu diệt xong virus autorun đang nằm sẵn trong USB). Làm như vậy sẽ đánh lừa được các loại virus autorun trong một thời gian nữa (cho đến khi những “chuyên gia viết virus” phát hiện ra mẹo này và sửa chương trình để xóa toàn bộ cây thư mục autorun.inf mà chúng gặp).

    Nguyễn Anh Tuấn
    nguyen_anh_tuan@yahoo.com
    ID: A0909_138