TỔNG QUAN
Phần mềm độc hại mới này đặc biệt ở chỗ: (1) sử dụng bản ghi DNS để phân phối tập lệnh Python độc hại, (2) không chỉ đánh cắp ví tiền điện tử, phần mềm độc hại này còn thay thế một ứng dụng ví bằng phiên bản bị nhiễm mã độc của chính nó. Điều này cho phép các tin tặc có thể đánh cắp Seed Phrase (đây là một chuỗi bao gồm 12 đến 24 từ khoá để khôi phục ví Blockchain gốc và các ví phụ tạo ra sau đó) được sử dụng để truy cập vào tiền điện tử được lưu trữ trong ví.
Chuỗi tấn công lợi dụng các tệp tin Disk Image File (DMG) bao gồm một chương trình có tên là Activator. Những kẻ tấn công lợi dụng các phiên bản ứng dụng vi phạm bản quyền đã bị xâm phạm trước đó, thao túng các tệp thực thi để khiến chúng không hoạt động cho đến khi người dùng chạy trình kích hoạt Activator. Sau đó, phần mềm độc hại sẽ thực thi payload chính của nó bằng cách lấy bản ghi DNS TXT cho tên miền độc hại và giải mã tập lệnh Python từ tên miền đó. Tập lệnh được thực thi để tải xuống giai đoạn tiếp theo của chuỗi lây nhiễm. Mục đích của payload trong giai đoạn này là thực thi các lệnh tùy ý nhận được từ máy chủ.
Ngoài các chức năng được đề cập, tập lệnh còn có hai tính năng đáng chú ý liên quan đến tên miền apple-analyzer[.]com. Cả hai chức năng đều nhằm mục đích kiểm tra sự hiện diện của các ứng dụng ví tiền điện tử và thay thế chúng bằng các phiên bản được tải xuống từ tên miền được chỉ định. Chiến thuật này nhắm mục tiêu vào cả ví Bitcoin và Exodus, biến các ứng dụng này thành các thực thể độc hại.
PHÂN TÍCH KỸ THUẬT
Giai đoạn 1. Activator.app
Phần mềm độc hại nhắm mục tiêu vào macOS phiên bản 13.6 trở lên, cho thấy sự tập trung vào người dùng hệ điều hành này trong các phiên bản mới hơn, cả trên thiết bị Intel và Apple Silicon. Hình 1 cho thấy thiết bị bị xâm nhập có chứa chương trình Activator và ứng dụng mà người dùng đang tìm cách cài đặt, ở đây là xScope. Khi chọn Opening/Mounting hình ảnh sẽ hiển thị một cửa sổ có hướng dẫn cài đặt.
Hình 1. Cửa sổ hướng dẫn cài đặt
Hướng dẫn này yêu cầu người dùng sao chép ứng dụng vào thư mục Applications rồi khởi chạy Activator để áp dụng bản vá cập nhật và chạy ứng dụng xScope. Tuy nhiên, việc khởi chạy Activator sẽ hiển thị lời nhắc yêu cầu người dùng điền vào trường thông tin tài khoản và mật khẩu đăng nhập với quyền quản trị viên, từ đó cho phép nó thực thi tệp nhị phân Mach-O với các đặc quyền nâng cao để khởi chạy tệp thực thi xScope đã sửa đổi.
Hình 2. Biểu mẫu nhập mật khẩu
Khi di chuyển vào bên trong thư mục Resources, các nhà nghiên cứu phát hiện có chứa trình cài đặt Python 3.9.6 và một tệp Mach-O bổ sung có tên “tool”. Tệp Fat Mach-O chính có tên là “GUI” để hiển thị nút PATCH, khi người dùng nhấp vào ứng dụng sẽ thực thi hai sự kiện:
- Trình cài đặt Python được sao chép vào thư mục tệp tạm thời là tmp.
- Tệp tool trong thư mục Resources được chạy với đặc quyền của quản trị viên. Để kích hoạt tính năng này, Activator đã sử dụng hàm AuthorizationExecuteWithPrivileges, hàm này sẽ hiển thị cửa sổ với lời nhắc mật khẩu quản trị viên.
Sau khi thực thi, tệp tool kiểm tra hệ thống để tìm bản sao Python3 đã cài đặt. Trong trường hợp không tìm thấy, tệp này sẽ cài đặt bản sao mà nó đã sao chép trước đó vào thư mục tmp. Tiếp theo, so sánh 16 byte đầu tiên của tệp thực thi đã sửa đổi với một chuỗi được mã hóa cứng bên trong Activator và loại bỏ chúng trong trường hợp trùng khớp (Hình 3).
Hình 3. Kiểm tra 16 byte đầu tiên của tệp thực thi
Điều đặc biệt ở đây là các tác nhân đe dọa đã sử dụng các phiên bản ứng dụng được bẻ khóa sẵn và thêm một vài byte vào phần đầu của tệp thực thi để khiến người dùng khởi chạy Activator.
Giai đoạn 2. Trình tải xuống
Giai đoạn tiếp theo phần mềm độc hại sẽ khởi động payload chính để tìm nạp tập lệnh được mã hóa, bằng cách xâu chuỗi các từ khóa được mã hóa cứng lại với nhau và thêm một chuỗi ngẫu nhiên gồm năm chữ cái làm tên miền cấp ba (third-level domain). Với tên miền này, phần mềm độc hại đã gửi yêu cầu tới máy chủ DNS nhằm cố gắng lấy bản ghi TXT cho tên miền.
Đây là một điểm khá thú vị để liên hệ với máy chủ điều khiển và ra lệnh (C2) cũng như ẩn hoạt động bên trong lưu lượng truy cập, đồng thời tải xuống payload vì thông báo phản hồi đến từ máy chủ DNS. Bản ghi TXT có thể chứa chi tiết tên miền ngẫu nhiên mà ứng dụng có thể yêu cầu, do đó, một yêu cầu như vậy trông hoàn toàn bình thường.
Phản hồi từ máy chủ DNS chứa ba bản ghi TXT mà chương trình sau đó đã xử lý để tập hợp một thông báo hoàn chỉnh. Mỗi bản ghi là một đoạn văn bản được mã hóa Base64 có byte đầu tiên chứa số thứ tự. Bản mã Ciphertext mã hóa AES ở chế độ CBC. Thông báo được giải mã chứa tập lệnh Python được thể hiện qua Hình 4.
Hình 4. Tập lệnh được giải mã
Trước khi chạy tập lệnh, tệp tool đã thực hiện các bước sau:
Bước 1: Tính toán hàm băm tập lệnh và kiểm tra xem nó đã được khởi chạy trước đó hay chưa. Để thực hiện việc này, tệp đã tìm kiếm các biến môi trường để tìm khóa LastExecutedScriptHash và nếu có, nó sẽ so sánh hàm băm với dữ liệu được lưu trữ bên dưới khóa. Nếu giá trị băm khớp thì tệp không khởi chạy tập lệnh. Nếu các giá trị băm khác nhau, tệp sẽ chạy tập lệnh và thay thế giá trị băm trong biến. Nếu các biến môi trường không chứa khóa, tệp sẽ tạo một biến và lưu trữ hàm băm của tập lệnh hiện tại trong đó.
Bước 2: Thay thế “_g_” trong liên kết bên trong tập lệnh bằng một chuỗi ngẫu nhiên gồm 64 ký tự giống với hàm băm.
Bước 3: Viết một tập lệnh vào tệp /var/root/Library/Caches/<uuid>.py để vô hiệu hóa tất cả các tiến trình của tính năng Notification Center cứ sau mười giây (Hình 5).
Hình 5. Vô hiệu hóa các tiến trình của Notification Center
Như trong Hình 4, có thể thấy từ tập lệnh được giải mã, cứ sau 30 giây nó lại liên hệ với tên miền apple-health[.]org, cố gắng tải xuống và thực thi. Tập lệnh này có 14.400 giây để chạy, sau đó quá trình này bị hủy và phiên bản mới của tập lệnh được tải xuống.
Giai đoạn 3. Backdoor
Thời điểm đầu, các nhà nghiên cứu cho rằng tập lệnh Python tải xuống đã lỗi thời vì máy chủ C2 apple-health[.]org không phản hồi yêu cầu trong quá trình phân tích. Tuy nhiên, sau một thời gian, các nhà nghiên cứu đã tìm thấy payload ở dạng tập lệnh Python khác. Điều đó cuối cùng đã tiết lộ mục tiêu của nhà phát triển phần mềm độc hại: chức năng chính của tập lệnh là thực thi các lệnh tùy ý mà nó nhận được từ máy chủ và được mã hóa Base64.
Hình 6. Mã thực thi mà các lệnh nhận được
Bên cạnh việc thực thi các lệnh, tập lệnh còn thu thập và gửi đến máy chủ các thông tin sau:
- Phiên bản hệ điều hành.
- Danh sách các thư mục bên trong thư mục Users.
- Trường “av” để hiển thị thông tin về sự hiện diện của các chương trình antivirus trong các phiên bản tiếp theo.
- Danh sách các ứng dụng đã cài đặt.
- Thông tin CPU.
- Địa chỉ IP bên ngoài.
- Trường “ver” được sử dụng để gửi thông tin về phiên bản payload.
Đáng chú ý, tại thời điểm phân tích máy chủ không trả lại lệnh nào và sau đó ngừng phản hồi hoàn toàn. Vì vậy, các nhà nghiên cứu đã tải xuống lại tập lệnh Python giai đoạn thứ ba và nhận thấy rằng phiên bản mới có những tùy chỉnh. Đặc biệt, các nhà phát triển đã thay đổi “siêu dữ liệu” chứa địa chỉ IP và tên miền của máy chủ C2 cũng như GUID và phiên bản của chương trình. Chúng rõ ràng đã được cập nhật tự động bên trong tập lệnh ngay khi địa chỉ IP máy chủ thay đổi, điều này xảy ra khoảng 10 đến 20 phút một lần. Ngoài ra còn có các bản cập nhật cho mã chức năng do kẻ tấn công tạo ra (Hình 7). Điều này cho thấy chiến dịch phần mềm độc hại vẫn đang trong quá trình hoàn thiện.
Hình 7. Ba phiên bản của tập lệnh (từ trái sang phải: phiên bản đầu tiên 18c564a5cc4b7414df8345a8bdce7418 và hai phiên bản tiếp theo f4282d7e32c7e8ab4e075c572ac43803 và 352f0d288e612e4f66c50aaf9214a81d)
Giai đoạn 4. Trình đánh cắp tiền điện tử
Ngoài các tính năng đã được đề cập, tập lệnh còn có hai hàm đáng chú ý khác là check_exodus_and_hash() và check_btccore_and_hash().
Hình 8. Mã tải xuống ví điện tử Exodus bị lây nhiễm
Cả hai đều có tên miền apple-analyser[.]com, đóng vai trò là máy chủ lưu trữ cho các payload tiếp theo. Hai hàm này có mục đích tương tự nhau là kiểm tra xem thiết bị có chứa ứng dụng ví tiền điện tử có liên quan hay không và nếu có, sẽ thay thế bằng một ứng dụng bị nhiễm Trojan được tải xuống từ apple-analyser[.]com do tin tặc kiểm soát. Bên cạnh ứng dụng, máy chủ cũng lưu trữ một phiên bản “sạch” của framwork mã nguồn mở Electron để khởi chạy phiên bản Exodus mới và tiền điện tử Exodus.scpt.
Các tác nhân độc hại đã thêm vào trình xử lý mở khóa ví một lệnh gọi đến một hàm chỉ gửi Seed Phrase đến máy chủ C2. Ngoài ra, trong quá trình nghiên cứu, các nhà nghiên cứu cho biết một ứng dụng khác là Bitcoin-Qt cũng có phương thức hoạt động tương tự với Exodus: ứng dụng này đã đánh cắp mật khẩu mở khóa ví cùng với tên của ví và số dư của nó.
Hình 9. Gửi dữ liệu đến máy chủ C2
Ngay cả khi không có lệnh đến từ máy chủ C2, chương trình vẫn có khả năng gây thiệt hại đáng kể cho người dùng bằng cách đánh cắp ví tiền điện tử của họ.
KẾT LUẬN
Các ứng dụng bị bẻ khóa là một trong những cách dễ dàng nhất để các tác nhân độc hại xâm nhập vào máy tính của người dùng. Để nâng cao đặc quyền, các ứng dụng này chỉ yêu cầu nhập mật khẩu, điều này thường không gây nghi ngờ cho người dùng trong quá trình cài đặt phần mềm.
Trong chiến dịch phân phối phần mềm độc hại mới trên macOS lần này, một số điều mà các nhà phát triển đã tùy chỉnh, chẳng hạn như đặt tập lệnh Python bên trong bản ghi TXT tên miền trên máy chủ DNS, thực sự rất đặc biệt. Tập lệnh sau đó đã được thêm vào các tác nhân khởi động để tải xuống và thực thi payload giai đoạn tiếp theo trong một vòng lặp vô hạn, cho phép tin tặc cung cấp các bản cập nhật trên máy tính bị nhiễm. Payload cuối cùng là một backdoor có thể chạy bất kỳ tập lệnh nào có đặc quyền của quản trị viên và thay thế các ứng dụng ví tiền điện tử Exodus và Bitcoin được cài đặt trên máy tính mục tiêu bằng các phiên bản bị nhiễm mã độc nhằm đánh cắp Seed Phrase ngay khi ví được mở khóa.
“Phần mềm độc hại macOS được liên kết với phần mềm vi phạm bản quyền, nêu bật những rủi ro nghiêm trọng. Tội phạm mạng sử dụng các ứng dụng bẻ khóa để dễ dàng truy cập vào máy tính của người dùng và có được quyền quản trị viên bằng cách yêu cầu nhập mật khẩu. Người dùng nên hết sức thận trọng, đặc biệt là với ví tiền điện tử của họ. Tránh tải xuống từ các trang web đáng ngờ và sử dụng các giải pháp an ninh mạng đáng tin cậy để bảo vệ an toàn”, Sergey Puzan, nhà nghiên cứu bảo mật tại Kaspersky cho biết.