Trong bài trước tôi đã giới thiệu với các bạn những kiến thức cơ bản xung quanh các loại mã độc và cách phòng tránh chúng. Bạn có thể tham khảo trước tại đây. Trong bài này tôi sẽ giới thiệu các kỹ thuật liên quan tới việc kiểm tra, theo dõi và phát hiện mã độc.
Các kỹ thuật này có hai phần chính:
- Thực hiện trên máy tính thật: Thông thường chỉ dừng ở mức kiểm tra, theo dõi và lấy mẫu.
- Thực hiện trên hệ thống máy ảo: Bước này được sử dụng để xác minh lại mã độc và các hành vi, đồng thời cũng có thể sử dụng để phân tích và diệt mã độc.
Việc phân chia này để đảm bảo 2 tiêu chí: Mã độc được phát hiện nhanh nhất, Mã độc được phân tích và diệt hiệu quả nhất mà không làm ảnh hưởng tới tài nguyên thật sự. Mặc dù vậy, việc thực hiện trên hệ thống máy thật hay máy ảo thì các kỹ thuật liên quan tới việc theo dõi và phát hiện mã độc cũng sẽ tương đồng nhau.
Theo dõi và phát hiện mã độc như thế nào?
Như đã giới thiệu ở trên, tất cả các mã độc đều có các hành vi tương tác tới hệ thống và các tài nguyên trong hệ thống. Do đó, để có thể phát hiện ra mã độc cần thực hiện việc theo dõi các tài nguyên của hệ thống, theo dõi sự thay đổi bất thường diễn ra khi sử dụng máy tính. Một số hành động như:
- Máy tính chạy chậm, sử dụng thường xuyên bị đơ các ứng dụng
- Ổ đĩa tự chạy, webcam tự động bật/tắt
- Một số chương trình phổ biến không thực thi được: không vào được taskmanager, không chạy được cmd, …
- Hoặc sâu hơn nữa: máy tính mở các cổng lạ (Cổng mà không có ứng dụng nào trên máy sử dụng), thực hiện các kết nối bất thường ra bên ngoài, tài nguyên bị lạm dụng quá lớn, …
Ngoài việc theo dõi sự bất thường của máy tính, chúng ta cũng nên sử dụng các phần mềm diệt virus để tiến hành quét hệ thống nhằm phát hiện và tiêu diệt các mã độc đã được biết, đồng thời có thể cảnh báo hoặc đánh dấu các ứng dụng tiềm tàng.
Dưới đây, tôi xin liệt kê một số phương pháp chính:
- Sử dụng các phần mềm diệt virus (AV): các phần mềm khi đã nhận diện được mẫu thì hoàn toàn có khả làm sạch virus khỏi máy tính, loại bỏ các mã độc mà không ảnh hưởng tới hoạt động của hệ thống. Ngoài ra, các phần mềm diệt virus ngày nay có thêm các cơ chế thông minh có khả năng nhận diện hoặc đánh dấu nghi ngờ với các mẫu mà có thể chưa được phát hiện trước đó. Do đó, việc sử dụng các AV giúp ta liệt kê máy tính bị nhiễm các loại virus nào, đồng thời có thể giúp thu thập một số mẫu nghi ngờ.
- Theo dõi, giám sát thiết bị ngoại vi: Theo dõi và giám sát hoạt động của các thiết bị ngoại vi: USB, ổ CD/DVD, webcam, Loa để phát hiện các thay đổi bất thường nếu có.
- Kiểm tra hoạt động của hệ thống: Hoạt động của hệ thống bao gồm các thao tác chính lên các thành phần sau: Các file hệ thống, Registry, Các tiến trình và ứng dụng đang chạy trong hệ thống. Việc kiểm tra và theo dõi bao gồm: giám sát các tiến trình và ứng dụng lạ, giám sát sự thay đổi lên file hệ thống (bao gồm các thao tác liên quan tới việc sửa file, ghi file), giám sát sự thay đổi Registry (bao gồm các hành vi thay đổi giá trị các Key, tạo và ghi thêm các Key mới), giám sát các chương trình lạ tự khởi động cùng hệ thống, …
- Xác định đúng nguyên nhân: không phải hiện tượng bất thường nào cũng do mã độc gây ra, cần phân biệt giữa mã độc và không phải mã độc. Ở đây, tôi muốn nhấn mạnh vào việc các chương trình thông thường: Chrome, Firefox, Microsoft Word, … cũng hoàn toàn có thể thực hiện các hành vi: Ghi file, thay đổi file, … nhưng các chương trình này không phải là các mã độc.
Để có thể thực hiện các phương pháp trên chúng ta cần có các công cụ hỗ trợ tương ứng với từng phương pháp cụ thể. Dưới đây, tôi xin đưa ra 4 nhóm công cụ chính:
- Các phần mềm diệt virus: Kaspersky, Bitdefender, Avast, Norton, Bkav, …
- Nhóm công cụ giám sát mạng: TCPView, Wireshark
- Nhóm công cụ giám sát tài nguyên file hệ thống: AutoRun, ProcessExplorer, ProcessMon, …
- Nhóm công cụ giám sát Registry: ProcessMon, AutoRun, …
- Công cụ phân tích tự động: Sandboxie, Cooku Sandbox
Trong giai đoạn này, chúng ta cần chú ý các tới các thông số sau của hệ thống liên quan tới mẫu cần kiểm tra, theo dõi, phân tích:
- Đối với hệ thống file, registry: Mẫu thực thi có thực thi các hành động nguy hiểm lên hệ thống file, registry hay không, các hành vi nguy hiểm có thể bao gồm: thay đổi, xoá, copy, ghi đè file; xoá, thay đổi giá trị các key trong registry. Nếu có sự thay đổi như trên thì sự thay đổi được xảy ra ở đâu trên tài nguyên của hệ thống. Giám sát một số hành động sau sử dụng ProcessMon:
- Hành vi đọc, ghi file: CreateFile, WriteFile
- Hành vi đọc, sửa registry, thêm key vào registry: RegOpenKey, RegWriteKey
- Hành vi lấy các thông tin liên quan tới các phần xác thực của người dùng trên các trình duyệt, chương trình chat
- Đối với hệ thống mạng: Mẫu thực thi có thực hiện các kết nối tới các địa chỉ bất thường hay không, mẫu này có thực hiện các hành vi như: mở cổng, lấy thông tin của người dùng hoặc lấy thông tin từ máy tính gửi ra ngoài thông qua hệ thống email, thông qua các webservice, thông qua các kết nối ngầm. Giám sát một số hành động sau sử dụng TCPView và WireShark
- Kết nối tới các địa chỉ lạ bên ngoài
- Mở các cổng lạ
- Đối với các tài nguyên khác của hệ thống: các tài nguyên của hệ thống có bị chiếm dụng nhiều hay không, tốc độ máy tính biến đổi ra sao, có thêm các chương trình được cài đặt ngầm vào hệ thống hay không. Ngoài ra cũng cần để ý một số thay đổi trong quá trình duyệt web, check email, ví dụ: trình duyệt có bị thay đổi công cụ tìm kiếm mặc định, có bị cài thêm addon, plugin, có thường xuyên hiển thị các quảng cáo, …
- Sử dụng AutoRun để theo dõi xem có chương trình mới nào tự động chạy khi máy tính khởi động hay không
- Sử dụng các trình duyệt web khác nhau để truy cập internet xem có các pop up liên quan tới quảng cáo hiện ra liên tục hay không
- Đối với các chương trình mồi: Theo dõi xem các chương trình mồi này có bị ảnh hưởng bởi mẫu không, nếu các chương trình này bị ảnh hưởng thì sẽ dễ dàng cho quá trình phân tích hơn.
Mục tiêu của giai đoạn này là giúp chúng ta phân vùng được các tài nguyên trong hệ thống bị ảnh hưởng bởi mẫu, xác định được trình tự làm việc của mẫu, xác định được đặc tính lây lan, phá hoại của mẫu, thu thập thêm các mẫu khác để phục vụ giai đoạn phân tích.
Ví dụ quá trình theo dõi và phát hiện mã độc
Ví dụ dưới đây sẽ giúp chúng ta có thể hình dung cụ thể hơn về quá trình theo dõi và giám sát mã độc:
- Sử dụng TCPView xem xét các kết nối giữa bên trong và bên ngoài máy tính
- Sử dụng ProcessMon, ProcessExplorer để theo dõi một chương trình cụ thể, với từng hành động cụ thể (Theo dõi Internet Explorer, hightlight hành động Create File)
- Sử dụng WireShark để bắt gói tin, theo dõi địa chỉ nguồn, địa chỉ đích
- Sử dụng AutoRun để quan sát các chương trình tự động khởi động cùng máy
Việc kết hợp hài hòa các công cụ trên và sử dụng các phương pháp đã nêu giúp chúng ta dễ dàng trong việc theo dõi và phát hiện mã độc. Phát hiện một chương trình có các hành vi nguy hiểm gây ảnh hưởng tới hệ thống. Tuy nhiên để xác định chính xác việc chương trình đó có phải mã độc hay không chúng ta cần tiến hành phân tích cụ thể.
Trong bài viết sau tôi sẽ trình bày về cách phân tích và diệt mã độc.