Trong bài viết này, tôi sẽ cùng các bạn phân tích sự hoạt động của các macro viết bằng World Basic, để từ đó rút ra những biện pháp hữu hiệu trong những năm gần đây.
Word xây dựng các document của nó (các file.DOC) trên cơ sở các template (các file.DOT). Thông thường chúng ta sử dụng template chuẩn là NORMAL.DOT. Bạn cũng có thể tạo ra những template của riêng bạn để dùng và lưu trữ trên đĩa trong thư mục \WINDOWS\TEMPLATE. Về mặt cấu trúc template chỉ khác document ở chỗ nó có thêm các marco, autotext của riêng nó, nên nếu không tinh ý, bạn sẽ không nhận ra file mình vừa mở là document hay template. Do các macro chỉ có thể tồn tại trong các template. Do các macro chỉ có thể tồn tại trong các template nên các virus macro khi lây lan, nó buộc phải lưu tài liệu của bạn dưới dạng template, và để đánh lừa, nó dùng tên file là .DOT sau khi đã copy các macro của nó sang.
Vấn đề chính của virus là làm sao kích hoạt được các macro của nó một cách chủ động và kín đáo, bí mật. Thông thường một macro được kích hoạt khi bạn mở hộp thoại macro (trong menu Tools), chọn macro và nhấn nút Run, nhưng cũng có hai ngoại lệ.
Ngoại lệ thứ nhất là một số macro với tên đặc biệt sẽ được kích hoạt tự động mỗi khi xảy ra sự kiện tương ứng, chúng được gọi là các AutoMacro được định nghĩa trong World như sau:
Ví dụ bạn có một template là ABC.DOT, trong đó có một macro tên là AutoOpen. Bạn cũng có một document tên là MYDOC.DOC được xây dựng trên cơ sở của ABC.DOT. Macro này sẽ hoạt động ngay sau khi bạn thực hiện thao tác mở ABC.DOT hoặc MYDOC.DOC. Tuy nhiên các AutoMacro sẽ bị mất tác dụng nếu lệnh "DisableAutoMacros" đã thực hiện ở đâu đó.
Ngoại lệ thứ hai là các macro trùng tên với một trong các lệnk của Word ví dụ như FileOpen, FileClose, FileSave..., ví dụ nếu bạn có một macro tên là FileSave, thì mỗi khi bạn nhấn vào nút Save trên thanh công cụ hoặc gõ Ctr-S, macro đó sẽ bị kích hoạt, còn thao tác Save chuẩn của World sẽ bị bỏ qua trừ khi thao tác này có mặt trong macro của bạn. Thật đáng tiếc, ta không có biện pháp nào có hiệu quả các macro loại này.
Ta sẽ lợi dụng chính ngoại lệ thứ hai nói trên để tạo ra một bộ phát hiện virus macro ngay khi mở file. Bạn hãy tạo cho mình một macro có tên FileOpen (mở hộp hội thoại Macro trong menu Tools, gõ ”FileOpen“ vào hộp ”macro name“, chọn ”All active templates“ cho hộp "Macro Available in" rồi nhấn Create) với nội dung dưới đây. Lưu ý số dòng và dấu chấm (.) chỉ để tham khảo không gõ vào.
Mã lệnh (VBA) |
Sub Main
On Error goto qiut Disable AutoMacro Dim dlg as FileOpen GetCurValues dig Dialog dig FileOpen dig If Countmacro (1) = 0 then goto quit MsgBox "Posibly virus macro" + Chr$ (13) MacCare$="ToolsMacro" ToolsMacro.Name=Macare$.Delete, Show=3 quit DisableAutoMacros EndSub |
Giải thích: dòng 3 vô hiệu hoá hoạt động của các AutoMacro, đề phòng macro AutoOpen hoạt động. Dòng 4...7 là các thao tác mở file chuẩn. Các dòng tiếp theo kiểm tra cen file vừa mở có phải là template hay không (như trên đã nói, nếu một file bị nhiễm virus thì định dạng của nó chắc chắn là Template), nếu đúng thì hiện thông báo và xoá macro ToolsMacro nếu có. Thao tác này nhằm đảm bảo sự an toàn cho bạn khi dùng hộp thoại Macro để diệt virus.
Khi bạn mở một file, chẳng hạn SALES.DOC, nếu gặp thông báo trên thì rất có khả năng file đó bị nhiễm virus macro. Lúc đó bạn không làm bất cứ thao tác thông thường nào (như Save, Close...) mà hãy mở ngay hộp thoại Macro (trong menu Tools). Kéo hộp "Macro Avilable in" xuống và chọn mục "Sales.doc (template)", danh sách các macro của file này sẽ xuất hiện. Bạn hãy dùng nút Detele để xoá các macro có tên đáng ngờ như FileSave, FileClose, AutoClose... thông thường nếu bạn mở một file.DOC mà có thông báo (tức là file đó là template) thì chắc chắn file đó bị nhiễm virus, bạn có thể xoá tất cả các macro của nó. Tuy nhiên, trong mọi trường hợp bạn phải hết sức chú ý nội dung của hộp "Macro Available in", nếu không bạn có thể xoá nhầm các macro hữu ích của bạn.
Tôi mong rằng sau khi đọc bài này, bạn hãy hướng dẫn cho những người khác cùng làm để góp phần loại bỏ các virus macro ra khỏi thế giới của chúng ta. Nếu bạn phát hiện ra điểm nào sơ hở, rất mong bạn vui lòng góp ý.