Malware Persistence
Mã độc thường tìm cách “lẩn trốn” trên máy của nạn nhân và rất nhiều mã độc có cơ chế để tự khởi động – reboot lại trên hệ thống để thực hiện hành vi độc hại của nó. Trên hệ điều hành Windows nó có thể thực hiện việc reboot đó bằng rất nhiều cách khác nhau, điều này phụ thuộc vào kẻ lập trình ra mẫu mã độc đó, và bài viết này sẽ đề cập đến một số “nơi” mà mã độc lợi dụng để reboot trên hệ điều hành Windows. Chẳng hạn như:
- Autostart Registry Key
- Windows Services
- Scheduled Tasks
- WMI Event Consumers
Autostart Registry key
Có khá nhiểu vị trí được cho là có thể autostart – tự động khởi chạy tồn tại trên hệ hiều hành Windows, đó là một trong những lý do chính mà tại sao hệ điều hành windows lại khá khó khăn trong việc đảm bảo an toàn. Trong các bài phân tích một mẫu mã độc thường sẽ có phần, đó là Persistence để phân tích về những cách thức, vị trí mà malware dùng để tham chiếu đến chính nó và tự động khởi chạy lại trên máy tính nạn nhân.
Và có một trong những vị trí điển hình là trong Registry Keys, đây là một trong những nơi mã độc thường lợi dụng. Phổ biến nhất là các key Run và Runonce nằm trong NTUSER.DAT và Software hive:
- DAT\Software\Microsoft\Windows\CurrentVersion\Run
- DAT\Software\Microsoft\Windows\CurrentVersion\Runonce
- Software\Microsoft\Windows\CurrentVersion\Runonce
- Software\Microsoft\Windows\CurrentVersion\policies\Explorer\Run
- Software\Microsoft\Windows\CurrentVersion\Run
Các items trong danh sách được liệt kê trong các registry key trên sẽ được khởi động khi người dùng đăng nhập vào máy, khác nhau là ở điểm các items trong NTUSER.DAT sẽ khác nhau đối với các user khác nhau, nó tùy thuộc vào từng user còn đối với Software hive thì bất kỳ user nào cũng sẽ chạy những items được liệt kê trong key Run\Runonece đó.
Ít phổ biến hơn những registry key kia là Userinit key:
SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Userinit\
Thông thường, khóa này chỉ chứa một tham chiếu đến userinit.exe, Winlogon thực thi Userinit.exe và khởi chạy Explorer.exe. Tuy nhiên nếu mã độc lợi dụng nó và sửa đổi data key chẳng hạn như: C:\Windows\system32\userinit.exe, C:\Temp\svchost.exe. Lúc này tệp mã độc cũng sẽ được thực thi, dù ít phổ biến hơn nhưng cũng không ít mã độc đã lợi dụng đặc điểm này và người phân tích cũng cần phải lưu ý đến key này.
Ngoài ra còn rất nhiều Registry key có thể bị thêm sửa đổi để mã độc có thể tồn tại và thực thi trên hệ thống vì sự đa dạng về cách thức mà kẻ tấn công sử dụng, nhưng cơ bản thì bên trên là những vị trí thường gặp nhất!
Ngoài ra còn một vị trí đáng lưu ý nữa, đó là:
%AppData%\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
Việc tạo persistence trong thư mục này không yêu cầu quyền quản trị, vì lý do đó mà nó thường bị lợi dụng khá nhiều, cả trong những giai đoạn đầu của cuộc tấn công tinh vi. Bất kỳ shortcuts nào đc tạo trong folder này đều sẽ thực thi khi người dùng đăng nhặp.
Windows Services
Một vị trí là nơi persistence “ưa thích” của mã độc, đó chính là Windows Services. Windows Services được thiết kế để chạy ứng dụng một cách tự động ở chế độ nền (background).
Services được cấu hình tự động khởi chạy và nó có 4 chế độ:
Các services này cung cấp chức năng quan trọng cho hệ điều hành và được khởi động mà không cần tương tác của người dùng. Có rất nhiều services được chạy ngay khi khởi động hệ thống, bao gồm các dịch vụ DHCP Client, Windows Event Log, Server và Workstation.
Các cervices có thể được triển khai dưới dạng các tệp thực thi độc lập hoặc được tải dưới dạng các tệp DLL. Để tiết kiệm tài nguyên, nhiều services DLL được nhóm lại với nhau và chạy dưới một “tập hợp” chẳng hạn như svchost.exe. svchost.exe là tiến trình Windows-generic service host và khi sử dụng một trình xem process nào chẳng hạn như ProcessExplorer bạn sẽ có thể thấy nhiều hơn một svchost.exe đang chạy.
Cấu hình dịch vụ cũng như cấu hình trình điều khiển thiết bị được lưu trữ trong Registry Key trong HKLM\SYSTEM\CurrentControlSet\Services, chẳng hạn như:
Các key cung cấp những thông tin liên quan đến service gồm các trường như tên service, tên hiển thị, đường dẫn đến tệp, mode khởi chạy (như trong hình là 0x02) và một số trường thông tin khác.
Nếu một mã độc đc khởi chạy như một service, nó đôi khi có thể khởi động trước cả khi các biện pháp bảo vệ như phần mềm diệt virus bạn cài đặt trên máy tính được bật. Ngoài ra trên máy tính có rất nhiều các service hoạt động và việc giả dạng mã độc dưới một service bình thường là cũng rất khó nhận biết.
Service rất linh hoạt với nhà phát triển sản phầm nhưng nó cũng là trở thành nơi ưa thích mà kẻ lập trình mã độc lợi dụng để cho mã độc tự động khởi chạy.
Scheduled Tasks
Schedule task là một là một trong những tính năng trên hệ điều hành Windows rất hữu ích với người dùng. Bạn có thể dễ dàng thiết lập chương trình để chúng tự động khởi động ở một thời điểm nhất định mà bạn đặt trước bằng Schedule tasks (trình lập lịch). Chẳng hạn như hình dưới đây:
Giao diện task Schedule như bên trên có thể thấy tên của task, status, thời gian mà người dùng thiết lập để khởi chạy, lần chạy tới, lần chạy gần nhất, và “action” của task này, ví dụ vs task GoogleUpdateTaskMachineCore như trên hình sẽ có action là chạy tập tin GoogleUpdate.exe :
Như vậy, điều này hoàn toàn có thể mở ra những khả năng thú vị cho những kẻ tấn công. Các tác vụ được lên lịch thường được sử dụng để khởi chạy phần mềm độc hại. Chẳng hạn như một backdoor nào đó được thiết lập để tự động khởi chạy, gửi và nhận dữ liệu, lệnh từ máy chủ c&c nào đó. Hay một keyloger được cài đặt để tự động gửi những dữ liệu của nó thu thập được trên máy tính nạn nhân hàng ngày đến một nơi nào đó vậy! Chính vì vậy đây cũng là một nơi không thể bỏ qua khi rà soát mã độc trên máy tính.
Ngoài ra còn một vài vị trí nữa cũng có thể lợi dụng để biến thành nơi mà mã độc lẩn tránh, “tái” khởi chạy. Mình sẽ tiếp tục trình bày ở phần tiếp!
By,
RE_Team