Những ngày vừa qua, một loại mã độc mới xuất hiện được xác định dùng để đào tiền ảo, loại mã độc này một khi được chạy sẽ chiếm dụng tài nguyên CPU làm máy tính trở nên chậm chạp và gặp tình trạng giật khi thực hiện các tác vụ khác. Đặc biệt, mã độc được phát tán qua Facebook Messenger bằng cách âm thầm cài đặt một extension vào trình duyệt Google Chrome (nếu được cài trên máy) để tự động gửi mẫu nhân bản của chính nó cho các bạn bè của người dùng facebook. File đính kèm có tên dạng video_<bốn chữ số>.mp4 để tạo sự tò mò cho người nhận. Một khi người nhận mở file thực thi này, máy tính của họ tiếp tục trở thành công cụ đào tiền ảo cho Hacker đồng thời tiếp tục phát tán theo con đường trên.

Vậy mã độc này đã thực hiện những hoạt động cụ thể nào, ngoài việc biến máy tính nạn nhân thành công cụ đào tiền ảo, nó có lấy cắp dữ liệu, âm thầm giám sát hoạt động người dùng hay thực hiện bất kì hành động nào khác ảnh hưởng đến người dùng không? CyStack đã tiến hành phân tích sâu hơn để giải đáp các thắc mắc này.

Phân tích

Dịch ngược mã nguồn

Đầu tiên, chúng tôi dùng Resource Hacker để xác định ngôn ngữ lập trình được sử dụng, kết quả là AutoIt.
autoit

Tiếp theo, Exe2Aut sẽ giúp chúng ta có được mã nguồn hoàn chỉnh

source

Toàn bộ mã nguồn gồm hơn 3000 dòng lệnh, tuy nhiên chỉ có khoảng hơn 150 dòng lệnh do hacker viết, phần còn lại là các hàm viết sẵn của thư viện.

Phân tích file thực thi

Dễ dàng nhận ra ở đây, các string đã bị hacker mã hoá và được giải mã bởi hàm ukgkoi()
ukgkoi

Đây là một hàm mã hoá khá đơn giản (sử dụng hệ mã một bảng thế - từng kí tự trong string được mã hoá thành một kí tự khác tương ứng), để giải mã một lượt các string này, chúng tôi viết một script giải mã dựa theo hàm trên và thay thế string đã giải mã vào vị trí tương ứng.
python

Sử dụng file mới thu được chứa các string đã giải mã thuận lợi hơn cho việc đọc hiểu code.
new_source

Sau khi phân tích, chúng tôi đã tìm hiểu được toàn bộ hoạt động của mã độc này khi được thực thi, hình vẽ dưới đây mô tả chi tiết các hành động của mã độc:
action

  1. Đầu tiên, mã độc gửi một request lên server của hacker kèm theo một số thông tin trong header. Các thông tin này không bao gồm thông tin cá nhân người dùng mà chỉ gồm thông tin về tiến trình đang chạy, tiến trình sẽ thoát nếu request không thành công. Ở đây, chúng tôi đã sửa lại các tên biến và hàm theo mục đích sử dụng để dễ đọc hiểu.
    connect

  2. Tạo thư mục <AppDataDir>\<UserName>, tải các file 7za.exe, files.7z vào thư mục vừa tạo và dùng 7za.exe để giải nén files.7z thành 5 file vào mục này: background.js, jquery.min.js, manifest.json (các file extension), config.json, worker.exe (file config và file thực thi đào tiền ảo). Sau đó, mã độc tự copy chính nó vào thư mục vừa tạo với tên cherry.exe.

files.7z là 1 file nén đựợc đặt mật khẩu là 6H5d75Z8QwgEeQyU

create
Kết quả, thư mục mới được tạo chứa các file:
folder

  1. Tìm và dừng tiến trình chrome.exe.
    close

  2. Ghi key khởi động cherry.exe vào thư mục autorun của Registry HKCU\Software\Microsoft\Windows\CurrentVersion\Run (chứa các link đến file được Windows tự động chạy khi khởi động) dưới tên Google Update để đánh lừa người dùng.
    register

  3. Gọi lệnh chạy tiến trình chrome.exe kèm tuỳ chọn --load-extension tại đường dẫn đến thư mục chứa các file extension: manifest.json chứa các thông tin về extension, bao gồm khai báo các file script: background.js, jquery.min.js, và tên của extension trường hợp này là “Google Odevan”, (có thể thay đổi do mỗi lần chạy, mã độc tải về một file files.7z mới)
    runchrome
    manifest

  4. Để extension được tự động load vào Chrome trong các lần tiếp theo người dùng mở trình duyệt, mã độc đã tìm kiếm shortcut của Chrome trong một vài thư mục có thể lưu và tạo shortcut thực thi lệnh ở trên (chạy chrome.exe kèm extension) ghi đè lên shortcut tìm thấy.
    replace

  5. Cuối cùng, nó kiểm tra sự tồn tại của các file worker.exe, config.json và thực thi worker.exe. Sau khi check hash, có thể biết được worker.exe chính là công cụ đào tiền ảo Monero có tên XMRig. File config.json chứa thông tin tài khoản của hacker mà số tiền đào được sẽ được chuyển vào.
    runworker
    config

Monero là loại tiền ảo xuất hiện từ năm 2014, đến nay đã có nhiều trường hợp hacker bí mật sử dụng công cụ XMRig để đào tiền ảo trên máy tính người dùng.
Tuy nhiên, lần này hacker thông qua Facebook Messenger để gửi tin nhắn chứa mã độc đến danh sách bạn bè, đồng thời đánh vào tâm lí tò mò của người dùng, làm cho mã độc phát tán rộng trong thời gian ngắn.

Đến đây ta đã biết được các hoạt động của mã độc sau khi thực thi. Tuy nhiên, extension được cài vào trình duyệt Chrome đã làm những gì? Các kết quả phân tích sau đây cho thấy các hoạt động nguy hiểm nhằm đánh cắp tài khoản của người dùng.

Phân tích Chrome extension

Extension độc hại không trực tiếp thực hiện hành vi đánh cắp tài khoản mà tải về mã độc từ server của hacker và thực thi.

Cụ thể, trong file background.js, script gửi request đến đường dẫn http://plugin.jukig.mokuz.bid/config
request

Kết quả trả về như sau:
result

Tại trường “url” là http://plugin.jukig.mokuz.bid/bghtnjaf, đây chính là đường dẫn đến đoạn script được tải về và thực thi (có thể dùng công cụ Postman để request và xem kết quả):
insert

Tiếp tục phân tích đoạn script được tải về đã làm gì.

  • Việc đầu tiên là tự động đóng tab khi truy cập đường dẫn chrome://extensions (mở danh sách các extension của Chrome) để người dùng không thể vào đây xoá extension độc hại (có thể xoá bằng cách click chuột phải vào biểu tượng extension là icon setting trên thanh công cụ và chọn Xoá khỏi Chrome…)
    extension

  • Tiếp theo là request đến http://plugin.jukig.mokuz.bid/php/route.php, mở một tab đến đường dẫn trong trường link của kết quả trả về, ở đây là link đến trang chủ Facebook.

router
router_re

  • Nguy hiểm hơn, script này có khả năng đánh cắp tài khoản người dùng khi đăng nhập và gửi lên server:
    send

  • Hacker còn khôn khéo xoá giá trị thẻ meta Content-Security-Policy trong mọi response nhận được (thẻ này cho phép hạn chế nguy cơ tấn công XSS bằng cách chỉ cho phép tài nguyên được tải từ các nguồn xác định) để script không bị vô hiệu hoá khi trang web sử dụng kỹ thuật này.
    remove

  • Sau đó, một danh sách các địa chỉ được tải về từ http://plugin.jukig.mokuz.bid/js/filters.php gồm một số đường dẫn của Facebook và website của một số phần mềm diệt virus. Tương tự như trên, hacker ngăn chặn người dùng truy cập đến các địa chỉ trong danh sách này nhằm cản trở người dùng khi muốn tải về các bản diệt virus.
    filter
    filter_re

  • Sau đó, một đoạn script khác tiếp tục được tải về từ đường dẫn http://plugin.jukig.mokuz.bid/js/pass.js
    pass

  • Đoạn script mới được tải về thực hiện xoá cookie (đặt ngày hết hạn vào năm 1970) nhằm buộc người dùng phải đăng nhập lại Facebook.
    cookie

Khi người dùng đăng nhập lại, đoạn mã gửi email, mật khẩu lên server sẽ được thực thi, người dùng đã bị đánh cắp tài khoản mà không hay biết. Khi đã có thông tin đăng nhập Facebook của người dùng, hacker dễ dàng tiếp tục phát tán mã độc qua Messenger.

Kết luận

Như vậy, ngoài việc biến máy tính nạn nhân trở thành công cụ đào tiền ảo, mã độc này còn đánh cắp tài khoản người dùng Facebook và có thể cả các trang web khác nếu người dùng đăng nhập.

Do đó, khi người dùng đã vô tình chạy file mã độc này, ngoài việc loại bỏ chúng bằng cách sử dung các Anti Virus (hiện đã có rất nhiều AV cập nhật mẫu nhận diện) còn cần thay đổi mật khẩu Facebook cũng như các trang web đã thực hiện đăng nhập để đảm bảo an toàn cho tài khoản của mình.

Sample mã độc và các script phân tích được cung cấp đầy đủ tại đây:
https://github.com/cystack/monero-mining-malware