Bài viết của chuyên gia an ninh mạng Securitybox đã hướng dẫn phân tích, phát hiện và gỡ bỏ mã độc Practical Malware Analysis Lab13-01 đã nhận được rất nhiều phản hồi tích cực từ phía độc giả điều đó đã tạo động lực rất lớn cho các chuyên gia SecurityBox tiếp tục nghiên cứu. Bài viết sau đây sẽ hướng dẫn các bạn Phân tích, phát hiện và gỡ bỏ mã độc Practical Malware Analysis Lab13-02.
Phân tích mã độc Lab13-02 trong cuốn sách Practical Malware Analysis
Practical Malware Analysis: https://nostarch.com/malware
Mẫu mã độc của Lab13-02 có thể tải về từ: https://github.com/mikesiko/PracticalMalwareAnalysis-Labs
Phân tích
Khi thực thi, Lab13-02.exe thực hiện các hành vi:
- Chụp ảnh màn hình người dùng và lưu vào một buffer
- Truyền buffer qua một hàm mã hóa gồm nhiều phép XOR
- Buffer sau khi mã hóa được ghi vào một file trong cùng working directory của file thực thi mã độc, với tên file có cấu trúc [temphhhhhhhh] với hhhhhhhh là một giá trị hexa 8 chữ số lấy từ kết quả hàm WinAPI GetTickCount, ví dụ temp0015f769
- Lặp lại chuỗi thao tác trên sau mỗi 10s (Sleep 5s – thực hiện chuỗi thao tác – Sleep 5s). Các file được tạo có kích thước 6,939KB (Màn hình máy tính dùng để phân tích trong trường hợp này có độ phân giải là 1916×927. Đối với các ảnh BMP có cùng độ phân giải (cùng số điểm ảnh), kích thước file là như nhau. Kích thước các file temp mà Lab13-02.exe tạo ra sẽ khác nhau trên các máy tính sử dụng màn hình với độ phân giải khác nhau. Do đó, tránh nhầm lẫn dẫn đến việc coi kích thước các file temp là dấu hiệu chung của mã độc Lab13-02)
- Mã độc không có hoạt động kết nối mạng hay cài đặt persistence
- Hàm mã hóa được sử dụng là một hàm mã hóa tùy biến
* Kiểm tra buffer trước khi được đưa vào hàm mã hóa:
- Buffer được đưa vào hàm mã hóa tại dòng code 401880, ta đặt breakpoint trong OllyDbg tại dòng này
- Khi OllyDbg thực thi mã độc tới breakpoint vừa set, tức là hàm chức năng chụp ảnh màn hình vừa được thực hiện xong, screenshot được lưu trong bộ nhớ với địa chỉ bắt đầu là giá trị của EAX và kích thước vùng nhớ cho nó là giá trị của EDX
- Ví dụ, EAX đang có giá trị 01A00020, EDX đang có giá trị 006C6846, vùng nhớ của buffer nằm trong khoảng 01A00020-020C6866. Ta click phải vào EAX trong cửa sổ register của OllyDbg, chọn Follow in Dump; chuyển sang cửa sổ memory, chọn khoảng vùng nhớ của buffer và click chuột phải, chọn Backup -> Save data to file.
- Để ý thấy 2 byte đầu tiên của buffer có giá trị ASCII là “BM”, đây là header của định dạng file Bitmap, ta lưu vùng nhớ vào một file với tên mở rộng là .BMP
- Thử mở file .BMP vừa lưu, nó chính là một ảnh chụp màn hình vào thời điểm mã độc thực thi tới breakpoint 401880
Phát hiện
Lab13-02.exe có thể phát hiện bằng signature
- 20 byte từ fileoffset 5983, là một đoạn heavy XOR trong hàm mã hóa tùy chỉnh
- 20 byte từ fileoffset 6272, là đoạn gọi hàm mã hóa buffer và chuẩn bị tên file cho buffer sau khi mã hóa
Gỡ bỏ
- Lab13-02.exe chỉ tạo các file temphhhhhhhh trong working directory của nó. Ngoài ra, mã độc không thực hiện hành vi sửa đổi nào khác trên hệ thống nên ta có thể xóa trực tiếp file thực thi của nó
- Tìm kiếm và xóa bỏ tất cả các file có tên theo định dạng temphhhhhhhh trong working directory của file thực thi mã độc